]> git.wh0rd.org Git - tt-rss.git/commitdiff
add dijit/dojo stuff; initial ui mockup
authorAndrew Dolgov <fox@fakecake.org>
Mon, 15 Nov 2010 07:39:52 +0000 (10:39 +0300)
committerAndrew Dolgov <fox@fakecake.org>
Mon, 15 Nov 2010 07:39:52 +0000 (10:39 +0300)
1122 files changed:
feedlist.js
lib/dijit/Calendar.js [new file with mode: 0644]
lib/dijit/CheckedMenuItem.js [new file with mode: 0644]
lib/dijit/ColorPalette.js [new file with mode: 0644]
lib/dijit/Declaration.js [new file with mode: 0644]
lib/dijit/Dialog.js [new file with mode: 0644]
lib/dijit/DialogUnderlay.js [new file with mode: 0644]
lib/dijit/Editor.js [new file with mode: 0644]
lib/dijit/InlineEditBox.js [new file with mode: 0644]
lib/dijit/LICENSE [new file with mode: 0644]
lib/dijit/Menu.js [new file with mode: 0644]
lib/dijit/MenuBar.js [new file with mode: 0644]
lib/dijit/MenuBarItem.js [new file with mode: 0644]
lib/dijit/MenuItem.js [new file with mode: 0644]
lib/dijit/MenuSeparator.js [new file with mode: 0644]
lib/dijit/PopupMenuBarItem.js [new file with mode: 0644]
lib/dijit/PopupMenuItem.js [new file with mode: 0644]
lib/dijit/ProgressBar.js [new file with mode: 0644]
lib/dijit/TitlePane.js [new file with mode: 0644]
lib/dijit/Toolbar.js [new file with mode: 0644]
lib/dijit/ToolbarSeparator.js [new file with mode: 0644]
lib/dijit/Tooltip.js [new file with mode: 0644]
lib/dijit/TooltipDialog.js [new file with mode: 0644]
lib/dijit/Tree.js [new file with mode: 0644]
lib/dijit/_Calendar.js [new file with mode: 0644]
lib/dijit/_Contained.js [new file with mode: 0644]
lib/dijit/_Container.js [new file with mode: 0644]
lib/dijit/_CssStateMixin.js [new file with mode: 0644]
lib/dijit/_DialogMixin.js [new file with mode: 0644]
lib/dijit/_HasDropDown.js [new file with mode: 0644]
lib/dijit/_KeyNavContainer.js [new file with mode: 0644]
lib/dijit/_PaletteMixin.js [new file with mode: 0644]
lib/dijit/_Templated.js [new file with mode: 0644]
lib/dijit/_TimePicker.js [new file with mode: 0644]
lib/dijit/_Widget.js [new file with mode: 0644]
lib/dijit/_base.js [new file with mode: 0644]
lib/dijit/_base/focus.js [new file with mode: 0644]
lib/dijit/_base/manager.js [new file with mode: 0644]
lib/dijit/_base/place.js [new file with mode: 0644]
lib/dijit/_base/popup.js [new file with mode: 0644]
lib/dijit/_base/scroll.js [new file with mode: 0644]
lib/dijit/_base/sniff.js [new file with mode: 0644]
lib/dijit/_base/typematic.js [new file with mode: 0644]
lib/dijit/_base/wai.js [new file with mode: 0644]
lib/dijit/_base/window.js [new file with mode: 0644]
lib/dijit/_editor/RichText.js [new file with mode: 0644]
lib/dijit/_editor/_Plugin.js [new file with mode: 0644]
lib/dijit/_editor/html.js [new file with mode: 0644]
lib/dijit/_editor/nls/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/ar/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/ar/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/ar/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/ca/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/ca/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/ca/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/cs/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/cs/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/cs/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/da/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/da/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/da/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/de/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/de/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/de/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/el/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/el/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/el/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/es/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/es/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/es/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/fi/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/fi/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/fi/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/fr/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/fr/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/fr/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/he/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/he/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/he/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/hu/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/hu/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/hu/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/it/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/it/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/it/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/ja/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/ja/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/ja/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/ko/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/ko/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/ko/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/nb/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/nb/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/nb/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/nl/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/nl/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/nl/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/pl/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/pl/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/pl/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/pt-pt/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/pt-pt/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/pt-pt/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/pt/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/pt/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/pt/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/ro/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/ro/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/ro/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/ru/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/ru/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/ru/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/sk/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/sk/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/sk/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/sl/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/sl/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/sl/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/sv/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/sv/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/sv/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/th/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/th/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/th/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/tr/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/tr/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/tr/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/zh-tw/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/zh-tw/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/zh-tw/commands.js [new file with mode: 0644]
lib/dijit/_editor/nls/zh/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/nls/zh/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/nls/zh/commands.js [new file with mode: 0644]
lib/dijit/_editor/plugins/AlwaysShowToolbar.js [new file with mode: 0644]
lib/dijit/_editor/plugins/EnterKeyHandling.js [new file with mode: 0644]
lib/dijit/_editor/plugins/FontChoice.js [new file with mode: 0644]
lib/dijit/_editor/plugins/FullScreen.js [new file with mode: 0644]
lib/dijit/_editor/plugins/LinkDialog.js [new file with mode: 0644]
lib/dijit/_editor/plugins/NewPage.js [new file with mode: 0644]
lib/dijit/_editor/plugins/Print.js [new file with mode: 0644]
lib/dijit/_editor/plugins/TabIndent.js [new file with mode: 0644]
lib/dijit/_editor/plugins/TextColor.js [new file with mode: 0644]
lib/dijit/_editor/plugins/ToggleDir.js [new file with mode: 0644]
lib/dijit/_editor/plugins/ViewSource.js [new file with mode: 0644]
lib/dijit/_editor/range.js [new file with mode: 0644]
lib/dijit/_editor/selection.js [new file with mode: 0644]
lib/dijit/_tree/dndSource.js [new file with mode: 0644]
lib/dijit/dijit-all.js [new file with mode: 0644]
lib/dijit/dijit-all.js.uncompressed.js [new file with mode: 0644]
lib/dijit/dijit.js [new file with mode: 0644]
lib/dijit/dijit.js.uncompressed.js [new file with mode: 0644]
lib/dijit/form/Button.js [new file with mode: 0644]
lib/dijit/form/CheckBox.js [new file with mode: 0644]
lib/dijit/form/ComboBox.js [new file with mode: 0644]
lib/dijit/form/ComboButton.js [new file with mode: 0644]
lib/dijit/form/CurrencyTextBox.js [new file with mode: 0644]
lib/dijit/form/DateTextBox.js [new file with mode: 0644]
lib/dijit/form/DropDownButton.js [new file with mode: 0644]
lib/dijit/form/FilteringSelect.js [new file with mode: 0644]
lib/dijit/form/Form.js [new file with mode: 0644]
lib/dijit/form/HorizontalRule.js [new file with mode: 0644]
lib/dijit/form/HorizontalRuleLabels.js [new file with mode: 0644]
lib/dijit/form/HorizontalSlider.js [new file with mode: 0644]
lib/dijit/form/MappedTextBox.js [new file with mode: 0644]
lib/dijit/form/MultiSelect.js [new file with mode: 0644]
lib/dijit/form/NumberSpinner.js [new file with mode: 0644]
lib/dijit/form/NumberTextBox.js [new file with mode: 0644]
lib/dijit/form/RadioButton.js [new file with mode: 0644]
lib/dijit/form/RangeBoundTextBox.js [new file with mode: 0644]
lib/dijit/form/Select.js [new file with mode: 0644]
lib/dijit/form/SimpleTextarea.js [new file with mode: 0644]
lib/dijit/form/Slider.js [new file with mode: 0644]
lib/dijit/form/TextBox.js [new file with mode: 0644]
lib/dijit/form/Textarea.js [new file with mode: 0644]
lib/dijit/form/TimeTextBox.js [new file with mode: 0644]
lib/dijit/form/ToggleButton.js [new file with mode: 0644]
lib/dijit/form/ValidationTextBox.js [new file with mode: 0644]
lib/dijit/form/VerticalRule.js [new file with mode: 0644]
lib/dijit/form/VerticalRuleLabels.js [new file with mode: 0644]
lib/dijit/form/VerticalSlider.js [new file with mode: 0644]
lib/dijit/form/_DateTimeTextBox.js [new file with mode: 0644]
lib/dijit/form/_FormMixin.js [new file with mode: 0644]
lib/dijit/form/_FormSelectWidget.js [new file with mode: 0644]
lib/dijit/form/_FormWidget.js [new file with mode: 0644]
lib/dijit/form/_Spinner.js [new file with mode: 0644]
lib/dijit/form/nls/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/ar/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/ar/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/ar/validate.js [new file with mode: 0644]
lib/dijit/form/nls/ca/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/ca/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/ca/validate.js [new file with mode: 0644]
lib/dijit/form/nls/cs/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/cs/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/cs/validate.js [new file with mode: 0644]
lib/dijit/form/nls/da/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/da/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/da/validate.js [new file with mode: 0644]
lib/dijit/form/nls/de/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/de/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/de/validate.js [new file with mode: 0644]
lib/dijit/form/nls/el/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/el/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/el/validate.js [new file with mode: 0644]
lib/dijit/form/nls/es/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/es/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/es/validate.js [new file with mode: 0644]
lib/dijit/form/nls/fi/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/fi/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/fi/validate.js [new file with mode: 0644]
lib/dijit/form/nls/fr/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/fr/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/fr/validate.js [new file with mode: 0644]
lib/dijit/form/nls/he/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/he/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/he/validate.js [new file with mode: 0644]
lib/dijit/form/nls/hu/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/hu/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/hu/validate.js [new file with mode: 0644]
lib/dijit/form/nls/it/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/it/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/it/validate.js [new file with mode: 0644]
lib/dijit/form/nls/ja/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/ja/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/ja/validate.js [new file with mode: 0644]
lib/dijit/form/nls/ko/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/ko/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/ko/validate.js [new file with mode: 0644]
lib/dijit/form/nls/nb/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/nb/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/nb/validate.js [new file with mode: 0644]
lib/dijit/form/nls/nl/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/nl/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/nl/validate.js [new file with mode: 0644]
lib/dijit/form/nls/pl/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/pl/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/pl/validate.js [new file with mode: 0644]
lib/dijit/form/nls/pt-pt/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/pt-pt/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/pt-pt/validate.js [new file with mode: 0644]
lib/dijit/form/nls/pt/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/pt/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/pt/validate.js [new file with mode: 0644]
lib/dijit/form/nls/ro/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/ro/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/ro/validate.js [new file with mode: 0644]
lib/dijit/form/nls/ru/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/ru/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/ru/validate.js [new file with mode: 0644]
lib/dijit/form/nls/sk/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/sk/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/sk/validate.js [new file with mode: 0644]
lib/dijit/form/nls/sl/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/sl/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/sl/validate.js [new file with mode: 0644]
lib/dijit/form/nls/sv/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/sv/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/sv/validate.js [new file with mode: 0644]
lib/dijit/form/nls/th/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/th/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/th/validate.js [new file with mode: 0644]
lib/dijit/form/nls/tr/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/tr/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/tr/validate.js [new file with mode: 0644]
lib/dijit/form/nls/validate.js [new file with mode: 0644]
lib/dijit/form/nls/zh-tw/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/zh-tw/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/zh-tw/validate.js [new file with mode: 0644]
lib/dijit/form/nls/zh/ComboBox.js [new file with mode: 0644]
lib/dijit/form/nls/zh/Textarea.js [new file with mode: 0644]
lib/dijit/form/nls/zh/validate.js [new file with mode: 0644]
lib/dijit/icons/commonIcons.css [new file with mode: 0644]
lib/dijit/icons/commonIcons_rtl.css [new file with mode: 0644]
lib/dijit/icons/editorIcons.css [new file with mode: 0644]
lib/dijit/icons/editorIcons_rtl.css [new file with mode: 0644]
lib/dijit/icons/images/commonIconsObjActDisabled.png [new file with mode: 0644]
lib/dijit/icons/images/commonIconsObjActDisabled_rtl.png [new file with mode: 0644]
lib/dijit/icons/images/commonIconsObjActEnabled.png [new file with mode: 0644]
lib/dijit/icons/images/commonIconsObjActEnabled8bit.png [new file with mode: 0644]
lib/dijit/icons/images/commonIconsObjActEnabled8bit_rtl.png [new file with mode: 0644]
lib/dijit/icons/images/commonIconsObjActEnabled_rtl.png [new file with mode: 0644]
lib/dijit/icons/images/editorIconsDisabled.png [new file with mode: 0644]
lib/dijit/icons/images/editorIconsDisabled_rtl.png [new file with mode: 0644]
lib/dijit/icons/images/editorIconsEnabled.png [new file with mode: 0644]
lib/dijit/icons/images/editorIconsEnabled_rtl.png [new file with mode: 0644]
lib/dijit/icons/images/loadingAnimation_rtl.gif [new file with mode: 0644]
lib/dijit/layout/AccordionContainer.js [new file with mode: 0644]
lib/dijit/layout/AccordionPane.js [new file with mode: 0644]
lib/dijit/layout/BorderContainer.js [new file with mode: 0644]
lib/dijit/layout/ContentPane.js [new file with mode: 0644]
lib/dijit/layout/LayoutContainer.js [new file with mode: 0644]
lib/dijit/layout/LinkPane.js [new file with mode: 0644]
lib/dijit/layout/ScrollingTabController.js [new file with mode: 0644]
lib/dijit/layout/SplitContainer.js [new file with mode: 0644]
lib/dijit/layout/StackContainer.js [new file with mode: 0644]
lib/dijit/layout/StackController.js [new file with mode: 0644]
lib/dijit/layout/TabContainer.js [new file with mode: 0644]
lib/dijit/layout/TabController.js [new file with mode: 0644]
lib/dijit/layout/_LayoutWidget.js [new file with mode: 0644]
lib/dijit/layout/_TabContainerBase.js [new file with mode: 0644]
lib/dijit/nls/ar/common.js [new file with mode: 0644]
lib/dijit/nls/ar/loading.js [new file with mode: 0644]
lib/dijit/nls/ca/common.js [new file with mode: 0644]
lib/dijit/nls/ca/loading.js [new file with mode: 0644]
lib/dijit/nls/common.js [new file with mode: 0644]
lib/dijit/nls/cs/common.js [new file with mode: 0644]
lib/dijit/nls/cs/loading.js [new file with mode: 0644]
lib/dijit/nls/da/common.js [new file with mode: 0644]
lib/dijit/nls/da/loading.js [new file with mode: 0644]
lib/dijit/nls/de/common.js [new file with mode: 0644]
lib/dijit/nls/de/loading.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_ROOT.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_ar.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_ca.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_cs.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_da.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_de-de.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_de.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_el.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_en-gb.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_en-us.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_en.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_es-es.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_es.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_fi-fi.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_fi.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_fr-fr.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_fr.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_he-il.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_he.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_hu.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_it-it.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_it.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_ja-jp.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_ja.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_ko-kr.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_ko.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_nb.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_nl-nl.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_nl.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_pl.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_pt-br.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_pt-pt.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_pt.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_ru.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_sk.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_sl.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_sv.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_th.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_tr.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_xx.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_zh-cn.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_zh-tw.js [new file with mode: 0644]
lib/dijit/nls/dijit-all_zh.js [new file with mode: 0644]
lib/dijit/nls/el/common.js [new file with mode: 0644]
lib/dijit/nls/el/loading.js [new file with mode: 0644]
lib/dijit/nls/es/common.js [new file with mode: 0644]
lib/dijit/nls/es/loading.js [new file with mode: 0644]
lib/dijit/nls/fi/common.js [new file with mode: 0644]
lib/dijit/nls/fi/loading.js [new file with mode: 0644]
lib/dijit/nls/fr/common.js [new file with mode: 0644]
lib/dijit/nls/fr/loading.js [new file with mode: 0644]
lib/dijit/nls/he/common.js [new file with mode: 0644]
lib/dijit/nls/he/loading.js [new file with mode: 0644]
lib/dijit/nls/hu/common.js [new file with mode: 0644]
lib/dijit/nls/hu/loading.js [new file with mode: 0644]
lib/dijit/nls/it/common.js [new file with mode: 0644]
lib/dijit/nls/it/loading.js [new file with mode: 0644]
lib/dijit/nls/ja/common.js [new file with mode: 0644]
lib/dijit/nls/ja/loading.js [new file with mode: 0644]
lib/dijit/nls/ko/common.js [new file with mode: 0644]
lib/dijit/nls/ko/loading.js [new file with mode: 0644]
lib/dijit/nls/loading.js [new file with mode: 0644]
lib/dijit/nls/nb/common.js [new file with mode: 0644]
lib/dijit/nls/nb/loading.js [new file with mode: 0644]
lib/dijit/nls/nl/common.js [new file with mode: 0644]
lib/dijit/nls/nl/loading.js [new file with mode: 0644]
lib/dijit/nls/pl/common.js [new file with mode: 0644]
lib/dijit/nls/pl/loading.js [new file with mode: 0644]
lib/dijit/nls/pt-pt/common.js [new file with mode: 0644]
lib/dijit/nls/pt-pt/loading.js [new file with mode: 0644]
lib/dijit/nls/pt/common.js [new file with mode: 0644]
lib/dijit/nls/pt/loading.js [new file with mode: 0644]
lib/dijit/nls/ro/common.js [new file with mode: 0644]
lib/dijit/nls/ro/loading.js [new file with mode: 0644]
lib/dijit/nls/ru/common.js [new file with mode: 0644]
lib/dijit/nls/ru/loading.js [new file with mode: 0644]
lib/dijit/nls/sk/common.js [new file with mode: 0644]
lib/dijit/nls/sk/loading.js [new file with mode: 0644]
lib/dijit/nls/sl/common.js [new file with mode: 0644]
lib/dijit/nls/sl/loading.js [new file with mode: 0644]
lib/dijit/nls/sv/common.js [new file with mode: 0644]
lib/dijit/nls/sv/loading.js [new file with mode: 0644]
lib/dijit/nls/th/common.js [new file with mode: 0644]
lib/dijit/nls/th/loading.js [new file with mode: 0644]
lib/dijit/nls/tr/common.js [new file with mode: 0644]
lib/dijit/nls/tr/loading.js [new file with mode: 0644]
lib/dijit/nls/zh-tw/common.js [new file with mode: 0644]
lib/dijit/nls/zh-tw/loading.js [new file with mode: 0644]
lib/dijit/nls/zh/common.js [new file with mode: 0644]
lib/dijit/nls/zh/loading.js [new file with mode: 0644]
lib/dijit/resources/_modules.js [new file with mode: 0644]
lib/dijit/robot.js [new file with mode: 0644]
lib/dijit/robotx.js [new file with mode: 0644]
lib/dijit/themes/a11y/README.txt [new file with mode: 0644]
lib/dijit/themes/a11y/colors3x4-rtl.png [new file with mode: 0644]
lib/dijit/themes/a11y/colors3x4.png [new file with mode: 0644]
lib/dijit/themes/a11y/colors7x10-rtl.png [new file with mode: 0644]
lib/dijit/themes/a11y/colors7x10.png [new file with mode: 0644]
lib/dijit/themes/a11y/indeterminate_progress.gif [new file with mode: 0644]
lib/dijit/themes/claro/Calendar.css [new file with mode: 0644]
lib/dijit/themes/claro/Calendar_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/ColorPalette.css [new file with mode: 0644]
lib/dijit/themes/claro/Common.css [new file with mode: 0644]
lib/dijit/themes/claro/Dialog.css [new file with mode: 0644]
lib/dijit/themes/claro/Dialog_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/Editor.css [new file with mode: 0644]
lib/dijit/themes/claro/Editor_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/InlineEditBox.css [new file with mode: 0644]
lib/dijit/themes/claro/Menu.css [new file with mode: 0644]
lib/dijit/themes/claro/Menu_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/ProgressBar.css [new file with mode: 0644]
lib/dijit/themes/claro/TimePicker.css [new file with mode: 0644]
lib/dijit/themes/claro/TimePicker_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/TitlePane.css [new file with mode: 0644]
lib/dijit/themes/claro/TitlePane_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/Toolbar.css [new file with mode: 0644]
lib/dijit/themes/claro/Tree.css [new file with mode: 0644]
lib/dijit/themes/claro/claro.css [new file with mode: 0644]
lib/dijit/themes/claro/claro_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/document.css [new file with mode: 0644]
lib/dijit/themes/claro/form/Button.css [new file with mode: 0644]
lib/dijit/themes/claro/form/Button_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/form/Checkbox.css [new file with mode: 0644]
lib/dijit/themes/claro/form/Common.css [new file with mode: 0644]
lib/dijit/themes/claro/form/Common_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/form/NumberSpinner.css [new file with mode: 0644]
lib/dijit/themes/claro/form/RadioButton.css [new file with mode: 0644]
lib/dijit/themes/claro/form/Select.css [new file with mode: 0644]
lib/dijit/themes/claro/form/Select_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/form/Slider.css [new file with mode: 0644]
lib/dijit/themes/claro/form/Slider_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/form/images/button.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/buttonArrows.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/button_grad_d.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/checkboxRadioButtonStates.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/commonFormArrows.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/error.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/formHighlight.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/shadow.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/sliderHorizontal.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/sliderThumbs.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/sliderVertical.png [new file with mode: 0644]
lib/dijit/themes/claro/form/images/textBox_back.png [new file with mode: 0644]
lib/dijit/themes/claro/images/calendarArrows.png [new file with mode: 0644]
lib/dijit/themes/claro/images/calendarArrows8bit.png [new file with mode: 0644]
lib/dijit/themes/claro/images/calendarContainerImages.png [new file with mode: 0644]
lib/dijit/themes/claro/images/checkmarkNoBorder.gif [new file with mode: 0644]
lib/dijit/themes/claro/images/checkmarkNoBorder.png [new file with mode: 0644]
lib/dijit/themes/claro/images/commonHighlight.png [new file with mode: 0644]
lib/dijit/themes/claro/images/dialogCloseIcon.png [new file with mode: 0644]
lib/dijit/themes/claro/images/dialogCloseIcon8bit.png [new file with mode: 0644]
lib/dijit/themes/claro/images/dnd.png [new file with mode: 0644]
lib/dijit/themes/claro/images/loading.gif [new file with mode: 0644]
lib/dijit/themes/claro/images/loadingAnimation.gif [new file with mode: 0644]
lib/dijit/themes/claro/images/menuHighlight.png [new file with mode: 0644]
lib/dijit/themes/claro/images/progressBarAnim.gif [new file with mode: 0644]
lib/dijit/themes/claro/images/progressBarEmpty.png [new file with mode: 0644]
lib/dijit/themes/claro/images/progressBarFull.png [new file with mode: 0644]
lib/dijit/themes/claro/images/spriteArrows.png [new file with mode: 0644]
lib/dijit/themes/claro/images/titlebar.png [new file with mode: 0644]
lib/dijit/themes/claro/images/tooltip.png [new file with mode: 0644]
lib/dijit/themes/claro/images/tooltip8bit.png [new file with mode: 0644]
lib/dijit/themes/claro/images/treeExpandImages.png [new file with mode: 0644]
lib/dijit/themes/claro/images/treeExpandImages8bit.png [new file with mode: 0644]
lib/dijit/themes/claro/images/treeExpand_loading.gif [new file with mode: 0644]
lib/dijit/themes/claro/layout/AccordionContainer.css [new file with mode: 0644]
lib/dijit/themes/claro/layout/BorderContainer.css [new file with mode: 0644]
lib/dijit/themes/claro/layout/ContentPane.css [new file with mode: 0644]
lib/dijit/themes/claro/layout/TabContainer.css [new file with mode: 0644]
lib/dijit/themes/claro/layout/TabContainer_rtl.css [new file with mode: 0644]
lib/dijit/themes/claro/layout/images/accordion.png [new file with mode: 0644]
lib/dijit/themes/claro/layout/images/splitterHorizontalHover.png [new file with mode: 0644]
lib/dijit/themes/claro/layout/images/splitterVerticalHover.png [new file with mode: 0644]
lib/dijit/themes/claro/layout/images/tabBottom.png [new file with mode: 0644]
lib/dijit/themes/claro/layout/images/tabClose.png [new file with mode: 0644]
lib/dijit/themes/claro/layout/images/tabLeft.png [new file with mode: 0644]
lib/dijit/themes/claro/layout/images/tabNested.png [new file with mode: 0644]
lib/dijit/themes/claro/layout/images/tabRight.png [new file with mode: 0644]
lib/dijit/themes/claro/layout/images/tabTop.png [new file with mode: 0644]
lib/dijit/themes/dijit.css [new file with mode: 0644]
lib/dijit/themes/dijit_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Calendar.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Calendar_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/ColorPalette.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Common.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Dialog.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Dialog_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Editor.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Editor_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Menu.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Menu_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/ProgressBar.css [new file with mode: 0644]
lib/dijit/themes/nihilo/TimePicker.css [new file with mode: 0644]
lib/dijit/themes/nihilo/TimePicker_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/TitlePane.css [new file with mode: 0644]
lib/dijit/themes/nihilo/TitlePane_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Toolbar.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Tree.css [new file with mode: 0644]
lib/dijit/themes/nihilo/Tree_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/form/Button.css [new file with mode: 0644]
lib/dijit/themes/nihilo/form/Button_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/form/Checkbox.css [new file with mode: 0644]
lib/dijit/themes/nihilo/form/Common.css [new file with mode: 0644]
lib/dijit/themes/nihilo/form/RadioButton.css [new file with mode: 0644]
lib/dijit/themes/nihilo/form/Select.css [new file with mode: 0644]
lib/dijit/themes/nihilo/form/Slider.css [new file with mode: 0644]
lib/dijit/themes/nihilo/form/Slider_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/form/TimeTextBox.css [new file with mode: 0644]
lib/dijit/themes/nihilo/images/accordionItemActive.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/buttonActive.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/buttonDisabled.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/buttonEnabled.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/buttonHover.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/dndCopy.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/dndMove.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/dndNoCopy.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/dndNoMove.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/no.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/preciseSliderThumb.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/preciseSliderThumb.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/progressBarAnim.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/progressBarEmpty.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/progressBarFull.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderEmpty.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderEmptyVertical.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderFull.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderFullFocus.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderFullVertical.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderFullVerticalFocus.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderThumb.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderThumb.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderThumbFocus.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/sliderThumbFocus.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/splitContainerSizerH.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/splitContainerSizerV.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteArrows.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteArrows.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteCheckbox.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteCheckbox.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteDivIcons.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteDivIcons.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteRadio.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteRadio.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteTree.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteTree.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteTree_rtl.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/spriteTree_rtl.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabBottomActiveC.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabBottomEnabledC.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabBottomHoverC.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabContainerSprite.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabLeftChecked.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabRightChecked.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabStripe.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabStripeBottom.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabStripeLeft.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tabStripeRight.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/titleBar.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/titleBarActive.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tooltipConnectorDown.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tooltipConnectorDown.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tooltipConnectorLeft.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tooltipConnectorLeft.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tooltipConnectorRight.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tooltipConnectorRight.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tooltipConnectorUp.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/tooltipConnectorUp.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/treeExpand_loading.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/treeHover.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/treeI.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/treeI_half.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/treeI_half_rtl.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/treeI_rtl.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/validationInputBg.gif [new file with mode: 0644]
lib/dijit/themes/nihilo/images/validationInputBg.png [new file with mode: 0644]
lib/dijit/themes/nihilo/images/warning.png [new file with mode: 0644]
lib/dijit/themes/nihilo/layout/AccordionContainer.css [new file with mode: 0644]
lib/dijit/themes/nihilo/layout/AccordionContainer_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/layout/BorderContainer.css [new file with mode: 0644]
lib/dijit/themes/nihilo/layout/ContentPane.css [new file with mode: 0644]
lib/dijit/themes/nihilo/layout/SplitContainer.css [new file with mode: 0644]
lib/dijit/themes/nihilo/layout/TabContainer.css [new file with mode: 0644]
lib/dijit/themes/nihilo/layout/TabContainer_rtl.css [new file with mode: 0644]
lib/dijit/themes/nihilo/nihilo.css [new file with mode: 0644]
lib/dijit/themes/nihilo/nihilo_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/Calendar.css [new file with mode: 0644]
lib/dijit/themes/soria/Calendar_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/ColorPalette.css [new file with mode: 0644]
lib/dijit/themes/soria/Common.css [new file with mode: 0644]
lib/dijit/themes/soria/Dialog.css [new file with mode: 0644]
lib/dijit/themes/soria/Dialog_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/Editor.css [new file with mode: 0644]
lib/dijit/themes/soria/Editor_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/Menu.css [new file with mode: 0644]
lib/dijit/themes/soria/Menu_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/ProgressBar.css [new file with mode: 0644]
lib/dijit/themes/soria/TimePicker.css [new file with mode: 0644]
lib/dijit/themes/soria/TimePicker_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/TitlePane.css [new file with mode: 0644]
lib/dijit/themes/soria/TitlePane_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/Toolbar.css [new file with mode: 0644]
lib/dijit/themes/soria/Tree.css [new file with mode: 0644]
lib/dijit/themes/soria/Tree_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/form/Button.css [new file with mode: 0644]
lib/dijit/themes/soria/form/Button_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/form/Checkbox.css [new file with mode: 0644]
lib/dijit/themes/soria/form/Common.css [new file with mode: 0644]
lib/dijit/themes/soria/form/RadioButton.css [new file with mode: 0644]
lib/dijit/themes/soria/form/Select.css [new file with mode: 0644]
lib/dijit/themes/soria/form/Slider.css [new file with mode: 0644]
lib/dijit/themes/soria/form/Slider_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/form/TimeTextBox.css [new file with mode: 0644]
lib/dijit/themes/soria/images/accordionItemActive.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/accordionItemActive.png [new file with mode: 0644]
lib/dijit/themes/soria/images/buttonActive.png [new file with mode: 0644]
lib/dijit/themes/soria/images/buttonDisabled.png [new file with mode: 0644]
lib/dijit/themes/soria/images/buttonEnabled.png [new file with mode: 0644]
lib/dijit/themes/soria/images/buttonHover.png [new file with mode: 0644]
lib/dijit/themes/soria/images/dndCopy.png [new file with mode: 0644]
lib/dijit/themes/soria/images/dndMove.png [new file with mode: 0644]
lib/dijit/themes/soria/images/dndNoCopy.png [new file with mode: 0644]
lib/dijit/themes/soria/images/dndNoMove.png [new file with mode: 0644]
lib/dijit/themes/soria/images/preciseSliderThumb.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/preciseSliderThumb.png [new file with mode: 0644]
lib/dijit/themes/soria/images/preciseSliderThumbFocus.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/preciseSliderThumbFocus.png [new file with mode: 0644]
lib/dijit/themes/soria/images/progressBarAnim.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/progressBarEmpty.png [new file with mode: 0644]
lib/dijit/themes/soria/images/progressBarFull.png [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderEmpty.png [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderEmptyVertical.png [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderFull.png [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderFullFocus.png [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderFullVertical.png [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderFullVerticalFocus.png [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderThumb.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderThumb.png [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderThumbFocus.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/sliderThumbFocus.png [new file with mode: 0644]
lib/dijit/themes/soria/images/splitContainerSizerH-thumb.png [new file with mode: 0644]
lib/dijit/themes/soria/images/splitContainerSizerH.png [new file with mode: 0644]
lib/dijit/themes/soria/images/splitContainerSizerV-thumb.png [new file with mode: 0644]
lib/dijit/themes/soria/images/splitContainerSizerV.png [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteArrows.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteArrows.png [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteCheckbox.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteCheckbox.png [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteDivIcons.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteDivIcons.png [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteRadio.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteRadio.png [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteRoundedIconsSmall.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteRoundedIconsSmall.png [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteTree.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteTree.png [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteTree_rtl.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/spriteTree_rtl.png [new file with mode: 0644]
lib/dijit/themes/soria/images/tabBottomActiveC.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabBottomEnabledC.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabBottomHoverC.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabContainerSprite.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabLeftChecked.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabRightChecked.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabStripe.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabStripeBottom.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabStripeLeft.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tabStripeRight.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/titleBar.png [new file with mode: 0644]
lib/dijit/themes/soria/images/titleBarActive.png [new file with mode: 0644]
lib/dijit/themes/soria/images/tooltipConnectorDown.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tooltipConnectorDown.png [new file with mode: 0644]
lib/dijit/themes/soria/images/tooltipConnectorLeft.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tooltipConnectorLeft.png [new file with mode: 0644]
lib/dijit/themes/soria/images/tooltipConnectorRight.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tooltipConnectorRight.png [new file with mode: 0644]
lib/dijit/themes/soria/images/tooltipConnectorUp.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/tooltipConnectorUp.png [new file with mode: 0644]
lib/dijit/themes/soria/images/treeExpand_loading.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/treeHover.png [new file with mode: 0644]
lib/dijit/themes/soria/images/treeI.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/treeI_half.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/treeI_half_rtl.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/treeI_rtl.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/validationInputBg.gif [new file with mode: 0644]
lib/dijit/themes/soria/images/validationInputBg.png [new file with mode: 0644]
lib/dijit/themes/soria/images/warning.png [new file with mode: 0644]
lib/dijit/themes/soria/layout/AccordionContainer.css [new file with mode: 0644]
lib/dijit/themes/soria/layout/AccordionContainer_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/layout/BorderContainer.css [new file with mode: 0644]
lib/dijit/themes/soria/layout/ContentPane.css [new file with mode: 0644]
lib/dijit/themes/soria/layout/SplitContainer.css [new file with mode: 0644]
lib/dijit/themes/soria/layout/TabContainer.css [new file with mode: 0644]
lib/dijit/themes/soria/layout/TabContainer_rtl.css [new file with mode: 0644]
lib/dijit/themes/soria/soria.css [new file with mode: 0644]
lib/dijit/themes/soria/soria_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/Calendar.css [new file with mode: 0644]
lib/dijit/themes/tundra/Calendar_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/ColorPalette.css [new file with mode: 0644]
lib/dijit/themes/tundra/Common.css [new file with mode: 0644]
lib/dijit/themes/tundra/Dialog.css [new file with mode: 0644]
lib/dijit/themes/tundra/Dialog_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/Editor.css [new file with mode: 0644]
lib/dijit/themes/tundra/Editor_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/Menu.css [new file with mode: 0644]
lib/dijit/themes/tundra/Menu_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/ProgressBar.css [new file with mode: 0644]
lib/dijit/themes/tundra/TimePicker.css [new file with mode: 0644]
lib/dijit/themes/tundra/TimePicker_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/TitlePane.css [new file with mode: 0644]
lib/dijit/themes/tundra/TitlePane_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/Toolbar.css [new file with mode: 0644]
lib/dijit/themes/tundra/Tree.css [new file with mode: 0644]
lib/dijit/themes/tundra/Tree_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/form/Button.css [new file with mode: 0644]
lib/dijit/themes/tundra/form/Checkbox.css [new file with mode: 0644]
lib/dijit/themes/tundra/form/Common.css [new file with mode: 0644]
lib/dijit/themes/tundra/form/RadioButton.css [new file with mode: 0644]
lib/dijit/themes/tundra/form/Select.css [new file with mode: 0644]
lib/dijit/themes/tundra/form/Slider.css [new file with mode: 0644]
lib/dijit/themes/tundra/form/Slider_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/images/accordionItemActive.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/accordionItemHover.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/buttonActive.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/buttonDisabled.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/buttonEnabled.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/buttonHover.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/calendarDayLabel.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/calendarMonthLabel.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/calendarYearLabel.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/checkmark.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/checkmark.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/checkmarkNoBorder.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/checkmarkNoBorder.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/circleIcon.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/circleIcon.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/comboArrowDown.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/dijitProgressBarAnim.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/dijitProgressBarAnim.psd [new file with mode: 0644]
lib/dijit/themes/tundra/images/dndCopy.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/dndMove.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/dndNoCopy.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/dndNoMove.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/dojoTundraGradientBg.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/dojoTundraGradientBg.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/doubleArrowDown.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/doubleArrowUp.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/folderClosed.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/folderOpened.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/i.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/i_half.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/i_half_rtl.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/i_rtl.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/leaf.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/loading.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/menu.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/minusButton.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/no.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/noX.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/plusButton.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/popupMenuBg.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/preciseSliderThumb.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/preciseSliderThumb.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/preciseSliderThumbFocus.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/preciseSliderThumbFocus.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim-1.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim-2.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim-3.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim-4.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim-5.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim-6.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim-7.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim-8.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim-9.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarAnim.psd [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarEmpty.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/progressBarFull.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/radioButtonActive.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/radioButtonActiveDisabled.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/radioButtonActiveHover.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/radioButtonDisabled.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/radioButtonEnabled.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/radioButtonHover.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/sliderEmpty.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/sliderEmptyVertical.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/sliderFull.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/sliderFullFocus.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/sliderFullVertical.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/sliderFullVerticalFocus.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/sliderThumb.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/sliderThumbFocus.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/sliderThumbFocus.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/smallArrowDown.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/smallArrowUp.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/splitContainerSizerH-thumb.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/splitContainerSizerH.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/splitContainerSizerV-thumb.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/splitContainerSizerV.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/spriteArrows.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/spriteArrows.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/tabActive.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/tabClose.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/tabClose.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/tabCloseHover.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/tabCloseHover.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/tabDisabled.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/tabEnabled.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/tabHover.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/tabHover.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/titleBar.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/titleBarBg.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/tooltipConnectorDown.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/tooltipConnectorDown.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/tooltipConnectorLeft.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/tooltipConnectorLeft.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/tooltipConnectorRight.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/tooltipConnectorRight.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/tooltipConnectorUp.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/tooltipConnectorUp.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/treeExpand_leaf.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/treeExpand_loading.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/treeExpand_minus.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/treeExpand_minus_rtl.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/treeExpand_mius.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/treeExpand_plus.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/treeExpand_plus_rtl.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/treeHover.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/validationInputBg.gif [new file with mode: 0644]
lib/dijit/themes/tundra/images/validationInputBg.png [new file with mode: 0644]
lib/dijit/themes/tundra/images/warning.png [new file with mode: 0644]
lib/dijit/themes/tundra/layout/AccordionContainer.css [new file with mode: 0644]
lib/dijit/themes/tundra/layout/BorderContainer.css [new file with mode: 0644]
lib/dijit/themes/tundra/layout/ContentPane.css [new file with mode: 0644]
lib/dijit/themes/tundra/layout/SplitContainer.css [new file with mode: 0644]
lib/dijit/themes/tundra/layout/TabContainer.css [new file with mode: 0644]
lib/dijit/themes/tundra/layout/TabContainer_rtl.css [new file with mode: 0644]
lib/dijit/themes/tundra/tundra.css [new file with mode: 0644]
lib/dijit/themes/tundra/tundra_rtl.css [new file with mode: 0644]
lib/dijit/tree/ForestStoreModel.js [new file with mode: 0644]
lib/dijit/tree/TreeStoreModel.js [new file with mode: 0644]
lib/dijit/tree/_dndContainer.js [new file with mode: 0644]
lib/dijit/tree/_dndSelector.js [new file with mode: 0644]
lib/dijit/tree/dndSource.js [new file with mode: 0644]
lib/dijit/tree/model.js [new file with mode: 0644]
lib/dojo/AdapterRegistry.js [new file with mode: 0644]
lib/dojo/DeferredList.js [new file with mode: 0644]
lib/dojo/LICENSE [new file with mode: 0644]
lib/dojo/NodeList-fx.js [new file with mode: 0644]
lib/dojo/NodeList-html.js [new file with mode: 0644]
lib/dojo/NodeList-manipulate.js [new file with mode: 0644]
lib/dojo/NodeList-traverse.js [new file with mode: 0644]
lib/dojo/OpenAjax.js [new file with mode: 0644]
lib/dojo/Stateful.js [new file with mode: 0644]
lib/dojo/_base.js [new file with mode: 0644]
lib/dojo/_base/Color.js [new file with mode: 0644]
lib/dojo/_base/Deferred.js [new file with mode: 0644]
lib/dojo/_base/NodeList.js [new file with mode: 0644]
lib/dojo/_base/_loader/bootstrap.js [new file with mode: 0644]
lib/dojo/_base/_loader/hostenv_browser.js [new file with mode: 0644]
lib/dojo/_base/_loader/hostenv_ff_ext.js [new file with mode: 0644]
lib/dojo/_base/_loader/hostenv_rhino.js [new file with mode: 0644]
lib/dojo/_base/_loader/hostenv_spidermonkey.js [new file with mode: 0644]
lib/dojo/_base/_loader/loader.js [new file with mode: 0644]
lib/dojo/_base/_loader/loader_debug.js [new file with mode: 0644]
lib/dojo/_base/_loader/loader_xd.js [new file with mode: 0644]
lib/dojo/_base/array.js [new file with mode: 0644]
lib/dojo/_base/browser.js [new file with mode: 0644]
lib/dojo/_base/connect.js [new file with mode: 0644]
lib/dojo/_base/declare.js [new file with mode: 0644]
lib/dojo/_base/event.js [new file with mode: 0644]
lib/dojo/_base/fx.js [new file with mode: 0644]
lib/dojo/_base/html.js [new file with mode: 0644]
lib/dojo/_base/json.js [new file with mode: 0644]
lib/dojo/_base/lang.js [new file with mode: 0644]
lib/dojo/_base/query-sizzle.js [new file with mode: 0644]
lib/dojo/_base/query.js [new file with mode: 0644]
lib/dojo/_base/window.js [new file with mode: 0644]
lib/dojo/_base/xhr.js [new file with mode: 0644]
lib/dojo/_firebug/LICENSE [new file with mode: 0644]
lib/dojo/_firebug/errorIcon.png [new file with mode: 0644]
lib/dojo/_firebug/firebug.css [new file with mode: 0644]
lib/dojo/_firebug/firebug.js [new file with mode: 0644]
lib/dojo/_firebug/infoIcon.png [new file with mode: 0644]
lib/dojo/_firebug/tab_lft_norm.png [new file with mode: 0644]
lib/dojo/_firebug/tab_lft_over.png [new file with mode: 0644]
lib/dojo/_firebug/tab_rgt_norm.png [new file with mode: 0644]
lib/dojo/_firebug/tab_rgt_over.png [new file with mode: 0644]
lib/dojo/_firebug/warningIcon.png [new file with mode: 0644]
lib/dojo/back.js [new file with mode: 0644]
lib/dojo/behavior.js [new file with mode: 0644]
lib/dojo/build.txt [new file with mode: 0644]
lib/dojo/cache.js [new file with mode: 0644]
lib/dojo/cldr/LICENSE [new file with mode: 0644]
lib/dojo/cldr/README [new file with mode: 0644]
lib/dojo/cldr/monetary.js [new file with mode: 0644]
lib/dojo/cldr/nls/ar/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/ar/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/ar/hebrew.js [new file with mode: 0644]
lib/dojo/cldr/nls/ar/islamic-civil.js [new file with mode: 0644]
lib/dojo/cldr/nls/ar/islamic.js [new file with mode: 0644]
lib/dojo/cldr/nls/ar/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/buddhist.js [new file with mode: 0644]
lib/dojo/cldr/nls/ca/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/ca/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/ca/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/cs/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/cs/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/cs/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/da/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/da/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/da/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/de/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/de/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/de/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/el/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/el/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/el/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/en-au/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/en-au/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/en-au/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/en-ca/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/en-ca/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/en-gb/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/en-gb/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/en/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/en/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/en/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/es/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/es/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/es/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/fi/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/fi/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/fi/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/fr/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/fr/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/fr/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/he/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/he/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/he/hebrew.js [new file with mode: 0644]
lib/dojo/cldr/nls/he/islamic.js [new file with mode: 0644]
lib/dojo/cldr/nls/he/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/hebrew.js [new file with mode: 0644]
lib/dojo/cldr/nls/hu/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/hu/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/hu/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/islamic.js [new file with mode: 0644]
lib/dojo/cldr/nls/it/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/it/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/it/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/ja/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/ja/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/ja/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/ko/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/ko/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/ko/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/nb/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/nb/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/nb/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/nl/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/nl/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/nl/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/pl/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/pl/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/pl/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/pt-pt/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/pt-pt/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/pt/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/pt/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/pt/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/ru/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/ru/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/ru/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/sk/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/sk/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/sk/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/sl/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/sl/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/sl/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/sv/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/sv/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/sv/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/th/buddhist.js [new file with mode: 0644]
lib/dojo/cldr/nls/th/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/th/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/th/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/tr/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/tr/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/tr/number.js [new file with mode: 0644]
lib/dojo/cldr/nls/zh-tw/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/zh-tw/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/zh/currency.js [new file with mode: 0644]
lib/dojo/cldr/nls/zh/gregorian.js [new file with mode: 0644]
lib/dojo/cldr/nls/zh/number.js [new file with mode: 0644]
lib/dojo/cldr/supplemental.js [new file with mode: 0644]
lib/dojo/colors.js [new file with mode: 0644]
lib/dojo/cookie.js [new file with mode: 0644]
lib/dojo/currency.js [new file with mode: 0644]
lib/dojo/data/ItemFileReadStore.js [new file with mode: 0644]
lib/dojo/data/ItemFileWriteStore.js [new file with mode: 0644]
lib/dojo/data/api/Identity.js [new file with mode: 0644]
lib/dojo/data/api/Notification.js [new file with mode: 0644]
lib/dojo/data/api/Read.js [new file with mode: 0644]
lib/dojo/data/api/Request.js [new file with mode: 0644]
lib/dojo/data/api/Write.js [new file with mode: 0644]
lib/dojo/data/util/filter.js [new file with mode: 0644]
lib/dojo/data/util/simpleFetch.js [new file with mode: 0644]
lib/dojo/data/util/sorter.js [new file with mode: 0644]
lib/dojo/date.js [new file with mode: 0644]
lib/dojo/date/locale.js [new file with mode: 0644]
lib/dojo/date/stamp.js [new file with mode: 0644]
lib/dojo/dnd/Avatar.js [new file with mode: 0644]
lib/dojo/dnd/Container.js [new file with mode: 0644]
lib/dojo/dnd/Manager.js [new file with mode: 0644]
lib/dojo/dnd/Moveable.js [new file with mode: 0644]
lib/dojo/dnd/Mover.js [new file with mode: 0644]
lib/dojo/dnd/Selector.js [new file with mode: 0644]
lib/dojo/dnd/Source.js [new file with mode: 0644]
lib/dojo/dnd/TimedMoveable.js [new file with mode: 0644]
lib/dojo/dnd/autoscroll.js [new file with mode: 0644]
lib/dojo/dnd/common.js [new file with mode: 0644]
lib/dojo/dnd/move.js [new file with mode: 0644]
lib/dojo/dojo.js [new file with mode: 0644]
lib/dojo/dojo.js.uncompressed.js [new file with mode: 0644]
lib/dojo/fx.js [new file with mode: 0644]
lib/dojo/fx/Toggler.js [new file with mode: 0644]
lib/dojo/fx/easing.js [new file with mode: 0644]
lib/dojo/gears.js [new file with mode: 0644]
lib/dojo/hash.js [new file with mode: 0644]
lib/dojo/html.js [new file with mode: 0644]
lib/dojo/i18n.js [new file with mode: 0644]
lib/dojo/io/iframe.js [new file with mode: 0644]
lib/dojo/io/script.js [new file with mode: 0644]
lib/dojo/jaxer.js [new file with mode: 0644]
lib/dojo/nls/ar/colors.js [new file with mode: 0644]
lib/dojo/nls/ca/colors.js [new file with mode: 0644]
lib/dojo/nls/colors.js [new file with mode: 0644]
lib/dojo/nls/cs/colors.js [new file with mode: 0644]
lib/dojo/nls/da/colors.js [new file with mode: 0644]
lib/dojo/nls/de/colors.js [new file with mode: 0644]
lib/dojo/nls/el/colors.js [new file with mode: 0644]
lib/dojo/nls/es/colors.js [new file with mode: 0644]
lib/dojo/nls/fi/colors.js [new file with mode: 0644]
lib/dojo/nls/fr/colors.js [new file with mode: 0644]
lib/dojo/nls/he/colors.js [new file with mode: 0644]
lib/dojo/nls/hu/colors.js [new file with mode: 0644]
lib/dojo/nls/it/colors.js [new file with mode: 0644]
lib/dojo/nls/ja/colors.js [new file with mode: 0644]
lib/dojo/nls/ko/colors.js [new file with mode: 0644]
lib/dojo/nls/nb/colors.js [new file with mode: 0644]
lib/dojo/nls/nl/colors.js [new file with mode: 0644]
lib/dojo/nls/pl/colors.js [new file with mode: 0644]
lib/dojo/nls/pt-pt/colors.js [new file with mode: 0644]
lib/dojo/nls/pt/colors.js [new file with mode: 0644]
lib/dojo/nls/ro/colors.js [new file with mode: 0644]
lib/dojo/nls/ru/colors.js [new file with mode: 0644]
lib/dojo/nls/sk/colors.js [new file with mode: 0644]
lib/dojo/nls/sl/colors.js [new file with mode: 0644]
lib/dojo/nls/sv/colors.js [new file with mode: 0644]
lib/dojo/nls/th/colors.js [new file with mode: 0644]
lib/dojo/nls/tr/colors.js [new file with mode: 0644]
lib/dojo/nls/zh-tw/colors.js [new file with mode: 0644]
lib/dojo/nls/zh/colors.js [new file with mode: 0644]
lib/dojo/number.js [new file with mode: 0644]
lib/dojo/parser.js [new file with mode: 0644]
lib/dojo/regexp.js [new file with mode: 0644]
lib/dojo/resources/LICENSE [new file with mode: 0644]
lib/dojo/resources/_modules.js [new file with mode: 0644]
lib/dojo/resources/blank.gif [new file with mode: 0644]
lib/dojo/resources/blank.html [new file with mode: 0644]
lib/dojo/resources/dnd.css [new file with mode: 0644]
lib/dojo/resources/dojo.css [new file with mode: 0644]
lib/dojo/resources/iframe_history.html [new file with mode: 0644]
lib/dojo/resources/images/dndCopy.png [new file with mode: 0644]
lib/dojo/resources/images/dndMove.png [new file with mode: 0644]
lib/dojo/resources/images/dndNoCopy.png [new file with mode: 0644]
lib/dojo/resources/images/dndNoMove.png [new file with mode: 0644]
lib/dojo/robot.js [new file with mode: 0644]
lib/dojo/robotx.js [new file with mode: 0644]
lib/dojo/rpc/JsonService.js [new file with mode: 0644]
lib/dojo/rpc/JsonpService.js [new file with mode: 0644]
lib/dojo/rpc/RpcService.js [new file with mode: 0644]
lib/dojo/string.js [new file with mode: 0644]
lib/dojo/uacss.js [new file with mode: 0644]
lib/dojo/window.js [new file with mode: 0644]
tt-rss.css
tt-rss.js
tt-rss.php

index 7dfaef9526204ffa4dc883e94f493517eb6069c5..5ee103747c7dee11a271a0b785614c93f50b9531 100644 (file)
@@ -441,7 +441,7 @@ function feedlist_init() {
        }
 }
 
-function hide_footer_af(effect) {
+/* function hide_footer_af(effect) {
        try {
                var c = $("content-frame");
 
@@ -465,12 +465,15 @@ function hide_footer_af(effect) {
        } catch (e) {
                exception_error("hide_footer_af", e);
        }
-}
+} */
 
 function hide_footer() {
        try {
                if (Element.visible("footer")) {
-                       new Effect.Fade("footer", { afterFinish: hide_footer_af });
+
+                       Element.hide("footer");
+
+                       //new Effect.Fade("footer", { afterFinish: hide_footer_af });
                }
        } catch (e) {
                exception_error("hide_footer", e);
diff --git a/lib/dijit/Calendar.js b/lib/dijit/Calendar.js
new file mode 100644 (file)
index 0000000..fa82770
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.Calendar"]){
+dojo._hasResource["dijit.Calendar"]=true;
+dojo.provide("dijit.Calendar");
+dojo.require("dojo.cldr.supplemental");
+dojo.require("dojo.date");
+dojo.require("dojo.date.locale");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._CssStateMixin");
+dojo.declare("dijit.Calendar",[dijit._Widget,dijit._Templated,dijit._CssStateMixin],{templateString:dojo.cache("dijit","templates/Calendar.html","<table cellspacing=\"0\" cellpadding=\"0\" class=\"dijitCalendarContainer\" role=\"grid\" dojoAttachEvent=\"onkeypress: _onKeyPress\">\n\t<thead>\n\t\t<tr class=\"dijitReset dijitCalendarMonthContainer\" valign=\"top\">\n\t\t\t<th class='dijitReset dijitCalendarArrow' dojoAttachPoint=\"decrementMonth\">\n\t\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitCalendarIncrementControl dijitCalendarDecrease\" waiRole=\"presentation\"/>\n\t\t\t\t<span dojoAttachPoint=\"decreaseArrowNode\" class=\"dijitA11ySideArrow\">-</span>\n\t\t\t</th>\n\t\t\t<th class='dijitReset' colspan=\"5\">\n\t\t\t\t<div class=\"dijitVisible\">\n\t\t\t\t\t<div class=\"dijitPopup dijitMenu dijitMenuPassive dijitHidden\" dojoAttachPoint=\"monthDropDown\" dojoAttachEvent=\"onmouseup: _onMonthSelect, onmouseover: _onMenuHover, onmouseout: _onMenuHover\">\n\t\t\t\t\t\t<div class=\"dijitCalendarMonthLabelTemplate dijitCalendarMonthLabel\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div dojoAttachPoint=\"monthLabelSpacer\" class=\"dijitSpacer\"></div>\n\t\t\t\t<div dojoAttachPoint=\"monthLabelNode\" class=\"dijitCalendarMonthLabel dijitInline dijitVisible\" dojoAttachEvent=\"onmousedown: _onMonthToggle\"></div>\n\t\t\t</th>\n\t\t\t<th class='dijitReset dijitCalendarArrow' dojoAttachPoint=\"incrementMonth\">\n\t\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitCalendarIncrementControl dijitCalendarIncrease\" waiRole=\"presentation\"/>\n\t\t\t\t<span dojoAttachPoint=\"increaseArrowNode\" class=\"dijitA11ySideArrow\">+</span>\n\t\t\t</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<th class=\"dijitReset dijitCalendarDayLabelTemplate\" role=\"columnheader\"><span class=\"dijitCalendarDayLabel\"></span></th>\n\t\t</tr>\n\t</thead>\n\t<tbody dojoAttachEvent=\"onclick: _onDayClick, onmouseover: _onDayMouseOver, onmouseout: _onDayMouseOut, onmousedown: _onDayMouseDown, onmouseup: _onDayMouseUp\" class=\"dijitReset dijitCalendarBodyContainer\">\n\t\t<tr class=\"dijitReset dijitCalendarWeekTemplate\" role=\"row\">\n\t\t\t<td class=\"dijitReset dijitCalendarDateTemplate\" role=\"gridcell\"><span class=\"dijitCalendarDateLabel\"></span></td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot class=\"dijitReset dijitCalendarYearContainer\">\n\t\t<tr>\n\t\t\t<td class='dijitReset' valign=\"top\" colspan=\"7\">\n\t\t\t\t<h3 class=\"dijitCalendarYearLabel\">\n\t\t\t\t\t<span dojoAttachPoint=\"previousYearLabelNode\" class=\"dijitInline dijitCalendarPreviousYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"currentYearLabelNode\" class=\"dijitInline dijitCalendarSelectedYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"nextYearLabelNode\" class=\"dijitInline dijitCalendarNextYear\"></span>\n\t\t\t\t</h3>\n\t\t\t</td>\n\t\t</tr>\n\t</tfoot>\n</table>\n"),value:new Date(),datePackage:"dojo.date",dayWidth:"narrow",tabIndex:"0",baseClass:"dijitCalendar",cssStateNodes:{"decrementMonth":"dijitCalendarArrow","incrementMonth":"dijitCalendarArrow","previousYearLabelNode":"dijitCalendarPreviousYear","nextYearLabelNode":"dijitCalendarNextYear"},attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{tabIndex:"domNode"}),setValue:function(_1){
+dojo.deprecated("dijit.Calendar:setValue() is deprecated.  Use set('value', ...) instead.","","2.0");
+this.set("value",_1);
+},_getValueAttr:function(){
+var _2=new this.dateClassObj(this.value);
+_2.setHours(0,0,0,0);
+if(_2.getDate()<this.value.getDate()){
+_2=this.dateFuncObj.add(_2,"hour",1);
+}
+return _2;
+},_setValueAttr:function(_3){
+if(!this.value||this.dateFuncObj.compare(_3,this.value)){
+_3=new this.dateClassObj(_3);
+_3.setHours(1);
+this.displayMonth=new this.dateClassObj(_3);
+if(!this.isDisabledDate(_3,this.lang)){
+this.value=_3;
+this.onChange(this.get("value"));
+}
+dojo.attr(this.domNode,"aria-label",this.dateLocaleModule.format(_3,{selector:"date",formatLength:"full"}));
+this._populateGrid();
+}
+},_setText:function(_4,_5){
+while(_4.firstChild){
+_4.removeChild(_4.firstChild);
+}
+_4.appendChild(dojo.doc.createTextNode(_5));
+},_populateGrid:function(){
+var _6=this.displayMonth;
+_6.setDate(1);
+var _7=_6.getDay(),_8=this.dateFuncObj.getDaysInMonth(_6),_9=this.dateFuncObj.getDaysInMonth(this.dateFuncObj.add(_6,"month",-1)),_a=new this.dateClassObj(),_b=dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);
+if(_b>_7){
+_b-=7;
+}
+dojo.query(".dijitCalendarDateTemplate",this.domNode).forEach(function(_c,i){
+i+=_b;
+var _d=new this.dateClassObj(_6),_e,_f="dijitCalendar",adj=0;
+if(i<_7){
+_e=_9-_7+i+1;
+adj=-1;
+_f+="Previous";
+}else{
+if(i>=(_7+_8)){
+_e=i-_7-_8+1;
+adj=1;
+_f+="Next";
+}else{
+_e=i-_7+1;
+_f+="Current";
+}
+}
+if(adj){
+_d=this.dateFuncObj.add(_d,"month",adj);
+}
+_d.setDate(_e);
+if(!this.dateFuncObj.compare(_d,_a,"date")){
+_f="dijitCalendarCurrentDate "+_f;
+}
+if(this._isSelectedDate(_d,this.lang)){
+_f="dijitCalendarSelectedDate "+_f;
+}
+if(this.isDisabledDate(_d,this.lang)){
+_f="dijitCalendarDisabledDate "+_f;
+}
+var _10=this.getClassForDate(_d,this.lang);
+if(_10){
+_f=_10+" "+_f;
+}
+_c.className=_f+"Month dijitCalendarDateTemplate";
+_c.dijitDateValue=_d.valueOf();
+var _11=dojo.query(".dijitCalendarDateLabel",_c)[0],_12=_d.getDateLocalized?_d.getDateLocalized(this.lang):_d.getDate();
+this._setText(_11,_12);
+},this);
+var _13=this.dateLocaleModule.getNames("months","wide","standAlone",this.lang,_6);
+this._setText(this.monthLabelNode,_13[_6.getMonth()]);
+dojo.query(".dijitCalendarMonthLabelTemplate",this.domNode).forEach(function(_14,i){
+dojo.toggleClass(_14,"dijitHidden",!(i in _13));
+this._setText(_14,_13[i]);
+},this);
+var y=_6.getFullYear()-1;
+var d=new this.dateClassObj();
+dojo.forEach(["previous","current","next"],function(_15){
+d.setFullYear(y++);
+this._setText(this[_15+"YearLabelNode"],this.dateLocaleModule.format(d,{selector:"year",locale:this.lang}));
+},this);
+var _16=this;
+var _17=function(_18,_19,adj){
+_16._connects.push(dijit.typematic.addMouseListener(_16[_18],_16,function(_1a){
+if(_1a>=0){
+_16._adjustDisplay(_19,adj);
+}
+},0.8,500));
+};
+_17("incrementMonth","month",1);
+_17("decrementMonth","month",-1);
+_17("nextYearLabelNode","year",1);
+_17("previousYearLabelNode","year",-1);
+},goToToday:function(){
+this.set("value",new this.dateClassObj());
+},constructor:function(_1b){
+var _1c=(_1b.datePackage&&(_1b.datePackage!="dojo.date"))?_1b.datePackage+".Date":"Date";
+this.dateClassObj=dojo.getObject(_1c,false);
+this.datePackage=_1b.datePackage||this.datePackage;
+this.dateFuncObj=dojo.getObject(this.datePackage,false);
+this.dateLocaleModule=dojo.getObject(this.datePackage+".locale",false);
+},postMixInProperties:function(){
+if(isNaN(this.value)){
+delete this.value;
+}
+this.inherited(arguments);
+},postCreate:function(){
+this.inherited(arguments);
+dojo.setSelectable(this.domNode,false);
+var _1d=dojo.hitch(this,function(_1e,n){
+var _1f=dojo.query(_1e,this.domNode)[0];
+for(var i=0;i<n;i++){
+_1f.parentNode.appendChild(_1f.cloneNode(true));
+}
+});
+_1d(".dijitCalendarDayLabelTemplate",6);
+_1d(".dijitCalendarDateTemplate",6);
+_1d(".dijitCalendarWeekTemplate",5);
+var _20=this.dateLocaleModule.getNames("days",this.dayWidth,"standAlone",this.lang);
+var _21=dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);
+dojo.query(".dijitCalendarDayLabel",this.domNode).forEach(function(_22,i){
+this._setText(_22,_20[(i+_21)%7]);
+},this);
+var _23=new this.dateClassObj(this.value);
+var _24=this.dateLocaleModule.getNames("months","wide","standAlone",this.lang,_23);
+_1d(".dijitCalendarMonthLabelTemplate",_24.length-1);
+dojo.query(".dijitCalendarMonthLabelTemplate",this.domNode).forEach(function(_25,i){
+dojo.attr(_25,"month",i);
+if(i in _24){
+this._setText(_25,_24[i]);
+}
+dojo.place(_25.cloneNode(true),this.monthLabelSpacer);
+},this);
+this.value=null;
+this.set("value",_23);
+},_onMenuHover:function(e){
+dojo.stopEvent(e);
+dojo.toggleClass(e.target,"dijitMenuItemHover");
+},_adjustDisplay:function(_26,_27){
+this.displayMonth=this.dateFuncObj.add(this.displayMonth,_26,_27);
+this._populateGrid();
+},_onMonthToggle:function(evt){
+dojo.stopEvent(evt);
+if(evt.type=="mousedown"){
+var _28=dojo.position(this.monthLabelNode);
+var dim={width:_28.w+"px",top:-this.displayMonth.getMonth()*_28.h+"px"};
+if((dojo.isIE&&dojo.isQuirks)||dojo.isIE<7){
+dim.left=-_28.w/2+"px";
+}
+dojo.style(this.monthDropDown,dim);
+this._popupHandler=this.connect(document,"onmouseup","_onMonthToggle");
+}else{
+this.disconnect(this._popupHandler);
+delete this._popupHandler;
+}
+dojo.toggleClass(this.monthDropDown,"dijitHidden");
+dojo.toggleClass(this.monthLabelNode,"dijitVisible");
+},_onMonthSelect:function(evt){
+this._onMonthToggle(evt);
+this.displayMonth.setMonth(dojo.attr(evt.target,"month"));
+this._populateGrid();
+},_onDayClick:function(evt){
+dojo.stopEvent(evt);
+for(var _29=evt.target;_29&&!_29.dijitDateValue;_29=_29.parentNode){
+}
+if(_29&&!dojo.hasClass(_29,"dijitCalendarDisabledDate")){
+this.set("value",_29.dijitDateValue);
+this.onValueSelected(this.get("value"));
+}
+},_onDayMouseOver:function(evt){
+var _2a=dojo.hasClass(evt.target,"dijitCalendarDateLabel")?evt.target.parentNode:evt.target;
+if(_2a&&(_2a.dijitDateValue||_2a==this.previousYearLabelNode||_2a==this.nextYearLabelNode)){
+dojo.addClass(_2a,"dijitCalendarHoveredDate");
+this._currentNode=_2a;
+}
+},_onDayMouseOut:function(evt){
+if(!this._currentNode){
+return;
+}
+if(evt.relatedTarget&&evt.relatedTarget.parentNode==this._currentNode){
+return;
+}
+dojo.removeClass(this._currentNode,"dijitCalendarHoveredDate");
+if(dojo.hasClass(this._currentNode,"dijitCalendarActiveDate")){
+dojo.removeClass(this._currentNode,"dijitCalendarActiveDate");
+}
+this._currentNode=null;
+},_onDayMouseDown:function(evt){
+var _2b=evt.target.parentNode;
+if(_2b&&_2b.dijitDateValue){
+dojo.addClass(_2b,"dijitCalendarActiveDate");
+this._currentNode=_2b;
+}
+},_onDayMouseUp:function(evt){
+var _2c=evt.target.parentNode;
+if(_2c&&_2c.dijitDateValue){
+dojo.removeClass(_2c,"dijitCalendarActiveDate");
+}
+},_onKeyPress:function(evt){
+var dk=dojo.keys,_2d=-1,_2e,_2f=this.value;
+switch(evt.keyCode){
+case dk.RIGHT_ARROW:
+_2d=1;
+case dk.LEFT_ARROW:
+_2e="day";
+if(!this.isLeftToRight()){
+_2d*=-1;
+}
+break;
+case dk.DOWN_ARROW:
+_2d=1;
+case dk.UP_ARROW:
+_2e="week";
+break;
+case dk.PAGE_DOWN:
+_2d=1;
+case dk.PAGE_UP:
+_2e=evt.ctrlKey?"year":"month";
+break;
+case dk.END:
+_2f=this.dateFuncObj.add(_2f,"month",1);
+_2e="day";
+case dk.HOME:
+_2f=new Date(_2f).setDate(1);
+break;
+case dk.ENTER:
+this.onValueSelected(this.get("value"));
+break;
+case dk.ESCAPE:
+default:
+return;
+}
+dojo.stopEvent(evt);
+if(_2e){
+_2f=this.dateFuncObj.add(_2f,_2e,_2d);
+}
+this.set("value",_2f);
+},onValueSelected:function(_30){
+},onChange:function(_31){
+},_isSelectedDate:function(_32,_33){
+return !this.dateFuncObj.compare(_32,this.value,"date");
+},isDisabledDate:function(_34,_35){
+},getClassForDate:function(_36,_37){
+}});
+}
diff --git a/lib/dijit/CheckedMenuItem.js b/lib/dijit/CheckedMenuItem.js
new file mode 100644 (file)
index 0000000..a848378
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.CheckedMenuItem"]){
+dojo._hasResource["dijit.CheckedMenuItem"]=true;
+dojo.provide("dijit.CheckedMenuItem");
+dojo.require("dijit.MenuItem");
+dojo.declare("dijit.CheckedMenuItem",dijit.MenuItem,{templateString:dojo.cache("dijit","templates/CheckedMenuItem.html","<tr class=\"dijitReset dijitMenuItem\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitemcheckbox\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" waiRole=\"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\" waiRole=\"presentation\">&nbsp;</td>\n</tr>\n"),checked:false,_setCheckedAttr:function(_1){
+dojo.toggleClass(this.domNode,"dijitCheckedMenuItemChecked",_1);
+dijit.setWaiState(this.domNode,"checked",_1);
+this.checked=_1;
+},onChange:function(_2){
+},_onClick:function(e){
+if(!this.disabled){
+this.set("checked",!this.checked);
+this.onChange(this.checked);
+}
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/ColorPalette.js b/lib/dijit/ColorPalette.js
new file mode 100644 (file)
index 0000000..62aae00
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.ColorPalette"]){
+dojo._hasResource["dijit.ColorPalette"]=true;
+dojo.provide("dijit.ColorPalette");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dojo.colors");
+dojo.require("dojo.i18n");
+dojo.require("dijit._PaletteMixin");
+dojo.requireLocalization("dojo","colors",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit.ColorPalette",[dijit._Widget,dijit._Templated,dijit._PaletteMixin],{palette:"7x10",_palettes:{"7x10":[["white","seashell","cornsilk","lemonchiffon","lightyellow","palegreen","paleturquoise","lightcyan","lavender","plum"],["lightgray","pink","bisque","moccasin","khaki","lightgreen","lightseagreen","lightskyblue","cornflowerblue","violet"],["silver","lightcoral","sandybrown","orange","palegoldenrod","chartreuse","mediumturquoise","skyblue","mediumslateblue","orchid"],["gray","red","orangered","darkorange","yellow","limegreen","darkseagreen","royalblue","slateblue","mediumorchid"],["dimgray","crimson","chocolate","coral","gold","forestgreen","seagreen","blue","blueviolet","darkorchid"],["darkslategray","firebrick","saddlebrown","sienna","olive","green","darkcyan","mediumblue","darkslateblue","darkmagenta"],["black","darkred","maroon","brown","darkolivegreen","darkgreen","midnightblue","navy","indigo","purple"]],"3x4":[["white","lime","green","blue"],["silver","yellow","fuchsia","navy"],["gray","red","purple","black"]]},_imagePaths:{"7x10":dojo.moduleUrl("dijit.themes","a11y/colors7x10.png"),"3x4":dojo.moduleUrl("dijit.themes","a11y/colors3x4.png"),"7x10-rtl":dojo.moduleUrl("dijit.themes","a11y/colors7x10-rtl.png"),"3x4-rtl":dojo.moduleUrl("dijit.themes","a11y/colors3x4-rtl.png")},templateString:dojo.cache("dijit","templates/ColorPalette.html","<div class=\"dijitInline dijitColorPalette\">\n\t<img class=\"dijitColorPaletteUnder\" dojoAttachPoint=\"imageNode\" waiRole=\"presentation\" alt=\"\"/>\n\t<table class=\"dijitPaletteTable\" cellSpacing=\"0\" cellPadding=\"0\">\n\t\t<tbody dojoAttachPoint=\"gridNode\"></tbody>\n\t</table>\n</div>\n"),baseClass:"dijitColorPalette",dyeClass:"dijit._Color",buildRendering:function(){
+this.inherited(arguments);
+this.imageNode.setAttribute("src",this._imagePaths[this.palette+(this.isLeftToRight()?"":"-rtl")].toString());
+var _1=dojo.i18n.getLocalization("dojo","colors",this.lang);
+this._preparePalette(this._palettes[this.palette],_1);
+}});
+dojo.declare("dijit._Color",dojo.Color,{constructor:function(_2){
+this._alias=_2;
+this.setColor(dojo.Color.named[_2]);
+},getValue:function(){
+return this.toHex();
+},fillCell:function(_3,_4){
+dojo.create("img",{src:_4,"class":"dijitPaletteImg",alt:this._alias},_3);
+}});
+}
diff --git a/lib/dijit/Declaration.js b/lib/dijit/Declaration.js
new file mode 100644 (file)
index 0000000..57cbfd0
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.Declaration"]){
+dojo._hasResource["dijit.Declaration"]=true;
+dojo.provide("dijit.Declaration");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.declare("dijit.Declaration",dijit._Widget,{_noScript:true,widgetClass:"",defaults:null,mixins:[],buildRendering:function(){
+var _1=this.srcNodeRef.parentNode.removeChild(this.srcNodeRef),_2=dojo.query("> script[type^='dojo/method'][event]",_1).orphan(),_3=dojo.query("> script[type^='dojo/method']",_1).orphan(),_4=dojo.query("> script[type^='dojo/connect']",_1).orphan(),_5=_1.nodeName;
+var _6=this.defaults||{};
+dojo.forEach(_2,function(s){
+var _7=s.getAttribute("event"),_8=dojo.parser._functionFromScript(s);
+_6[_7]=_8;
+});
+this.mixins=this.mixins.length?dojo.map(this.mixins,function(_9){
+return dojo.getObject(_9);
+}):[dijit._Widget,dijit._Templated];
+_6.widgetsInTemplate=true;
+_6._skipNodeCache=true;
+_6.templateString="<"+_5+" class='"+_1.className+"' dojoAttachPoint='"+(_1.getAttribute("dojoAttachPoint")||"")+"' dojoAttachEvent='"+(_1.getAttribute("dojoAttachEvent")||"")+"' >"+_1.innerHTML.replace(/\%7B/g,"{").replace(/\%7D/g,"}")+"</"+_5+">";
+dojo.query("[dojoType]",_1).forEach(function(_a){
+_a.removeAttribute("dojoType");
+});
+var wc=dojo.declare(this.widgetClass,this.mixins,_6);
+var _b=_4.concat(_3);
+dojo.forEach(_b,function(s){
+var _c=s.getAttribute("event")||"postscript",_d=dojo.parser._functionFromScript(s);
+dojo.connect(wc.prototype,_c,_d);
+});
+}});
+}
diff --git a/lib/dijit/Dialog.js b/lib/dijit/Dialog.js
new file mode 100644 (file)
index 0000000..a35d523
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.Dialog"]){
+dojo._hasResource["dijit.Dialog"]=true;
+dojo.provide("dijit.Dialog");
+dojo.require("dojo.dnd.move");
+dojo.require("dojo.dnd.TimedMoveable");
+dojo.require("dojo.fx");
+dojo.require("dojo.window");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._CssStateMixin");
+dojo.require("dijit.form._FormMixin");
+dojo.require("dijit._DialogMixin");
+dojo.require("dijit.DialogUnderlay");
+dojo.require("dijit.layout.ContentPane");
+dojo.requireLocalization("dijit","common",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit._DialogBase",[dijit._Templated,dijit.form._FormMixin,dijit._DialogMixin,dijit._CssStateMixin],{templateString:dojo.cache("dijit","templates/Dialog.html","<div class=\"dijitDialog\" tabindex=\"-1\" waiRole=\"dialog\" waiState=\"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=\"onclick: onCancel\" title=\"${buttonCancel}\">\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 _1=dojo.i18n.getLocalization("dijit","common");
+dojo.mixin(this,_1);
+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){
+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 _2=this.domNode;
+if(this.titleBar&&this.draggable){
+this._moveable=(dojo.isIE==6)?new dojo.dnd.TimedMoveable(_2,{handle:this.titleBar}):new dojo.dnd.Moveable(_2,{handle:this.titleBar,timeout:0});
+dojo.subscribe("/dnd/move/stop",this,"_endDrag");
+}else{
+dojo.addClass(_2,"dijitDialogFixed");
+}
+this.underlayAttrs={dialogId:this.id,"class":dojo.map(this["class"].split(/\s/),function(s){
+return s+"_underlay";
+}).join(" ")};
+this._fadeIn=dojo.fadeIn({node:_2,duration:this.duration,beforeBegin:dojo.hitch(this,function(){
+var _3=dijit._underlay;
+if(!_3){
+_3=dijit._underlay=new dijit.DialogUnderlay(this.underlayAttrs);
+}else{
+_3.set(this.underlayAttrs);
+}
+var ds=dijit._dialogStack,_4=948+ds.length*2;
+if(ds.length==1){
+_3.show();
+}
+dojo.style(dijit._underlay.domNode,"zIndex",_4);
+dojo.style(this.domNode,"zIndex",_4+1);
+}),onEnd:dojo.hitch(this,function(){
+if(this.autofocus){
+this._getFocusItems(this.domNode);
+dijit.focus(this._firstFocusItem);
+}
+})});
+this._fadeOut=dojo.fadeOut({node:_2,duration:this.duration,onEnd:dojo.hitch(this,function(){
+_2.style.display="none";
+var ds=dijit._dialogStack;
+if(ds.length==0){
+dijit._underlay.hide();
+}else{
+dojo.style(dijit._underlay.domNode,"zIndex",948+ds.length*2);
+dijit._underlay.set(ds[ds.length-1].underlayAttrs);
+}
+if(this.refocus){
+var _5=this._savedFocus;
+if(ds.length>0){
+var pd=ds[ds.length-1];
+if(!dojo.isDescendant(_5.node,pd.domNode)){
+pd._getFocusItems(pd.domNode);
+_5=pd._firstFocusItem;
+}
+}
+dijit.focus(_5);
+}
+})});
+},uninitialize:function(){
+var _6=false;
+if(this._fadeIn&&this._fadeIn.status()=="playing"){
+_6=true;
+this._fadeIn.stop();
+}
+if(this._fadeOut&&this._fadeOut.status()=="playing"){
+_6=true;
+this._fadeOut.stop();
+}
+if((this.open||_6)&&!dijit._underlay._destroyed){
+dijit._underlay.hide();
+}
+if(this._moveable){
+this._moveable.destroy();
+}
+this.inherited(arguments);
+},_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.marginBox(this.domNode);
+var _7=dojo.window.getBox();
+if(mb.w>=_7.w||mb.h>=_7.h){
+var w=Math.min(mb.w,Math.floor(_7.w*0.75)),h=Math.min(mb.h,Math.floor(_7.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 _8=this.domNode,_9=dojo.window.getBox(),p=this._relativePosition,bb=p?null:dojo._getBorderBox(_8),l=Math.floor(_9.l+(p?p.x:(_9.w-bb.w)/2)),t=Math.floor(_9.t+(p?p.y:(_9.h-bb.h)/2));
+dojo.style(_8,{left:l+"px",top:t+"px"});
+}
+},_onKey:function(_a){
+var ds=dijit._dialogStack;
+if(ds[ds.length-1]!=this){
+return;
+}
+if(_a.charOrCode){
+var dk=dojo.keys;
+var _b=_a.target;
+if(_a.charOrCode===dk.TAB){
+this._getFocusItems(this.domNode);
+}
+var _c=(this._firstFocusItem==this._lastFocusItem);
+if(_b==this._firstFocusItem&&_a.shiftKey&&_a.charOrCode===dk.TAB){
+if(!_c){
+dijit.focus(this._lastFocusItem);
+}
+dojo.stopEvent(_a);
+}else{
+if(_b==this._lastFocusItem&&_a.charOrCode===dk.TAB&&!_a.shiftKey){
+if(!_c){
+dijit.focus(this._firstFocusItem);
+}
+dojo.stopEvent(_a);
+}else{
+while(_b){
+if(_b==this.domNode||dojo.hasClass(_b,"dijitPopup")){
+if(_a.charOrCode==dk.ESCAPE){
+this.onCancel();
+}else{
+return;
+}
+}
+_b=_b.parentNode;
+}
+if(_a.charOrCode!==dk.TAB){
+dojo.stopEvent(_a);
+}else{
+if(!dojo.isOpera){
+try{
+this._firstFocusItem.focus();
+}
+catch(e){
+}
+}
+}
+}
+}
+}
+},show:function(){
+if(this.open){
+return;
+}
+if(!this._alreadyInitialized){
+this._setup();
+this._alreadyInitialized=true;
+}
+if(this._fadeOut.status()=="playing"){
+this._fadeOut.stop();
+}
+this._modalconnects.push(dojo.connect(window,"onscroll",this,"layout"));
+this._modalconnects.push(dojo.connect(window,"onresize",this,function(){
+var _d=dojo.window.getBox();
+if(!this._oldViewport||_d.h!=this._oldViewport.h||_d.w!=this._oldViewport.w){
+this.layout();
+this._oldViewport=_d;
+}
+}));
+this._modalconnects.push(dojo.connect(dojo.doc.documentElement,"onkeypress",this,"_onKey"));
+dojo.style(this.domNode,{opacity:0,display:""});
+this.open=true;
+this._onShow();
+this._size();
+this._position();
+dijit._dialogStack.push(this);
+this._fadeIn.play();
+this._savedFocus=dijit.getFocus(this);
+},hide:function(){
+var ds=dijit._dialogStack;
+if(!this._alreadyInitialized||this!=ds[ds.length-1]){
+return;
+}
+if(this._fadeIn.status()=="playing"){
+this._fadeIn.stop();
+}
+ds.pop();
+this._fadeOut.play();
+if(this._scrollConnected){
+this._scrollConnected=false;
+}
+dojo.forEach(this._modalconnects,dojo.disconnect);
+this._modalconnects=[];
+if(this._relativePosition){
+delete this._relativePosition;
+}
+this.open=false;
+this.onHide();
+},layout:function(){
+if(this.domNode.style.display!="none"){
+if(dijit._underlay){
+dijit._underlay.layout();
+}
+this._position();
+}
+},destroy:function(){
+dojo.forEach(this._modalconnects,dojo.disconnect);
+if(this.refocus&&this.open){
+setTimeout(dojo.hitch(dijit,"focus",this._savedFocus),25);
+}
+this.inherited(arguments);
+}});
+dojo.declare("dijit.Dialog",[dijit.layout.ContentPane,dijit._DialogBase],{});
+dijit._dialogStack=[];
+dojo.require("dijit.TooltipDialog");
+}
diff --git a/lib/dijit/DialogUnderlay.js b/lib/dijit/DialogUnderlay.js
new file mode 100644 (file)
index 0000000..0056462
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.DialogUnderlay"]){
+dojo._hasResource["dijit.DialogUnderlay"]=true;
+dojo.provide("dijit.DialogUnderlay");
+dojo.require("dojo.window");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+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");
+},_setClassAttr:function(_1){
+this.node.className="dijitDialogUnderlay "+_1;
+},postCreate:function(){
+dojo.body().appendChild(this.domNode);
+},layout:function(){
+var is=this.node.style,os=this.domNode.style;
+os.display="none";
+var _2=dojo.window.getBox();
+os.top=_2.t+"px";
+os.left=_2.l+"px";
+is.width=_2.w+"px";
+is.height=_2.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();
+this.domNode.style.display="none";
+},uninitialize:function(){
+if(this.bgIframe){
+this.bgIframe.destroy();
+}
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/Editor.js b/lib/dijit/Editor.js
new file mode 100644 (file)
index 0000000..69258ea
--- /dev/null
@@ -0,0 +1,473 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.Editor"]){
+dojo._hasResource["dijit.Editor"]=true;
+dojo.provide("dijit.Editor");
+dojo.require("dijit._editor.RichText");
+dojo.require("dijit.Toolbar");
+dojo.require("dijit.ToolbarSeparator");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit._editor.plugins.EnterKeyHandling");
+dojo.require("dijit._editor.range");
+dojo.require("dijit._Container");
+dojo.require("dojo.i18n");
+dojo.require("dijit.layout._LayoutWidget");
+dojo.require("dijit._editor.range");
+dojo.requireLocalization("dijit._editor","commands",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit.Editor",dijit._editor.RichText,{plugins:null,extraPlugins:null,constructor:function(){
+if(!dojo.isArray(this.plugins)){
+this.plugins=["undo","redo","|","cut","copy","paste","|","bold","italic","underline","strikethrough","|","insertOrderedList","insertUnorderedList","indent","outdent","|","justifyLeft","justifyRight","justifyCenter","justifyFull","dijit._editor.plugins.EnterKeyHandling"];
+}
+this._plugins=[];
+this._editInterval=this.editActionInterval*1000;
+if(dojo.isIE){
+this.events.push("onBeforeDeactivate");
+this.events.push("onBeforeActivate");
+}
+},postCreate:function(){
+this._steps=this._steps.slice(0);
+this._undoedSteps=this._undoedSteps.slice(0);
+if(dojo.isArray(this.extraPlugins)){
+this.plugins=this.plugins.concat(this.extraPlugins);
+}
+this.setValueDeferred=new dojo.Deferred();
+this.inherited(arguments);
+this.commands=dojo.i18n.getLocalization("dijit._editor","commands",this.lang);
+if(!this.toolbar){
+this.toolbar=new dijit.Toolbar({dir:this.dir,lang:this.lang});
+this.header.appendChild(this.toolbar.domNode);
+}
+dojo.forEach(this.plugins,this.addPlugin,this);
+this.setValueDeferred.callback(true);
+dojo.addClass(this.iframe.parentNode,"dijitEditorIFrameContainer");
+dojo.addClass(this.iframe,"dijitEditorIFrame");
+dojo.attr(this.iframe,"allowTransparency",true);
+if(dojo.isWebKit){
+dojo.style(this.domNode,"KhtmlUserSelect","none");
+}
+this.toolbar.startup();
+this.onNormalizedDisplayChanged();
+},destroy:function(){
+dojo.forEach(this._plugins,function(p){
+if(p&&p.destroy){
+p.destroy();
+}
+});
+this._plugins=[];
+this.toolbar.destroyRecursive();
+delete this.toolbar;
+this.inherited(arguments);
+},addPlugin:function(_1,_2){
+var _3=dojo.isString(_1)?{name:_1}:_1;
+if(!_3.setEditor){
+var o={"args":_3,"plugin":null,"editor":this};
+dojo.publish(dijit._scopeName+".Editor.getPlugin",[o]);
+if(!o.plugin){
+var pc=dojo.getObject(_3.name);
+if(pc){
+o.plugin=new pc(_3);
+}
+}
+if(!o.plugin){
+console.warn("Cannot find plugin",_1);
+return;
+}
+_1=o.plugin;
+}
+if(arguments.length>1){
+this._plugins[_2]=_1;
+}else{
+this._plugins.push(_1);
+}
+_1.setEditor(this);
+if(dojo.isFunction(_1.setToolbar)){
+_1.setToolbar(this.toolbar);
+}
+},startup:function(){
+},resize:function(_4){
+if(_4){
+dijit.layout._LayoutWidget.prototype.resize.apply(this,arguments);
+}
+},layout:function(){
+var _5=(this._contentBox.h-(this.getHeaderHeight()+this.getFooterHeight()+dojo._getPadBorderExtents(this.iframe.parentNode).h+dojo._getMarginExtents(this.iframe.parentNode).h));
+this.editingArea.style.height=_5+"px";
+if(this.iframe){
+this.iframe.style.height="100%";
+}
+this._layoutMode=true;
+},_onIEMouseDown:function(e){
+var _6;
+var b=this.document.body;
+var _7=b.clientWidth;
+var _8=b.clientHeight;
+var _9=b.clientLeft;
+var _a=b.offsetWidth;
+var _b=b.offsetHeight;
+var _c=b.offsetLeft;
+bodyDir=b.dir?b.dir.toLowerCase():"";
+if(bodyDir!="rtl"){
+if(_7<_a&&e.x>_7&&e.x<_a){
+_6=true;
+}
+}else{
+if(e.x<_9&&e.x>_c){
+_6=true;
+}
+}
+if(!_6){
+if(_8<_b&&e.y>_8&&e.y<_b){
+_6=true;
+}
+}
+if(!_6){
+delete this._cursorToStart;
+delete this._savedSelection;
+if(e.target.tagName=="BODY"){
+setTimeout(dojo.hitch(this,"placeCursorAtEnd"),0);
+}
+this.inherited(arguments);
+}
+},onBeforeActivate:function(e){
+this._restoreSelection();
+},onBeforeDeactivate:function(e){
+if(this.customUndo){
+this.endEditing(true);
+}
+if(e.target.tagName!="BODY"){
+this._saveSelection();
+}
+},customUndo:dojo.isIE||dojo.isWebKit,editActionInterval:3,beginEditing:function(_d){
+if(!this._inEditing){
+this._inEditing=true;
+this._beginEditing(_d);
+}
+if(this.editActionInterval>0){
+if(this._editTimer){
+clearTimeout(this._editTimer);
+}
+this._editTimer=setTimeout(dojo.hitch(this,this.endEditing),this._editInterval);
+}
+},_steps:[],_undoedSteps:[],execCommand:function(_e){
+if(this.customUndo&&(_e=="undo"||_e=="redo")){
+return this[_e]();
+}else{
+if(this.customUndo){
+this.endEditing();
+this._beginEditing();
+}
+var r;
+try{
+r=this.inherited("execCommand",arguments);
+if(dojo.isWebKit&&_e=="paste"&&!r){
+throw {code:1011};
+}
+}
+catch(e){
+if(e.code==1011&&/copy|cut|paste/.test(_e)){
+var _f=dojo.string.substitute,_10={cut:"X",copy:"C",paste:"V"};
+alert(_f(this.commands.systemShortcut,[this.commands[_e],_f(this.commands[dojo.isMac?"appleKey":"ctrlKey"],[_10[_e]])]));
+}
+r=false;
+}
+if(this.customUndo){
+this._endEditing();
+}
+return r;
+}
+},queryCommandEnabled:function(cmd){
+if(this.customUndo&&(cmd=="undo"||cmd=="redo")){
+return cmd=="undo"?(this._steps.length>1):(this._undoedSteps.length>0);
+}else{
+return this.inherited("queryCommandEnabled",arguments);
+}
+},_moveToBookmark:function(b){
+var _11=b.mark;
+var _12=b.mark;
+var col=b.isCollapsed;
+var r,_13,_14,sel;
+if(_12){
+if(dojo.isIE){
+if(dojo.isArray(_12)){
+_11=[];
+dojo.forEach(_12,function(n){
+_11.push(dijit.range.getNode(n,this.editNode));
+},this);
+dojo.withGlobal(this.window,"moveToBookmark",dijit,[{mark:_11,isCollapsed:col}]);
+}else{
+if(_12.startContainer&&_12.endContainer){
+sel=dijit.range.getSelection(this.window);
+if(sel&&sel.removeAllRanges){
+sel.removeAllRanges();
+r=dijit.range.create(this.window);
+_13=dijit.range.getNode(_12.startContainer,this.editNode);
+_14=dijit.range.getNode(_12.endContainer,this.editNode);
+if(_13&&_14){
+r.setStart(_13,_12.startOffset);
+r.setEnd(_14,_12.endOffset);
+sel.addRange(r);
+}
+}
+}
+}
+}else{
+sel=dijit.range.getSelection(this.window);
+if(sel&&sel.removeAllRanges){
+sel.removeAllRanges();
+r=dijit.range.create(this.window);
+_13=dijit.range.getNode(_12.startContainer,this.editNode);
+_14=dijit.range.getNode(_12.endContainer,this.editNode);
+if(_13&&_14){
+r.setStart(_13,_12.startOffset);
+r.setEnd(_14,_12.endOffset);
+sel.addRange(r);
+}
+}
+}
+}
+},_changeToStep:function(_15,to){
+this.setValue(to.text);
+var b=to.bookmark;
+if(!b){
+return;
+}
+this._moveToBookmark(b);
+},undo:function(){
+var ret=false;
+if(!this._undoRedoActive){
+this._undoRedoActive=true;
+this.endEditing(true);
+var s=this._steps.pop();
+if(s&&this._steps.length>0){
+this.focus();
+this._changeToStep(s,this._steps[this._steps.length-1]);
+this._undoedSteps.push(s);
+this.onDisplayChanged();
+delete this._undoRedoActive;
+ret=true;
+}
+delete this._undoRedoActive;
+}
+return ret;
+},redo:function(){
+var ret=false;
+if(!this._undoRedoActive){
+this._undoRedoActive=true;
+this.endEditing(true);
+var s=this._undoedSteps.pop();
+if(s&&this._steps.length>0){
+this.focus();
+this._changeToStep(this._steps[this._steps.length-1],s);
+this._steps.push(s);
+this.onDisplayChanged();
+ret=true;
+}
+delete this._undoRedoActive;
+}
+return ret;
+},endEditing:function(_16){
+if(this._editTimer){
+clearTimeout(this._editTimer);
+}
+if(this._inEditing){
+this._endEditing(_16);
+this._inEditing=false;
+}
+},_getBookmark:function(){
+var b=dojo.withGlobal(this.window,dijit.getBookmark);
+var tmp=[];
+if(b&&b.mark){
+var _17=b.mark;
+if(dojo.isIE){
+var sel=dijit.range.getSelection(this.window);
+if(!dojo.isArray(_17)){
+if(sel){
+var _18;
+if(sel.rangeCount){
+_18=sel.getRangeAt(0);
+}
+if(_18){
+b.mark=_18.cloneRange();
+}else{
+b.mark=dojo.withGlobal(this.window,dijit.getBookmark);
+}
+}
+}else{
+dojo.forEach(b.mark,function(n){
+tmp.push(dijit.range.getIndex(n,this.editNode).o);
+},this);
+b.mark=tmp;
+}
+}
+try{
+if(b.mark&&b.mark.startContainer){
+tmp=dijit.range.getIndex(b.mark.startContainer,this.editNode).o;
+b.mark={startContainer:tmp,startOffset:b.mark.startOffset,endContainer:b.mark.endContainer===b.mark.startContainer?tmp:dijit.range.getIndex(b.mark.endContainer,this.editNode).o,endOffset:b.mark.endOffset};
+}
+}
+catch(e){
+b.mark=null;
+}
+}
+return b;
+},_beginEditing:function(cmd){
+if(this._steps.length===0){
+this._steps.push({"text":dijit._editor.getChildrenHtml(this.editNode),"bookmark":this._getBookmark()});
+}
+},_endEditing:function(_19){
+var v=dijit._editor.getChildrenHtml(this.editNode);
+this._undoedSteps=[];
+this._steps.push({text:v,bookmark:this._getBookmark()});
+},onKeyDown:function(e){
+if(!dojo.isIE&&!this.iframe&&e.keyCode==dojo.keys.TAB&&!this.tabIndent){
+this._saveSelection();
+}
+if(!this.customUndo){
+this.inherited(arguments);
+return;
+}
+var k=e.keyCode,ks=dojo.keys;
+if(e.ctrlKey&&!e.altKey){
+if(k==90||k==122){
+dojo.stopEvent(e);
+this.undo();
+return;
+}else{
+if(k==89||k==121){
+dojo.stopEvent(e);
+this.redo();
+return;
+}
+}
+}
+this.inherited(arguments);
+switch(k){
+case ks.ENTER:
+case ks.BACKSPACE:
+case ks.DELETE:
+this.beginEditing();
+break;
+case 88:
+case 86:
+if(e.ctrlKey&&!e.altKey&&!e.metaKey){
+this.endEditing();
+if(e.keyCode==88){
+this.beginEditing("cut");
+setTimeout(dojo.hitch(this,this.endEditing),1);
+}else{
+this.beginEditing("paste");
+setTimeout(dojo.hitch(this,this.endEditing),1);
+}
+break;
+}
+default:
+if(!e.ctrlKey&&!e.altKey&&!e.metaKey&&(e.keyCode<dojo.keys.F1||e.keyCode>dojo.keys.F15)){
+this.beginEditing();
+break;
+}
+case ks.ALT:
+this.endEditing();
+break;
+case ks.UP_ARROW:
+case ks.DOWN_ARROW:
+case ks.LEFT_ARROW:
+case ks.RIGHT_ARROW:
+case ks.HOME:
+case ks.END:
+case ks.PAGE_UP:
+case ks.PAGE_DOWN:
+this.endEditing(true);
+break;
+case ks.CTRL:
+case ks.SHIFT:
+case ks.TAB:
+break;
+}
+},_onBlur:function(){
+this.inherited("_onBlur",arguments);
+this.endEditing(true);
+},_saveSelection:function(){
+this._savedSelection=this._getBookmark();
+},_restoreSelection:function(){
+if(this._savedSelection){
+delete this._cursorToStart;
+if(dojo.withGlobal(this.window,"isCollapsed",dijit)){
+this._moveToBookmark(this._savedSelection);
+}
+delete this._savedSelection;
+}
+},onClick:function(){
+this.endEditing(true);
+this.inherited(arguments);
+},_setDisabledAttr:function(_1a){
+if(!this.disabled&&_1a){
+this._buttonEnabledPlugins=dojo.filter(this._plugins,function(p){
+if(p&&p.button&&!p.button.get("disabled")){
+p.button.set("disabled",true);
+return true;
+}
+return false;
+});
+}else{
+if(this.disabled&&!_1a){
+dojo.forEach(this._buttonEnabledPlugins,function(p){
+p.button.attr("disabled",false);
+p.updateState&&p.updateState();
+});
+}
+}
+this.inherited(arguments);
+},_setStateClass:function(){
+this.inherited(arguments);
+if(this.document&&this.document.body){
+dojo.style(this.document.body,"color",dojo.style(this.iframe,"color"));
+}
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+var _1b=o.args,p;
+var _1c=dijit._editor._Plugin;
+var _1d=_1b.name;
+switch(_1d){
+case "undo":
+case "redo":
+case "cut":
+case "copy":
+case "paste":
+case "insertOrderedList":
+case "insertUnorderedList":
+case "indent":
+case "outdent":
+case "justifyCenter":
+case "justifyFull":
+case "justifyLeft":
+case "justifyRight":
+case "delete":
+case "selectAll":
+case "removeFormat":
+case "unlink":
+case "insertHorizontalRule":
+p=new _1c({command:_1d});
+break;
+case "bold":
+case "italic":
+case "underline":
+case "strikethrough":
+case "subscript":
+case "superscript":
+p=new _1c({buttonClass:dijit.form.ToggleButton,command:_1d});
+break;
+case "|":
+p=new _1c({button:new dijit.ToolbarSeparator(),setEditor:function(_1e){
+this.editor=_1e;
+}});
+}
+o.plugin=p;
+});
+}
diff --git a/lib/dijit/InlineEditBox.js b/lib/dijit/InlineEditBox.js
new file mode 100644 (file)
index 0000000..5d26498
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.InlineEditBox"]){
+dojo._hasResource["dijit.InlineEditBox"]=true;
+dojo.provide("dijit.InlineEditBox");
+dojo.require("dojo.i18n");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Container");
+dojo.require("dijit.form.Button");
+dojo.require("dijit.form.TextBox");
+dojo.requireLocalization("dijit","common",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit.InlineEditBox",dijit._Widget,{editing:false,autoSave:true,buttonSave:"",buttonCancel:"",renderAsHtml:false,editor:"dijit.form.TextBox",editorWrapper:"dijit._InlineEditor",editorParams:{},onChange:function(_1){
+},onCancel:function(){
+},width:"100%",value:"",noValueIndicator:dojo.isIE<=6?"<span style='font-family: wingdings; text-decoration: underline;'>&nbsp;&nbsp;&nbsp;&nbsp;&#x270d;&nbsp;&nbsp;&nbsp;&nbsp;</span>":"<span style='text-decoration: underline;'>&nbsp;&nbsp;&nbsp;&nbsp;&#x270d;&nbsp;&nbsp;&nbsp;&nbsp;</span>",constructor:function(){
+this.editorParams={};
+},postMixInProperties:function(){
+this.inherited(arguments);
+this.displayNode=this.srcNodeRef;
+var _2={ondijitclick:"_onClick",onmouseover:"_onMouseOver",onmouseout:"_onMouseOut",onfocus:"_onMouseOver",onblur:"_onMouseOut"};
+for(var _3 in _2){
+this.connect(this.displayNode,_3,_2[_3]);
+}
+dijit.setWaiRole(this.displayNode,"button");
+if(!this.displayNode.getAttribute("tabIndex")){
+this.displayNode.setAttribute("tabIndex",0);
+}
+if(!this.value&&!("value" in this.params)){
+this.value=dojo.trim(this.renderAsHtml?this.displayNode.innerHTML:(this.displayNode.innerText||this.displayNode.textContent||""));
+}
+if(!this.value){
+this.displayNode.innerHTML=this.noValueIndicator;
+}
+dojo.addClass(this.displayNode,"dijitInlineEditBoxDisplayMode");
+},setDisabled:function(_4){
+dojo.deprecated("dijit.InlineEditBox.setDisabled() is deprecated.  Use set('disabled', bool) instead.","","2.0");
+this.set("disabled",_4);
+},_setDisabledAttr:function(_5){
+this.disabled=_5;
+dijit.setWaiState(this.domNode,"disabled",_5);
+if(_5){
+this.displayNode.removeAttribute("tabIndex");
+}else{
+this.displayNode.setAttribute("tabIndex",0);
+}
+dojo.toggleClass(this.displayNode,"dijitInlineEditBoxDisplayModeDisabled",_5);
+},_onMouseOver:function(){
+if(!this.disabled){
+dojo.addClass(this.displayNode,"dijitInlineEditBoxDisplayModeHover");
+}
+},_onMouseOut:function(){
+dojo.removeClass(this.displayNode,"dijitInlineEditBoxDisplayModeHover");
+},_onClick:function(e){
+if(this.disabled){
+return;
+}
+if(e){
+dojo.stopEvent(e);
+}
+this._onMouseOut();
+setTimeout(dojo.hitch(this,"edit"),0);
+},edit:function(){
+if(this.disabled||this.editing){
+return;
+}
+this.editing=true;
+this._savedPosition=dojo.style(this.displayNode,"position")||"static";
+this._savedOpacity=dojo.style(this.displayNode,"opacity")||"1";
+this._savedTabIndex=dojo.attr(this.displayNode,"tabIndex")||"0";
+if(this.wrapperWidget){
+var ew=this.wrapperWidget.editWidget;
+ew.set("displayedValue" in ew?"displayedValue":"value",this.value);
+}else{
+var _6=dojo.create("span",null,this.domNode,"before");
+var _7=dojo.getObject(this.editorWrapper);
+this.wrapperWidget=new _7({value:this.value,buttonSave:this.buttonSave,buttonCancel:this.buttonCancel,dir:this.dir,lang:this.lang,tabIndex:this._savedTabIndex,editor:this.editor,inlineEditBox:this,sourceStyle:dojo.getComputedStyle(this.displayNode),save:dojo.hitch(this,"save"),cancel:dojo.hitch(this,"cancel")},_6);
+}
+var ww=this.wrapperWidget;
+if(dojo.isIE){
+dijit.focus(dijit.getFocus());
+}
+dojo.style(this.displayNode,{position:"absolute",opacity:"0",display:"none"});
+dojo.style(ww.domNode,{position:this._savedPosition,visibility:"visible",opacity:"1"});
+dojo.attr(this.displayNode,"tabIndex","-1");
+setTimeout(dojo.hitch(this,function(){
+ww.focus();
+ww._resetValue=ww.getValue();
+}),0);
+},_onBlur:function(){
+this.inherited(arguments);
+if(!this.editing){
+}
+},destroy:function(){
+if(this.wrapperWidget){
+this.wrapperWidget.destroy();
+delete this.wrapperWidget;
+}
+this.inherited(arguments);
+},_showText:function(_8){
+var ww=this.wrapperWidget;
+dojo.style(ww.domNode,{position:"absolute",visibility:"hidden",opacity:"0"});
+dojo.style(this.displayNode,{position:this._savedPosition,opacity:this._savedOpacity,display:""});
+dojo.attr(this.displayNode,"tabIndex",this._savedTabIndex);
+if(_8){
+dijit.focus(this.displayNode);
+}
+},save:function(_9){
+if(this.disabled||!this.editing){
+return;
+}
+this.editing=false;
+var ww=this.wrapperWidget;
+var _a=ww.getValue();
+this.set("value",_a);
+setTimeout(dojo.hitch(this,"onChange",_a),0);
+this._showText(_9);
+},setValue:function(_b){
+dojo.deprecated("dijit.InlineEditBox.setValue() is deprecated.  Use set('value', ...) instead.","","2.0");
+return this.set("value",_b);
+},_setValueAttr:function(_c){
+this.value=_c=dojo.trim(_c);
+if(!this.renderAsHtml){
+_c=_c.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;").replace(/\n/g,"<br>");
+}
+this.displayNode.innerHTML=_c||this.noValueIndicator;
+},getValue:function(){
+dojo.deprecated("dijit.InlineEditBox.getValue() is deprecated.  Use get('value') instead.","","2.0");
+return this.get("value");
+},cancel:function(_d){
+if(this.disabled||!this.editing){
+return;
+}
+this.editing=false;
+setTimeout(dojo.hitch(this,"onCancel"),0);
+this._showText(_d);
+}});
+dojo.declare("dijit._InlineEditor",[dijit._Widget,dijit._Templated],{templateString:dojo.cache("dijit","templates/InlineEditBox.html","<span dojoAttachPoint=\"editNode\" waiRole=\"presentation\" style=\"position: absolute; visibility:hidden\" class=\"dijitReset dijitInline\"\n\tdojoAttachEvent=\"onkeypress: _onKeyPress\"\n\t><span dojoAttachPoint=\"editorPlaceholder\"></span\n\t><span dojoAttachPoint=\"buttonContainer\"\n\t\t><button class='saveButton' dojoAttachPoint=\"saveButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:save\" label=\"${buttonSave}\"></button\n\t\t><button class='cancelButton' dojoAttachPoint=\"cancelButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:cancel\" label=\"${buttonCancel}\"></button\n\t></span\n></span>\n"),widgetsInTemplate:true,postMixInProperties:function(){
+this.inherited(arguments);
+this.messages=dojo.i18n.getLocalization("dijit","common",this.lang);
+dojo.forEach(["buttonSave","buttonCancel"],function(_e){
+if(!this[_e]){
+this[_e]=this.messages[_e];
+}
+},this);
+},postCreate:function(){
+var _f=dojo.getObject(this.editor);
+var _10=this.sourceStyle,_11="line-height:"+_10.lineHeight+";",_12=dojo.getComputedStyle(this.domNode);
+dojo.forEach(["Weight","Family","Size","Style"],function(_13){
+var _14=_10["font"+_13],_15=_12["font"+_13];
+if(_15!=_14){
+_11+="font-"+_13+":"+_10["font"+_13]+";";
+}
+},this);
+dojo.forEach(["marginTop","marginBottom","marginLeft","marginRight"],function(_16){
+this.domNode.style[_16]=_10[_16];
+},this);
+var _17=this.inlineEditBox.width;
+if(_17=="100%"){
+_11+="width:100%;";
+this.domNode.style.display="block";
+}else{
+_11+="width:"+(_17+(Number(_17)==_17?"px":""))+";";
+}
+var _18=dojo.delegate(this.inlineEditBox.editorParams,{style:_11,dir:this.dir,lang:this.lang});
+_18["displayedValue" in _f.prototype?"displayedValue":"value"]=this.value;
+var ew=(this.editWidget=new _f(_18,this.editorPlaceholder));
+if(this.inlineEditBox.autoSave){
+dojo.destroy(this.buttonContainer);
+this.connect(ew,"onChange","_onChange");
+this.connect(ew,"onKeyPress","_onKeyPress");
+}else{
+if("intermediateChanges" in _f.prototype){
+ew.set("intermediateChanges",true);
+this.connect(ew,"onChange","_onIntermediateChange");
+this.saveButton.set("disabled",true);
+}
+}
+},_onIntermediateChange:function(val){
+this.saveButton.set("disabled",(this.getValue()==this._resetValue)||!this.enableSave());
+},destroy:function(){
+this.editWidget.destroy(true);
+this.inherited(arguments);
+},getValue:function(){
+var ew=this.editWidget;
+return String(ew.get("displayedValue" in ew?"displayedValue":"value"));
+},_onKeyPress:function(e){
+if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){
+if(e.altKey||e.ctrlKey){
+return;
+}
+if(e.charOrCode==dojo.keys.ESCAPE){
+dojo.stopEvent(e);
+this.cancel(true);
+}else{
+if(e.charOrCode==dojo.keys.ENTER&&e.target.tagName=="INPUT"){
+dojo.stopEvent(e);
+this._onChange();
+}
+}
+}
+},_onBlur:function(){
+this.inherited(arguments);
+if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){
+if(this.getValue()==this._resetValue){
+this.cancel(false);
+}else{
+if(this.enableSave()){
+this.save(false);
+}
+}
+}
+},_onChange:function(){
+if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing&&this.enableSave()){
+dojo.style(this.inlineEditBox.displayNode,{display:""});
+dijit.focus(this.inlineEditBox.displayNode);
+}
+},enableSave:function(){
+return (this.editWidget.isValid?this.editWidget.isValid():true);
+},focus:function(){
+this.editWidget.focus();
+setTimeout(dojo.hitch(this,function(){
+if(this.editWidget.focusNode&&this.editWidget.focusNode.tagName=="INPUT"){
+dijit.selectInputText(this.editWidget.focusNode);
+}
+}),0);
+}});
+}
diff --git a/lib/dijit/LICENSE b/lib/dijit/LICENSE
new file mode 100644 (file)
index 0000000..4c93ded
--- /dev/null
@@ -0,0 +1,195 @@
+Dojo is available under *either* the terms of the modified BSD license *or* the
+Academic Free License version 2.1. As a recipient of Dojo, you may choose which
+license to receive this code under (except as noted in per-module LICENSE
+files). Some modules may not be the copyright of the Dojo Foundation. These
+modules contain explicit declarations of copyright in both the LICENSE files in
+the directories in which they reside and in the code itself. No external
+contributions are allowed under licenses which are fundamentally incompatible
+with the AFL or BSD licenses that Dojo is distributed under.
+
+The text of the AFL and BSD licenses is reproduced below. 
+
+-------------------------------------------------------------------------------
+The "New" BSD License:
+**********************
+
+Copyright (c) 2005-2010, The Dojo Foundation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+  * Neither the name of the Dojo Foundation nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------------------
+The Academic Free License, v. 2.1:
+**********************************
+
+This Academic Free License (the "License") applies to any original work of
+authorship (the "Original Work") whose owner (the "Licensor") has placed the
+following notice immediately following the copyright notice for the Original
+Work:
+
+Licensed under the Academic Free License version 2.1
+
+1) Grant of Copyright License. Licensor hereby grants You a world-wide,
+royalty-free, non-exclusive, perpetual, sublicenseable license to do the
+following:
+
+a) to reproduce the Original Work in copies;
+
+b) to prepare derivative works ("Derivative Works") based upon the Original
+Work;
+
+c) to distribute copies of the Original Work and Derivative Works to the
+public;
+
+d) to perform the Original Work publicly; and
+
+e) to display the Original Work publicly.
+
+2) Grant of Patent License. Licensor hereby grants You a world-wide,
+royalty-free, non-exclusive, perpetual, sublicenseable license, under patent
+claims owned or controlled by the Licensor that are embodied in the Original
+Work as furnished by the Licensor, to make, use, sell and offer for sale the
+Original Work and Derivative Works.
+
+3) Grant of Source Code License. The term "Source Code" means the preferred
+form of the Original Work for making modifications to it and all available
+documentation describing how to modify the Original Work. Licensor hereby
+agrees to provide a machine-readable copy of the Source Code of the Original
+Work along with each copy of the Original Work that Licensor distributes.
+Licensor reserves the right to satisfy this obligation by placing a
+machine-readable copy of the Source Code in an information repository
+reasonably calculated to permit inexpensive and convenient access by You for as
+long as Licensor continues to distribute the Original Work, and by publishing
+the address of that information repository in a notice immediately following
+the copyright notice that applies to the Original Work.
+
+4) Exclusions From License Grant. Neither the names of Licensor, nor the names
+of any contributors to the Original Work, nor any of their trademarks or
+service marks, may be used to endorse or promote products derived from this
+Original Work without express prior written permission of the Licensor. Nothing
+in this License shall be deemed to grant any rights to trademarks, copyrights,
+patents, trade secrets or any other intellectual property of Licensor except as
+expressly stated herein. No patent license is granted to make, use, sell or
+offer to sell embodiments of any patent claims other than the licensed claims
+defined in Section 2. No right is granted to the trademarks of Licensor even if
+such marks are included in the Original Work. Nothing in this License shall be
+interpreted to prohibit Licensor from licensing under different terms from this
+License any Original Work that Licensor otherwise would have a right to
+license.
+
+5) This section intentionally omitted.
+
+6) Attribution Rights. You must retain, in the Source Code of any Derivative
+Works that You create, all copyright, patent or trademark notices from the
+Source Code of the Original Work, as well as any notices of licensing and any
+descriptive text identified therein as an "Attribution Notice." You must cause
+the Source Code for any Derivative Works that You create to carry a prominent
+Attribution Notice reasonably calculated to inform recipients that You have
+modified the Original Work.
+
+7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
+the copyright in and to the Original Work and the patent rights granted herein
+by Licensor are owned by the Licensor or are sublicensed to You under the terms
+of this License with the permission of the contributor(s) of those copyrights
+and patent rights. Except as expressly stated in the immediately proceeding
+sentence, the Original Work is provided under this License on an "AS IS" BASIS
+and WITHOUT WARRANTY, either express or implied, including, without limitation,
+the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU.
+This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No
+license to Original Work is granted hereunder except under this disclaimer.
+
+8) Limitation of Liability. Under no circumstances and under no legal theory,
+whether in tort (including negligence), contract, or otherwise, shall the
+Licensor be liable to any person for any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License
+or the use of the Original Work including, without limitation, damages for loss
+of goodwill, work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses. This limitation of liability shall not
+apply to liability for death or personal injury resulting from Licensor's
+negligence to the extent applicable law prohibits such limitation. Some
+jurisdictions do not allow the exclusion or limitation of incidental or
+consequential damages, so this exclusion and limitation may not apply to You.
+
+9) Acceptance and Termination. If You distribute copies of the Original Work or
+a Derivative Work, You must make a reasonable effort under the circumstances to
+obtain the express assent of recipients to the terms of this License. Nothing
+else but this License (or another written agreement between Licensor and You)
+grants You permission to create Derivative Works based upon the Original Work
+or to exercise any of the rights granted in Section 1 herein, and any attempt
+to do so except under the terms of this License (or another written agreement
+between Licensor and You) is expressly prohibited by U.S. copyright law, the
+equivalent laws of other countries, and by international treaty. Therefore, by
+exercising any of the rights granted to You in Section 1 herein, You indicate
+Your acceptance of this License and all of its terms and conditions.
+
+10) Termination for Patent Action. This License shall terminate automatically
+and You may no longer exercise any of the rights granted to You by this License
+as of the date You commence an action, including a cross-claim or counterclaim,
+against Licensor or any licensee alleging that the Original Work infringes a
+patent. This termination provision shall not apply for an action alleging
+patent infringement by combinations of the Original Work with other software or
+hardware.
+
+11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
+License may be brought only in the courts of a jurisdiction wherein the
+Licensor resides or in which Licensor conducts its primary business, and under
+the laws of that jurisdiction excluding its conflict-of-law provisions. The
+application of the United Nations Convention on Contracts for the International
+Sale of Goods is expressly excluded. Any use of the Original Work outside the
+scope of this License or after its termination shall be subject to the
+requirements and penalties of the U.S. Copyright Act, 17 U.S.C. Â§ 101 et
+seq., the equivalent laws of other countries, and international treaty. This
+section shall survive the termination of this License.
+
+12) Attorneys Fees. In any action to enforce the terms of this License or
+seeking damages relating thereto, the prevailing party shall be entitled to
+recover its costs and expenses, including, without limitation, reasonable
+attorneys' fees and costs incurred in connection with such action, including
+any appeal of such action. This section shall survive the termination of this
+License.
+
+13) Miscellaneous. This License represents the complete agreement concerning
+the subject matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent necessary to
+make it enforceable.
+
+14) Definition of "You" in This License. "You" throughout this License, whether
+in upper or lower case, means an individual or a legal entity exercising rights
+under, and complying with all of the terms of, this License. For legal
+entities, "You" includes any entity that controls, is controlled by, or is
+under common control with you. For purposes of this definition, "control" means
+(i) the power, direct or indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (ii) ownership of fifty percent
+(50%) or more of the outstanding shares, or (iii) beneficial ownership of such
+entity.
+
+15) Right to Use. You may use the Original Work in all ways not otherwise
+restricted or conditioned by this License or by law, and Licensor promises not
+to interfere with or be responsible for such uses by You.
+
+This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved.
+Permission is hereby granted to copy and distribute this license without
+modification. This license may not be modified without the express written
+permission of its copyright owner.
diff --git a/lib/dijit/Menu.js b/lib/dijit/Menu.js
new file mode 100644 (file)
index 0000000..83a2ddb
--- /dev/null
@@ -0,0 +1,325 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.Menu"]){
+dojo._hasResource["dijit.Menu"]=true;
+dojo.provide("dijit.Menu");
+dojo.require("dojo.window");
+dojo.require("dijit._Widget");
+dojo.require("dijit._KeyNavContainer");
+dojo.require("dijit._Templated");
+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(_1){
+_1.startup();
+});
+this.startupKeyNavChildren();
+this.inherited(arguments);
+},onExecute:function(){
+},onCancel:function(_2){
+},_moveToPopup:function(_3){
+if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){
+this.focusedChild._onClick(_3);
+}else{
+var _4=this._getTopMenu();
+if(_4&&_4._isMenuBar){
+_4.focusNext();
+}
+}
+},_onPopupHover:function(_5){
+if(this.currentPopup&&this.currentPopup._pendingClose_timer){
+var _6=this.currentPopup.parentMenu;
+if(_6.focusedChild){
+_6.focusedChild._setSelected(false);
+}
+_6.focusedChild=this.currentPopup.from_item;
+_6.focusedChild._setSelected(true);
+this._stopPendingCloseTimer(this.currentPopup);
+}
+},onItemHover:function(_7){
+if(this.isActive){
+this.focusChild(_7);
+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(_7);
+}
+this._hoveredChild=_7;
+},_onChildBlur:function(_8){
+this._stopPopupTimer();
+_8._setSelected(false);
+var _9=_8.popup;
+if(_9){
+this._stopPendingCloseTimer(_9);
+_9._pendingClose_timer=setTimeout(function(){
+_9._pendingClose_timer=null;
+if(_9.parentMenu){
+_9.parentMenu.currentPopup=null;
+}
+dijit.popup.close(_9);
+},this.popupDelay);
+}
+},onItemUnhover:function(_a){
+if(this.isActive){
+this._stopPopupTimer();
+}
+if(this._hoveredChild==_a){
+this._hoveredChild=null;
+}
+},_stopPopupTimer:function(){
+if(this.hover_timer){
+clearTimeout(this.hover_timer);
+this.hover_timer=null;
+}
+},_stopPendingCloseTimer:function(_b){
+if(_b._pendingClose_timer){
+clearTimeout(_b._pendingClose_timer);
+_b._pendingClose_timer=null;
+}
+},_stopFocusTimer:function(){
+if(this._focus_timer){
+clearTimeout(this._focus_timer);
+this._focus_timer=null;
+}
+},_getTopMenu:function(){
+for(var _c=this;_c.parentMenu;_c=_c.parentMenu){
+}
+return _c;
+},onItemClick:function(_d,_e){
+if(typeof this.isShowingNow=="undefined"){
+this._markActive();
+}
+this.focusChild(_d);
+if(_d.disabled){
+return false;
+}
+if(_d.popup){
+this._openPopup();
+}else{
+this.onExecute();
+_d.onClick(_e);
+}
+},_openPopup:function(){
+this._stopPopupTimer();
+var _f=this.focusedChild;
+if(!_f){
+return;
+}
+var _10=_f.popup;
+if(_10.isShowingNow){
+return;
+}
+if(this.currentPopup){
+this._stopPendingCloseTimer(this.currentPopup);
+dijit.popup.close(this.currentPopup);
+}
+_10.parentMenu=this;
+_10.from_item=_f;
+var _11=this;
+dijit.popup.open({parent:this,popup:_10,around:_f.domNode,orient:this._orient||(this.isLeftToRight()?{"TR":"TL","TL":"TR","BR":"BL","BL":"BR"}:{"TL":"TR","TR":"TL","BL":"BR","BR":"BL"}),onCancel:function(){
+_11.focusChild(_f);
+_11._cleanUp();
+_f._setSelected(true);
+_11.focusedChild=_f;
+},onExecute:dojo.hitch(this,"_cleanUp")});
+this.currentPopup=_10;
+_10.connect(_10.domNode,"onmouseenter",dojo.hitch(_11,"_onPopupHover"));
+if(_10.focus){
+_10._focus_timer=setTimeout(dojo.hitch(_10,function(){
+this._focus_timer=null;
+this.focus();
+}),0);
+}
+},_markActive:function(){
+this.isActive=true;
+dojo.addClass(this.domNode,"dijitMenuActive");
+dojo.removeClass(this.domNode,"dijitMenuPassive");
+},onOpen:function(e){
+this.isShowingNow=true;
+this._markActive();
+},_markInactive:function(){
+this.isActive=false;
+dojo.removeClass(this.domNode,"dijitMenuActive");
+dojo.addClass(this.domNode,"dijitMenuPassive");
+},onClose:function(){
+this._stopFocusTimer();
+this._markInactive();
+this.isShowingNow=false;
+this.parentMenu=null;
+},_closeChild:function(){
+this._stopPopupTimer();
+if(this.focusedChild){
+this.focusedChild._setSelected(false);
+this.focusedChild._onUnhover();
+this.focusedChild=null;
+}
+if(this.currentPopup){
+dijit.popup.close(this.currentPopup);
+this.currentPopup=null;
+}
+},_onItemFocus:function(_12){
+if(this._hoveredChild&&this._hoveredChild!=_12){
+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\" waiRole=\"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(_13){
+var win=dojo.window.get(this._iframeContentDocument(_13))||this._iframeContentDocument(_13)["__parent__"]||(_13.name&&dojo.doc.frames[_13.name])||null;
+return win;
+},_iframeContentDocument:function(_14){
+var doc=_14.contentDocument||(_14.contentWindow&&_14.contentWindow.document)||(_14.name&&dojo.doc.frames[_14.name]&&dojo.doc.frames[_14.name].document)||null;
+return doc;
+},bindDomNode:function(_15){
+_15=dojo.byId(_15);
+var cn;
+if(_15.tagName.toLowerCase()=="iframe"){
+var _16=_15,win=this._iframeContentWindow(_16);
+cn=dojo.withGlobal(win,dojo.body);
+}else{
+cn=(_15==dojo.body()?dojo.doc.documentElement:_15);
+}
+var _17={node:_15,iframe:_16};
+dojo.attr(_15,"_dijitMenu"+this.id,this._bindings.push(_17));
+var _18=dojo.hitch(this,function(cn){
+return [dojo.connect(cn,this.leftClickToOpen?"onclick":"oncontextmenu",this,function(evt){
+dojo.stopEvent(evt);
+this._scheduleOpen(evt.target,_16,{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,_16);
+}
+})];
+});
+_17.connects=cn?_18(cn):[];
+if(_16){
+_17.onloadHandler=dojo.hitch(this,function(){
+var win=this._iframeContentWindow(_16);
+cn=dojo.withGlobal(win,dojo.body);
+_17.connects=_18(cn);
+});
+if(_16.addEventListener){
+_16.addEventListener("load",_17.onloadHandler,false);
+}else{
+_16.attachEvent("onload",_17.onloadHandler);
+}
+}
+},unBindDomNode:function(_19){
+var _1a;
+try{
+_1a=dojo.byId(_19);
+}
+catch(e){
+return;
+}
+var _1b="_dijitMenu"+this.id;
+if(_1a&&dojo.hasAttr(_1a,_1b)){
+var bid=dojo.attr(_1a,_1b)-1,b=this._bindings[bid];
+dojo.forEach(b.connects,dojo.disconnect);
+var _1c=b.iframe;
+if(_1c){
+if(_1c.removeEventListener){
+_1c.removeEventListener("load",b.onloadHandler,false);
+}else{
+_1c.detachEvent("onload",b.onloadHandler);
+}
+}
+dojo.removeAttr(_1a,_1b);
+delete this._bindings[bid];
+}
+},_scheduleOpen:function(_1d,_1e,_1f){
+if(!this._openTimer){
+this._openTimer=setTimeout(dojo.hitch(this,function(){
+delete this._openTimer;
+this._openMyself({target:_1d,iframe:_1e,coords:_1f});
+}),1);
+}
+},_openMyself:function(_20){
+var _21=_20.target,_22=_20.iframe,_23=_20.coords;
+if(_23){
+if(_22){
+var od=_21.ownerDocument,ifc=dojo.position(_22,true),win=this._iframeContentWindow(_22),_24=dojo.withGlobal(win,"_docScroll",dojo);
+var cs=dojo.getComputedStyle(_22),tp=dojo._toPixelValue,_25=(dojo.isIE&&dojo.isQuirks?0:tp(_22,cs.paddingLeft))+(dojo.isIE&&dojo.isQuirks?tp(_22,cs.borderLeftWidth):0),top=(dojo.isIE&&dojo.isQuirks?0:tp(_22,cs.paddingTop))+(dojo.isIE&&dojo.isQuirks?tp(_22,cs.borderTopWidth):0);
+_23.x+=ifc.x+_25-_24.x;
+_23.y+=ifc.y+top-_24.y;
+}
+}else{
+_23=dojo.position(_21,true);
+_23.x+=10;
+_23.y+=10;
+}
+var _26=this;
+var _27=dijit.getFocus(this);
+function _28(){
+if(_26.refocus){
+dijit.focus(_27);
+}
+dijit.popup.close(_26);
+};
+dijit.popup.open({popup:this,x:_23.x,y:_23.y,onExecute:_28,onCancel:_28,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);
+}});
+dojo.require("dijit.MenuItem");
+dojo.require("dijit.PopupMenuItem");
+dojo.require("dijit.CheckedMenuItem");
+dojo.require("dijit.MenuSeparator");
+}
diff --git a/lib/dijit/MenuBar.js b/lib/dijit/MenuBar.js
new file mode 100644 (file)
index 0000000..d7eb354
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.MenuBar"]){
+dojo._hasResource["dijit.MenuBar"]=true;
+dojo.provide("dijit.MenuBar");
+dojo.require("dijit.Menu");
+dojo.declare("dijit.MenuBar",dijit._MenuBase,{templateString:dojo.cache("dijit","templates/MenuBar.html","<div class=\"dijitMenuBar dijitMenuPassive\" dojoAttachPoint=\"containerNode\"  waiRole=\"menubar\" tabIndex=\"${tabIndex}\" dojoAttachEvent=\"onkeypress: _onKeyPress\"></div>\n"),baseClass:"dijitMenuBar",_isMenuBar:true,postCreate:function(){
+var k=dojo.keys,l=this.isLeftToRight();
+this.connectKeyNavHandlers(l?[k.LEFT_ARROW]:[k.RIGHT_ARROW],l?[k.RIGHT_ARROW]:[k.LEFT_ARROW]);
+this._orient=this.isLeftToRight()?{BL:"TL"}:{BR:"TR"};
+},focusChild:function(_1){
+var _2=this.focusedChild,_3=_2&&_2.popup&&_2.popup.isShowingNow;
+this.inherited(arguments);
+if(_3&&_1.popup&&!_1.disabled){
+this._openPopup();
+}
+},_onKeyPress:function(_4){
+if(_4.ctrlKey||_4.altKey){
+return;
+}
+switch(_4.charOrCode){
+case dojo.keys.DOWN_ARROW:
+this._moveToPopup(_4);
+dojo.stopEvent(_4);
+}
+},onItemClick:function(_5,_6){
+if(_5.popup&&_5.popup.isShowingNow){
+_5.popup.onCancel();
+}else{
+this.inherited(arguments);
+}
+}});
+}
diff --git a/lib/dijit/MenuBarItem.js b/lib/dijit/MenuBarItem.js
new file mode 100644 (file)
index 0000000..77088bf
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.MenuBarItem"]){
+dojo._hasResource["dijit.MenuBarItem"]=true;
+dojo.provide("dijit.MenuBarItem");
+dojo.require("dijit.MenuItem");
+dojo.declare("dijit._MenuBarItemMixin",null,{templateString:dojo.cache("dijit","templates/MenuBarItem.html","<div class=\"dijitReset dijitInline dijitMenuItem dijitMenuItemLabel\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitem\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<span dojoAttachPoint=\"containerNode\"></span>\n</div>\n"),attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{label:{node:"containerNode",type:"innerHTML"}})});
+dojo.declare("dijit.MenuBarItem",[dijit.MenuItem,dijit._MenuBarItemMixin],{});
+}
diff --git a/lib/dijit/MenuItem.js b/lib/dijit/MenuItem.js
new file mode 100644 (file)
index 0000000..1f890b5
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.MenuItem"]){
+dojo._hasResource["dijit.MenuItem"]=true;
+dojo.provide("dijit.MenuItem");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._Contained");
+dojo.require("dijit._CssStateMixin");
+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\" waiRole=\"menuitem\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" waiRole=\"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\" waiRole=\"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(_1){
+if(_1&&!("label" in this.params)){
+this.set("label",_1.innerHTML);
+}
+},postCreate:function(){
+this.inherited(arguments);
+dojo.setSelectable(this.domNode,false);
+var _2=this.id+"_text";
+dojo.attr(this.containerNode,"id",_2);
+if(this.accelKeyNode){
+dojo.attr(this.accelKeyNode,"id",this.id+"_accel");
+_2+=" "+this.id+"_accel";
+}
+dijit.setWaiState(this.domNode,"labelledby",_2);
+},_onHover:function(){
+this.getParent().onItemHover(this);
+},_onUnhover:function(){
+this.getParent().onItemUnhover(this);
+this._hovering=false;
+this._setStateClass();
+},_onClick:function(_3){
+this.getParent().onItemClick(this,_3);
+dojo.stopEvent(_3);
+},onClick:function(_4){
+},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(_5){
+dojo.toggleClass(this.domNode,"dijitMenuItemSelected",_5);
+},setLabel:function(_6){
+dojo.deprecated("dijit.MenuItem.setLabel() is deprecated.  Use set('label', ...) instead.","","2.0");
+this.set("label",_6);
+},setDisabled:function(_7){
+dojo.deprecated("dijit.Menu.setDisabled() is deprecated.  Use set('disabled', bool) instead.","","2.0");
+this.set("disabled",_7);
+},_setDisabledAttr:function(_8){
+this.disabled=_8;
+dijit.setWaiState(this.focusNode,"disabled",_8?"true":"false");
+},_setAccelKeyAttr:function(_9){
+this.accelKey=_9;
+this.accelKeyNode.style.display=_9?"":"none";
+this.accelKeyNode.innerHTML=_9;
+dojo.attr(this.containerNode,"colSpan",_9?"1":"2");
+}});
+}
diff --git a/lib/dijit/MenuSeparator.js b/lib/dijit/MenuSeparator.js
new file mode 100644 (file)
index 0000000..34fa0ba
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.MenuSeparator"]){
+dojo._hasResource["dijit.MenuSeparator"]=true;
+dojo.provide("dijit.MenuSeparator");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._Contained");
+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"),postCreate:function(){
+dojo.setSelectable(this.domNode,false);
+},isFocusable:function(){
+return false;
+}});
+}
diff --git a/lib/dijit/PopupMenuBarItem.js b/lib/dijit/PopupMenuBarItem.js
new file mode 100644 (file)
index 0000000..ce2eda5
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.PopupMenuBarItem"]){
+dojo._hasResource["dijit.PopupMenuBarItem"]=true;
+dojo.provide("dijit.PopupMenuBarItem");
+dojo.require("dijit.PopupMenuItem");
+dojo.require("dijit.MenuBarItem");
+dojo.declare("dijit.PopupMenuBarItem",[dijit.PopupMenuItem,dijit._MenuBarItemMixin],{});
+}
diff --git a/lib/dijit/PopupMenuItem.js b/lib/dijit/PopupMenuItem.js
new file mode 100644 (file)
index 0000000..29a011c
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.PopupMenuItem"]){
+dojo._hasResource["dijit.PopupMenuItem"]=true;
+dojo.provide("dijit.PopupMenuItem");
+dojo.require("dijit.MenuItem");
+dojo.declare("dijit.PopupMenuItem",dijit.MenuItem,{_fillContent:function(){
+if(this.srcNodeRef){
+var _1=dojo.query("*",this.srcNodeRef);
+dijit.PopupMenuItem.superclass._fillContent.call(this,_1[0]);
+this.dropDownContainer=this.srcNodeRef;
+}
+},startup:function(){
+if(this._started){
+return;
+}
+this.inherited(arguments);
+if(!this.popup){
+var _2=dojo.query("[widgetId]",this.dropDownContainer)[0];
+this.popup=dijit.byNode(_2);
+}
+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);
+}});
+}
diff --git a/lib/dijit/ProgressBar.js b/lib/dijit/ProgressBar.js
new file mode 100644 (file)
index 0000000..54b48a3
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.ProgressBar"]){
+dojo._hasResource["dijit.ProgressBar"]=true;
+dojo.provide("dijit.ProgressBar");
+dojo.require("dojo.fx");
+dojo.require("dojo.number");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.declare("dijit.ProgressBar",[dijit._Widget,dijit._Templated],{progress:"0",maximum:100,places:0,indeterminate:false,name:"",templateString:dojo.cache("dijit","templates/ProgressBar.html","<div class=\"dijitProgressBar dijitProgressBarEmpty\"\n\t><div waiRole=\"progressbar\" dojoAttachPoint=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\"></div\n\t\t><span style=\"visibility:hidden\">&nbsp;</span\n\t></div\n\t><div dojoAttachPoint=\"label\" class=\"dijitProgressBarLabel\" id=\"${id}_label\">&nbsp;</div\n\t><img dojoAttachPoint=\"indeterminateHighContrastImage\" class=\"dijitProgressBarIndeterminateHighContrastImage\" alt=\"\"\n/></div>\n"),_indeterminateHighContrastImagePath:dojo.moduleUrl("dijit","themes/a11y/indeterminate_progress.gif"),postCreate:function(){
+this.inherited(arguments);
+this.indeterminateHighContrastImage.setAttribute("src",this._indeterminateHighContrastImagePath.toString());
+this.update();
+},update:function(_1){
+dojo.mixin(this,_1||{});
+var _2=this.internalProgress;
+var _3=1,_4;
+if(this.indeterminate){
+_4="addClass";
+dijit.removeWaiState(_2,"valuenow");
+dijit.removeWaiState(_2,"valuemin");
+dijit.removeWaiState(_2,"valuemax");
+}else{
+_4="removeClass";
+if(String(this.progress).indexOf("%")!=-1){
+_3=Math.min(parseFloat(this.progress)/100,1);
+this.progress=_3*this.maximum;
+}else{
+this.progress=Math.min(this.progress,this.maximum);
+_3=this.progress/this.maximum;
+}
+var _5=this.report(_3);
+this.label.firstChild.nodeValue=_5;
+dijit.setWaiState(_2,"describedby",this.label.id);
+dijit.setWaiState(_2,"valuenow",this.progress);
+dijit.setWaiState(_2,"valuemin",0);
+dijit.setWaiState(_2,"valuemax",this.maximum);
+}
+dojo[_4](this.domNode,"dijitProgressBarIndeterminate");
+_2.style.width=(_3*100)+"%";
+this.onChange();
+},_setValueAttr:function(v){
+if(v==Infinity){
+this.update({indeterminate:true});
+}else{
+this.update({indeterminate:false,progress:v});
+}
+},_getValueAttr:function(){
+return this.progress;
+},report:function(_6){
+return dojo.number.format(_6,{type:"percent",places:this.places,locale:this.lang});
+},onChange:function(){
+}});
+}
diff --git a/lib/dijit/TitlePane.js b/lib/dijit/TitlePane.js
new file mode 100644 (file)
index 0000000..f3fc7fa
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.TitlePane"]){
+dojo._hasResource["dijit.TitlePane"]=true;
+dojo.provide("dijit.TitlePane");
+dojo.require("dojo.fx");
+dojo.require("dijit._Templated");
+dojo.require("dijit.layout.ContentPane");
+dojo.require("dijit._CssStateMixin");
+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\" waiRole=\"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\" waiRole=\"presentation\">\n\t\t<div class=\"dijitReset\" dojoAttachPoint=\"wipeNode\" waiRole=\"presentation\">\n\t\t\t<div class=\"dijitTitlePaneContentInner\" dojoAttachPoint=\"containerNode\" waiRole=\"region\" tabindex=\"-1\" 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:""}),postCreate:function(){
+if(!this.open){
+this.hideNode.style.display=this.wipeNode.style.display="none";
+}
+if(this.toggleable){
+this._trackMouseState(this.titleBarNode,"dijitTitlePaneTitle");
+}
+this._setCss();
+dojo.setSelectable(this.titleNode,false);
+var _1=this.hideNode,_2=this.wipeNode;
+this._wipeIn=dojo.fx.wipeIn({node:this.wipeNode,duration:this.duration,beforeBegin:function(){
+_1.style.display="";
+}});
+this._wipeOut=dojo.fx.wipeOut({node:this.wipeNode,duration:this.duration,onEnd:function(){
+_1.style.display="none";
+}});
+this.inherited(arguments);
+},_setOpenAttr:function(_3){
+if(this.open!==_3){
+this.toggle();
+}
+dijit.setWaiState(this.containerNode,"hidden",this.open?"false":"true");
+dijit.setWaiState(this.focusNode,"pressed",this.open?"true":"false");
+},_setToggleableAttr:function(_4){
+this.toggleable=_4;
+dijit.setWaiRole(this.focusNode,_4?"button":"heading");
+if(_4){
+dijit.setWaiState(this.focusNode,"controls",this.id+"_pane");
+dojo.attr(this.focusNode,"tabIndex",this.tabIndex);
+}else{
+dojo.removeAttr(this.focusNode,"tabIndex");
+}
+this._setCss();
+},_setContentAttr:function(_5){
+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(){
+dojo.forEach([this._wipeIn,this._wipeOut],function(_6){
+if(_6&&_6.status()=="playing"){
+_6.stop();
+}
+});
+var _7=this[this.open?"_wipeOut":"_wipeIn"];
+if(_7){
+_7.play();
+}else{
+this.hideNode.style.display=this.open?"":"none";
+}
+this.open=!this.open;
+if(this.open){
+this._onShow();
+}else{
+this.onHide();
+}
+this._setCss();
+},_setCss:function(){
+var _8=this.titleBarNode||this.focusNode;
+if(this._titleBarClass){
+dojo.removeClass(_8,this._titleBarClass);
+}
+this._titleBarClass="dijit"+(this.toggleable?"":"Fixed")+(this.open?"Open":"Closed");
+dojo.addClass(_8,this._titleBarClass);
+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(_9){
+dojo.deprecated("dijit.TitlePane.setTitle() is deprecated.  Use set('title', ...) instead.","","2.0");
+this.set("title",_9);
+}});
+}
diff --git a/lib/dijit/Toolbar.js b/lib/dijit/Toolbar.js
new file mode 100644 (file)
index 0000000..e51f7ea
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.Toolbar"]){
+dojo._hasResource["dijit.Toolbar"]=true;
+dojo.provide("dijit.Toolbar");
+dojo.require("dijit._Widget");
+dojo.require("dijit._KeyNavContainer");
+dojo.require("dijit._Templated");
+dojo.declare("dijit.Toolbar",[dijit._Widget,dijit._Templated,dijit._KeyNavContainer],{templateString:"<div class=\"dijit\" waiRole=\"toolbar\" tabIndex=\"${tabIndex}\" dojoAttachPoint=\"containerNode\">"+"</div>",baseClass:"dijitToolbar",postCreate:function(){
+this.connectKeyNavHandlers(this.isLeftToRight()?[dojo.keys.LEFT_ARROW]:[dojo.keys.RIGHT_ARROW],this.isLeftToRight()?[dojo.keys.RIGHT_ARROW]:[dojo.keys.LEFT_ARROW]);
+this.inherited(arguments);
+},startup:function(){
+if(this._started){
+return;
+}
+this.startupKeyNavChildren();
+this.inherited(arguments);
+}});
+dojo.require("dijit.ToolbarSeparator");
+}
diff --git a/lib/dijit/ToolbarSeparator.js b/lib/dijit/ToolbarSeparator.js
new file mode 100644 (file)
index 0000000..dca5792
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.ToolbarSeparator"]){
+dojo._hasResource["dijit.ToolbarSeparator"]=true;
+dojo.provide("dijit.ToolbarSeparator");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.declare("dijit.ToolbarSeparator",[dijit._Widget,dijit._Templated],{templateString:"<div class=\"dijitToolbarSeparator dijitInline\" waiRole=\"presentation\"></div>",postCreate:function(){
+dojo.setSelectable(this.domNode,false);
+},isFocusable:function(){
+return false;
+}});
+}
diff --git a/lib/dijit/Tooltip.js b/lib/dijit/Tooltip.js
new file mode 100644 (file)
index 0000000..fea9a0b
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.Tooltip"]){
+dojo._hasResource["dijit.Tooltip"]=true;
+dojo.provide("dijit.Tooltip");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+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\" waiRole='alert'></div>\n\t<div class=\"dijitTooltipConnector\"></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(_1,_2,_3,_4){
+if(this.aroundNode&&this.aroundNode===_2){
+return;
+}
+if(this.fadeOut.status()=="playing"){
+this._onDeck=arguments;
+return;
+}
+this.containerNode.innerHTML=_1;
+var _5=dijit.placeOnScreenAroundElement(this.domNode,_2,dijit.getPopupAroundAlignment((_3&&_3.length)?_3:dijit.Tooltip.defaultPosition,!_4),dojo.hitch(this,"orient"));
+dojo.style(this.domNode,"opacity",0);
+this.fadeIn.play();
+this.isShowingNow=true;
+this.aroundNode=_2;
+},orient:function(_6,_7,_8){
+_6.className="dijitTooltip "+{"BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[_7+"-"+_8];
+},_onShow:function(){
+if(dojo.isIE){
+this.domNode.style.filter="";
+}
+},hide:function(_9){
+if(this._onDeck&&this._onDeck[1]==_9){
+this._onDeck=null;
+}else{
+if(this.aroundNode===_9){
+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(_a,_b,_c,_d){
+if(!dijit._masterTT){
+dijit._masterTT=new dijit._MasterTooltip();
+}
+return dijit._masterTT.show(_a,_b,_c,_d);
+};
+dijit.hideTooltip=function(_e){
+if(!dijit._masterTT){
+dijit._masterTT=new dijit._MasterTooltip();
+}
+return dijit._masterTT.hide(_e);
+};
+dojo.declare("dijit.Tooltip",dijit._Widget,{label:"",showDelay:400,connectId:[],position:[],constructor:function(){
+this._nodeConnectionsById={};
+},_setConnectIdAttr:function(_f){
+for(var _10 in this._nodeConnectionsById){
+this.removeTarget(_10);
+}
+dojo.forEach(dojo.isArrayLike(_f)?_f:[_f],this.addTarget,this);
+},_getConnectIdAttr:function(){
+var ary=[];
+for(var id in this._nodeConnectionsById){
+ary.push(id);
+}
+return ary;
+},addTarget:function(id){
+var _11=dojo.byId(id);
+if(!_11){
+return;
+}
+if(_11.id in this._nodeConnectionsById){
+return;
+}
+this._nodeConnectionsById[_11.id]=[this.connect(_11,"onmouseenter","_onTargetMouseEnter"),this.connect(_11,"onmouseleave","_onTargetMouseLeave"),this.connect(_11,"onfocus","_onTargetFocus"),this.connect(_11,"onblur","_onTargetBlur")];
+},removeTarget:function(_12){
+var id=_12.id||_12;
+if(id in this._nodeConnectionsById){
+dojo.forEach(this._nodeConnectionsById[id],this.disconnect,this);
+delete this._nodeConnectionsById[id];
+}
+},postCreate:function(){
+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 _13=e.target;
+this._showTimer=setTimeout(dojo.hitch(this,function(){
+this.open(_13);
+}),this.showDelay);
+}
+},_onUnHover:function(e){
+if(this._focus){
+return;
+}
+if(this._showTimer){
+clearTimeout(this._showTimer);
+delete this._showTimer;
+}
+this.close();
+},open:function(_14){
+if(this._showTimer){
+clearTimeout(this._showTimer);
+delete this._showTimer;
+}
+dijit.showTooltip(this.label||this.domNode.innerHTML,_14,this.position,!this.isLeftToRight());
+this._connectNode=_14;
+this.onShow(_14,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(_15,_16){
+},onHide:function(){
+},uninitialize:function(){
+this.close();
+this.inherited(arguments);
+}});
+dijit.Tooltip.defaultPosition=["after","before"];
+}
diff --git a/lib/dijit/TooltipDialog.js b/lib/dijit/TooltipDialog.js
new file mode 100644 (file)
index 0000000..13f69db
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.TooltipDialog"]){
+dojo._hasResource["dijit.TooltipDialog"]=true;
+dojo.provide("dijit.TooltipDialog");
+dojo.require("dijit.layout.ContentPane");
+dojo.require("dijit._Templated");
+dojo.require("dijit.form._FormMixin");
+dojo.require("dijit._DialogMixin");
+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 waiRole=\"presentation\">\n\t<div class=\"dijitTooltipContainer\" waiRole=\"presentation\">\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" dojoAttachPoint=\"containerNode\" tabindex=\"-1\" waiRole=\"dialog\"></div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" waiRole=\"presentation\"></div>\n</div>\n"),postCreate:function(){
+this.inherited(arguments);
+this.connect(this.containerNode,"onkeypress","_onKey");
+this.containerNode.title=this.title;
+},orient:function(_1,_2,_3){
+var c=this._currentOrientClass;
+if(c){
+dojo.removeClass(this.domNode,c);
+}
+c="dijitTooltipAB"+(_3.charAt(1)=="L"?"Left":"Right")+" dijitTooltip"+(_3.charAt(0)=="T"?"Below":"Above");
+dojo.addClass(this.domNode,c);
+this._currentOrientClass=c;
+},onOpen:function(_4){
+this.orient(this.domNode,_4.aroundCorner,_4.corner);
+this._onShow();
+if(this.autofocus){
+this._getFocusItems(this.containerNode);
+dijit.focus(this._firstFocusItem);
+}
+},onClose:function(){
+this.onHide();
+},_onKey:function(_5){
+var _6=_5.target;
+var dk=dojo.keys;
+if(_5.charOrCode===dk.TAB){
+this._getFocusItems(this.containerNode);
+}
+var _7=(this._firstFocusItem==this._lastFocusItem);
+if(_5.charOrCode==dk.ESCAPE){
+setTimeout(dojo.hitch(this,"onCancel"),0);
+dojo.stopEvent(_5);
+}else{
+if(_6==this._firstFocusItem&&_5.shiftKey&&_5.charOrCode===dk.TAB){
+if(!_7){
+dijit.focus(this._lastFocusItem);
+}
+dojo.stopEvent(_5);
+}else{
+if(_6==this._lastFocusItem&&_5.charOrCode===dk.TAB&&!_5.shiftKey){
+if(!_7){
+dijit.focus(this._firstFocusItem);
+}
+dojo.stopEvent(_5);
+}else{
+if(_5.charOrCode===dk.TAB){
+_5.stopPropagation();
+}
+}
+}
+}
+}});
+}
diff --git a/lib/dijit/Tree.js b/lib/dijit/Tree.js
new file mode 100644 (file)
index 0000000..761d4c3
--- /dev/null
@@ -0,0 +1,678 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.Tree"]){
+dojo._hasResource["dijit.Tree"]=true;
+dojo.provide("dijit.Tree");
+dojo.require("dojo.fx");
+dojo.require("dojo.DeferredList");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._Container");
+dojo.require("dijit._Contained");
+dojo.require("dijit._CssStateMixin");
+dojo.require("dojo.cookie");
+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\" waiRole=\"presentation\"\n\t><div dojoAttachPoint=\"rowNode\" class=\"dijitTreeRow\" waiRole=\"presentation\" dojoAttachEvent=\"onmouseenter:_onMouseEnter, onmouseleave:_onMouseLeave, onclick:_onClick, ondblclick:_onDblClick\"\n\t\t><img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"expandoNode\" class=\"dijitTreeExpando\" waiRole=\"presentation\"\n\t\t/><span dojoAttachPoint=\"expandoNodeText\" class=\"dijitExpandoText\" waiRole=\"presentation\"\n\t\t></span\n\t\t><span dojoAttachPoint=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" waiRole=\"presentation\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"iconNode\" class=\"dijitIcon dijitTreeIcon\" waiRole=\"presentation\"\n\t\t\t/><span dojoAttachPoint=\"labelNode\" class=\"dijitTreeLabel\" wairole=\"treeitem\" tabindex=\"-1\" waiState=\"selected-false\" dojoAttachEvent=\"onfocus:_onLabelFocus\"></span>\n\t\t</span\n\t></div>\n\t<div dojoAttachPoint=\"containerNode\" class=\"dijitTreeContainer\" waiRole=\"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"}}),postCreate:function(){
+this.inherited(arguments);
+this._setExpando();
+this._updateItemClasses(this.item);
+if(this.isExpandable){
+dijit.setWaiState(this.labelNode,"expanded",this.isExpanded);
+}
+},_setIndentAttr:function(_1){
+this.indent=_1;
+var _2=(Math.max(_1,0)*this.tree._nodePixelIndent)+"px";
+dojo.style(this.domNode,"backgroundPosition",_2+" 0px");
+dojo.style(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_2);
+dojo.forEach(this.getChildren(),function(_3){
+_3.set("indent",_1+1);
+});
+},markProcessing:function(){
+this.state="LOADING";
+this._setExpando(true);
+},unmarkProcessing:function(){
+this._setExpando(false);
+},_updateItemClasses:function(_4){
+var _5=this.tree,_6=_5.model;
+if(_5._v10Compat&&_4===_6.root){
+_4=null;
+}
+this._applyClassAndStyle(_4,"icon","Icon");
+this._applyClassAndStyle(_4,"label","Label");
+this._applyClassAndStyle(_4,"row","Row");
+},_applyClassAndStyle:function(_7,_8,_9){
+var _a="_"+_8+"Class";
+var _b=_8+"Node";
+if(this[_a]){
+dojo.removeClass(this[_b],this[_a]);
+}
+this[_a]=this.tree["get"+_9+"Class"](_7,this.isExpanded);
+if(this[_a]){
+dojo.addClass(this[_b],this[_a]);
+}
+dojo.style(this[_b],this.tree["get"+_9+"Style"](_7,this.isExpanded)||{});
+},_updateLayout:function(){
+var _c=this.getParent();
+if(!_c||_c.rowNode.style.display=="none"){
+dojo.addClass(this.domNode,"dijitTreeIsRoot");
+}else{
+dojo.toggleClass(this.domNode,"dijitTreeIsLast",!this.getNextSibling());
+}
+},_setExpando:function(_d){
+var _e=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_f=["*","-","+","*"],idx=_d?0:(this.isExpandable?(this.isExpanded?1:2):3);
+dojo.removeClass(this.expandoNode,_e);
+dojo.addClass(this.expandoNode,_e[idx]);
+this.expandoNodeText.innerHTML=_f[idx];
+},expand:function(){
+if(this._expandDeferred){
+return this._expandDeferred;
+}
+this._wipeOut&&this._wipeOut.stop();
+this.isExpanded=true;
+dijit.setWaiState(this.labelNode,"expanded","true");
+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,_10=dojo.fx.wipeIn({node:this.containerNode,duration:dijit.defaultDuration,onEnd:function(){
+def.callback(true);
+}});
+def=(this._expandDeferred=new dojo.Deferred(function(){
+_10.stop();
+}));
+_10.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(_11){
+var _12=this.tree,_13=_12.model,_14=[];
+dojo.forEach(this.getChildren(),function(_15){
+dijit._Container.prototype.removeChild.call(this,_15);
+},this);
+this.state="LOADED";
+if(_11&&_11.length>0){
+this.isExpandable=true;
+dojo.forEach(_11,function(_16){
+var id=_13.getIdentity(_16),_17=_12._itemNodesMap[id],_18;
+if(_17){
+for(var i=0;i<_17.length;i++){
+if(_17[i]&&!_17[i].getParent()){
+_18=_17[i];
+_18.set("indent",this.indent+1);
+break;
+}
+}
+}
+if(!_18){
+_18=this.tree._createTreeNode({item:_16,tree:_12,isExpandable:_13.mayHaveChildren(_16),label:_12.getLabel(_16),tooltip:_12.getTooltip(_16),dir:_12.dir,lang:_12.lang,indent:this.indent+1});
+if(_17){
+_17.push(_18);
+}else{
+_12._itemNodesMap[id]=[_18];
+}
+}
+this.addChild(_18);
+if(this.tree.autoExpand||this.tree._state(_16)){
+_14.push(_12._expandNode(_18));
+}
+},this);
+dojo.forEach(this.getChildren(),function(_19,idx){
+_19._updateLayout();
+});
+}else{
+this.isExpandable=false;
+}
+if(this._setExpando){
+this._setExpando(false);
+}
+this._updateItemClasses(this.item);
+if(this==_12.rootNode){
+var fc=this.tree.showRoot?this:this.getChildren()[0];
+if(fc){
+fc.setFocusable(true);
+_12.lastFocused=fc;
+}else{
+_12.domNode.setAttribute("tabIndex","0");
+}
+}
+return new dojo.DeferredList(_14);
+},removeChild:function(_1a){
+this.inherited(arguments);
+var _1b=this.getChildren();
+if(_1b.length==0){
+this.isExpandable=false;
+this.collapse();
+}
+dojo.forEach(_1b,function(_1c){
+_1c._updateLayout();
+});
+},makeExpandable:function(){
+this.isExpandable=true;
+this._setExpando(false);
+},_onLabelFocus:function(evt){
+this.tree._onNodeFocus(this);
+},setSelected:function(_1d){
+dijit.setWaiState(this.labelNode,"selected",_1d);
+dojo.toggleClass(this.rowNode,"dijitTreeRowSelected",_1d);
+},setFocusable:function(_1e){
+this.labelNode.setAttribute("tabIndex",_1e?"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"],path:[],selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:dojo.cache("dijit","templates/Tree.html","<div class=\"dijitTree dijitTreeContainer\" waiRole=\"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:null,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(_1f,_20){
+dojo.publish(this.id,[dojo.mixin({tree:this,event:_1f},_20||{})]);
+},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 _21={};
+for(var i=0;i<this.dndParams.length;i++){
+if(this[this.dndParams[i]]){
+_21[this.dndParams[i]]=this[this.dndParams[i]];
+}
+}
+this.dndController=new this.dndController(this,_21);
+}
+},_store2model:function(){
+this._v10Compat=true;
+dojo.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");
+var _22={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};
+if(this.params.mayHaveChildren){
+_22.mayHaveChildren=dojo.hitch(this,"mayHaveChildren");
+}
+if(this.params.getItemChildren){
+_22.getChildren=dojo.hitch(this,function(_23,_24,_25){
+this.getItemChildren((this._v10Compat&&_23===this.model.root)?null:_23,_24,_25);
+});
+}
+this.model=new dijit.tree.ForestStoreModel(_22);
+this.showRoot=Boolean(this.label);
+},onLoad:function(){
+},_load:function(){
+this.model.getRoot(dojo.hitch(this,function(_26){
+var rn=(this.rootNode=this.tree._createTreeNode({item:_26,tree:this,isExpandable:true,label:this.label||this.getLabel(_26),indent:this.showRoot?0:-1}));
+if(!this.showRoot){
+rn.rowNode.style.display="none";
+}
+this.domNode.appendChild(rn.domNode);
+var _27=this.model.getIdentity(_26);
+if(this._itemNodesMap[_27]){
+this._itemNodesMap[_27].push(rn);
+}else{
+this._itemNodesMap[_27]=[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(_28){
+if(!_28){
+return [];
+}
+var _29=dojo.isString(_28)?_28:this.model.getIdentity(_28);
+return [].concat(this._itemNodesMap[_29]);
+},_setSelectedItemAttr:function(_2a){
+var _2b=this.get("selectedItem");
+var _2c=(!_2a||dojo.isString(_2a))?_2a:this.model.getIdentity(_2a);
+if(_2c==_2b?this.model.getIdentity(_2b):null){
+return;
+}
+var _2d=this._itemNodesMap[_2c];
+this._selectNode((_2d&&_2d[0])||null);
+},_getSelectedItemAttr:function(){
+return this.selectedNode&&this.selectedNode.item;
+},_setPathAttr:function(_2e){
+var d=new dojo.Deferred();
+this._selectNode(null);
+if(!_2e||!_2e.length){
+d.resolve(true);
+return d;
+}
+this._loadDeferred.addCallback(dojo.hitch(this,function(){
+if(!this.rootNode){
+d.reject(new Error("!this.rootNode"));
+return;
+}
+if(_2e[0]!==this.rootNode.item&&(dojo.isString(_2e[0])&&_2e[0]!=this.model.getIdentity(this.rootNode.item))){
+d.reject(new Error(this.id+":path[0] doesn't match this.rootNode.item.  Maybe you are using the wrong tree."));
+return;
+}
+_2e.shift();
+var _2f=this.rootNode;
+function _30(){
+var _31=_2e.shift(),_32=dojo.isString(_31)?_31:this.model.getIdentity(_31);
+dojo.some(this._itemNodesMap[_32],function(n){
+if(n.getParent()==_2f){
+_2f=n;
+return true;
+}
+return false;
+});
+if(_2e.length){
+this._expandNode(_2f).addCallback(dojo.hitch(this,_30));
+}else{
+this._selectNode(_2f);
+d.resolve(true);
+}
+};
+this._expandNode(_2f).addCallback(dojo.hitch(this,_30));
+}));
+return d;
+},_getPathAttr:function(){
+if(!this.selectedNode){
+return;
+}
+var res=[];
+var _33=this.selectedNode;
+while(_33&&_33!==this.rootNode){
+res.unshift(_33.item);
+_33=_33.getParent();
+}
+res.unshift(this.rootNode.item);
+return res;
+},mayHaveChildren:function(_34){
+},getItemChildren:function(_35,_36){
+},getLabel:function(_37){
+return this.model.getLabel(_37);
+},getIconClass:function(_38,_39){
+return (!_38||this.model.mayHaveChildren(_38))?(_39?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";
+},getLabelClass:function(_3a,_3b){
+},getRowClass:function(_3c,_3d){
+},getIconStyle:function(_3e,_3f){
+},getLabelStyle:function(_40,_41){
+},getRowStyle:function(_42,_43){
+},getTooltip:function(_44){
+return "";
+},_onKeyPress:function(e){
+if(e.altKey){
+return;
+}
+var dk=dojo.keys;
+var _45=dijit.getEnclosingWidget(e.target);
+if(!_45){
+return;
+}
+var key=e.charOrCode;
+if(typeof key=="string"){
+if(!e.altKey&&!e.ctrlKey&&!e.shiftKey&&!e.metaKey){
+this._onLetterKeyNav({node:_45,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[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:_45,item:_45.item,evt:e});
+dojo.stopEvent(e);
+}
+}
+},_onEnterKey:function(_46,evt){
+this._publish("execute",{item:_46.item,node:_46.node});
+this._selectNode(_46.node);
+this.onClick(_46.item,_46.node,evt);
+},_onDownArrow:function(_47){
+var _48=this._getNextNode(_47.node);
+if(_48&&_48.isTreeNode){
+this.focusNode(_48);
+}
+},_onUpArrow:function(_49){
+var _4a=_49.node;
+var _4b=_4a.getPreviousSibling();
+if(_4b){
+_4a=_4b;
+while(_4a.isExpandable&&_4a.isExpanded&&_4a.hasChildren()){
+var _4c=_4a.getChildren();
+_4a=_4c[_4c.length-1];
+}
+}else{
+var _4d=_4a.getParent();
+if(!(!this.showRoot&&_4d===this.rootNode)){
+_4a=_4d;
+}
+}
+if(_4a&&_4a.isTreeNode){
+this.focusNode(_4a);
+}
+},_onRightArrow:function(_4e){
+var _4f=_4e.node;
+if(_4f.isExpandable&&!_4f.isExpanded){
+this._expandNode(_4f);
+}else{
+if(_4f.hasChildren()){
+_4f=_4f.getChildren()[0];
+if(_4f&&_4f.isTreeNode){
+this.focusNode(_4f);
+}
+}
+}
+},_onLeftArrow:function(_50){
+var _51=_50.node;
+if(_51.isExpandable&&_51.isExpanded){
+this._collapseNode(_51);
+}else{
+var _52=_51.getParent();
+if(_52&&_52.isTreeNode&&!(!this.showRoot&&_52===this.rootNode)){
+this.focusNode(_52);
+}
+}
+},_onHomeKey:function(){
+var _53=this._getRootOrFirstNode();
+if(_53){
+this.focusNode(_53);
+}
+},_onEndKey:function(_54){
+var _55=this.rootNode;
+while(_55.isExpanded){
+var c=_55.getChildren();
+_55=c[c.length-1];
+}
+if(_55&&_55.isTreeNode){
+this.focusNode(_55);
+}
+},multiCharSearchDuration:250,_onLetterKeyNav:function(_56){
+var cs=this._curSearch;
+if(cs){
+cs.pattern=cs.pattern+_56.key;
+clearTimeout(cs.timer);
+}else{
+cs=this._curSearch={pattern:_56.key,startNode:_56.node};
+}
+var _57=this;
+cs.timer=setTimeout(function(){
+delete _57._curSearch;
+},this.multiCharSearchDuration);
+var _58=cs.startNode;
+do{
+_58=this._getNextNode(_58);
+if(!_58){
+_58=this._getRootOrFirstNode();
+}
+}while(_58!==cs.startNode&&(_58.label.toLowerCase().substr(0,cs.pattern.length)!=cs.pattern));
+if(_58&&_58.isTreeNode){
+if(_58!==cs.startNode){
+this.focusNode(_58);
+}
+}
+},_onClick:function(_59,e){
+var _5a=e.target,_5b=(_5a==_59.expandoNode||_5a==_59.expandoNodeText);
+if((this.openOnClick&&_59.isExpandable)||_5b){
+if(_59.isExpandable){
+this._onExpandoClick({node:_59});
+}
+}else{
+this._publish("execute",{item:_59.item,node:_59,evt:e});
+this.onClick(_59.item,_59,e);
+this.focusNode(_59);
+}
+if(!_5b){
+this._selectNode(_59);
+}
+dojo.stopEvent(e);
+},_onDblClick:function(_5c,e){
+var _5d=e.target,_5e=(_5d==_5c.expandoNode||_5d==_5c.expandoNodeText);
+if((this.openOnDblClick&&_5c.isExpandable)||_5e){
+if(_5c.isExpandable){
+this._onExpandoClick({node:_5c});
+}
+}else{
+this._publish("execute",{item:_5c.item,node:_5c,evt:e});
+this.onDblClick(_5c.item,_5c,e);
+this.focusNode(_5c);
+}
+if(!_5e){
+this._selectNode(_5c);
+}
+dojo.stopEvent(e);
+},_onExpandoClick:function(_5f){
+var _60=_5f.node;
+this.focusNode(_60);
+if(_60.isExpanded){
+this._collapseNode(_60);
+}else{
+this._expandNode(_60);
+}
+},onClick:function(_61,_62,evt){
+},onDblClick:function(_63,_64,evt){
+},onOpen:function(_65,_66){
+},onClose:function(_67,_68){
+},_getNextNode:function(_69){
+if(_69.isExpandable&&_69.isExpanded&&_69.hasChildren()){
+return _69.getChildren()[0];
+}else{
+while(_69&&_69.isTreeNode){
+var _6a=_69.getNextSibling();
+if(_6a){
+return _6a;
+}
+_69=_69.getParent();
+}
+return null;
+}
+},_getRootOrFirstNode:function(){
+return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];
+},_collapseNode:function(_6b){
+if(_6b._expandNodeDeferred){
+delete _6b._expandNodeDeferred;
+}
+if(_6b.isExpandable){
+if(_6b.state=="LOADING"){
+return;
+}
+_6b.collapse();
+this.onClose(_6b.item,_6b);
+if(_6b.item){
+this._state(_6b.item,false);
+this._saveState();
+}
+}
+},_expandNode:function(_6c,_6d){
+if(_6c._expandNodeDeferred&&!_6d){
+return _6c._expandNodeDeferred;
+}
+var _6e=this.model,_6f=_6c.item,_70=this;
+switch(_6c.state){
+case "UNCHECKED":
+_6c.markProcessing();
+var def=(_6c._expandNodeDeferred=new dojo.Deferred());
+_6e.getChildren(_6f,function(_71){
+_6c.unmarkProcessing();
+var _72=_6c.setChildItems(_71);
+var ed=_70._expandNode(_6c,true);
+_72.addCallback(function(){
+ed.addCallback(function(){
+def.callback();
+});
+});
+},function(err){
+console.error(_70,": error loading root children: ",err);
+});
+break;
+default:
+def=(_6c._expandNodeDeferred=_6c.expand());
+this.onOpen(_6c.item,_6c);
+if(_6f){
+this._state(_6f,true);
+this._saveState();
+}
+}
+return def;
+},focusNode:function(_73){
+dijit.focus(_73.labelNode);
+},_selectNode:function(_74){
+if(this.selectedNode&&!this.selectedNode._destroyed){
+this.selectedNode.setSelected(false);
+}
+if(_74){
+_74.setSelected(true);
+}
+this.selectedNode=_74;
+},_onNodeFocus:function(_75){
+if(_75&&_75!=this.lastFocused){
+if(this.lastFocused&&!this.lastFocused._destroyed){
+this.lastFocused.setFocusable(false);
+}
+_75.setFocusable(true);
+this.lastFocused=_75;
+}
+},_onNodeMouseEnter:function(_76){
+},_onNodeMouseLeave:function(_77){
+},_onItemChange:function(_78){
+var _79=this.model,_7a=_79.getIdentity(_78),_7b=this._itemNodesMap[_7a];
+if(_7b){
+var _7c=this.getLabel(_78),_7d=this.getTooltip(_78);
+dojo.forEach(_7b,function(_7e){
+_7e.set({item:_78,label:_7c,tooltip:_7d});
+_7e._updateItemClasses(_78);
+});
+}
+},_onItemChildrenChange:function(_7f,_80){
+var _81=this.model,_82=_81.getIdentity(_7f),_83=this._itemNodesMap[_82];
+if(_83){
+dojo.forEach(_83,function(_84){
+_84.setChildItems(_80);
+});
+}
+},_onItemDelete:function(_85){
+var _86=this.model,_87=_86.getIdentity(_85),_88=this._itemNodesMap[_87];
+if(_88){
+dojo.forEach(_88,function(_89){
+var _8a=_89.getParent();
+if(_8a){
+_8a.removeChild(_89);
+}
+_89.destroyRecursive();
+});
+delete this._itemNodesMap[_87];
+}
+},_initState:function(){
+if(this.persist){
+var _8b=dojo.cookie(this.cookieName);
+this._openedItemIds={};
+if(_8b){
+dojo.forEach(_8b.split(","),function(_8c){
+this._openedItemIds[_8c]=true;
+},this);
+}
+}
+},_state:function(_8d,_8e){
+if(!this.persist){
+return false;
+}
+var id=this.model.getIdentity(_8d);
+if(arguments.length===1){
+return this._openedItemIds[id];
+}
+if(_8e){
+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(_8f){
+if(_8f){
+dojo.marginBox(this.domNode,_8f);
+dojo.style(this.domNode,"overflow","auto");
+}
+this._nodePixelIndent=dojo.marginBox(this.tree.indentDetector).w;
+if(this.tree.rootNode){
+this.tree.rootNode.set("indent",this.showRoot?0:-1);
+}
+},_createTreeNode:function(_90){
+return new dijit._TreeNode(_90);
+}});
+dojo.require("dijit.tree.TreeStoreModel");
+dojo.require("dijit.tree.ForestStoreModel");
+}
diff --git a/lib/dijit/_Calendar.js b/lib/dijit/_Calendar.js
new file mode 100644 (file)
index 0000000..f9bb239
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._Calendar"]){
+dojo._hasResource["dijit._Calendar"]=true;
+dojo.provide("dijit._Calendar");
+dojo.require("dijit.Calendar");
+dojo.deprecated("dijit._Calendar is deprecated","dijit._Calendar moved to dijit.Calendar",1.5);
+dijit._Calendar=dijit.Calendar;
+}
diff --git a/lib/dijit/_Contained.js b/lib/dijit/_Contained.js
new file mode 100644 (file)
index 0000000..50d9dc5
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._Contained"]){
+dojo._hasResource["dijit._Contained"]=true;
+dojo.provide("dijit._Contained");
+dojo.declare("dijit._Contained",null,{getParent:function(){
+var _1=dijit.getEnclosingWidget(this.domNode.parentNode);
+return _1&&_1.isContainer?_1:null;
+},_getSibling:function(_2){
+var _3=this.domNode;
+do{
+_3=_3[_2+"Sibling"];
+}while(_3&&_3.nodeType!=1);
+return _3&&dijit.byNode(_3);
+},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);
+}});
+}
diff --git a/lib/dijit/_Container.js b/lib/dijit/_Container.js
new file mode 100644 (file)
index 0000000..ce8232c
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+       Copyright (c) 2004-2010, 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["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(_1,_2){
+var _3=this.containerNode;
+if(_2&&typeof _2=="number"){
+var _4=this.getChildren();
+if(_4&&_4.length>=_2){
+_3=_4[_2-1].domNode;
+_2="after";
+}
+}
+dojo.place(_1.domNode,_3,_2);
+if(this._started&&!_1._started){
+_1.startup();
+}
+},removeChild:function(_5){
+if(typeof _5=="number"&&_5>0){
+_5=this.getChildren()[_5];
+}
+if(_5){
+var _6=_5.domNode;
+if(_6&&_6.parentNode){
+_6.parentNode.removeChild(_6);
+}
+}
+},hasChildren:function(){
+return this.getChildren().length>0;
+},destroyDescendants:function(_7){
+dojo.forEach(this.getChildren(),function(_8){
+_8.destroyRecursive(_7);
+});
+},_getSiblingOfChild:function(_9,_a){
+var _b=_9.domNode,_c=(_a>0?"nextSibling":"previousSibling");
+do{
+_b=_b[_c];
+}while(_b&&(_b.nodeType!=1||!dijit.byNode(_b)));
+return _b&&dijit.byNode(_b);
+},getIndexOfChild:function(_d){
+return dojo.indexOf(this.getChildren(),_d);
+},startup:function(){
+if(this._started){
+return;
+}
+dojo.forEach(this.getChildren(),function(_e){
+_e.startup();
+});
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/_CssStateMixin.js b/lib/dijit/_CssStateMixin.js
new file mode 100644 (file)
index 0000000..5314480
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._CssStateMixin"]){
+dojo._hasResource["dijit._CssStateMixin"]=true;
+dojo.provide("dijit._CssStateMixin");
+dojo.declare("dijit._CssStateMixin",[],{cssStateNodes:{},postCreate:function(){
+this.inherited(arguments);
+dojo.forEach(["onmouseenter","onmouseleave","onmousedown"],function(e){
+this.connect(this.domNode,e,"_cssMouseEvent");
+},this);
+this.connect(this,"set",function(_1,_2){
+if(arguments.length>=2&&{disabled:true,readOnly:true,checked:true,selected:true}[_1]){
+this._setStateClass();
+}
+});
+dojo.forEach(["_onFocus","_onBlur"],function(ap){
+this.connect(this,ap,"_setStateClass");
+},this);
+for(var ap in this.cssStateNodes){
+this._trackMouseState(this[ap],this.cssStateNodes[ap]);
+}
+this._setStateClass();
+},_cssMouseEvent:function(_3){
+if(!this.disabled){
+switch(_3.type){
+case "mouseenter":
+case "mouseover":
+this._hovering=true;
+this._active=this._mouseDown;
+break;
+case "mouseleave":
+case "mouseout":
+this._hovering=false;
+this._active=false;
+break;
+case "mousedown":
+this._active=true;
+this._mouseDown=true;
+var _4=this.connect(dojo.body(),"onmouseup",function(){
+this._active=false;
+this._mouseDown=false;
+this._setStateClass();
+this.disconnect(_4);
+});
+break;
+}
+this._setStateClass();
+}
+},_setStateClass:function(){
+var _5=this.baseClass.split(" ");
+function _6(_7){
+_5=_5.concat(dojo.map(_5,function(c){
+return c+_7;
+}),"dijit"+_7);
+};
+if(!this.isLeftToRight()){
+_6("Rtl");
+}
+if(this.checked){
+_6("Checked");
+}
+if(this.state){
+_6(this.state);
+}
+if(this.selected){
+_6("Selected");
+}
+if(this.disabled){
+_6("Disabled");
+}else{
+if(this.readOnly){
+_6("ReadOnly");
+}else{
+if(this._active){
+_6("Active");
+}else{
+if(this._hovering){
+_6("Hover");
+}
+}
+}
+}
+if(this._focused){
+_6("Focused");
+}
+var tn=this.stateNode||this.domNode,_8={};
+dojo.forEach(tn.className.split(" "),function(c){
+_8[c]=true;
+});
+if("_stateClasses" in this){
+dojo.forEach(this._stateClasses,function(c){
+delete _8[c];
+});
+}
+dojo.forEach(_5,function(c){
+_8[c]=true;
+});
+var _9=[];
+for(var c in _8){
+_9.push(c);
+}
+tn.className=_9.join(" ");
+this._stateClasses=_5;
+},_trackMouseState:function(_a,_b){
+var _c=false,_d=false,_e=false;
+var _f=this,cn=dojo.hitch(this,"connect",_a);
+function _10(){
+var _11=("disabled" in _f&&_f.disabled)||("readonly" in _f&&_f.readonly);
+dojo.toggleClass(_a,_b+"Hover",_c&&!_d&&!_11);
+dojo.toggleClass(_a,_b+"Active",_d&&!_11);
+dojo.toggleClass(_a,_b+"Focused",_e&&!_11);
+};
+cn("onmouseenter",function(){
+_c=true;
+_10();
+});
+cn("onmouseleave",function(){
+_c=false;
+_d=false;
+_10();
+});
+cn("onmousedown",function(){
+_d=true;
+_10();
+});
+cn("onmouseup",function(){
+_d=false;
+_10();
+});
+cn("onfocus",function(){
+_e=true;
+_10();
+});
+cn("onblur",function(){
+_e=false;
+_10();
+});
+this.connect(this,"set",function(_12,_13){
+if(_12=="disabled"||_12=="readOnly"){
+_10();
+}
+});
+}});
+}
diff --git a/lib/dijit/_DialogMixin.js b/lib/dijit/_DialogMixin.js
new file mode 100644 (file)
index 0000000..f67e8d0
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._DialogMixin"]){
+dojo._hasResource["dijit._DialogMixin"]=true;
+dojo.provide("dijit._DialogMixin");
+dojo.require("dijit._Widget");
+dojo.declare("dijit._DialogMixin",null,{attributeMap:dijit._Widget.prototype.attributeMap,execute:function(_1){
+},onCancel:function(){
+},onExecute:function(){
+},_onSubmit:function(){
+this.onExecute();
+this.execute(this.get("value"));
+},_getFocusItems:function(_2){
+var _3=dijit._getTabNavigable(dojo.byId(_2));
+this._firstFocusItem=_3.lowest||_3.first||_2;
+this._lastFocusItem=_3.last||_3.highest||this._firstFocusItem;
+if(dojo.isMoz&&this._firstFocusItem.tagName.toLowerCase()=="input"&&dojo.getNodeProp(this._firstFocusItem,"type").toLowerCase()=="file"){
+dojo.attr(_2,"tabIndex","0");
+this._firstFocusItem=_2;
+}
+}});
+}
diff --git a/lib/dijit/_HasDropDown.js b/lib/dijit/_HasDropDown.js
new file mode 100644 (file)
index 0000000..6606acb
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._HasDropDown"]){
+dojo._hasResource["dijit._HasDropDown"]=true;
+dojo.provide("dijit._HasDropDown");
+dojo.require("dijit._base.place");
+dojo.require("dijit._Widget");
+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;
+}
+this._docHandler=this.connect(dojo.doc,"onmouseup","_onDropDownMouseUp");
+this.toggleDropDown();
+},_onDropDownMouseUp:function(e){
+if(e&&this._docHandler){
+this.disconnect(this._docHandler);
+}
+var _1=this.dropDown,_2=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&&!_2){
+if(dojo.hasClass(t,"dijitPopup")){
+_2=true;
+}else{
+t=t.parentNode;
+}
+}
+if(_2){
+t=e.target;
+if(_1.onItemClick){
+var _3;
+while(t&&!(_3=dijit.byNode(t))){
+t=t.parentNode;
+}
+if(_3&&_3.onClick&&_3.getParent){
+_3.getParent().onItemClick(_3,e);
+}
+}
+return;
+}
+}
+}
+if(this._opened&&_1.focus){
+window.setTimeout(dojo.hitch(_1,"focus"),1);
+}
+},_onDropDownClick:function(e){
+if(this._stopClickEvents){
+dojo.stopEvent(e);
+}
+},_setupDropdown:function(){
+this._buttonNode=this._buttonNode||this.focusNode||this.domNode;
+this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;
+this._aroundNode=this._aroundNode||this.domNode;
+this.connect(this._buttonNode,"onmousedown","_onDropDownMouseDown");
+this.connect(this._buttonNode,"onclick","_onDropDownClick");
+this.connect(this._buttonNode,"onkeydown","_onDropDownKeydown");
+this.connect(this._buttonNode,"onkeyup","_onKey");
+if(this._setStateClass){
+this.connect(this,"openDropDown","_setStateClass");
+this.connect(this,"closeDropDown","_setStateClass");
+}
+var _4={"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"+_4+"ArrowButton");
+},postCreate:function(){
+this._setupDropdown();
+this.inherited(arguments);
+},destroyDescendants:function(){
+if(this.dropDown){
+if(!this.dropDown._destroyed){
+this.dropDown.destroyRecursive();
+}
+delete this.dropDown;
+}
+this.inherited(arguments);
+},_onDropDownKeydown:function(e){
+if(e.keyCode==dojo.keys.DOWN_ARROW||e.keyCode==dojo.keys.ENTER||e.keyCode==dojo.keys.SPACE){
+e.preventDefault();
+}
+},_onKey:function(e){
+if(this.disabled||this.readOnly){
+return;
+}
+var d=this.dropDown;
+if(d&&this._opened&&d.handleKey){
+if(d.handleKey(e)===false){
+return;
+}
+}
+if(d&&this._opened&&e.keyCode==dojo.keys.ESCAPE){
+this.toggleDropDown();
+}else{
+if(d&&!this._opened&&(e.keyCode==dojo.keys.DOWN_ARROW||e.keyCode==dojo.keys.ENTER||e.keyCode==dojo.keys.SPACE)){
+this.toggleDropDown();
+if(d.focus){
+setTimeout(dojo.hitch(d,"focus"),1);
+}
+}
+}
+},_onBlur:function(){
+this.closeDropDown();
+this.inherited(arguments);
+},isLoaded:function(){
+return true;
+},loadDropDown:function(_5){
+_5();
+},toggleDropDown:function(){
+if(this.disabled||this.readOnly){
+return;
+}
+this.focus();
+var _6=this.dropDown;
+if(!_6){
+return;
+}
+if(!this._opened){
+if(!this.isLoaded()){
+this.loadDropDown(dojo.hitch(this,"openDropDown"));
+return;
+}else{
+this.openDropDown();
+}
+}else{
+this.closeDropDown();
+}
+},openDropDown:function(){
+var _7=this.dropDown;
+var _8=_7.domNode;
+var _9=this;
+if(!this._preparedNode){
+dijit.popup.moveOffScreen(_8);
+this._preparedNode=true;
+if(_8.style.width){
+this._explicitDDWidth=true;
+}
+if(_8.style.height){
+this._explicitDDHeight=true;
+}
+}
+if(this.maxHeight||this.forceWidth||this.autoWidth){
+var _a={display:"",visibility:"hidden"};
+if(!this._explicitDDWidth){
+_a.width="";
+}
+if(!this._explicitDDHeight){
+_a.height="";
+}
+dojo.style(_8,_a);
+var mb=dojo.marginBox(_8);
+var _b=(this.maxHeight&&mb.h>this.maxHeight);
+dojo.style(_8,{overflowX:"hidden",overflowY:_b?"auto":"hidden"});
+if(_b){
+mb.h=this.maxHeight;
+if("w" in mb){
+mb.w+=16;
+}
+}else{
+delete mb.h;
+}
+delete mb.t;
+delete mb.l;
+if(this.forceWidth){
+mb.w=this.domNode.offsetWidth;
+}else{
+if(this.autoWidth){
+mb.w=Math.max(mb.w,this.domNode.offsetWidth);
+}else{
+delete mb.w;
+}
+}
+if(dojo.isFunction(_7.resize)){
+_7.resize(mb);
+}else{
+dojo.marginBox(_8,mb);
+}
+}
+var _c=dijit.popup.open({parent:this,popup:_7,around:this._aroundNode,orient:dijit.getPopupAroundAlignment((this.dropDownPosition&&this.dropDownPosition.length)?this.dropDownPosition:["below"],this.isLeftToRight()),onExecute:function(){
+_9.closeDropDown(true);
+},onCancel:function(){
+_9.closeDropDown(true);
+},onClose:function(){
+dojo.attr(_9._popupStateNode,"popupActive",false);
+dojo.removeClass(_9._popupStateNode,"dijitHasDropDownOpen");
+_9._opened=false;
+_9.state="";
+}});
+dojo.attr(this._popupStateNode,"popupActive","true");
+dojo.addClass(_9._popupStateNode,"dijitHasDropDownOpen");
+this._opened=true;
+this.state="Opened";
+return _c;
+},closeDropDown:function(_d){
+if(this._opened){
+if(_d){
+this.focus();
+}
+dijit.popup.close(this.dropDown);
+this._opened=false;
+this.state="";
+}
+}});
+}
diff --git a/lib/dijit/_KeyNavContainer.js b/lib/dijit/_KeyNavContainer.js
new file mode 100644 (file)
index 0000000..839ba83
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._KeyNavContainer"]){
+dojo._hasResource["dijit._KeyNavContainer"]=true;
+dojo.provide("dijit._KeyNavContainer");
+dojo.require("dijit._Container");
+dojo.declare("dijit._KeyNavContainer",dijit._Container,{tabIndex:"0",_keyNavCodes:{},connectKeyNavHandlers:function(_1,_2){
+var _3=(this._keyNavCodes={});
+var _4=dojo.hitch(this,this.focusPrev);
+var _5=dojo.hitch(this,this.focusNext);
+dojo.forEach(_1,function(_6){
+_3[_6]=_4;
+});
+dojo.forEach(_2,function(_7){
+_3[_7]=_5;
+});
+this.connect(this.domNode,"onkeypress","_onContainerKeypress");
+this.connect(this.domNode,"onfocus","_onContainerFocus");
+},startupKeyNavChildren:function(){
+dojo.forEach(this.getChildren(),dojo.hitch(this,"_startupChild"));
+},addChild:function(_8,_9){
+dijit._KeyNavContainer.superclass.addChild.apply(this,arguments);
+this._startupChild(_8);
+},focus:function(){
+this.focusFirstChild();
+},focusFirstChild:function(){
+var _a=this._getFirstFocusableChild();
+if(_a){
+this.focusChild(_a);
+}
+},focusNext:function(){
+var _b=this._getNextFocusableChild(this.focusedChild,1);
+this.focusChild(_b);
+},focusPrev:function(){
+var _c=this._getNextFocusableChild(this.focusedChild,-1);
+this.focusChild(_c,true);
+},focusChild:function(_d,_e){
+if(this.focusedChild&&_d!==this.focusedChild){
+this._onChildBlur(this.focusedChild);
+}
+_d.focus(_e?"end":"start");
+this.focusedChild=_d;
+},_startupChild:function(_f){
+_f.set("tabIndex","-1");
+this.connect(_f,"_onFocus",function(){
+_f.set("tabIndex",this.tabIndex);
+});
+this.connect(_f,"_onBlur",function(){
+_f.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 _10=this._keyNavCodes[evt.charOrCode];
+if(_10){
+_10();
+dojo.stopEvent(evt);
+}
+},_onChildBlur:function(_11){
+},_getFirstFocusableChild:function(){
+return this._getNextFocusableChild(null,1);
+},_getNextFocusableChild:function(_12,dir){
+if(_12){
+_12=this._getSiblingOfChild(_12,dir);
+}
+var _13=this.getChildren();
+for(var i=0;i<_13.length;i++){
+if(!_12){
+_12=_13[(dir>0)?0:(_13.length-1)];
+}
+if(_12.isFocusable()){
+return _12;
+}
+_12=this._getSiblingOfChild(_12,dir);
+}
+return null;
+}});
+}
diff --git a/lib/dijit/_PaletteMixin.js b/lib/dijit/_PaletteMixin.js
new file mode 100644 (file)
index 0000000..a12855d
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._PaletteMixin"]){
+dojo._hasResource["dijit._PaletteMixin"]=true;
+dojo.provide("dijit._PaletteMixin");
+dojo.require("dijit._CssStateMixin");
+dojo.declare("dijit._PaletteMixin",[dijit._CssStateMixin],{defaultTimeout:500,timeoutChangeRate:0.9,value:null,_selectedCell:-1,tabIndex:"0",cellClass:"dijitPaletteCell",dyeClass:"",_preparePalette:function(_1,_2){
+this._cells=[];
+var _3=this._blankGif;
+var _4=dojo.getObject(this.dyeClass);
+for(var _5=0;_5<_1.length;_5++){
+var _6=dojo.create("tr",{tabIndex:"-1"},this.gridNode);
+for(var _7=0;_7<_1[_5].length;_7++){
+var _8=_1[_5][_7];
+if(_8){
+var _9=new _4(_8);
+var _a=dojo.create("td",{"class":this.cellClass,tabIndex:"-1",title:_2[_8]});
+_9.fillCell(_a,_3);
+this.connect(_a,"ondijitclick","_onCellClick");
+this._trackMouseState(_a,this.cellClass);
+dojo.place(_a,_6);
+_a.index=this._cells.length;
+this._cells.push({node:_a,dye:_9});
+}
+}
+}
+this._xDim=_1[0].length;
+this._yDim=_1.length;
+var _b={UP_ARROW:-this._xDim,DOWN_ARROW:this._xDim,RIGHT_ARROW:this.isLeftToRight()?1:-1,LEFT_ARROW:this.isLeftToRight()?-1:1};
+for(var _c in _b){
+this._connects.push(dijit.typematic.addKeyListener(this.domNode,{charOrCode:dojo.keys[_c],ctrlKey:false,altKey:false,shiftKey:false},this,function(){
+var _d=_b[_c];
+return function(_e){
+this._navigateByKey(_d,_e);
+};
+}(),this.timeoutChangeRate,this.defaultTimeout));
+}
+},postCreate:function(){
+this.inherited(arguments);
+this._setCurrent(this._cells[0].node);
+},focus:function(){
+dijit.focus(this._currentFocus);
+},_onCellClick:function(_f){
+var _10=_f.currentTarget,_11=this._getDye(_10).getValue();
+this._setCurrent(_10);
+setTimeout(dojo.hitch(this,function(){
+dijit.focus(_10);
+this._setValueAttr(_11,true);
+}));
+dojo.removeClass(_10,"dijitPaletteCellHover");
+dojo.stopEvent(_f);
+},_setCurrent:function(_12){
+if("_currentFocus" in this){
+dojo.attr(this._currentFocus,"tabIndex","-1");
+}
+this._currentFocus=_12;
+if(_12){
+dojo.attr(_12,"tabIndex",this.tabIndex);
+}
+},_setValueAttr:function(_13,_14){
+this.value=null;
+if(this._selectedCell>=0){
+dojo.removeClass(this._cells[this._selectedCell].node,"dijitPaletteCellSelected");
+}
+this._selectedCell=-1;
+if(_13){
+for(var i=0;i<this._cells.length;i++){
+if(_13==this._cells[i].dye.getValue()){
+this._selectedCell=i;
+this.value=_13;
+dojo.addClass(this._cells[i].node,"dijitPaletteCellSelected");
+if(_14||_14===undefined){
+this.onChange(_13);
+}
+break;
+}
+}
+}
+},onChange:function(_15){
+},_navigateByKey:function(_16,_17){
+if(_17==-1){
+return;
+}
+var _18=this._currentFocus.index+_16;
+if(_18<this._cells.length&&_18>-1){
+var _19=this._cells[_18].node;
+this._setCurrent(_19);
+setTimeout(dojo.hitch(dijit,"focus",_19),0);
+}
+},_getDye:function(_1a){
+return this._cells[_1a.index].dye;
+}});
+}
diff --git a/lib/dijit/_Templated.js b/lib/dijit/_Templated.js
new file mode 100644 (file)
index 0000000..65ca20b
--- /dev/null
@@ -0,0 +1,184 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._Templated"]){
+dojo._hasResource["dijit._Templated"]=true;
+dojo.provide("dijit._Templated");
+dojo.require("dijit._Widget");
+dojo.require("dojo.string");
+dojo.require("dojo.parser");
+dojo.require("dojo.cache");
+dojo.declare("dijit._Templated",null,{templateString:null,templatePath:null,widgetsInTemplate:false,_skipNodeCache:false,_earlyTemplatedStartup:false,constructor:function(){
+this._attachPoints=[];
+},_stringRepl:function(_1){
+var _2=this.declaredClass,_3=this;
+return dojo.string.substitute(_1,this,function(_4,_5){
+if(_5.charAt(0)=="!"){
+_4=dojo.getObject(_5.substr(1),false,_3);
+}
+if(typeof _4=="undefined"){
+throw new Error(_2+" template:"+_5);
+}
+if(_4==null){
+return "";
+}
+return _5.charAt(0)=="!"?_4:_4.toString().replace(/"/g,"&quot;");
+},this);
+},buildRendering:function(){
+var _6=dijit._Templated.getCachedTemplate(this.templatePath,this.templateString,this._skipNodeCache);
+var _7;
+if(dojo.isString(_6)){
+_7=dojo._toDom(this._stringRepl(_6));
+if(_7.nodeType!=1){
+throw new Error("Invalid template: "+_6);
+}
+}else{
+_7=_6.cloneNode(true);
+}
+this.domNode=_7;
+this._attachTemplateNodes(_7);
+if(this.widgetsInTemplate){
+var _8=dojo.parser,_9,_a;
+if(_8._query!="[dojoType]"){
+_9=_8._query;
+_a=_8._attrName;
+_8._query="[dojoType]";
+_8._attrName="dojoType";
+}
+var cw=(this._startupWidgets=dojo.parser.parse(_7,{noStart:!this._earlyTemplatedStartup,inherited:{dir:this.dir,lang:this.lang}}));
+if(_9){
+_8._query=_9;
+_8._attrName=_a;
+}
+this._supportingWidgets=dijit.findWidgets(_7);
+this._attachTemplateNodes(cw,function(n,p){
+return n[p];
+});
+}
+this._fillContent(this.srcNodeRef);
+},_fillContent:function(_b){
+var _c=this.containerNode;
+if(_b&&_c){
+while(_b.hasChildNodes()){
+_c.appendChild(_b.firstChild);
+}
+}
+},_attachTemplateNodes:function(_d,_e){
+_e=_e||function(n,p){
+return n.getAttribute(p);
+};
+var _f=dojo.isArray(_d)?_d:(_d.all||_d.getElementsByTagName("*"));
+var x=dojo.isArray(_d)?0:-1;
+for(;x<_f.length;x++){
+var _10=(x==-1)?_d:_f[x];
+if(this.widgetsInTemplate&&_e(_10,"dojoType")){
+continue;
+}
+var _11=_e(_10,"dojoAttachPoint");
+if(_11){
+var _12,_13=_11.split(/\s*,\s*/);
+while((_12=_13.shift())){
+if(dojo.isArray(this[_12])){
+this[_12].push(_10);
+}else{
+this[_12]=_10;
+}
+this._attachPoints.push(_12);
+}
+}
+var _14=_e(_10,"dojoAttachEvent");
+if(_14){
+var _15,_16=_14.split(/\s*,\s*/);
+var _17=dojo.trim;
+while((_15=_16.shift())){
+if(_15){
+var _18=null;
+if(_15.indexOf(":")!=-1){
+var _19=_15.split(":");
+_15=_17(_19[0]);
+_18=_17(_19[1]);
+}else{
+_15=_17(_15);
+}
+if(!_18){
+_18=_15;
+}
+this.connect(_10,_15,_18);
+}
+}
+}
+var _1a=_e(_10,"waiRole");
+if(_1a){
+dijit.setWaiRole(_10,_1a);
+}
+var _1b=_e(_10,"waiState");
+if(_1b){
+dojo.forEach(_1b.split(/\s*,\s*/),function(_1c){
+if(_1c.indexOf("-")!=-1){
+var _1d=_1c.split("-");
+dijit.setWaiState(_10,_1d[0],_1d[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(_1e){
+delete this[_1e];
+},this);
+this._attachPoints=[];
+this.inherited(arguments);
+}});
+dijit._Templated._templateCache={};
+dijit._Templated.getCachedTemplate=function(_1f,_20,_21){
+var _22=dijit._Templated._templateCache;
+var key=_20||_1f;
+var _23=_22[key];
+if(_23){
+try{
+if(!_23.ownerDocument||_23.ownerDocument==dojo.doc){
+return _23;
+}
+}
+catch(e){
+}
+dojo.destroy(_23);
+}
+if(!_20){
+_20=dojo.cache(_1f,{sanitize:true});
+}
+_20=dojo.string.trim(_20);
+if(_21||_20.match(/\$\{([^\}]+)\}/g)){
+return (_22[key]=_20);
+}else{
+var _24=dojo._toDom(_20);
+if(_24.nodeType!=1){
+throw new Error("Invalid template: "+_20);
+}
+return (_22[key]=_24);
+}
+};
+if(dojo.isIE){
+dojo.addOnWindowUnload(function(){
+var _25=dijit._Templated._templateCache;
+for(var key in _25){
+var _26=_25[key];
+if(typeof _26=="object"){
+dojo.destroy(_26);
+}
+delete _25[key];
+}
+});
+}
+dojo.extend(dijit._Widget,{dojoAttachEvent:"",dojoAttachPoint:"",waiRole:"",waiState:""});
+}
diff --git a/lib/dijit/_TimePicker.js b/lib/dijit/_TimePicker.js
new file mode 100644 (file)
index 0000000..fc3ae29
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._TimePicker"]){
+dojo._hasResource["dijit._TimePicker"]=true;
+dojo.provide("dijit._TimePicker");
+dojo.require("dijit.form._FormWidget");
+dojo.require("dojo.date.locale");
+dojo.declare("dijit._TimePicker",[dijit._Widget,dijit._Templated],{templateString:dojo.cache("dijit","templates/TimePicker.html","<div id=\"widget_${id}\" class=\"dijitMenu\"\n    ><div dojoAttachPoint=\"upArrow\" class=\"dijitButtonNode dijitUpArrowButton\" dojoAttachEvent=\"onmouseenter:_buttonMouse,onmouseleave:_buttonMouse\"\n\t\t><div class=\"dijitReset dijitInline dijitArrowButtonInner\" wairole=\"presentation\" role=\"presentation\">&nbsp;</div\n\t\t><div class=\"dijitArrowButtonChar\">&#9650;</div></div\n    ><div dojoAttachPoint=\"timeMenu,focusNode\" dojoAttachEvent=\"onclick:_onOptionSelected,onmouseover,onmouseout\"></div\n    ><div dojoAttachPoint=\"downArrow\" class=\"dijitButtonNode dijitDownArrowButton\" dojoAttachEvent=\"onmouseenter:_buttonMouse,onmouseleave:_buttonMouse\"\n\t\t><div class=\"dijitReset dijitInline dijitArrowButtonInner\" wairole=\"presentation\" role=\"presentation\">&nbsp;</div\n\t\t><div class=\"dijitArrowButtonChar\">&#9660;</div></div\n></div>\n"),baseClass:"dijitTimePicker",clickableIncrement:"T00:15:00",visibleIncrement:"T01:00:00",visibleRange:"T05:00:00",value:new Date(),_visibleIncrement:2,_clickableIncrement:1,_totalIncrements:10,constraints:{},serialize:dojo.date.stamp.toISOString,_filterString:"",setValue:function(_1){
+dojo.deprecated("dijit._TimePicker:setValue() is deprecated.  Use set('value', ...) instead.","","2.0");
+this.set("value",_1);
+},_setValueAttr:function(_2){
+this.value=_2;
+this._showText();
+},onOpen:function(_3){
+if(this._beenOpened&&this.domNode.parentNode){
+var p=dijit.byId(this.domNode.parentNode.dijitPopupParent);
+if(p){
+var _4=p.get("displayedValue");
+if(_4&&!p.parse(_4,p.constraints)){
+this._filterString=_4;
+}else{
+this._filterString="";
+}
+this._showText();
+}
+}
+this._beenOpened=true;
+},isDisabledDate:function(_5,_6){
+return false;
+},_getFilteredNodes:function(_7,_8,_9){
+var _a=[],n,i=_7,_b=this._maxIncrement+Math.abs(i),_c=_9?-1:1,_d=_9?1:0,_e=_9?0:1;
+do{
+i=i-_d;
+n=this._createOption(i);
+if(n){
+_a.push(n);
+}
+i=i+_e;
+}while(_a.length<_8&&(i*_c)<_b);
+if(_9){
+_a.reverse();
+}
+return _a;
+},_showText:function(){
+this.timeMenu.innerHTML="";
+var _f=dojo.date.stamp.fromISOString;
+this._clickableIncrementDate=_f(this.clickableIncrement);
+this._visibleIncrementDate=_f(this.visibleIncrement);
+this._visibleRangeDate=_f(this.visibleRange);
+var _10=function(_11){
+return _11.getHours()*60*60+_11.getMinutes()*60+_11.getSeconds();
+};
+var _12=_10(this._clickableIncrementDate);
+var _13=_10(this._visibleIncrementDate);
+var _14=_10(this._visibleRangeDate);
+var _15=this.value.getTime();
+this._refDate=new Date(_15-_15%(_13*1000));
+this._refDate.setFullYear(1970,0,1);
+this._clickableIncrement=1;
+this._totalIncrements=_14/_12;
+this._visibleIncrement=_13/_12;
+this._maxIncrement=(60*60*24)/_12;
+var _16=this._getFilteredNodes(0,this._totalIncrements>>1,true);
+var _17=this._getFilteredNodes(0,this._totalIncrements>>1,false);
+if(_16.length<this._totalIncrements>>1){
+_16=_16.slice(_16.length/2);
+_17=_17.slice(0,_17.length/2);
+}
+dojo.forEach(_16.concat(_17),function(n){
+this.timeMenu.appendChild(n);
+},this);
+},postCreate:function(){
+if(this.constraints===dijit._TimePicker.prototype.constraints){
+this.constraints={};
+}
+dojo.mixin(this,this.constraints);
+if(!this.constraints.locale){
+this.constraints.locale=this.lang;
+}
+this.connect(this.timeMenu,dojo.isIE?"onmousewheel":"DOMMouseScroll","_mouseWheeled");
+var _18=this;
+var _19=function(){
+_18._connects.push(dijit.typematic.addMouseListener.apply(null,arguments));
+};
+_19(this.upArrow,this,this._onArrowUp,1,50);
+_19(this.downArrow,this,this._onArrowDown,1,50);
+var _1a=function(cb){
+return function(cnt){
+if(cnt>0){
+cb.call(this,arguments);
+}
+};
+};
+var _1b=function(_1c,cb){
+return function(e){
+dojo.stopEvent(e);
+dijit.typematic.trigger(e,this,_1c,_1a(cb),_1c,1,50);
+};
+};
+this.connect(this.upArrow,"onmouseover",_1b(this.upArrow,this._onArrowUp));
+this.connect(this.downArrow,"onmouseover",_1b(this.downArrow,this._onArrowDown));
+this.inherited(arguments);
+},_buttonMouse:function(e){
+dojo.toggleClass(e.currentTarget,e.currentTarget==this.upArrow?"dijitUpArrowHover":"dijitDownArrowHover",e.type=="mouseenter"||e.type=="mouseover");
+},_createOption:function(_1d){
+var _1e=new Date(this._refDate);
+var _1f=this._clickableIncrementDate;
+_1e.setHours(_1e.getHours()+_1f.getHours()*_1d,_1e.getMinutes()+_1f.getMinutes()*_1d,_1e.getSeconds()+_1f.getSeconds()*_1d);
+if(this.constraints.selector=="time"){
+_1e.setFullYear(1970,0,1);
+}
+var _20=dojo.date.locale.format(_1e,this.constraints);
+if(this._filterString&&_20.toLowerCase().indexOf(this._filterString)!==0){
+return null;
+}
+var div=dojo.create("div",{"class":this.baseClass+"Item"});
+div.date=_1e;
+div.index=_1d;
+dojo.create("div",{"class":this.baseClass+"ItemInner",innerHTML:_20},div);
+if(_1d%this._visibleIncrement<1&&_1d%this._visibleIncrement>-1){
+dojo.addClass(div,this.baseClass+"Marker");
+}else{
+if(!(_1d%this._clickableIncrement)){
+dojo.addClass(div,this.baseClass+"Tick");
+}
+}
+if(this.isDisabledDate(_1e)){
+dojo.addClass(div,this.baseClass+"ItemDisabled");
+}
+if(!dojo.date.compare(this.value,_1e,this.constraints.selector)){
+div.selected=true;
+dojo.addClass(div,this.baseClass+"ItemSelected");
+if(dojo.hasClass(div,this.baseClass+"Marker")){
+dojo.addClass(div,this.baseClass+"MarkerSelected");
+}else{
+dojo.addClass(div,this.baseClass+"TickSelected");
+}
+}
+return div;
+},_onOptionSelected:function(tgt){
+var _21=tgt.target.date||tgt.target.parentNode.date;
+if(!_21||this.isDisabledDate(_21)){
+return;
+}
+this._highlighted_option=null;
+this.set("value",_21);
+this.onValueSelected(_21);
+},onValueSelected:function(_22){
+},_highlightOption:function(_23,_24){
+if(!_23){
+return;
+}
+if(_24){
+if(this._highlighted_option){
+this._highlightOption(this._highlighted_option,false);
+}
+this._highlighted_option=_23;
+}else{
+if(this._highlighted_option!==_23){
+return;
+}else{
+this._highlighted_option=null;
+}
+}
+dojo.toggleClass(_23,this.baseClass+"ItemHover",_24);
+if(dojo.hasClass(_23,this.baseClass+"Marker")){
+dojo.toggleClass(_23,this.baseClass+"MarkerHover",_24);
+}else{
+dojo.toggleClass(_23,this.baseClass+"TickHover",_24);
+}
+},onmouseover:function(e){
+this._keyboardSelected=null;
+var tgr=(e.target.parentNode===this.timeMenu)?e.target:e.target.parentNode;
+if(!dojo.hasClass(tgr,this.baseClass+"Item")){
+return;
+}
+this._highlightOption(tgr,true);
+},onmouseout:function(e){
+this._keyboardSelected=null;
+var tgr=(e.target.parentNode===this.timeMenu)?e.target:e.target.parentNode;
+this._highlightOption(tgr,false);
+},_mouseWheeled:function(e){
+this._keyboardSelected=null;
+dojo.stopEvent(e);
+var _25=(dojo.isIE?e.wheelDelta:-e.detail);
+this[(_25>0?"_onArrowUp":"_onArrowDown")]();
+},_onArrowUp:function(_26){
+if(typeof _26=="number"&&_26==-1){
+return;
+}
+if(!this.timeMenu.childNodes.length){
+return;
+}
+var _27=this.timeMenu.childNodes[0].index;
+var _28=this._getFilteredNodes(_27,1,true);
+if(_28.length){
+this.timeMenu.removeChild(this.timeMenu.childNodes[this.timeMenu.childNodes.length-1]);
+this.timeMenu.insertBefore(_28[0],this.timeMenu.childNodes[0]);
+}
+},_onArrowDown:function(_29){
+if(typeof _29=="number"&&_29==-1){
+return;
+}
+if(!this.timeMenu.childNodes.length){
+return;
+}
+var _2a=this.timeMenu.childNodes[this.timeMenu.childNodes.length-1].index+1;
+var _2b=this._getFilteredNodes(_2a,1,false);
+if(_2b.length){
+this.timeMenu.removeChild(this.timeMenu.childNodes[0]);
+this.timeMenu.appendChild(_2b[0]);
+}
+},handleKey:function(e){
+var dk=dojo.keys;
+if(e.keyChar||e.charOrCode===dk.BACKSPACE||e.charOrCode==dk.DELETE){
+setTimeout(dojo.hitch(this,function(){
+this._filterString=e.target.value.toLowerCase();
+this._showText();
+}),1);
+}else{
+if(e.charOrCode==dk.DOWN_ARROW||e.charOrCode==dk.UP_ARROW){
+dojo.stopEvent(e);
+if(this._highlighted_option&&!this._highlighted_option.parentNode){
+this._highlighted_option=null;
+}
+var _2c=this.timeMenu,tgt=this._highlighted_option||dojo.query("."+this.baseClass+"ItemSelected",_2c)[0];
+if(!tgt){
+tgt=_2c.childNodes[0];
+}else{
+if(_2c.childNodes.length){
+if(e.charOrCode==dk.DOWN_ARROW&&!tgt.nextSibling){
+this._onArrowDown();
+}else{
+if(e.charOrCode==dk.UP_ARROW&&!tgt.previousSibling){
+this._onArrowUp();
+}
+}
+if(e.charOrCode==dk.DOWN_ARROW){
+tgt=tgt.nextSibling;
+}else{
+tgt=tgt.previousSibling;
+}
+}
+}
+this._highlightOption(tgt,true);
+this._keyboardSelected=tgt;
+}else{
+if(this._highlighted_option&&(e.charOrCode==dk.ENTER||e.charOrCode===dk.TAB)){
+if(!this._keyboardSelected&&e.charOrCode===dk.TAB){
+return;
+}
+if(e.charOrCode==dk.ENTER){
+dojo.stopEvent(e);
+}
+this._onOptionSelected({target:this._highlighted_option});
+}
+}
+}
+}});
+}
diff --git a/lib/dijit/_Widget.js b/lib/dijit/_Widget.js
new file mode 100644 (file)
index 0000000..d4a2ce9
--- /dev/null
@@ -0,0 +1,345 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._Widget"]){
+dojo._hasResource["dijit._Widget"]=true;
+dojo.provide("dijit._Widget");
+dojo.require("dijit._base");
+dojo.connect(dojo,"_connect",function(_1,_2){
+if(_1&&dojo.isFunction(_1._onConnect)){
+_1._onConnect(_2);
+}
+});
+dijit._connectOnUseEventHandler=function(_3){
+};
+dijit._lastKeyDownNode=null;
+if(dojo.isIE){
+(function(){
+var _4=function(_5){
+dijit._lastKeyDownNode=_5.srcElement;
+};
+dojo.doc.attachEvent("onkeydown",_4);
+dojo.addOnWindowUnload(function(){
+dojo.doc.detachEvent("onkeydown",_4);
+});
+})();
+}else{
+dojo.doc.addEventListener("keydown",function(_6){
+dijit._lastKeyDownNode=_6.target;
+},true);
+}
+(function(){
+var _7={},_8=function(_9){
+var dc=_9.declaredClass;
+if(!_7[dc]){
+var r=[],_a,_b=_9.constructor.prototype;
+for(var _c in _b){
+if(dojo.isFunction(_b[_c])&&(_a=_c.match(/^_set([a-zA-Z]*)Attr$/))&&_a[1]){
+r.push(_a[1].charAt(0).toLowerCase()+_a[1].substr(1));
+}
+}
+_7[dc]=r;
+}
+return _7[dc]||[];
+};
+dojo.declare("dijit._Widget",null,{id:"",lang:"",dir:"","class":"",style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,attributeMap:{id:"",dir:"",lang:"","class":"",style:"",title:""},_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,_blankGif:(dojo.config.blankGif||dojo.moduleUrl("dojo","resources/blank.gif")).toString(),postscript:function(_d,_e){
+this.create(_d,_e);
+},create:function(_f,_10){
+this.srcNodeRef=dojo.byId(_10);
+this._connects=[];
+this._subscribes=[];
+this._deferredConnects=dojo.clone(this._deferredConnects);
+for(var _11 in this.attributeMap){
+delete this._deferredConnects[_11];
+}
+for(_11 in this._deferredConnects){
+if(this[_11]!==dijit._connectOnUseEventHandler){
+delete this._deferredConnects[_11];
+}
+}
+if(this.srcNodeRef&&(typeof this.srcNodeRef.id=="string")){
+this.id=this.srcNodeRef.id;
+}
+if(_f){
+this.params=_f;
+dojo.mixin(this,_f);
+}
+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 _12=this.srcNodeRef;
+if(_12&&_12.parentNode){
+_12.parentNode.replaceChild(this.domNode,_12);
+}
+for(_11 in this.params){
+this._onConnect(_11);
+}
+}
+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 _13=function(_14,_15){
+if((_15.params&&_14 in _15.params)||_15[_14]){
+_15.set(_14,_15[_14]);
+}
+};
+for(var _16 in this.attributeMap){
+_13(_16,this);
+}
+dojo.forEach(_8(this),function(a){
+if(!(a in this.attributeMap)){
+_13(a,this);
+}
+},this);
+},postMixInProperties:function(){
+},buildRendering:function(){
+this.domNode=this.srcNodeRef||dojo.create("div");
+},postCreate:function(){
+if(this.baseClass){
+var _17=this.baseClass.split(" ");
+if(!this.isLeftToRight()){
+_17=_17.concat(dojo.map(_17,function(_18){
+return _18+"Rtl";
+}));
+}
+dojo.addClass(this.domNode,_17);
+}
+},startup:function(){
+this._started=true;
+},destroyRecursive:function(_19){
+this._beingDestroyed=true;
+this.destroyDescendants(_19);
+this.destroy(_19);
+},destroy:function(_1a){
+this._beingDestroyed=true;
+this.uninitialize();
+var d=dojo,dfe=d.forEach,dun=d.unsubscribe;
+dfe(this._connects,function(_1b){
+dfe(_1b,d.disconnect);
+});
+dfe(this._subscribes,function(_1c){
+dun(_1c);
+});
+dfe(this._supportingWidgets||[],function(w){
+if(w.destroyRecursive){
+w.destroyRecursive();
+}else{
+if(w.destroy){
+w.destroy();
+}
+}
+});
+this.destroyRendering(_1a);
+dijit.registry.remove(this.id);
+this._destroyed=true;
+},destroyRendering:function(_1d){
+if(this.bgIframe){
+this.bgIframe.destroy(_1d);
+delete this.bgIframe;
+}
+if(this.domNode){
+if(_1d){
+dojo.removeAttr(this.domNode,"widgetId");
+}else{
+dojo.destroy(this.domNode);
+}
+delete this.domNode;
+}
+if(this.srcNodeRef){
+if(!_1d){
+dojo.destroy(this.srcNodeRef);
+}
+delete this.srcNodeRef;
+}
+},destroyDescendants:function(_1e){
+dojo.forEach(this.getChildren(),function(_1f){
+if(_1f.destroyRecursive){
+_1f.destroyRecursive(_1e);
+}
+});
+},uninitialize:function(){
+return false;
+},onFocus:function(){
+},onBlur:function(){
+},_onFocus:function(e){
+this.onFocus();
+},_onBlur:function(){
+this.onBlur();
+},_onConnect:function(_20){
+if(_20 in this._deferredConnects){
+var _21=this[this._deferredConnects[_20]||"domNode"];
+this.connect(_21,_20.toLowerCase(),_20);
+delete this._deferredConnects[_20];
+}
+},_setClassAttr:function(_22){
+var _23=this[this.attributeMap["class"]||"domNode"];
+dojo.removeClass(_23,this["class"]);
+this["class"]=_22;
+dojo.addClass(_23,_22);
+},_setStyleAttr:function(_24){
+var _25=this[this.attributeMap.style||"domNode"];
+if(dojo.isObject(_24)){
+dojo.style(_25,_24);
+}else{
+if(_25.style.cssText){
+_25.style.cssText+="; "+_24;
+}else{
+_25.style.cssText=_24;
+}
+}
+this.style=_24;
+},setAttribute:function(_26,_27){
+dojo.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");
+this.set(_26,_27);
+},_attrToDom:function(_28,_29){
+var _2a=this.attributeMap[_28];
+dojo.forEach(dojo.isArray(_2a)?_2a:[_2a],function(_2b){
+var _2c=this[_2b.node||_2b||"domNode"];
+var _2d=_2b.type||"attribute";
+switch(_2d){
+case "attribute":
+if(dojo.isFunction(_29)){
+_29=dojo.hitch(this,_29);
+}
+var _2e=_2b.attribute?_2b.attribute:(/^on[A-Z][a-zA-Z]*$/.test(_28)?_28.toLowerCase():_28);
+dojo.attr(_2c,_2e,_29);
+break;
+case "innerText":
+_2c.innerHTML="";
+_2c.appendChild(dojo.doc.createTextNode(_29));
+break;
+case "innerHTML":
+_2c.innerHTML=_29;
+break;
+case "class":
+dojo.removeClass(_2c,this[_28]);
+dojo.addClass(_2c,_29);
+break;
+}
+},this);
+this[_28]=_29;
+},attr:function(_2f,_30){
+if(dojo.config.isDebug){
+var _31=arguments.callee._ach||(arguments.callee._ach={}),_32=(arguments.callee.caller||"unknown caller").toString();
+if(!_31[_32]){
+dojo.deprecated(this.declaredClass+"::attr() is deprecated. Use get() or set() instead, called from "+_32,"","2.0");
+_31[_32]=true;
+}
+}
+var _33=arguments.length;
+if(_33>=2||typeof _2f==="object"){
+return this.set.apply(this,arguments);
+}else{
+return this.get(_2f);
+}
+},get:function(_34){
+var _35=this._getAttrNames(_34);
+return this[_35.g]?this[_35.g]():this[_34];
+},set:function(_36,_37){
+if(typeof _36==="object"){
+for(var x in _36){
+this.set(x,_36[x]);
+}
+return this;
+}
+var _38=this._getAttrNames(_36);
+if(this[_38.s]){
+var _39=this[_38.s].apply(this,Array.prototype.slice.call(arguments,1));
+}else{
+if(_36 in this.attributeMap){
+this._attrToDom(_36,_37);
+}
+var _3a=this[_36];
+this[_36]=_37;
+}
+return _39||this;
+},_attrPairNames:{},_getAttrNames:function(_3b){
+var apn=this._attrPairNames;
+if(apn[_3b]){
+return apn[_3b];
+}
+var uc=_3b.charAt(0).toUpperCase()+_3b.substr(1);
+return (apn[_3b]={n:_3b+"Node",s:"_set"+uc+"Attr",g:"_get"+uc+"Attr"});
+},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):[];
+},nodesWithKeyClick:["input","button"],connect:function(obj,_3c,_3d){
+var d=dojo,dc=d._connect,_3e=[];
+if(_3c=="ondijitclick"){
+if(dojo.indexOf(this.nodesWithKeyClick,obj.nodeName.toLowerCase())==-1){
+var m=d.hitch(this,_3d);
+_3e.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;
+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);
+}
+}));
+}
+_3c="onclick";
+}
+_3e.push(dc(obj,_3c,this,_3d));
+this._connects.push(_3e);
+return _3e;
+},disconnect:function(_3f){
+for(var i=0;i<this._connects.length;i++){
+if(this._connects[i]==_3f){
+dojo.forEach(_3f,dojo.disconnect);
+this._connects.splice(i,1);
+return;
+}
+}
+},subscribe:function(_40,_41){
+var d=dojo,_42=d.subscribe(_40,this,_41);
+this._subscribes.push(_42);
+return _42;
+},unsubscribe:function(_43){
+for(var i=0;i<this._subscribes.length;i++){
+if(this._subscribes[i]==_43){
+dojo.unsubscribe(_43);
+this._subscribes.splice(i,1);
+return;
+}
+}
+},isLeftToRight:function(){
+return this.dir?(this.dir=="ltr"):dojo._isBodyLtr();
+},isFocusable:function(){
+return this.focus&&(dojo.style(this.domNode,"display")!="none");
+},placeAt:function(_44,_45){
+if(_44.declaredClass&&_44.addChild){
+_44.addChild(this,_45);
+}else{
+dojo.place(this.domNode,_44,_45);
+}
+return this;
+},_onShow:function(){
+this.onShow();
+},onShow:function(){
+},onHide:function(){
+},onClose:function(){
+return true;
+}});
+})();
+}
diff --git a/lib/dijit/_base.js b/lib/dijit/_base.js
new file mode 100644 (file)
index 0000000..ad89055
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._base"]){
+dojo._hasResource["dijit._base"]=true;
+dojo.provide("dijit._base");
+dojo.require("dijit._base.focus");
+dojo.require("dijit._base.manager");
+dojo.require("dijit._base.place");
+dojo.require("dijit._base.popup");
+dojo.require("dijit._base.scroll");
+dojo.require("dijit._base.sniff");
+dojo.require("dijit._base.typematic");
+dojo.require("dijit._base.wai");
+dojo.require("dijit._base.window");
+}
diff --git a/lib/dijit/_base/focus.js b/lib/dijit/_base/focus.js
new file mode 100644 (file)
index 0000000..32be06a
--- /dev/null
@@ -0,0 +1,299 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._base.focus"]){
+dojo._hasResource["dijit._base.focus"]=true;
+dojo.provide("dijit._base.focus");
+dojo.require("dojo.window");
+dojo.require("dijit._base.manager");
+dojo.mixin(dijit,{_curFocus:null,_prevFocus:null,isCollapsed:function(){
+return dijit.getBookmark().isCollapsed;
+},getBookmark:function(){
+var bm,rg,tg,_1=dojo.doc.selection,cf=dijit._curFocus;
+if(dojo.global.getSelection){
+_1=dojo.global.getSelection();
+if(_1){
+if(_1.isCollapsed){
+tg=cf?cf.tagName:"";
+if(tg){
+tg=tg.toLowerCase();
+if(tg=="textarea"||(tg=="input"&&(!cf.type||cf.type.toLowerCase()=="text"))){
+_1={start:cf.selectionStart,end:cf.selectionEnd,node:cf,pRange:true};
+return {isCollapsed:(_1.end<=_1.start),mark:_1};
+}
+}
+bm={isCollapsed:true};
+}else{
+rg=_1.getRangeAt(0);
+bm={isCollapsed:false,mark:rg.cloneRange()};
+}
+}
+}else{
+if(_1){
+tg=cf?cf.tagName:"";
+tg=tg.toLowerCase();
+if(cf&&tg&&(tg=="button"||tg=="textarea"||tg=="input")){
+if(_1.type&&_1.type.toLowerCase()=="none"){
+return {isCollapsed:true,mark:null};
+}else{
+rg=_1.createRange();
+return {isCollapsed:rg.text&&rg.text.length?false:true,mark:{range:rg,pRange:true}};
+}
+}
+bm={};
+try{
+rg=_1.createRange();
+bm.isCollapsed=!(_1.type=="Text"?rg.htmlText.length:rg.length);
+}
+catch(e){
+bm.isCollapsed=true;
+return bm;
+}
+if(_1.type.toUpperCase()=="CONTROL"){
+if(rg.length){
+bm.mark=[];
+var i=0,_2=rg.length;
+while(i<_2){
+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(_3){
+var _4=dojo.doc,_5=_3.mark;
+if(_5){
+if(dojo.global.getSelection){
+var _6=dojo.global.getSelection();
+if(_6&&_6.removeAllRanges){
+if(_5.pRange){
+var r=_5;
+var n=r.node;
+n.selectionStart=r.start;
+n.selectionEnd=r.end;
+}else{
+_6.removeAllRanges();
+_6.addRange(_5);
+}
+}else{
+console.warn("No idea how to restore selection for this browser!");
+}
+}else{
+if(_4.selection&&_5){
+var rg;
+if(_5.pRange){
+rg=_5.range;
+}else{
+if(dojo.isArray(_5)){
+rg=_4.body.createControlRange();
+dojo.forEach(_5,function(n){
+rg.addElement(n);
+});
+}else{
+rg=_4.body.createTextRange();
+rg.moveToBookmark(_5);
+}
+}
+rg.select();
+}
+}
+}
+},getFocus:function(_7,_8){
+var _9=!dijit._curFocus||(_7&&dojo.isDescendant(dijit._curFocus,_7.domNode))?dijit._prevFocus:dijit._curFocus;
+return {node:_9,bookmark:(_9==dijit._curFocus)&&dojo.withGlobal(_8||dojo.global,dijit.getBookmark),openedForWindow:_8};
+},focus:function(_a){
+if(!_a){
+return;
+}
+var _b="node" in _a?_a.node:_a,_c=_a.bookmark,_d=_a.openedForWindow,_e=_c?_c.isCollapsed:false;
+if(_b){
+var _f=(_b.tagName.toLowerCase()=="iframe")?_b.contentWindow:_b;
+if(_f&&_f.focus){
+try{
+_f.focus();
+}
+catch(e){
+}
+}
+dijit._onFocusNode(_b);
+}
+if(_c&&dojo.withGlobal(_d||dojo.global,dijit.isCollapsed)&&!_e){
+if(_d){
+_d.focus();
+}
+try{
+dojo.withGlobal(_d||dojo.global,dijit.moveToBookmark,null,[_c]);
+}
+catch(e2){
+}
+}
+},_activeStack:[],registerIframe:function(_10){
+return dijit.registerWin(_10.contentWindow,_10);
+},unregisterIframe:function(_11){
+dijit.unregisterWin(_11);
+},registerWin:function(_12,_13){
+var _14=function(evt){
+dijit._justMouseDowned=true;
+setTimeout(function(){
+dijit._justMouseDowned=false;
+},0);
+if(dojo.isIE&&evt&&evt.srcElement&&evt.srcElement.parentNode==null){
+return;
+}
+dijit._onTouchNode(_13||evt.target||evt.srcElement,"mouse");
+};
+var doc=dojo.isIE?_12.document.documentElement:_12.document;
+if(doc){
+if(dojo.isIE){
+doc.attachEvent("onmousedown",_14);
+var _15=function(evt){
+if(evt.srcElement.tagName.toLowerCase()!="#document"&&dijit.isTabNavigable(evt.srcElement)){
+dijit._onFocusNode(_13||evt.srcElement);
+}else{
+dijit._onTouchNode(_13||evt.srcElement);
+}
+};
+doc.attachEvent("onactivate",_15);
+var _16=function(evt){
+dijit._onBlurNode(_13||evt.srcElement);
+};
+doc.attachEvent("ondeactivate",_16);
+return function(){
+doc.detachEvent("onmousedown",_14);
+doc.detachEvent("onactivate",_15);
+doc.detachEvent("ondeactivate",_16);
+doc=null;
+};
+}else{
+doc.addEventListener("mousedown",_14,true);
+var _17=function(evt){
+dijit._onFocusNode(_13||evt.target);
+};
+doc.addEventListener("focus",_17,true);
+var _18=function(evt){
+dijit._onBlurNode(_13||evt.target);
+};
+doc.addEventListener("blur",_18,true);
+return function(){
+doc.removeEventListener("mousedown",_14,true);
+doc.removeEventListener("focus",_17,true);
+doc.removeEventListener("blur",_18,true);
+doc=null;
+};
+}
+}
+},unregisterWin:function(_19){
+_19&&_19();
+},_onBlurNode:function(_1a){
+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(_1b,by){
+if(dijit._clearActiveWidgetsTimer){
+clearTimeout(dijit._clearActiveWidgetsTimer);
+delete dijit._clearActiveWidgetsTimer;
+}
+var _1c=[];
+try{
+while(_1b){
+var _1d=dojo.attr(_1b,"dijitPopupParent");
+if(_1d){
+_1b=dijit.byId(_1d).domNode;
+}else{
+if(_1b.tagName&&_1b.tagName.toLowerCase()=="body"){
+if(_1b===dojo.body()){
+break;
+}
+_1b=dojo.window.get(_1b.ownerDocument).frameElement;
+}else{
+var id=_1b.getAttribute&&_1b.getAttribute("widgetId"),_1e=id&&dijit.byId(id);
+if(_1e&&!(by=="mouse"&&_1e.get("disabled"))){
+_1c.unshift(id);
+}
+_1b=_1b.parentNode;
+}
+}
+}
+}
+catch(e){
+}
+dijit._setStack(_1c,by);
+},_onFocusNode:function(_1f){
+if(!_1f){
+return;
+}
+if(_1f.nodeType==9){
+return;
+}
+dijit._onTouchNode(_1f);
+if(_1f==dijit._curFocus){
+return;
+}
+if(dijit._curFocus){
+dijit._prevFocus=dijit._curFocus;
+}
+dijit._curFocus=_1f;
+dojo.publish("focusNode",[_1f]);
+},_setStack:function(_20,by){
+var _21=dijit._activeStack;
+dijit._activeStack=_20;
+for(var _22=0;_22<Math.min(_21.length,_20.length);_22++){
+if(_21[_22]!=_20[_22]){
+break;
+}
+}
+var _23;
+for(var i=_21.length-1;i>=_22;i--){
+_23=dijit.byId(_21[i]);
+if(_23){
+_23._focused=false;
+_23._hasBeenBlurred=true;
+if(_23._onBlur){
+_23._onBlur(by);
+}
+dojo.publish("widgetBlur",[_23,by]);
+}
+}
+for(i=_22;i<_20.length;i++){
+_23=dijit.byId(_20[i]);
+if(_23){
+_23._focused=true;
+if(_23._onFocus){
+_23._onFocus(by);
+}
+dojo.publish("widgetFocus",[_23,by]);
+}
+}
+}});
+dojo.addOnLoad(function(){
+var _24=dijit.registerWin(window);
+if(dojo.isIE){
+dojo.addOnWindowUnload(function(){
+dijit.unregisterWin(_24);
+_24=null;
+});
+}
+});
+}
diff --git a/lib/dijit/_base/manager.js b/lib/dijit/_base/manager.js
new file mode 100644 (file)
index 0000000..d8d1cf6
--- /dev/null
@@ -0,0 +1,245 @@
+/*
+       Copyright (c) 2004-2010, 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["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(_1){
+if(this._hash[_1.id]){
+throw new Error("Tried to register widget with id=="+_1.id+" but that id is already registered");
+}
+this._hash[_1.id]=_1;
+this.length++;
+},remove:function(id){
+if(this._hash[id]){
+delete this._hash[id];
+this.length--;
+}
+},forEach:function(_2,_3){
+_3=_3||dojo.global;
+var i=0,id;
+for(id in this._hash){
+_2.call(_3,this._hash[id],i++,this._hash);
+}
+return this;
+},filter:function(_4,_5){
+_5=_5||dojo.global;
+var _6=new dijit.WidgetSet(),i=0,id;
+for(id in this._hash){
+var w=this._hash[id];
+if(_4.call(_5,w,i++,this._hash)){
+_6.add(w);
+}
+}
+return _6;
+},byId:function(id){
+return this._hash[id];
+},byClass:function(_7){
+var _8=new dijit.WidgetSet(),id,_9;
+for(id in this._hash){
+_9=this._hash[id];
+if(_9.declaredClass==_7){
+_8.add(_9);
+}
+}
+return _8;
+},toArray:function(){
+var ar=[];
+for(var id in this._hash){
+ar.push(this._hash[id]);
+}
+return ar;
+},map:function(_a,_b){
+return dojo.map(this.toArray(),_a,_b);
+},every:function(_c,_d){
+_d=_d||dojo.global;
+var x=0,i;
+for(i in this._hash){
+if(!_c.call(_d,this._hash[i],x++,this._hash)){
+return false;
+}
+}
+return true;
+},some:function(_e,_f){
+_f=_f||dojo.global;
+var x=0,i;
+for(i in this._hash){
+if(_e.call(_f,this._hash[i],x++,this._hash)){
+return true;
+}
+}
+return false;
+}});
+(function(){
+dijit.registry=new dijit.WidgetSet();
+var _10=dijit.registry._hash,_11=dojo.attr,_12=dojo.hasAttr,_13=dojo.style;
+dijit.byId=function(id){
+return typeof id=="string"?_10[id]:id;
+};
+var _14={};
+dijit.getUniqueId=function(_15){
+var id;
+do{
+id=_15+"_"+(_15 in _14?++_14[_15]:_14[_15]=0);
+}while(_10[id]);
+return dijit._scopeName=="dijit"?id:dijit._scopeName+"_"+id;
+};
+dijit.findWidgets=function(_16){
+var _17=[];
+function _18(_19){
+for(var _1a=_19.firstChild;_1a;_1a=_1a.nextSibling){
+if(_1a.nodeType==1){
+var _1b=_1a.getAttribute("widgetId");
+if(_1b){
+_17.push(_10[_1b]);
+}else{
+_18(_1a);
+}
+}
+}
+};
+_18(_16);
+return _17;
+};
+dijit._destroyAll=function(){
+dijit._curFocus=null;
+dijit._prevFocus=null;
+dijit._activeStack=[];
+dojo.forEach(dijit.findWidgets(dojo.body()),function(_1c){
+if(!_1c._destroyed){
+if(_1c.destroyRecursive){
+_1c.destroyRecursive();
+}else{
+if(_1c.destroy){
+_1c.destroy();
+}
+}
+}
+});
+};
+if(dojo.isIE){
+dojo.addOnWindowUnload(function(){
+dijit._destroyAll();
+});
+}
+dijit.byNode=function(_1d){
+return _10[_1d.getAttribute("widgetId")];
+};
+dijit.getEnclosingWidget=function(_1e){
+while(_1e){
+var id=_1e.getAttribute&&_1e.getAttribute("widgetId");
+if(id){
+return _10[id];
+}
+_1e=_1e.parentNode;
+}
+return null;
+};
+var _1f=(dijit._isElementShown=function(_20){
+var s=_13(_20);
+return (s.visibility!="hidden")&&(s.visibility!="collapsed")&&(s.display!="none")&&(_11(_20,"type")!="hidden");
+});
+dijit.hasDefaultTabStop=function(_21){
+switch(_21.nodeName.toLowerCase()){
+case "a":
+return _12(_21,"href");
+case "area":
+case "button":
+case "input":
+case "object":
+case "select":
+case "textarea":
+return true;
+case "iframe":
+if(dojo.isMoz){
+try{
+return _21.contentDocument.designMode=="on";
+}
+catch(err){
+return false;
+}
+}else{
+if(dojo.isWebKit){
+var doc=_21.contentDocument,_22=doc&&doc.body;
+return _22&&_22.contentEditable=="true";
+}else{
+try{
+doc=_21.contentWindow.document;
+_22=doc&&doc.body;
+return _22&&_22.firstChild&&_22.firstChild.contentEditable=="true";
+}
+catch(e){
+return false;
+}
+}
+}
+default:
+return _21.contentEditable=="true";
+}
+};
+var _23=(dijit.isTabNavigable=function(_24){
+if(_11(_24,"disabled")){
+return false;
+}else{
+if(_12(_24,"tabIndex")){
+return _11(_24,"tabIndex")>=0;
+}else{
+return dijit.hasDefaultTabStop(_24);
+}
+}
+});
+dijit._getTabNavigable=function(_25){
+var _26,_27,_28,_29,_2a,_2b;
+var _2c=function(_2d){
+dojo.query("> *",_2d).forEach(function(_2e){
+if((dojo.isIE&&_2e.scopeName!=="HTML")||!_1f(_2e)){
+return;
+}
+if(_23(_2e)){
+var _2f=_11(_2e,"tabIndex");
+if(!_12(_2e,"tabIndex")||_2f==0){
+if(!_26){
+_26=_2e;
+}
+_27=_2e;
+}else{
+if(_2f>0){
+if(!_28||_2f<_29){
+_29=_2f;
+_28=_2e;
+}
+if(!_2a||_2f>=_2b){
+_2b=_2f;
+_2a=_2e;
+}
+}
+}
+}
+if(_2e.nodeName.toUpperCase()!="SELECT"){
+_2c(_2e);
+}
+});
+};
+if(_1f(_25)){
+_2c(_25);
+}
+return {first:_26,last:_27,lowest:_28,highest:_2a};
+};
+dijit.getFirstInTabbingOrder=function(_30){
+var _31=dijit._getTabNavigable(dojo.byId(_30));
+return _31.lowest?_31.lowest:_31.first;
+};
+dijit.getLastInTabbingOrder=function(_32){
+var _33=dijit._getTabNavigable(dojo.byId(_32));
+return _33.last?_33.last:_33.highest;
+};
+dijit.defaultDuration=dojo.config["defaultDuration"]||200;
+})();
+}
diff --git a/lib/dijit/_base/place.js b/lib/dijit/_base/place.js
new file mode 100644 (file)
index 0000000..ddc38fd
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._base.place"]){
+dojo._hasResource["dijit._base.place"]=true;
+dojo.provide("dijit._base.place");
+dojo.require("dojo.window");
+dojo.require("dojo.AdapterRegistry");
+dijit.getViewport=function(){
+return dojo.window.getBox();
+};
+dijit.placeOnScreen=function(_1,_2,_3,_4){
+var _5=dojo.map(_3,function(_6){
+var c={corner:_6,pos:{x:_2.x,y:_2.y}};
+if(_4){
+c.pos.x+=_6.charAt(1)=="L"?_4.x:-_4.x;
+c.pos.y+=_6.charAt(0)=="T"?_4.y:-_4.y;
+}
+return c;
+});
+return dijit._place(_1,_5);
+};
+dijit._place=function(_7,_8,_9){
+var _a=dojo.window.getBox();
+if(!_7.parentNode||String(_7.parentNode.tagName).toLowerCase()!="body"){
+dojo.body().appendChild(_7);
+}
+var _b=null;
+dojo.some(_8,function(_c){
+var _d=_c.corner;
+var _e=_c.pos;
+if(_9){
+_9(_7,_c.aroundCorner,_d);
+}
+var _f=_7.style;
+var _10=_f.display;
+var _11=_f.visibility;
+_f.visibility="hidden";
+_f.display="";
+var mb=dojo.marginBox(_7);
+_f.display=_10;
+_f.visibility=_11;
+var _12=Math.max(_a.l,_d.charAt(1)=="L"?_e.x:(_e.x-mb.w)),_13=Math.max(_a.t,_d.charAt(0)=="T"?_e.y:(_e.y-mb.h)),_14=Math.min(_a.l+_a.w,_d.charAt(1)=="L"?(_12+mb.w):_e.x),_15=Math.min(_a.t+_a.h,_d.charAt(0)=="T"?(_13+mb.h):_e.y),_16=_14-_12,_17=_15-_13,_18=(mb.w-_16)+(mb.h-_17);
+if(_b==null||_18<_b.overflow){
+_b={corner:_d,aroundCorner:_c.aroundCorner,x:_12,y:_13,w:_16,h:_17,overflow:_18};
+}
+return !_18;
+});
+_7.style.left=_b.x+"px";
+_7.style.top=_b.y+"px";
+if(_b.overflow&&_9){
+_9(_7,_b.aroundCorner,_b.corner);
+}
+return _b;
+};
+dijit.placeOnScreenAroundNode=function(_19,_1a,_1b,_1c){
+_1a=dojo.byId(_1a);
+var _1d=_1a.style.display;
+_1a.style.display="";
+var _1e=dojo.position(_1a,true);
+_1a.style.display=_1d;
+return dijit._placeOnScreenAroundRect(_19,_1e.x,_1e.y,_1e.w,_1e.h,_1b,_1c);
+};
+dijit.placeOnScreenAroundRectangle=function(_1f,_20,_21,_22){
+return dijit._placeOnScreenAroundRect(_1f,_20.x,_20.y,_20.width,_20.height,_21,_22);
+};
+dijit._placeOnScreenAroundRect=function(_23,x,y,_24,_25,_26,_27){
+var _28=[];
+for(var _29 in _26){
+_28.push({aroundCorner:_29,corner:_26[_29],pos:{x:x+(_29.charAt(1)=="L"?0:_24),y:y+(_29.charAt(0)=="T"?0:_25)}});
+}
+return dijit._place(_23,_28,_27);
+};
+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(_2a,_2b,_2c,_2d){
+return dijit.placementRegistry.match.apply(dijit.placementRegistry,arguments);
+};
+dijit.getPopupAroundAlignment=function(_2e,_2f){
+var _30={};
+dojo.forEach(_2e,function(pos){
+switch(pos){
+case "after":
+_30[_2f?"BR":"BL"]=_2f?"BL":"BR";
+break;
+case "before":
+_30[_2f?"BL":"BR"]=_2f?"BR":"BL";
+break;
+case "below":
+_30[_2f?"BL":"BR"]=_2f?"TL":"TR";
+_30[_2f?"BR":"BL"]=_2f?"TR":"TL";
+break;
+case "above":
+default:
+_30[_2f?"TL":"TR"]=_2f?"BL":"BR";
+_30[_2f?"TR":"TL"]=_2f?"BR":"BL";
+break;
+}
+});
+return _30;
+};
+}
diff --git a/lib/dijit/_base/popup.js b/lib/dijit/_base/popup.js
new file mode 100644 (file)
index 0000000..aed0464
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._base.popup"]){
+dojo._hasResource["dijit._base.popup"]=true;
+dojo.provide("dijit._base.popup");
+dojo.require("dijit._base.focus");
+dojo.require("dijit._base.place");
+dojo.require("dijit._base.window");
+dijit.popup={_stack:[],_beginZIndex:1000,_idGen:1,moveOffScreen:function(_1){
+var _2=_1.parentNode;
+if(!_2||!dojo.hasClass(_2,"dijitPopup")){
+_2=dojo.create("div",{"class":"dijitPopup",style:{visibility:"hidden",top:"-9999px"}},dojo.body());
+dijit.setWaiRole(_2,"presentation");
+_2.appendChild(_1);
+}
+var s=_1.style;
+s.display="";
+s.visibility="";
+s.position="";
+s.top="0px";
+dojo.style(_2,{visibility:"hidden",top:"-9999px"});
+},getTopPopup:function(){
+var _3=this._stack;
+for(var pi=_3.length-1;pi>0&&_3[pi].parent===_3[pi-1].widget;pi--){
+}
+return _3[pi];
+},open:function(_4){
+var _5=this._stack,_6=_4.popup,_7=_4.orient||((_4.parent?_4.parent.isLeftToRight():dojo._isBodyLtr())?{"BL":"TL","BR":"TR","TL":"BL","TR":"BR"}:{"BR":"TR","BL":"TL","TR":"BR","TL":"BL"}),_8=_4.around,id=(_4.around&&_4.around.id)?(_4.around.id+"_dropdown"):("popup_"+this._idGen++);
+var _9=_6.domNode.parentNode;
+if(!_9||!dojo.hasClass(_9,"dijitPopup")){
+this.moveOffScreen(_6.domNode);
+_9=_6.domNode.parentNode;
+}
+dojo.attr(_9,{id:id,style:{zIndex:this._beginZIndex+_5.length},"class":"dijitPopup "+(_6.baseClass||_6["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:_4.parent?_4.parent.id:""});
+if(dojo.isIE||dojo.isMoz){
+var _a=_9.childNodes[1];
+if(!_a){
+_a=new dijit.BackgroundIframe(_9);
+}
+}
+var _b=_8?dijit.placeOnScreenAroundElement(_9,_8,_7,_6.orient?dojo.hitch(_6,"orient"):null):dijit.placeOnScreen(_9,_4,_7=="R"?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],_4.padding);
+_9.style.visibility="visible";
+_6.domNode.style.visibility="visible";
+var _c=[];
+_c.push(dojo.connect(_9,"onkeypress",this,function(_d){
+if(_d.charOrCode==dojo.keys.ESCAPE&&_4.onCancel){
+dojo.stopEvent(_d);
+_4.onCancel();
+}else{
+if(_d.charOrCode===dojo.keys.TAB){
+dojo.stopEvent(_d);
+var _e=this.getTopPopup();
+if(_e&&_e.onCancel){
+_e.onCancel();
+}
+}
+}
+}));
+if(_6.onCancel){
+_c.push(dojo.connect(_6,"onCancel",_4.onCancel));
+}
+_c.push(dojo.connect(_6,_6.onExecute?"onExecute":"onChange",this,function(){
+var _f=this.getTopPopup();
+if(_f&&_f.onExecute){
+_f.onExecute();
+}
+}));
+_5.push({wrapper:_9,iframe:_a,widget:_6,parent:_4.parent,onExecute:_4.onExecute,onCancel:_4.onCancel,onClose:_4.onClose,handlers:_c});
+if(_6.onOpen){
+_6.onOpen(_b);
+}
+return _b;
+},close:function(_10){
+var _11=this._stack;
+while(dojo.some(_11,function(_12){
+return _12.widget==_10;
+})){
+var top=_11.pop(),_13=top.wrapper,_14=top.iframe,_15=top.widget,_16=top.onClose;
+if(_15.onClose){
+_15.onClose();
+}
+dojo.forEach(top.handlers,dojo.disconnect);
+if(_15&&_15.domNode){
+this.moveOffScreen(_15.domNode);
+}else{
+dojo.destroy(_13);
+}
+if(_16){
+_16();
+}
+}
+}};
+dijit._frames=new function(){
+var _17=[];
+this.pop=function(){
+var _18;
+if(_17.length){
+_18=_17.pop();
+_18.style.display="";
+}else{
+if(dojo.isIE){
+var _19=dojo.config["dojoBlankHtmlUrl"]||(dojo.moduleUrl("dojo","resources/blank.html")+"")||"javascript:\"\"";
+var _1a="<iframe src='"+_19+"'"+" style='position: absolute; left: 0px; top: 0px;"+"z-index: -1; filter:Alpha(Opacity=\"0\");'>";
+_18=dojo.doc.createElement(_1a);
+}else{
+_18=dojo.create("iframe");
+_18.src="javascript:\"\"";
+_18.className="dijitBackgroundIframe";
+dojo.style(_18,"opacity",0.1);
+}
+_18.tabIndex=-1;
+dijit.setWaiRole(_18,"presentation");
+}
+return _18;
+};
+this.push=function(_1b){
+_1b.style.display="none";
+_17.push(_1b);
+};
+}();
+dijit.BackgroundIframe=function(_1c){
+if(!_1c.id){
+throw new Error("no id");
+}
+if(dojo.isIE||dojo.isMoz){
+var _1d=dijit._frames.pop();
+_1c.appendChild(_1d);
+if(dojo.isIE<7){
+this.resize(_1c);
+this._conn=dojo.connect(_1c,"onresize",this,function(){
+this.resize(_1c);
+});
+}else{
+dojo.style(_1d,{width:"100%",height:"100%"});
+}
+this.iframe=_1d;
+}
+};
+dojo.extend(dijit.BackgroundIframe,{resize:function(_1e){
+if(this.iframe&&dojo.isIE<7){
+dojo.style(this.iframe,{width:_1e.offsetWidth+"px",height:_1e.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;
+}
+}});
+}
diff --git a/lib/dijit/_base/scroll.js b/lib/dijit/_base/scroll.js
new file mode 100644 (file)
index 0000000..623cea3
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._base.scroll"]){
+dojo._hasResource["dijit._base.scroll"]=true;
+dojo.provide("dijit._base.scroll");
+dojo.require("dojo.window");
+dijit.scrollIntoView=function(_1,_2){
+dojo.window.scrollIntoView(_1,_2);
+};
+}
diff --git a/lib/dijit/_base/sniff.js b/lib/dijit/_base/sniff.js
new file mode 100644 (file)
index 0000000..bf5386c
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._base.sniff"]){
+dojo._hasResource["dijit._base.sniff"]=true;
+dojo.provide("dijit._base.sniff");
+dojo.require("dojo.uacss");
+}
diff --git a/lib/dijit/_base/typematic.js b/lib/dijit/_base/typematic.js
new file mode 100644 (file)
index 0000000..460e9db
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+       Copyright (c) 2004-2010, 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["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(_1,_2,_3,_4,_5,_6,_7,_8){
+if(_5!=this._obj){
+this.stop();
+this._initialDelay=_7||500;
+this._subsequentDelay=_6||0.9;
+this._minDelay=_8||10;
+this._obj=_5;
+this._evt=_1;
+this._node=_3;
+this._currentTimeout=-1;
+this._count=-1;
+this._callback=dojo.hitch(_2,_4);
+this._fireEventAndReload();
+this._evt=dojo.mixin({faux:true},_1);
+}
+},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(_9,_a,_b,_c,_d,_e,_f){
+if(_a.keyCode){
+_a.charOrCode=_a.keyCode;
+dojo.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");
+}else{
+if(_a.charCode){
+_a.charOrCode=String.fromCharCode(_a.charCode);
+dojo.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");
+}
+}
+return [dojo.connect(_9,"onkeypress",this,function(evt){
+if(evt.charOrCode==_a.charOrCode&&(_a.ctrlKey===undefined||_a.ctrlKey==evt.ctrlKey)&&(_a.altKey===undefined||_a.altKey==evt.altKey)&&(_a.metaKey===undefined||_a.metaKey==(evt.metaKey||false))&&(_a.shiftKey===undefined||_a.shiftKey==evt.shiftKey)){
+dojo.stopEvent(evt);
+dijit.typematic.trigger(evt,_b,_9,_c,_a,_d,_e,_f);
+}else{
+if(dijit.typematic._obj==_a){
+dijit.typematic.stop();
+}
+}
+}),dojo.connect(_9,"onkeyup",this,function(evt){
+if(dijit.typematic._obj==_a){
+dijit.typematic.stop();
+}
+})];
+},addMouseListener:function(_10,_11,_12,_13,_14,_15){
+var dc=dojo.connect;
+return [dc(_10,"mousedown",this,function(evt){
+dojo.stopEvent(evt);
+dijit.typematic.trigger(evt,_11,_10,_12,_10,_13,_14,_15);
+}),dc(_10,"mouseup",this,function(evt){
+dojo.stopEvent(evt);
+dijit.typematic.stop();
+}),dc(_10,"mouseout",this,function(evt){
+dojo.stopEvent(evt);
+dijit.typematic.stop();
+}),dc(_10,"mousemove",this,function(evt){
+evt.preventDefault();
+}),dc(_10,"dblclick",this,function(evt){
+dojo.stopEvent(evt);
+if(dojo.isIE){
+dijit.typematic.trigger(evt,_11,_10,_12,_10,_13,_14,_15);
+setTimeout(dojo.hitch(this,dijit.typematic.stop),50);
+}
+})];
+},addListener:function(_16,_17,_18,_19,_1a,_1b,_1c,_1d){
+return this.addKeyListener(_17,_18,_19,_1a,_1b,_1c,_1d).concat(this.addMouseListener(_16,_19,_1a,_1b,_1c,_1d));
+}};
+}
diff --git a/lib/dijit/_base/wai.js b/lib/dijit/_base/wai.js
new file mode 100644 (file)
index 0000000..de67ad1
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._base.wai"]){
+dojo._hasResource["dijit._base.wai"]=true;
+dojo.provide("dijit._base.wai");
+dijit.wai={onload:function(){
+var _1=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(_1);
+if(cs){
+var _2=cs.backgroundImage;
+var _3=(cs.borderTopColor==cs.borderRightColor)||(_2!=null&&(_2=="none"||_2=="url(invalid-url:)"));
+dojo[_3?"addClass":"removeClass"](dojo.body(),"dijit_a11y");
+if(dojo.isIE){
+_1.outerHTML="";
+}else{
+dojo.body().removeChild(_1);
+}
+}
+}};
+if(dojo.isIE||dojo.isMoz){
+dojo._loaders.unshift(dijit.wai.onload);
+}
+dojo.mixin(dijit,{_XhtmlRoles:/banner|contentinfo|definition|main|navigation|search|note|secondary|seealso/,hasWaiRole:function(_4,_5){
+var _6=this.getWaiRole(_4);
+return _5?(_6.indexOf(_5)>-1):(_6.length>0);
+},getWaiRole:function(_7){
+return dojo.trim((dojo.attr(_7,"role")||"").replace(this._XhtmlRoles,"").replace("wairole:",""));
+},setWaiRole:function(_8,_9){
+var _a=dojo.attr(_8,"role")||"";
+if(!this._XhtmlRoles.test(_a)){
+dojo.attr(_8,"role",_9);
+}else{
+if((" "+_a+" ").indexOf(" "+_9+" ")<0){
+var _b=dojo.trim(_a.replace(this._XhtmlRoles,""));
+var _c=dojo.trim(_a.replace(_b,""));
+dojo.attr(_8,"role",_c+(_c?" ":"")+_9);
+}
+}
+},removeWaiRole:function(_d,_e){
+var _f=dojo.attr(_d,"role");
+if(!_f){
+return;
+}
+if(_e){
+var t=dojo.trim((" "+_f+" ").replace(" "+_e+" "," "));
+dojo.attr(_d,"role",t);
+}else{
+_d.removeAttribute("role");
+}
+},hasWaiState:function(_10,_11){
+return _10.hasAttribute?_10.hasAttribute("aria-"+_11):!!_10.getAttribute("aria-"+_11);
+},getWaiState:function(_12,_13){
+return _12.getAttribute("aria-"+_13)||"";
+},setWaiState:function(_14,_15,_16){
+_14.setAttribute("aria-"+_15,_16);
+},removeWaiState:function(_17,_18){
+_17.removeAttribute("aria-"+_18);
+}});
+}
diff --git a/lib/dijit/_base/window.js b/lib/dijit/_base/window.js
new file mode 100644 (file)
index 0000000..57a6914
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._base.window"]){
+dojo._hasResource["dijit._base.window"]=true;
+dojo.provide("dijit._base.window");
+dojo.require("dojo.window");
+dijit.getDocumentWindow=function(_1){
+return dojo.window.get(_1);
+};
+}
diff --git a/lib/dijit/_editor/RichText.js b/lib/dijit/_editor/RichText.js
new file mode 100644 (file)
index 0000000..6967159
--- /dev/null
@@ -0,0 +1,1046 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.RichText"]){
+dojo._hasResource["dijit._editor.RichText"]=true;
+dojo.provide("dijit._editor.RichText");
+dojo.require("dijit._Widget");
+dojo.require("dijit._CssStateMixin");
+dojo.require("dijit._editor.selection");
+dojo.require("dijit._editor.range");
+dojo.require("dijit._editor.html");
+if(!dojo.config["useXDomain"]||dojo.config["allowXdRichTextSave"]){
+if(dojo._postLoad){
+(function(){
+var _1=dojo.doc.createElement("textarea");
+_1.id=dijit._scopeName+"._editor.RichText.savedContent";
+dojo.style(_1,{display:"none",position:"absolute",top:"-100px",height:"3px",width:"3px"});
+dojo.body().appendChild(_1);
+})();
+}else{
+try{
+dojo.doc.write("<textarea id=\""+dijit._scopeName+"._editor.RichText.savedContent\" "+"style=\"display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;\"></textarea>");
+}
+catch(e){
+}
+}
+}
+dojo.declare("dijit._editor.RichText",[dijit._Widget,dijit._CssStateMixin],{constructor:function(_2){
+this.contentPreFilters=[];
+this.contentPostFilters=[];
+this.contentDomPreFilters=[];
+this.contentDomPostFilters=[];
+this.editingAreaStyleSheets=[];
+this.events=[].concat(this.events);
+this._keyHandlers={};
+this.contentPreFilters.push(dojo.hitch(this,"_preFixUrlAttributes"));
+if(dojo.isMoz){
+this.contentPreFilters.push(this._normalizeFontStyle);
+this.contentPostFilters.push(this._removeMozBogus);
+}
+if(dojo.isWebKit){
+this.contentPreFilters.push(this._removeWebkitBogus);
+this.contentPostFilters.push(this._removeWebkitBogus);
+}
+if(dojo.isIE){
+this.contentPostFilters.push(this._normalizeFontStyle);
+}
+if(_2&&dojo.isString(_2.value)){
+this.value=_2.value;
+}
+this.onLoadDeferred=new dojo.Deferred();
+},baseClass:"dijitEditor",inheritWidth:false,focusOnLoad:false,name:"",styleSheets:"",_content:"",height:"300px",minHeight:"1em",isClosed:true,isLoaded:false,_SEPARATOR:"@@**%%__RICHTEXTBOUNDRY__%%**@@",onLoadDeferred:null,isTabIndent:false,disableSpellCheck:false,postCreate:function(){
+if("textarea"==this.domNode.tagName.toLowerCase()){
+console.warn("RichText should not be used with the TEXTAREA tag.  See dijit._editor.RichText docs.");
+}
+this.inherited(arguments);
+dojo.publish(dijit._scopeName+"._editor.RichText::init",[this]);
+this.open();
+this.setupDefaultShortcuts();
+},setupDefaultShortcuts:function(){
+var _3=dojo.hitch(this,function(_4,_5){
+return function(){
+return !this.execCommand(_4,_5);
+};
+});
+var _6={b:_3("bold"),i:_3("italic"),u:_3("underline"),a:_3("selectall"),s:function(){
+this.save(true);
+},m:function(){
+this.isTabIndent=!this.isTabIndent;
+},"1":_3("formatblock","h1"),"2":_3("formatblock","h2"),"3":_3("formatblock","h3"),"4":_3("formatblock","h4"),"\\":_3("insertunorderedlist")};
+if(!dojo.isIE){
+_6.Z=_3("redo");
+}
+for(var _7 in _6){
+this.addKeyHandler(_7,true,false,_6[_7]);
+}
+},events:["onKeyPress","onKeyDown","onKeyUp","onClick"],captureEvents:[],_editorCommandsLocalized:false,_localizeEditorCommands:function(){
+if(this._editorCommandsLocalized){
+return;
+}
+this._editorCommandsLocalized=true;
+var _8=["div","p","pre","h1","h2","h3","h4","h5","h6","ol","ul","address"];
+var _9="",_a,i=0;
+while((_a=_8[i++])){
+if(_a.charAt(1)!="l"){
+_9+="<"+_a+"><span>content</span></"+_a+"><br/>";
+}else{
+_9+="<"+_a+"><li>content</li></"+_a+"><br/>";
+}
+}
+var _b=dojo.doc.createElement("div");
+dojo.style(_b,{position:"absolute",top:"-2000px"});
+dojo.doc.body.appendChild(_b);
+_b.innerHTML=_9;
+var _c=_b.firstChild;
+while(_c){
+dijit._editor.selection.selectElement(_c.firstChild);
+dojo.withGlobal(this.window,"selectElement",dijit._editor.selection,[_c.firstChild]);
+var _d=_c.tagName.toLowerCase();
+this._local2NativeFormatNames[_d]=document.queryCommandValue("formatblock");
+this._native2LocalFormatNames[this._local2NativeFormatNames[_d]]=_d;
+_c=_c.nextSibling.nextSibling;
+}
+dojo.body().removeChild(_b);
+},open:function(_e){
+if(!this.onLoadDeferred||this.onLoadDeferred.fired>=0){
+this.onLoadDeferred=new dojo.Deferred();
+}
+if(!this.isClosed){
+this.close();
+}
+dojo.publish(dijit._scopeName+"._editor.RichText::open",[this]);
+this._content="";
+if(arguments.length==1&&_e.nodeName){
+this.domNode=_e;
+}
+var dn=this.domNode;
+var _f;
+if(dojo.isString(this.value)){
+_f=this.value;
+delete this.value;
+dn.innerHTML="";
+}else{
+if(dn.nodeName&&dn.nodeName.toLowerCase()=="textarea"){
+var ta=(this.textarea=dn);
+this.name=ta.name;
+_f=ta.value;
+dn=this.domNode=dojo.doc.createElement("div");
+dn.setAttribute("widgetId",this.id);
+ta.removeAttribute("widgetId");
+dn.cssText=ta.cssText;
+dn.className+=" "+ta.className;
+dojo.place(dn,ta,"before");
+var _10=dojo.hitch(this,function(){
+dojo.style(ta,{display:"block",position:"absolute",top:"-1000px"});
+if(dojo.isIE){
+var s=ta.style;
+this.__overflow=s.overflow;
+s.overflow="hidden";
+}
+});
+if(dojo.isIE){
+setTimeout(_10,10);
+}else{
+_10();
+}
+if(ta.form){
+dojo.connect(ta.form,"onsubmit",this,function(){
+ta.value=this.getValue();
+});
+}
+}else{
+_f=dijit._editor.getChildrenHtml(dn);
+dn.innerHTML="";
+}
+}
+var _11=dojo.contentBox(dn);
+this._oldHeight=_11.h;
+this._oldWidth=_11.w;
+this.savedContent=_f;
+if(dn.nodeName&&dn.nodeName=="LI"){
+dn.innerHTML=" <br>";
+}
+this.header=dn.ownerDocument.createElement("div");
+dn.appendChild(this.header);
+this.editingArea=dn.ownerDocument.createElement("div");
+dn.appendChild(this.editingArea);
+this.footer=dn.ownerDocument.createElement("div");
+dn.appendChild(this.footer);
+if(this.name!==""&&(!dojo.config["useXDomain"]||dojo.config["allowXdRichTextSave"])){
+var _12=dojo.byId(dijit._scopeName+"._editor.RichText.savedContent");
+if(_12.value!==""){
+var _13=_12.value.split(this._SEPARATOR),i=0,dat;
+while((dat=_13[i++])){
+var _14=dat.split(":");
+if(_14[0]==this.name){
+_f=_14[1];
+_13.splice(i,1);
+break;
+}
+}
+}
+dojo.addOnUnload(dojo.hitch(this,"_saveContent"));
+}
+this.isClosed=false;
+var ifr=(this.editorObject=this.iframe=dojo.doc.createElement("iframe"));
+ifr.id=this.id+"_iframe";
+this._iframeSrc=this._getIframeDocTxt();
+ifr.style.border="none";
+ifr.style.width="100%";
+if(this._layoutMode){
+ifr.style.height="100%";
+}else{
+if(dojo.isIE>=7){
+if(this.height){
+ifr.style.height=this.height;
+}
+if(this.minHeight){
+ifr.style.minHeight=this.minHeight;
+}
+}else{
+ifr.style.height=this.height?this.height:this.minHeight;
+}
+}
+ifr.frameBorder=0;
+ifr._loadFunc=dojo.hitch(this,function(win){
+this.window=win;
+this.document=this.window.document;
+if(dojo.isIE){
+this._localizeEditorCommands();
+}
+this.onLoad(_f);
+});
+var s="javascript:parent."+dijit._scopeName+".byId(\""+this.id+"\")._iframeSrc";
+ifr.setAttribute("src",s);
+this.editingArea.appendChild(ifr);
+if(dn.nodeName=="LI"){
+dn.lastChild.style.marginTop="-1.2em";
+}
+dojo.addClass(this.domNode,this.baseClass);
+},_local2NativeFormatNames:{},_native2LocalFormatNames:{},_getIframeDocTxt:function(){
+var _15=dojo.getComputedStyle(this.domNode);
+var _16="";
+var _17=true;
+if(dojo.isIE||(!this.height&&!dojo.isMoz)){
+_16="<div id='dijitEditorBody'></div>";
+_17=false;
+}else{
+if(dojo.isMoz){
+this._cursorToStart=true;
+_16="&nbsp;";
+}
+}
+var _18=[_15.fontWeight,_15.fontSize,_15.fontFamily].join(" ");
+var _19=_15.lineHeight;
+if(_19.indexOf("px")>=0){
+_19=parseFloat(_19)/parseFloat(_15.fontSize);
+}else{
+if(_19.indexOf("em")>=0){
+_19=parseFloat(_19);
+}else{
+_19="normal";
+}
+}
+var _1a="";
+var _1b=this;
+this.style.replace(/(^|;)\s*(line-|font-?)[^;]+/ig,function(_1c){
+_1c=_1c.replace(/^;/ig,"")+";";
+var s=_1c.split(":")[0];
+if(s){
+s=dojo.trim(s);
+s=s.toLowerCase();
+var i;
+var sC="";
+for(i=0;i<s.length;i++){
+var c=s.charAt(i);
+switch(c){
+case "-":
+i++;
+c=s.charAt(i).toUpperCase();
+default:
+sC+=c;
+}
+}
+dojo.style(_1b.domNode,sC,"");
+}
+_1a+=_1c+";";
+});
+var _1d=dojo.query("label[for=\""+this.id+"\"]");
+return [this.isLeftToRight()?"<html>\n<head>\n":"<html dir='rtl'>\n<head>\n",(dojo.isMoz&&_1d.length?"<title>"+_1d[0].innerHTML+"</title>\n":""),"<meta http-equiv='Content-Type' content='text/html'>\n","<style>\n","\tbody,html {\n","\t\tbackground:transparent;\n","\t\tpadding: 1px 0 0 0;\n","\t\tmargin: -1px 0 0 0;\n",((dojo.isWebKit)?"\t\twidth: 100%;\n":""),((dojo.isWebKit)?"\t\theight: 100%;\n":""),"\t}\n","\tbody{\n","\t\ttop:0px;\n","\t\tleft:0px;\n","\t\tright:0px;\n","\t\tfont:",_18,";\n",((this.height||dojo.isOpera)?"":"\t\tposition: fixed;\n"),"\t\tmin-height:",this.minHeight,";\n","\t\tline-height:",_19,";\n","\t}\n","\tp{ margin: 1em 0; }\n",(!_17&&!this.height?"\tbody,html {overflow-y: hidden;}\n":""),"\t#dijitEditorBody{overflow-x: auto; overflow-y:"+(this.height?"auto;":"hidden;")+"}\n","\tli > ul:-moz-first-node, li > ol:-moz-first-node{ padding-top: 1.2em; }\n","\tli{ min-height:1.2em; }\n","</style>\n",this._applyEditingAreaStyleSheets(),"\n","</head>\n<body ",(_17?"id='dijitEditorBody' ":""),"onload='frameElement._loadFunc(window,document)' style='"+_1a+"'>",_16,"</body>\n</html>"].join("");
+},_applyEditingAreaStyleSheets:function(){
+var _1e=[];
+if(this.styleSheets){
+_1e=this.styleSheets.split(";");
+this.styleSheets="";
+}
+_1e=_1e.concat(this.editingAreaStyleSheets);
+this.editingAreaStyleSheets=[];
+var _1f="",i=0,url;
+while((url=_1e[i++])){
+var _20=(new dojo._Url(dojo.global.location,url)).toString();
+this.editingAreaStyleSheets.push(_20);
+_1f+="<link rel=\"stylesheet\" type=\"text/css\" href=\""+_20+"\"/>";
+}
+return _1f;
+},addStyleSheet:function(uri){
+var url=uri.toString();
+if(url.charAt(0)=="."||(url.charAt(0)!="/"&&!uri.host)){
+url=(new dojo._Url(dojo.global.location,url)).toString();
+}
+if(dojo.indexOf(this.editingAreaStyleSheets,url)>-1){
+return;
+}
+this.editingAreaStyleSheets.push(url);
+this.onLoadDeferred.addCallback(dojo.hitch(function(){
+if(this.document.createStyleSheet){
+this.document.createStyleSheet(url);
+}else{
+var _21=this.document.getElementsByTagName("head")[0];
+var _22=this.document.createElement("link");
+_22.rel="stylesheet";
+_22.type="text/css";
+_22.href=url;
+_21.appendChild(_22);
+}
+}));
+},removeStyleSheet:function(uri){
+var url=uri.toString();
+if(url.charAt(0)=="."||(url.charAt(0)!="/"&&!uri.host)){
+url=(new dojo._Url(dojo.global.location,url)).toString();
+}
+var _23=dojo.indexOf(this.editingAreaStyleSheets,url);
+if(_23==-1){
+return;
+}
+delete this.editingAreaStyleSheets[_23];
+dojo.withGlobal(this.window,"query",dojo,["link:[href=\""+url+"\"]"]).orphan();
+},disabled:false,_mozSettingProps:{"styleWithCSS":false},_setDisabledAttr:function(_24){
+this.disabled=_24;
+if(!this.isLoaded){
+return;
+}
+_24=!!_24;
+if(dojo.isIE||dojo.isWebKit||dojo.isOpera){
+var _25=dojo.isIE&&(this.isLoaded||!this.focusOnLoad);
+if(_25){
+this.editNode.unselectable="on";
+}
+this.editNode.contentEditable=!_24;
+if(_25){
+var _26=this;
+setTimeout(function(){
+_26.editNode.unselectable="off";
+},0);
+}
+}else{
+try{
+this.document.designMode=(_24?"off":"on");
+}
+catch(e){
+return;
+}
+if(!_24&&this._mozSettingProps){
+var ps=this._mozSettingProps;
+for(var n in ps){
+if(ps.hasOwnProperty(n)){
+try{
+this.document.execCommand(n,false,ps[n]);
+}
+catch(e2){
+}
+}
+}
+}
+}
+this._disabledOK=true;
+},onLoad:function(_27){
+if(!this.window.__registeredWindow){
+this.window.__registeredWindow=true;
+this._iframeRegHandle=dijit.registerIframe(this.iframe);
+}
+if(!dojo.isIE&&(this.height||dojo.isMoz)){
+this.editNode=this.document.body;
+}else{
+this.editNode=this.document.body.firstChild;
+var _28=this;
+if(dojo.isIE){
+var _29=(this.tabStop=dojo.doc.createElement("<div tabIndex=-1>"));
+this.editingArea.appendChild(_29);
+this.iframe.onfocus=function(){
+_28.editNode.setActive();
+};
+}
+}
+this.focusNode=this.editNode;
+var _2a=this.events.concat(this.captureEvents);
+var ap=this.iframe?this.document:this.editNode;
+dojo.forEach(_2a,function(_2b){
+this.connect(ap,_2b.toLowerCase(),_2b);
+},this);
+if(dojo.isIE){
+this.connect(this.document,"onmousedown","_onIEMouseDown");
+this.editNode.style.zoom=1;
+}else{
+this.connect(this.document,"onmousedown",function(){
+delete this._cursorToStart;
+});
+}
+if(dojo.isWebKit){
+this._webkitListener=this.connect(this.document,"onmouseup","onDisplayChanged");
+}
+if(dojo.isIE){
+try{
+this.document.execCommand("RespectVisibilityInDesign",true,null);
+}
+catch(e){
+}
+}
+this.isLoaded=true;
+this.set("disabled",this.disabled);
+var _2c=dojo.hitch(this,function(){
+this.setValue(_27);
+if(this.onLoadDeferred){
+this.onLoadDeferred.callback(true);
+}
+this.onDisplayChanged();
+if(this.focusOnLoad){
+dojo.addOnLoad(dojo.hitch(this,function(){
+setTimeout(dojo.hitch(this,"focus"),this.updateInterval);
+}));
+}
+this.savedContent=this.getValue(true);
+});
+if(this.setValueDeferred){
+this.setValueDeferred.addCallback(_2c);
+}else{
+_2c();
+}
+},onKeyDown:function(e){
+if(e.keyCode===dojo.keys.TAB&&this.isTabIndent){
+dojo.stopEvent(e);
+if(this.queryCommandEnabled((e.shiftKey?"outdent":"indent"))){
+this.execCommand((e.shiftKey?"outdent":"indent"));
+}
+}
+if(dojo.isIE){
+if(e.keyCode==dojo.keys.TAB&&!this.isTabIndent){
+if(e.shiftKey&&!e.ctrlKey&&!e.altKey){
+this.iframe.focus();
+}else{
+if(!e.shiftKey&&!e.ctrlKey&&!e.altKey){
+this.tabStop.focus();
+}
+}
+}else{
+if(e.keyCode===dojo.keys.BACKSPACE&&this.document.selection.type==="Control"){
+dojo.stopEvent(e);
+this.execCommand("delete");
+}else{
+if((65<=e.keyCode&&e.keyCode<=90)||(e.keyCode>=37&&e.keyCode<=40)){
+e.charCode=e.keyCode;
+this.onKeyPress(e);
+}
+}
+}
+}
+return true;
+},onKeyUp:function(e){
+return;
+},setDisabled:function(_2d){
+dojo.deprecated("dijit.Editor::setDisabled is deprecated","use dijit.Editor::attr(\"disabled\",boolean) instead",2);
+this.set("disabled",_2d);
+},_setValueAttr:function(_2e){
+this.setValue(_2e);
+},_setDisableSpellCheckAttr:function(_2f){
+if(this.document){
+dojo.attr(this.document.body,"spellcheck",!_2f);
+}else{
+this.onLoadDeferred.addCallback(dojo.hitch(this,function(){
+dojo.attr(this.document.body,"spellcheck",!_2f);
+}));
+}
+this.disableSpellCheck=_2f;
+},onKeyPress:function(e){
+var c=(e.keyChar&&e.keyChar.toLowerCase())||e.keyCode,_30=this._keyHandlers[c],_31=arguments;
+if(_30&&!e.altKey){
+dojo.some(_30,function(h){
+if(!(h.shift^e.shiftKey)&&!(h.ctrl^(e.ctrlKey||e.metaKey))){
+if(!h.handler.apply(this,_31)){
+e.preventDefault();
+}
+return true;
+}
+},this);
+}
+if(!this._onKeyHitch){
+this._onKeyHitch=dojo.hitch(this,"onKeyPressed");
+}
+setTimeout(this._onKeyHitch,1);
+return true;
+},addKeyHandler:function(key,_32,_33,_34){
+if(!dojo.isArray(this._keyHandlers[key])){
+this._keyHandlers[key]=[];
+}
+this._keyHandlers[key].push({shift:_33||false,ctrl:_32||false,handler:_34});
+},onKeyPressed:function(){
+this.onDisplayChanged();
+},onClick:function(e){
+this.onDisplayChanged(e);
+},_onIEMouseDown:function(e){
+if(!this._focused&&!this.disabled){
+this.focus();
+}
+},_onBlur:function(e){
+this.inherited(arguments);
+var _35=this.getValue(true);
+if(_35!=this.savedContent){
+this.onChange(_35);
+this.savedContent=_35;
+}
+},_onFocus:function(e){
+if(!this.disabled){
+if(!this._disabledOK){
+this.set("disabled",false);
+}
+this.inherited(arguments);
+}
+},blur:function(){
+if(!dojo.isIE&&this.window.document.documentElement&&this.window.document.documentElement.focus){
+this.window.document.documentElement.focus();
+}else{
+if(dojo.doc.body.focus){
+dojo.doc.body.focus();
+}
+}
+},focus:function(){
+if(!this.isLoaded){
+this.focusOnLoad=true;
+return;
+}
+if(this._cursorToStart){
+delete this._cursorToStart;
+if(this.editNode.childNodes){
+this.placeCursorAtStart();
+return;
+}
+}
+if(!dojo.isIE){
+dijit.focus(this.iframe);
+}else{
+if(this.editNode&&this.editNode.focus){
+this.iframe.fireEvent("onfocus",document.createEventObject());
+}
+}
+},updateInterval:200,_updateTimer:null,onDisplayChanged:function(e){
+if(this._updateTimer){
+clearTimeout(this._updateTimer);
+}
+if(!this._updateHandler){
+this._updateHandler=dojo.hitch(this,"onNormalizedDisplayChanged");
+}
+this._updateTimer=setTimeout(this._updateHandler,this.updateInterval);
+},onNormalizedDisplayChanged:function(){
+delete this._updateTimer;
+},onChange:function(_36){
+},_normalizeCommand:function(cmd,_37){
+var _38=cmd.toLowerCase();
+if(_38=="formatblock"){
+if(dojo.isSafari&&_37===undefined){
+_38="heading";
+}
+}else{
+if(_38=="hilitecolor"&&!dojo.isMoz){
+_38="backcolor";
+}
+}
+return _38;
+},_qcaCache:{},queryCommandAvailable:function(_39){
+var ca=this._qcaCache[_39];
+if(ca!==undefined){
+return ca;
+}
+return (this._qcaCache[_39]=this._queryCommandAvailable(_39));
+},_queryCommandAvailable:function(_3a){
+var ie=1;
+var _3b=1<<1;
+var _3c=1<<2;
+var _3d=1<<3;
+var _3e=1<<4;
+function _3f(_40){
+return {ie:Boolean(_40&ie),mozilla:Boolean(_40&_3b),webkit:Boolean(_40&_3c),webkit420:Boolean(_40&_3e),opera:Boolean(_40&_3d)};
+};
+var _41=null;
+switch(_3a.toLowerCase()){
+case "bold":
+case "italic":
+case "underline":
+case "subscript":
+case "superscript":
+case "fontname":
+case "fontsize":
+case "forecolor":
+case "hilitecolor":
+case "justifycenter":
+case "justifyfull":
+case "justifyleft":
+case "justifyright":
+case "delete":
+case "selectall":
+case "toggledir":
+_41=_3f(_3b|ie|_3c|_3d);
+break;
+case "createlink":
+case "unlink":
+case "removeformat":
+case "inserthorizontalrule":
+case "insertimage":
+case "insertorderedlist":
+case "insertunorderedlist":
+case "indent":
+case "outdent":
+case "formatblock":
+case "inserthtml":
+case "undo":
+case "redo":
+case "strikethrough":
+case "tabindent":
+_41=_3f(_3b|ie|_3d|_3e);
+break;
+case "blockdirltr":
+case "blockdirrtl":
+case "dirltr":
+case "dirrtl":
+case "inlinedirltr":
+case "inlinedirrtl":
+_41=_3f(ie);
+break;
+case "cut":
+case "copy":
+case "paste":
+_41=_3f(ie|_3b|_3e);
+break;
+case "inserttable":
+_41=_3f(_3b|ie);
+break;
+case "insertcell":
+case "insertcol":
+case "insertrow":
+case "deletecells":
+case "deletecols":
+case "deleterows":
+case "mergecells":
+case "splitcell":
+_41=_3f(ie|_3b);
+break;
+default:
+return false;
+}
+return (dojo.isIE&&_41.ie)||(dojo.isMoz&&_41.mozilla)||(dojo.isWebKit&&_41.webkit)||(dojo.isWebKit>420&&_41.webkit420)||(dojo.isOpera&&_41.opera);
+},execCommand:function(_42,_43){
+var _44;
+this.focus();
+_42=this._normalizeCommand(_42,_43);
+if(_43!==undefined){
+if(_42=="heading"){
+throw new Error("unimplemented");
+}else{
+if((_42=="formatblock")&&dojo.isIE){
+_43="<"+_43+">";
+}
+}
+}
+var _45="_"+_42+"Impl";
+if(this[_45]){
+_44=this[_45](_43);
+}else{
+_43=arguments.length>1?_43:null;
+if(_43||_42!="createlink"){
+_44=this.document.execCommand(_42,false,_43);
+}
+}
+this.onDisplayChanged();
+return _44;
+},queryCommandEnabled:function(_46){
+if(this.disabled||!this._disabledOK){
+return false;
+}
+_46=this._normalizeCommand(_46);
+if(dojo.isMoz||dojo.isWebKit){
+if(_46=="unlink"){
+return this._sCall("hasAncestorElement",["a"]);
+}else{
+if(_46=="inserttable"){
+return true;
+}
+}
+}
+if(dojo.isWebKit){
+if(_46=="copy"){
+_46="cut";
+}else{
+if(_46=="paste"){
+return true;
+}
+}
+}
+var _47=dojo.isIE?this.document.selection.createRange():this.document;
+try{
+return _47.queryCommandEnabled(_46);
+}
+catch(e){
+return false;
+}
+},queryCommandState:function(_48){
+if(this.disabled||!this._disabledOK){
+return false;
+}
+_48=this._normalizeCommand(_48);
+try{
+return this.document.queryCommandState(_48);
+}
+catch(e){
+return false;
+}
+},queryCommandValue:function(_49){
+if(this.disabled||!this._disabledOK){
+return false;
+}
+var r;
+_49=this._normalizeCommand(_49);
+if(dojo.isIE&&_49=="formatblock"){
+r=this._native2LocalFormatNames[this.document.queryCommandValue(_49)];
+}else{
+if(dojo.isMoz&&_49==="hilitecolor"){
+var _4a;
+try{
+_4a=this.document.queryCommandValue("styleWithCSS");
+}
+catch(e){
+_4a=false;
+}
+this.document.execCommand("styleWithCSS",false,true);
+r=this.document.queryCommandValue(_49);
+this.document.execCommand("styleWithCSS",false,_4a);
+}else{
+r=this.document.queryCommandValue(_49);
+}
+}
+return r;
+},_sCall:function(_4b,_4c){
+return dojo.withGlobal(this.window,_4b,dijit._editor.selection,_4c);
+},placeCursorAtStart:function(){
+this.focus();
+var _4d=false;
+if(dojo.isMoz){
+var _4e=this.editNode.firstChild;
+while(_4e){
+if(_4e.nodeType==3){
+if(_4e.nodeValue.replace(/^\s+|\s+$/g,"").length>0){
+_4d=true;
+this._sCall("selectElement",[_4e]);
+break;
+}
+}else{
+if(_4e.nodeType==1){
+_4d=true;
+var tg=_4e.tagName?_4e.tagName.toLowerCase():"";
+if(/br|input|img|base|meta|area|basefont|hr|link/.test(tg)){
+this._sCall("selectElement",[_4e]);
+}else{
+this._sCall("selectElementChildren",[_4e]);
+}
+break;
+}
+}
+_4e=_4e.nextSibling;
+}
+}else{
+_4d=true;
+this._sCall("selectElementChildren",[this.editNode]);
+}
+if(_4d){
+this._sCall("collapse",[true]);
+}
+},placeCursorAtEnd:function(){
+this.focus();
+var _4f=false;
+if(dojo.isMoz){
+var _50=this.editNode.lastChild;
+while(_50){
+if(_50.nodeType==3){
+if(_50.nodeValue.replace(/^\s+|\s+$/g,"").length>0){
+_4f=true;
+this._sCall("selectElement",[_50]);
+break;
+}
+}else{
+if(_50.nodeType==1){
+_4f=true;
+if(_50.lastChild){
+this._sCall("selectElement",[_50.lastChild]);
+}else{
+this._sCall("selectElement",[_50]);
+}
+break;
+}
+}
+_50=_50.previousSibling;
+}
+}else{
+_4f=true;
+this._sCall("selectElementChildren",[this.editNode]);
+}
+if(_4f){
+this._sCall("collapse",[false]);
+}
+},getValue:function(_51){
+if(this.textarea){
+if(this.isClosed||!this.isLoaded){
+return this.textarea.value;
+}
+}
+return this._postFilterContent(null,_51);
+},_getValueAttr:function(){
+return this.getValue(true);
+},setValue:function(_52){
+if(!this.isLoaded){
+this.onLoadDeferred.addCallback(dojo.hitch(this,function(){
+this.setValue(_52);
+}));
+return;
+}
+this._cursorToStart=true;
+if(this.textarea&&(this.isClosed||!this.isLoaded)){
+this.textarea.value=_52;
+}else{
+_52=this._preFilterContent(_52);
+var _53=this.isClosed?this.domNode:this.editNode;
+if(!_52&&dojo.isWebKit){
+_52="&nbsp;";
+}
+_53.innerHTML=_52;
+this._preDomFilterContent(_53);
+}
+this.onDisplayChanged();
+},replaceValue:function(_54){
+if(this.isClosed){
+this.setValue(_54);
+}else{
+if(this.window&&this.window.getSelection&&!dojo.isMoz){
+this.setValue(_54);
+}else{
+if(this.window&&this.window.getSelection){
+_54=this._preFilterContent(_54);
+this.execCommand("selectall");
+if(!_54){
+this._cursorToStart=true;
+_54="&nbsp;";
+}
+this.execCommand("inserthtml",_54);
+this._preDomFilterContent(this.editNode);
+}else{
+if(this.document&&this.document.selection){
+this.setValue(_54);
+}
+}
+}
+}
+},_preFilterContent:function(_55){
+var ec=_55;
+dojo.forEach(this.contentPreFilters,function(ef){
+if(ef){
+ec=ef(ec);
+}
+});
+return ec;
+},_preDomFilterContent:function(dom){
+dom=dom||this.editNode;
+dojo.forEach(this.contentDomPreFilters,function(ef){
+if(ef&&dojo.isFunction(ef)){
+ef(dom);
+}
+},this);
+},_postFilterContent:function(dom,_56){
+var ec;
+if(!dojo.isString(dom)){
+dom=dom||this.editNode;
+if(this.contentDomPostFilters.length){
+if(_56){
+dom=dojo.clone(dom);
+}
+dojo.forEach(this.contentDomPostFilters,function(ef){
+dom=ef(dom);
+});
+}
+ec=dijit._editor.getChildrenHtml(dom);
+}else{
+ec=dom;
+}
+if(!dojo.trim(ec.replace(/^\xA0\xA0*/,"").replace(/\xA0\xA0*$/,"")).length){
+ec="";
+}
+dojo.forEach(this.contentPostFilters,function(ef){
+ec=ef(ec);
+});
+return ec;
+},_saveContent:function(e){
+var _57=dojo.byId(dijit._scopeName+"._editor.RichText.savedContent");
+if(_57.value){
+_57.value+=this._SEPARATOR;
+}
+_57.value+=this.name+":"+this.getValue(true);
+},escapeXml:function(str,_58){
+str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
+if(!_58){
+str=str.replace(/'/gm,"&#39;");
+}
+return str;
+},getNodeHtml:function(_59){
+dojo.deprecated("dijit.Editor::getNodeHtml is deprecated","use dijit._editor.getNodeHtml instead",2);
+return dijit._editor.getNodeHtml(_59);
+},getNodeChildrenHtml:function(dom){
+dojo.deprecated("dijit.Editor::getNodeChildrenHtml is deprecated","use dijit._editor.getChildrenHtml instead",2);
+return dijit._editor.getChildrenHtml(dom);
+},close:function(_5a){
+if(this.isClosed){
+return false;
+}
+if(!arguments.length){
+_5a=true;
+}
+this._content=this.getValue();
+var _5b=(this.savedContent!=this._content);
+if(this.interval){
+clearInterval(this.interval);
+}
+if(this._webkitListener){
+this.disconnect(this._webkitListener);
+delete this._webkitListener;
+}
+if(dojo.isIE){
+this.iframe.onfocus=null;
+}
+this.iframe._loadFunc=null;
+if(this._iframeRegHandle){
+dijit.unregisterIframe(this._iframeRegHandle);
+delete this._iframeRegHandle;
+}
+if(this.textarea){
+var s=this.textarea.style;
+s.position="";
+s.left=s.top="";
+if(dojo.isIE){
+s.overflow=this.__overflow;
+this.__overflow=null;
+}
+this.textarea.value=_5a?this._content:this.savedContent;
+dojo.destroy(this.domNode);
+this.domNode=this.textarea;
+}else{
+this.domNode.innerHTML=_5a?this._content:this.savedContent;
+}
+delete this.iframe;
+dojo.removeClass(this.domNode,this.baseClass);
+this.isClosed=true;
+this.isLoaded=false;
+delete this.editNode;
+delete this.focusNode;
+if(this.window&&this.window._frameElement){
+this.window._frameElement=null;
+}
+this.window=null;
+this.document=null;
+this.editingArea=null;
+this.editorObject=null;
+return _5b;
+},destroy:function(){
+if(!this.isClosed){
+this.close(false);
+}
+this.inherited(arguments);
+},_removeMozBogus:function(_5c){
+return _5c.replace(/\stype="_moz"/gi,"").replace(/\s_moz_dirty=""/gi,"").replace(/_moz_resizing="(true|false)"/gi,"");
+},_removeWebkitBogus:function(_5d){
+_5d=_5d.replace(/\sclass="webkit-block-placeholder"/gi,"");
+_5d=_5d.replace(/\sclass="apple-style-span"/gi,"");
+return _5d;
+},_normalizeFontStyle:function(_5e){
+return _5e.replace(/<(\/)?strong([ \>])/gi,"<$1b$2").replace(/<(\/)?em([ \>])/gi,"<$1i$2");
+},_preFixUrlAttributes:function(_5f){
+return _5f.replace(/(?:(<a(?=\s).*?\shref=)("|')(.*?)\2)|(?:(<a\s.*?href=)([^"'][^ >]+))/gi,"$1$4$2$3$5$2 _djrealurl=$2$3$5$2").replace(/(?:(<img(?=\s).*?\ssrc=)("|')(.*?)\2)|(?:(<img\s.*?src=)([^"'][^ >]+))/gi,"$1$4$2$3$5$2 _djrealurl=$2$3$5$2");
+},_inserthorizontalruleImpl:function(_60){
+if(dojo.isIE){
+return this._inserthtmlImpl("<hr>");
+}
+return this.document.execCommand("inserthorizontalrule",false,_60);
+},_unlinkImpl:function(_61){
+if((this.queryCommandEnabled("unlink"))&&(dojo.isMoz||dojo.isWebKit)){
+var a=this._sCall("getAncestorElement",["a"]);
+this._sCall("selectElement",[a]);
+return this.document.execCommand("unlink",false,null);
+}
+return this.document.execCommand("unlink",false,_61);
+},_hilitecolorImpl:function(_62){
+var _63;
+if(dojo.isMoz){
+this.document.execCommand("styleWithCSS",false,true);
+_63=this.document.execCommand("hilitecolor",false,_62);
+this.document.execCommand("styleWithCSS",false,false);
+}else{
+_63=this.document.execCommand("hilitecolor",false,_62);
+}
+return _63;
+},_backcolorImpl:function(_64){
+if(dojo.isIE){
+_64=_64?_64:null;
+}
+return this.document.execCommand("backcolor",false,_64);
+},_forecolorImpl:function(_65){
+if(dojo.isIE){
+_65=_65?_65:null;
+}
+return this.document.execCommand("forecolor",false,_65);
+},_inserthtmlImpl:function(_66){
+_66=this._preFilterContent(_66);
+var rv=true;
+if(dojo.isIE){
+var _67=this.document.selection.createRange();
+if(this.document.selection.type.toUpperCase()=="CONTROL"){
+var n=_67.item(0);
+while(_67.length){
+_67.remove(_67.item(0));
+}
+n.outerHTML=_66;
+}else{
+_67.pasteHTML(_66);
+}
+_67.select();
+}else{
+if(dojo.isMoz&&!_66.length){
+this._sCall("remove");
+}else{
+rv=this.document.execCommand("inserthtml",false,_66);
+}
+}
+return rv;
+},getHeaderHeight:function(){
+return this._getNodeChildrenHeight(this.header);
+},getFooterHeight:function(){
+return this._getNodeChildrenHeight(this.footer);
+},_getNodeChildrenHeight:function(_68){
+var h=0;
+if(_68&&_68.childNodes){
+var i;
+for(i=0;i<_68.childNodes.length;i++){
+var _69=dojo.position(_68.childNodes[i]);
+h+=_69.h;
+}
+}
+return h;
+}});
+}
diff --git a/lib/dijit/_editor/_Plugin.js b/lib/dijit/_editor/_Plugin.js
new file mode 100644 (file)
index 0000000..f3c95aa
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor._Plugin"]){
+dojo._hasResource["dijit._editor._Plugin"]=true;
+dojo.provide("dijit._editor._Plugin");
+dojo.require("dijit._Widget");
+dojo.require("dijit.form.Button");
+dojo.declare("dijit._editor._Plugin",null,{constructor:function(_1,_2){
+this.params=_1||{};
+dojo.mixin(this,this.params);
+this._connects=[];
+},editor:null,iconClassPrefix:"dijitEditorIcon",button:null,command:"",useDefaultCommand:true,buttonClass:dijit.form.Button,getLabel:function(_3){
+return this.editor.commands[_3];
+},_initButton:function(){
+if(this.command.length){
+var _4=this.getLabel(this.command),_5=this.editor,_6=this.iconClassPrefix+" "+this.iconClassPrefix+this.command.charAt(0).toUpperCase()+this.command.substr(1);
+if(!this.button){
+var _7=dojo.mixin({label:_4,dir:_5.dir,lang:_5.lang,showLabel:false,iconClass:_6,dropDown:this.dropDown,tabIndex:"-1"},this.params||{});
+this.button=new this.buttonClass(_7);
+}
+}
+},destroy:function(){
+dojo.forEach(this._connects,dojo.disconnect);
+if(this.dropDown){
+this.dropDown.destroyRecursive();
+}
+},connect:function(o,f,tf){
+this._connects.push(dojo.connect(o,f,this,tf));
+},updateState:function(){
+var e=this.editor,c=this.command,_8,_9;
+if(!e||!e.isLoaded||!c.length){
+return;
+}
+if(this.button){
+try{
+_9=e.queryCommandEnabled(c);
+if(this.enabled!==_9){
+this.enabled=_9;
+this.button.set("disabled",!_9);
+}
+if(typeof this.button.checked=="boolean"){
+_8=e.queryCommandState(c);
+if(this.checked!==_8){
+this.checked=_8;
+this.button.set("checked",e.queryCommandState(c));
+}
+}
+}
+catch(e){
+}
+}
+},setEditor:function(_a){
+this.editor=_a;
+this._initButton();
+if(this.button&&this.useDefaultCommand){
+if(this.editor.queryCommandAvailable(this.command)){
+this.connect(this.button,"onClick",dojo.hitch(this.editor,"execCommand",this.command,this.commandArg));
+}else{
+this.button.domNode.style.display="none";
+}
+}
+this.connect(this.editor,"onNormalizedDisplayChanged","updateState");
+},setToolbar:function(_b){
+if(this.button){
+_b.addChild(this.button);
+}
+}});
+}
diff --git a/lib/dijit/_editor/html.js b/lib/dijit/_editor/html.js
new file mode 100644 (file)
index 0000000..7db85c7
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.html"]){
+dojo._hasResource["dijit._editor.html"]=true;
+dojo.provide("dijit._editor.html");
+dijit._editor.escapeXml=function(_1,_2){
+_1=_1.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
+if(!_2){
+_1=_1.replace(/'/gm,"&#39;");
+}
+return _1;
+};
+dijit._editor.getNodeHtml=function(_3){
+var _4;
+switch(_3.nodeType){
+case 1:
+var _5=_3.nodeName.toLowerCase();
+if(!_5||_5.charAt(0)=="/"){
+return "";
+}
+_4="<"+_5;
+var _6=[];
+var _7;
+if(dojo.isIE&&_3.outerHTML){
+var s=_3.outerHTML;
+s=s.substr(0,s.indexOf(">")).replace(/(['"])[^"']*\1/g,"");
+var _8=/(\b\w+)\s?=/g;
+var m,_9;
+while((m=_8.exec(s))){
+_9=m[1];
+if(_9.substr(0,3)!="_dj"){
+if(_9=="src"||_9=="href"){
+if(_3.getAttribute("_djrealurl")){
+_6.push([_9,_3.getAttribute("_djrealurl")]);
+continue;
+}
+}
+var _a,_b;
+switch(_9){
+case "style":
+_a=_3.style.cssText.toLowerCase();
+break;
+case "class":
+_a=_3.className;
+break;
+case "width":
+if(_5==="img"){
+_b=/width=(\S+)/i.exec(s);
+if(_b){
+_a=_b[1];
+}
+break;
+}
+case "height":
+if(_5==="img"){
+_b=/height=(\S+)/i.exec(s);
+if(_b){
+_a=_b[1];
+}
+break;
+}
+default:
+_a=_3.getAttribute(_9);
+}
+if(_a!=null){
+_6.push([_9,_a.toString()]);
+}
+}
+}
+}else{
+var i=0;
+while((_7=_3.attributes[i++])){
+var n=_7.name;
+if(n.substr(0,3)!="_dj"){
+var v=_7.value;
+if(n=="src"||n=="href"){
+if(_3.getAttribute("_djrealurl")){
+v=_3.getAttribute("_djrealurl");
+}
+}
+_6.push([n,v]);
+}
+}
+}
+_6.sort(function(a,b){
+return a[0]<b[0]?-1:(a[0]==b[0]?0:1);
+});
+var j=0;
+while((_7=_6[j++])){
+_4+=" "+_7[0]+"=\""+(dojo.isString(_7[1])?dijit._editor.escapeXml(_7[1],true):_7[1])+"\"";
+}
+if(_5==="script"){
+_4+=">"+_3.innerHTML+"</"+_5+">";
+}else{
+if(_3.childNodes.length){
+_4+=">"+dijit._editor.getChildrenHtml(_3)+"</"+_5+">";
+}else{
+switch(_5){
+case "br":
+case "hr":
+case "img":
+case "input":
+case "base":
+case "meta":
+case "area":
+case "basefont":
+_4+=" />";
+break;
+default:
+_4+="></"+_5+">";
+}
+}
+}
+break;
+case 4:
+case 3:
+_4=dijit._editor.escapeXml(_3.nodeValue,true);
+break;
+case 8:
+_4="<!--"+dijit._editor.escapeXml(_3.nodeValue,true)+"-->";
+break;
+default:
+_4="<!-- Element not recognized - Type: "+_3.nodeType+" Name: "+_3.nodeName+"-->";
+}
+return _4;
+};
+dijit._editor.getChildrenHtml=function(_c){
+var _d="";
+if(!_c){
+return _d;
+}
+var _e=_c["childNodes"]||_c;
+var _f=!dojo.isIE||_e!==_c;
+var _10,i=0;
+while((_10=_e[i++])){
+if(!_f||_10.parentNode==_c){
+_d+=dijit._editor.getNodeHtml(_10);
+}
+}
+return _d;
+};
+}
diff --git a/lib/dijit/_editor/nls/FontChoice.js b/lib/dijit/_editor/nls/FontChoice.js
new file mode 100644 (file)
index 0000000..f2b6e0c
--- /dev/null
@@ -0,0 +1 @@
+({"noFormat":"None","1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragraph","pre":"Pre-formatted","sans-serif":"sans-serif","fontName":"Font","h1":"Heading","h2":"Subheading","h3":"Sub-subheading","monospace":"monospace","fontSize":"Size","cursive":"cursive"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/LinkDialog.js b/lib/dijit/_editor/nls/LinkDialog.js
new file mode 100644 (file)
index 0000000..0dd81f1
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Description:","insertImageTitle":"Image Properties","set":"Set","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","createLinkTitle":"Link Properties","parentWindow":"Parent Window","currentWindow":"Current Window","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ar/FontChoice.js b/lib/dijit/_editor/nls/ar/FontChoice.js
new file mode 100644 (file)
index 0000000..71683c0
--- /dev/null
@@ -0,0 +1 @@
+({"1":"صغير جدا جدا","2":"صغير جدا","formatBlock":"النسق","3":"صغير","4":"متوسط","5":"كبير","6":"كبير جدا","7":"كبير جدا جدا","fantasy":"خيالي","serif":"serif","p":"فقرة","pre":"منسق بصفة مسبقة","sans-serif":"sans-serif","fontName":"طاقم طباعة","h1":"عنوان","h2":"عنوان فرعي","h3":"فرعي-عنوان فرعي","monospace":"أحادي المسافة","fontSize":"الحجم","cursive":"كتابة بحروف متصلة","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ar/LinkDialog.js b/lib/dijit/_editor/nls/ar/LinkDialog.js
new file mode 100644 (file)
index 0000000..1a1b32e
--- /dev/null
@@ -0,0 +1 @@
+({"text":"الوصف:","insertImageTitle":"خصائص الصورة","set":"تحديد","newWindow":"نافذة جديدة","topWindow":"النافذة العلوية","target":"الهدف: ","createLinkTitle":"خصائص الوصلة","parentWindow":"النافذة الرئيسية","currentWindow":"النافذة الحالية","url":"عنوان URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ar/commands.js b/lib/dijit/_editor/nls/ar/commands.js
new file mode 100644 (file)
index 0000000..3e524ea
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"ازالة النسق","copy":"نسخ","paste":"لصق","selectAll":"اختيار كل","insertOrderedList":"‏كشف مرقم‏","insertTable":"ادراج/تحرير جدول","print":"‏طباعة‏","underline":"~تسطير","foreColor":"لون الواجهة الأمامية","htmlToggle":"مصدر HTML","formatBlock":"نمط الفقرة","newPage":"صفحة جديدة","insertHorizontalRule":"مسطرة أفقية","delete":"حذف","insertUnorderedList":"كشف نقطي","tableProp":"خصائص الجدول","insertImage":"ادراج صورة","superscript":"رمز علوي","subscript":"رمز سفلي","createLink":"تكوين وصلة","undo":"تراجع","fullScreen":"تبديل الشاشة الكاملة","italic":"~مائل","fontName":"اسم طاقم الطباعة","justifyLeft":"محاذاة الى اليسار","unlink":"ازالة وصلة","toggleTableBorder":"تبديل حدود الجدول","viewSource":"‫مشاهدة مصدر HTML‬","ctrlKey":"ctrl+${0}","fontSize":"حجم طاقم الطباعة","systemShortcut":"التصرف \"${0}\" يكون متاحا فقط في برنامج الاستعراض الخاص بك باستخدام المسار المختصر للوحة المفاتيح. استخدم ${1}.","indent":"‏ازاحة للداخل‏","redo":"‏اعادة‏","strikethrough":"تشطيب","justifyFull":"ضبط","justifyCenter":"محاذاة في الوسط","hiliteColor":"‏لون الخلفية‏","deleteTable":"حذف جدول","outdent":"ازاحة للخارج","cut":"قص","plainFormatBlock":"نمط الفقرة","toggleDir":"تبديل الاتجاه","bold":"عري~ض","tabIndent":"ازاحة للداخل باستخدام Tab","justifyRight":"محاذاة الى اليمين","appleKey":"⌘${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ca/FontChoice.js b/lib/dijit/_editor/nls/ca/FontChoice.js
new file mode 100644 (file)
index 0000000..efba7de
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-petit","2":"x-petit","formatBlock":"Format","3":"petit","4":"mitjà","5":"gran","6":"x-gran","7":"xx-gran","fantasy":"Fantasia","serif":"serif","p":"Paràgraf","pre":"Format previ","sans-serif":"sans-serif","fontName":"Tipus de lletra","h1":"Títol","h2":"Subtítol","h3":"Subsubtítol","monospace":"monoespai","fontSize":"Mida","cursive":"Cursiva","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ca/LinkDialog.js b/lib/dijit/_editor/nls/ca/LinkDialog.js
new file mode 100644 (file)
index 0000000..b030a2c
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Descipció:","insertImageTitle":"Propietats de la imatge","set":"Defineix","newWindow":"Finestra nova","topWindow":"Finestra superior","target":"Destinació:","createLinkTitle":"Propietats de l'enllaç","parentWindow":"Finestra pare","currentWindow":"Finestra actual","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ca/commands.js b/lib/dijit/_editor/nls/ca/commands.js
new file mode 100644 (file)
index 0000000..f78e71c
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Elimina el format","copy":"Copia","paste":"Enganxa","selectAll":"Selecciona-ho tot","insertOrderedList":"Llista numerada","insertTable":"Insereix/edita la taula","print":"Imprimeix","underline":"Subratllat","foreColor":"Color de primer pla","htmlToggle":"Font HTML","formatBlock":"Estil de paràgraf","newPage":"Pàgina nova","insertHorizontalRule":"Regle horitzontal","delete":"Suprimeix","insertUnorderedList":"Llista de vinyetes","tableProp":"Propietat de taula","insertImage":"Insereix imatge","superscript":"Superíndex","subscript":"Subíndex","createLink":"Crea un enllaç","undo":"Desfés","fullScreen":"Commuta pantalla completa","italic":"Cursiva","fontName":"Nom del tipus de lletra","justifyLeft":"Alinea a la esquerra","unlink":"Elimina l'enllaç","toggleTableBorder":"Inverteix els contorns de taula","viewSource":"Visualitza font HTML","ctrlKey":"control+${0}","fontSize":"Cos de la lletra","systemShortcut":"L'acció \"${0}\" és l'única disponible al navegador utilitzant una drecera del teclat. Utilitzeu ${1}.","indent":"Sagnat","redo":"Refés","strikethrough":"Ratllat","justifyFull":"Justifica","justifyCenter":"Centra","hiliteColor":"Color de fons","deleteTable":"Suprimeix la taula","outdent":"Sagna a l'esquerra","cut":"Retalla","plainFormatBlock":"Estil de paràgraf","toggleDir":"Inverteix la direcció","bold":"Negreta","tabIndent":"Sagnat","justifyRight":"Alinea a la dreta","appleKey":"⌘${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/commands.js b/lib/dijit/_editor/nls/commands.js
new file mode 100644 (file)
index 0000000..582b782
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Remove Format","copy":"Copy","paste":"Paste","selectAll":"Select All","insertOrderedList":"Numbered List","insertTable":"Insert/Edit Table","print":"Print","underline":"Underline","foreColor":"Foreground Color","htmlToggle":"HTML Source","formatBlock":"Paragraph Style","newPage":"New Page","insertHorizontalRule":"Horizontal Rule","delete":"Delete","appleKey":"⌘${0}","insertUnorderedList":"Bullet List","tableProp":"Table Property","insertImage":"Insert Image","superscript":"Superscript","subscript":"Subscript","createLink":"Create Link","undo":"Undo","fullScreen":"Toggle Full Screen","italic":"Italic","fontName":"Font Name","justifyLeft":"Align Left","unlink":"Remove Link","toggleTableBorder":"Toggle Table Border","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}","fontSize":"Font Size","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","indent":"Indent","redo":"Redo","strikethrough":"Strikethrough","justifyFull":"Justify","justifyCenter":"Align Center","hiliteColor":"Background Color","deleteTable":"Delete Table","outdent":"Outdent","cut":"Cut","plainFormatBlock":"Paragraph Style","toggleDir":"Toggle Direction","bold":"Bold","tabIndent":"Tab Indent","justifyRight":"Align Right"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/cs/FontChoice.js b/lib/dijit/_editor/nls/cs/FontChoice.js
new file mode 100644 (file)
index 0000000..447fe66
--- /dev/null
@@ -0,0 +1 @@
+({"1":"extra malé","2":"velmi malé","formatBlock":"Formát","3":"malé","4":"střední","5":"velké","6":"velmi velké","7":"extra velké","fantasy":"fantasy","serif":"serif","p":"Odstavec","pre":"Předformátované","sans-serif":"sans-serif","fontName":"Písmo","h1":"Nadpis","h2":"Podnadpis","h3":"Podnadpis 2","monospace":"monospace","fontSize":"Velikost","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/cs/LinkDialog.js b/lib/dijit/_editor/nls/cs/LinkDialog.js
new file mode 100644 (file)
index 0000000..41dad34
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Popis:","insertImageTitle":"Vlastnosti obrázku","set":"Nastavit","newWindow":"Nové okno","topWindow":"Okno nejvyšší úrovně","target":"Cíl:","createLinkTitle":"Vlastnosti odkazu","parentWindow":"Nadřízené okno","currentWindow":"Aktuální okno","url":"Adresa URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/cs/commands.js b/lib/dijit/_editor/nls/cs/commands.js
new file mode 100644 (file)
index 0000000..ce51558
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Odebrat formát","copy":"Kopírovat","paste":"Vložit","selectAll":"Vybrat vše","insertOrderedList":"Číslovaný seznam","insertTable":"Vložit/upravit tabulku","print":"Tisk","underline":"Podtržení","foreColor":"Barva popředí","htmlToggle":"Zdroj HTML","formatBlock":"Styl odstavce","newPage":"Nová stránka","insertHorizontalRule":"Vodorovná čára","delete":"Odstranit","insertUnorderedList":"Seznam s odrážkami","tableProp":"Vlastnost tabulky","insertImage":"Vložit obrázek","superscript":"Horní index","subscript":"Dolní index","createLink":"Vytvořit odkaz","undo":"Zpět","fullScreen":"Přepnout režim celé obrazovky","italic":"Kurzíva","fontName":"Název písma","justifyLeft":"Zarovnat vlevo","unlink":"Odebrat odkaz","toggleTableBorder":"Přepnout ohraničení tabulky","viewSource":"Zobrazit zdroj ve formátu HTML","fontSize":"Velikost písma","systemShortcut":"Akce \"${0}\" je v prohlížeči dostupná pouze prostřednictvím klávesové zkratky. Použijte klávesovou zkratku ${1}.","indent":"Odsadit","redo":"Opakovat","strikethrough":"Přeškrtnutí","justifyFull":"Do bloku","justifyCenter":"Zarovnat na střed","hiliteColor":"Barva pozadí","deleteTable":"Odstranit tabulku","outdent":"Předsadit","cut":"Vyjmout","plainFormatBlock":"Styl odstavce","toggleDir":"Přepnout směr","bold":"Tučné","tabIndent":"Odsazení tabulátoru","justifyRight":"Zarovnat vpravo","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/da/FontChoice.js b/lib/dijit/_editor/nls/da/FontChoice.js
new file mode 100644 (file)
index 0000000..5b380ec
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Afsnit","pre":"Forudformateret","sans-serif":"sans-serif","fontName":"Skrifttype","h1":"Overskrift","h2":"Underoverskrift","h3":"Underunderoverskrift","monospace":"monospace","fontSize":"Størrelse","cursive":"kursiv","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/da/LinkDialog.js b/lib/dijit/_editor/nls/da/LinkDialog.js
new file mode 100644 (file)
index 0000000..9b757f7
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Beskrivelse:","insertImageTitle":"Billedegenskaber","set":"Definér","newWindow":"Nyt vindue","topWindow":"Øverste vindue","target":"Mål:","createLinkTitle":"Linkegenskaber","parentWindow":"Overordnet vindue","currentWindow":"Aktuelt vindue","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/da/commands.js b/lib/dijit/_editor/nls/da/commands.js
new file mode 100644 (file)
index 0000000..d2d9354
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Fjern format","copy":"Kopiér","paste":"Sæt ind","selectAll":"Markér alle","insertOrderedList":"Nummereret liste","insertTable":"Indsæt/redigér tabel","print":"Udskriv","underline":"Understreget","foreColor":"Forgrundsfarve","htmlToggle":"HTML-kilde","formatBlock":"Afsnitstypografi","newPage":"Ny side","insertHorizontalRule":"Vandret linje","delete":"Slet","insertUnorderedList":"Punktliste","tableProp":"Tabelegenskab","insertImage":"Indsæt billede","superscript":"Hævet skrift","subscript":"Sænket skrift","createLink":"Opret link","undo":"Fortryd","fullScreen":"Aktivér/deaktivér fuldskærm","italic":"Kursiv","fontName":"Skriftnavn","justifyLeft":"Venstrejusteret","unlink":"Fjern link","toggleTableBorder":"Skift tabelramme","viewSource":"Vis HTML-kilde","ctrlKey":"Ctrl+${0}","fontSize":"Skriftstørrelse","systemShortcut":"Funktionen \"${0}\" kan kun bruges i din browser med en tastaturgenvej. Brug ${1}.","indent":"Indrykning","redo":"Annullér Fortryd","strikethrough":"Gennemstreget","justifyFull":"Lige margener","justifyCenter":"Centreret","hiliteColor":"Baggrundsfarve","deleteTable":"Slet tabel","outdent":"Udrykning","cut":"Klip","plainFormatBlock":"Afsnitstypografi","toggleDir":"Skift retning","bold":"Fed","tabIndent":"Indrykning med tabulator","justifyRight":"Højrejusteret","appleKey":"⌘${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/de/FontChoice.js b/lib/dijit/_editor/nls/de/FontChoice.js
new file mode 100644 (file)
index 0000000..ed65ff3
--- /dev/null
@@ -0,0 +1 @@
+({"1":"XXS","2":"XS","formatBlock":"Format","3":"S","4":"M","5":"L","6":"XL","7":"XXL","fantasy":"Fantasie","serif":"Serife","p":"Absatz","pre":"Vorformatiert","sans-serif":"Serifenlos","fontName":"Schriftart","h1":"Überschrift","h2":"Unterüberschrift","h3":"Unterunterüberschrift","monospace":"Monospaceschrift","fontSize":"Größe","cursive":"Kursiv","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/de/LinkDialog.js b/lib/dijit/_editor/nls/de/LinkDialog.js
new file mode 100644 (file)
index 0000000..b1eab6c
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Beschreibung:","insertImageTitle":"Grafikeigenschaften","set":"Festlegen","newWindow":"Neues Fenster","topWindow":"Aktives Fenster","target":"Ziel:","createLinkTitle":"Linkeigenschaften","parentWindow":"Übergeordnetes Fenster","currentWindow":"Aktuelles Fenster","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/de/commands.js b/lib/dijit/_editor/nls/de/commands.js
new file mode 100644 (file)
index 0000000..8fa589c
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Formatierung entfernen","copy":"Kopieren","paste":"Einfügen","selectAll":"Alles auswählen","insertOrderedList":"Nummerierung","insertTable":"Tabelle einfügen/bearbeiten","print":"Drucken","underline":"Unterstrichen","foreColor":"Vordergrundfarbe","htmlToggle":"HTML-Quelltext","formatBlock":"Absatzstil","newPage":"Neue Seite","insertHorizontalRule":"Horizontaler Strich","delete":"Löschen","insertUnorderedList":"Aufzählungszeichen","tableProp":"Tabelleneigenschaft","insertImage":"Grafik einfügen","superscript":"Hochgestellt","subscript":"Tiefgestellt","createLink":"Link erstellen","undo":"Rückgängig","fullScreen":"Gesamtanzeige","italic":"Kursiv","fontName":"Schriftartname","justifyLeft":"Linksbündig","unlink":"Link entfernen","toggleTableBorder":"Tabellenumrandung ein-/ausschalten","viewSource":"HTML-Quelle","ctrlKey":"Strg+${0}","fontSize":"Schriftgröße","systemShortcut":"Die Aktion \"${0}\" ist nur über einen Direktaufruf in Ihrem Browser verfügbar. Verwenden Sie ${1}.","indent":"Einrücken","redo":"Wiederherstellen","strikethrough":"Durchgestrichen","justifyFull":"Blocksatz","justifyCenter":"Zentriert","hiliteColor":"Hintergrundfarbe","deleteTable":"Tabelle löschen","outdent":"Ausrücken","cut":"Ausschneiden","plainFormatBlock":"Absatzstil","toggleDir":"Wechselrichtung","bold":"Fett","tabIndent":"Tabulatoreinrückung","justifyRight":"Rechtsbündig","appleKey":"⌘${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/el/FontChoice.js b/lib/dijit/_editor/nls/el/FontChoice.js
new file mode 100644 (file)
index 0000000..13c661c
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-μικρά","2":"x-μικρά","formatBlock":"Μορφή","3":"μικρά","4":"μεσαία","5":"μεγάλα","6":"x-μεγάλα","7":"xx-μεγάλα","fantasy":"φαντασίας","serif":"με πατούρες (serif)","p":"Παράγραφος","pre":"Προ-μορφοποιημένο","sans-serif":"χωρίς πατούρες (sans-serif)","fontName":"Γραμματοσειρά","h1":"Επικεφαλίδα","h2":"Δευτερεύουσα επικεφαλίδα","h3":"Δευτερεύουσα επικεφαλίδα τρίτου επιπέδου","monospace":"σταθερού πλάτους","fontSize":"Μέγεθος","cursive":"πλάγιοι","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/el/LinkDialog.js b/lib/dijit/_editor/nls/el/LinkDialog.js
new file mode 100644 (file)
index 0000000..8a1e121
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Περιγραφή:","insertImageTitle":"Ιδιότητες εικόνας","set":"Ορισμός","newWindow":"Νέο παράθυρο","topWindow":"Παράθυρο σε πρώτο πλάνο","target":"Προορισμός:","createLinkTitle":"Ιδιότητες σύνδεσης","parentWindow":"Γονικό παράθυρο","currentWindow":"Τρέχον παράθυρο","url":"Διεύθυνση URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/el/commands.js b/lib/dijit/_editor/nls/el/commands.js
new file mode 100644 (file)
index 0000000..dc85405
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Αφαίρεση μορφοποίησης","copy":"Αντιγραφή","paste":"Επικόλληση","selectAll":"Επιλογή όλων","insertOrderedList":"Αριθμημένη λίστα","insertTable":"Εισαγωγή/Τροποποίηση πίνακα","print":"Εκτύπωση","underline":"Υπογράμμιση","foreColor":"Χρώμα προσκηνίου","htmlToggle":"Πρωτογενής κώδικας HTML","formatBlock":"Στυλ παραγράφου","newPage":"Νέα σελίδα","insertHorizontalRule":"Οριζόντια γραμμή","delete":"Διαγραφή","insertUnorderedList":"Λίστα με κουκίδες","tableProp":"Ιδιότητα πίνακα","insertImage":"Εισαγωγή εικόνας","superscript":"Εκθέτης","subscript":"Δείκτης","createLink":"Δημιουργία σύνδεσης","undo":"Αναίρεση","fullScreen":"Εναλλαγή κατάστασης πλήρους οθόνης","italic":"Πλάγια","fontName":"Όνομα γραμματοσειράς","justifyLeft":"Στοίχιση αριστερά","unlink":"Αφαίρεση σύνδεσης","toggleTableBorder":"Εναλλαγή εμφάνισης περιγράμματος πίνακα","viewSource":"Προβολή προέλευσης HTML","fontSize":"Μέγεθος γραμματοσειράς","systemShortcut":"Σε αυτό το πρόγραμμα πλοήγησης, η ενέργεια \"${0}\" είναι διαθέσιμη μόνο με τη χρήση μιας συντόμευσης πληκτρολογίου. Χρησιμοποιήστε τη συντόμευση ${1}.","indent":"Εσοχή","redo":"Ακύρωση αναίρεσης","strikethrough":"Διαγράμμιση","justifyFull":"Πλήρης στοίχιση","justifyCenter":"Στοίχιση στο κέντρο","hiliteColor":"Χρώμα φόντου","deleteTable":"Διαγραφή πίνακα","outdent":"Μείωση περιθωρίου","cut":"Αποκοπή","plainFormatBlock":"Στυλ παραγράφου","toggleDir":"Εναλλαγή κατεύθυνσης","bold":"Έντονα","tabIndent":"Εσοχή με το πλήκτρο Tab","justifyRight":"Στοίχιση δεξιά","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/es/FontChoice.js b/lib/dijit/_editor/nls/es/FontChoice.js
new file mode 100644 (file)
index 0000000..905a560
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-pequeño","2":"x-pequeño","formatBlock":"Formato","3":"pequeño","4":"medio","5":"grande","6":"x-grande","7":"xx-grande","fantasy":"fantasía","serif":"serif","p":"Párrafo","pre":"Preformateado","sans-serif":"sans-serif","fontName":"Font","h1":"Cabecera","h2":"Subcabecera","h3":"Sub-subcabecera","monospace":"espacio sencillo","fontSize":"Tamaño","cursive":"cursiva","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/es/LinkDialog.js b/lib/dijit/_editor/nls/es/LinkDialog.js
new file mode 100644 (file)
index 0000000..15802d7
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Descripción: ","insertImageTitle":"Propiedades de la imagen","set":"Establecer","newWindow":"Nueva ventana","topWindow":"Ventana superior","target":"Destino: ","createLinkTitle":"Propiedades del enlace","parentWindow":"Ventana padre","currentWindow":"Ventana actual","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/es/commands.js b/lib/dijit/_editor/nls/es/commands.js
new file mode 100644 (file)
index 0000000..0d189dc
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Eliminar formato","copy":"Copiar","paste":"Pegar","selectAll":"Seleccionar todo","insertOrderedList":"Lista numerada","insertTable":"Insertar/Editar tabla","print":"Imprimir","underline":"Subrayado","foreColor":"Color de primer plano","htmlToggle":"Fuente HTML","formatBlock":"Estilo de párrafo","newPage":"Nueva página","insertHorizontalRule":"Regla horizontal","delete":"Suprimir","insertUnorderedList":"Lista con viñetas","tableProp":"Propiedad de tabla","insertImage":"Insertar imagen","superscript":"Superíndice","subscript":"Subíndice","createLink":"Crear enlace","undo":"Deshacer","fullScreen":"Conmutar pantalla completa","italic":"Cursiva","fontName":"Nombre de font","justifyLeft":"Alinear izquierda","unlink":"Eliminar enlace","toggleTableBorder":"Conmutar borde de tabla","viewSource":"Ver fuente HTML","ctrlKey":"control+${0}","fontSize":"Tamaño de font","systemShortcut":"La acción \"${0}\" sólo está disponible en su navegador mediante un atajo de teclado. Utilice ${1}.","indent":"Sangría","redo":"Rehacer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinear centro","hiliteColor":"Color de segundo plano","deleteTable":"Suprimir tabla","outdent":"Anular sangría","cut":"Cortar","plainFormatBlock":"Estilo de párrafo","toggleDir":"Conmutar dirección","bold":"Negrita","tabIndent":"Sangría de tabulador","justifyRight":"Alinear derecha","appleKey":"⌘${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/fi/FontChoice.js b/lib/dijit/_editor/nls/fi/FontChoice.js
new file mode 100644 (file)
index 0000000..7107971
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-small","2":"x-small","formatBlock":"Muoto","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Kappale","pre":"Esimuotoiltu","sans-serif":"sans-serif","fontName":"Fontti","h1":"Otsikko","h2":"Alatason otsikko","h3":"Alimman tason otsikko","monospace":"monospace","fontSize":"Koko","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/fi/LinkDialog.js b/lib/dijit/_editor/nls/fi/LinkDialog.js
new file mode 100644 (file)
index 0000000..817dfe8
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Kuvaus:","insertImageTitle":"Kuvan ominaisuudet","set":"Aseta","newWindow":"Uusi ikkuna","topWindow":"Päällimmäinen ikkuna","target":"Kohde:","createLinkTitle":"Linkin ominaisuudet","parentWindow":"Pääikkuna","currentWindow":"Nykyinen ikkuna","url":"URL-osoite:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/fi/commands.js b/lib/dijit/_editor/nls/fi/commands.js
new file mode 100644 (file)
index 0000000..b67d4ae
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Poista muotoilu","copy":"Kopioi","paste":"Liitä","selectAll":"Valitse kaikki","insertOrderedList":"Numeroitu luettelo","insertTable":"Lisää taulukko/muokkaa taulukkoa","print":"Tulosta","underline":"Alleviivaus","foreColor":"Edustaväri","htmlToggle":"HTML-lähde","formatBlock":"Kappaletyyli","newPage":"Uusi sivu","insertHorizontalRule":"Vaakasuuntainen viiva","delete":"Poista","insertUnorderedList":"Numeroimaton luettelo","tableProp":"Taulukon ominaisuudet","insertImage":"Lisää kuva","superscript":"Yläindeksi","subscript":"Alaindeksi","createLink":"Luo linkki","undo":"Kumoa","fullScreen":"Vaihda koko näyttö","italic":"Kursivointi","fontName":"Fontin nimi","justifyLeft":"Tasaus vasemmalle","unlink":"Poista linkki","toggleTableBorder":"Ota taulukon kehys käyttöön/poista kehys käytöstä","viewSource":"Näytä HTML-lähde","fontSize":"Fontin koko","systemShortcut":"Toiminto \"${0}\" on käytettävissä selaimessa vain näppäimistön pikatoiminnolla. Käytä seuraavaa: ${1}.","indent":"Sisennä","redo":"Tee uudelleen","strikethrough":"Yliviivaus","justifyFull":"Tasaus","justifyCenter":"Tasaus keskelle","hiliteColor":"Taustaväri","deleteTable":"Poista taulukko","outdent":"Ulonna","cut":"Leikkaa","plainFormatBlock":"Kappaletyyli","toggleDir":"Vaihda suuntaa","bold":"Lihavointi","tabIndent":"Sarkainsisennys","justifyRight":"Tasaus oikealle","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/fr/FontChoice.js b/lib/dijit/_editor/nls/fr/FontChoice.js
new file mode 100644 (file)
index 0000000..a96fac0
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xxs","2":"xs","formatBlock":"Mise en forme","3":"s","4":"m","5":"l","6":"xl","7":"xxl","fantasy":"fantaisie","serif":"serif","p":"Paragraphe","pre":"Pré-mise en forme","sans-serif":"sans serif","fontName":"Police","h1":"En-tête","h2":"Sous-en-tête","h3":"Sous-sous-en-tête","monospace":"espacement fixe","fontSize":"Taille","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/fr/LinkDialog.js b/lib/dijit/_editor/nls/fr/LinkDialog.js
new file mode 100644 (file)
index 0000000..7094601
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Description :","insertImageTitle":"Propriétés des images","set":"Définir","newWindow":"Nouvelle fenêtre","topWindow":"Première fenêtre","target":"Cible :","createLinkTitle":"Propriétés des liens","parentWindow":"Fenêtre parent","currentWindow":"Fenêtre en cours","url":"URL :"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/fr/commands.js b/lib/dijit/_editor/nls/fr/commands.js
new file mode 100644 (file)
index 0000000..df8cb3b
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Supprimer la mise en forme","copy":"Copier","paste":"Coller","selectAll":"Sélectionner tout","insertOrderedList":"Liste numérotée","insertTable":"Insérer/Modifier un tableau","print":"Imprimer","underline":"Souligner","foreColor":"Couleur avant-plan","htmlToggle":"Source HTML","formatBlock":"Style de paragraphe","newPage":"Nouvelle page","insertHorizontalRule":"Règle horizontale","delete":"Supprimer","insertUnorderedList":"Liste à puces","tableProp":"Propriété du tableau","insertImage":"Insérer une image","superscript":"Exposant","subscript":"Indice","createLink":"Créer un lien","undo":"Annuler","fullScreen":"Basculer vers le mode plein écran","italic":"Italique","fontName":"Nom de police","justifyLeft":"Aligner à gauche","unlink":"Supprimer le lien","toggleTableBorder":"Afficher/Masquer la bordure du tableau","viewSource":"Afficher la source HTML","fontSize":"Taille de police","systemShortcut":"Action \"${0}\" uniquement disponible dans votre navigateur via un raccourci clavier. Utilisez ${1}.","indent":"Retrait","redo":"Rétablir","strikethrough":"Barrer","justifyFull":"Justifier","justifyCenter":"Aligner au centre","hiliteColor":"Couleur arrière-plan","deleteTable":"Supprimer le tableau","outdent":"Retrait négatif","cut":"Couper","plainFormatBlock":"Style de paragraphe","toggleDir":"Changer de sens","bold":"Gras","tabIndent":"Retrait de tabulation","justifyRight":"Aligner à droite","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/he/FontChoice.js b/lib/dijit/_editor/nls/he/FontChoice.js
new file mode 100644 (file)
index 0000000..37140fb
--- /dev/null
@@ -0,0 +1 @@
+({"1":"קטן ביות","2":"קטן מאוד","formatBlock":"עיצוב","3":"קטן","4":"בינוני","5":"גדול","6":"גדול מאוד","7":"גדול ביותר","fantasy":"fantasy","serif":"serif","p":"פיסקה","pre":"מעוצב מראש","sans-serif":"sans-serif","fontName":"גופן","h1":"כותרת","h2":"תת-כותרת","h3":"תת-תת-כותרת","monospace":"monospace","fontSize":"גודל","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/he/LinkDialog.js b/lib/dijit/_editor/nls/he/LinkDialog.js
new file mode 100644 (file)
index 0000000..7b75850
--- /dev/null
@@ -0,0 +1 @@
+({"text":"תיאור:","insertImageTitle":"תכונות תמונה","set":"הגדרה","newWindow":"חלון חדש","topWindow":"חלון עליון ","target":"יעד:","createLinkTitle":"תכונות קישור","parentWindow":"חלון אב","currentWindow":"חלון נוכחי ","url":"URL:‏"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/he/commands.js b/lib/dijit/_editor/nls/he/commands.js
new file mode 100644 (file)
index 0000000..75e95ab
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"סילוק עיצוב","copy":"עותק","paste":"הדבקה","selectAll":"בחירת הכל","insertOrderedList":"רשימה ממוספרת","insertTable":"הוספת/עריכת טבלה","print":"הדפסה","underline":"קו תחתי","foreColor":"צבע חזית","htmlToggle":"מקור HTML","formatBlock":"סגנון פיסקה","newPage":"דף חדש ","insertHorizontalRule":"קו אופקי","delete":"מחיקה","appleKey":"⌘${0}‎","insertUnorderedList":"רשימה עם תבליטים","tableProp":"תכונת טבלה","insertImage":"הוספת תמונה","superscript":"כתב עילי","subscript":"כתב תחתי","createLink":"יצירת קישור","undo":"ביטול פעולה","fullScreen":"מיתוג מסך מלא ","italic":"נטוי","fontName":"שם גופן","justifyLeft":"יישור לשמאל","unlink":"סילוק הקישור","toggleTableBorder":"מיתוג גבול טבלה","viewSource":"הצגת מקור HTML ","ctrlKey":"ctrl+${0}‎","fontSize":"גופן יחסי","systemShortcut":"הפעולה \"${0}\" זמינה בדפדפן רק באמצעות קיצור דרך במקלדת. השתמשו בקיצור ${1}.","indent":"הגדלת כניסה","redo":"שחזור פעולה","strikethrough":"קו חוצה","justifyFull":"יישור דו-צדדי","justifyCenter":"יישור למרכז","hiliteColor":"צבע רקע","deleteTable":"מחיקת טבלה","outdent":"הקטנת כניסה","cut":"גזירה","plainFormatBlock":"סגנון פיסקה","toggleDir":"מיתוג כיוון","bold":"מודגש","tabIndent":"כניסת טאב","justifyRight":"יישור לימין"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/hu/FontChoice.js b/lib/dijit/_editor/nls/hu/FontChoice.js
new file mode 100644 (file)
index 0000000..7b67d13
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-kicsi","2":"x-kicsi","formatBlock":"Formátum","3":"kicsi","4":"közepes","5":"nagy","6":"x-nagy","7":"xx-nagy","fantasy":"fantázia","serif":"talpas","p":"Bekezdés","pre":"Előformázott","sans-serif":"talpatlan","fontName":"Betűtípus","h1":"Címsor","h2":"Alcím","h3":"Al-alcím","monospace":"rögzített szélességű","fontSize":"Méret","cursive":"kurzív","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/hu/LinkDialog.js b/lib/dijit/_editor/nls/hu/LinkDialog.js
new file mode 100644 (file)
index 0000000..23f765e
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Leírás:","insertImageTitle":"Kép tulajdonságai","set":"Beállítás","newWindow":"Új ablak","topWindow":"Legfelső szintű ablak","target":"Cél:","createLinkTitle":"Hivatkozás tulajdonságai","parentWindow":"Szülő ablak","currentWindow":"Aktuális ablak","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/hu/commands.js b/lib/dijit/_editor/nls/hu/commands.js
new file mode 100644 (file)
index 0000000..bd016cf
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Formázás eltávolítása","copy":"Másolás","paste":"Beillesztés","selectAll":"Összes kijelölése","insertOrderedList":"Számozott lista","insertTable":"Táblázat beszúrása/szerkesztése","print":"Nyomtatás","underline":"Aláhúzott","foreColor":"Előtérszín","htmlToggle":"HTML forrás","formatBlock":"Bekezdés stílusa","newPage":"Új oldal","insertHorizontalRule":"Vízszintes vonalzó","delete":"Törlés","insertUnorderedList":"Felsorolásjeles lista","tableProp":"Táblázat tulajdonságai","insertImage":"Kép beszúrása","superscript":"Felső index","subscript":"Alsó index","createLink":"Hivatkozás létrehozása","undo":"Visszavonás","fullScreen":"Váltás teljes képernyőre","italic":"Dőlt","fontName":"Betűtípus","justifyLeft":"Balra igazítás","unlink":"Hivatkozás eltávolítása","toggleTableBorder":"Táblázatszegély ki-/bekapcsolása","viewSource":"HTML forrás megjelenítése","fontSize":"Betűméret","systemShortcut":"A(z) \"${0}\" művelet a böngészőben csak billentyűparancs használatával érhető el. Használja a következőt: ${1}.","indent":"Behúzás","redo":"Újra","strikethrough":"Áthúzott","justifyFull":"Sorkizárás","justifyCenter":"Középre igazítás","hiliteColor":"Háttérszín","deleteTable":"Táblázat törlése","outdent":"Negatív behúzás","cut":"Kivágás","plainFormatBlock":"Bekezdés stílusa","toggleDir":"Irány váltókapcsoló","bold":"Félkövér","tabIndent":"Tab behúzás","justifyRight":"Jobbra igazítás","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/it/FontChoice.js b/lib/dijit/_editor/nls/it/FontChoice.js
new file mode 100644 (file)
index 0000000..50f2340
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-small","2":"x-small","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragrafo","pre":"Preformattato","sans-serif":"sans-serif","fontName":"Carattere","h1":"Intestazione","h2":"Sottointestazione","h3":"Sottointestazione secondaria","monospace":"spaziatura fissa","fontSize":"Dimensione","cursive":"corsivo","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/it/LinkDialog.js b/lib/dijit/_editor/nls/it/LinkDialog.js
new file mode 100644 (file)
index 0000000..ad3adef
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Descrizione:","insertImageTitle":"Proprietà immagine","set":"Imposta","newWindow":"Nuova finestra","topWindow":"Finestra superiore","target":"Destinazione:","createLinkTitle":"Proprietà collegamento","parentWindow":"Finestra padre","currentWindow":"Finestra corrente","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/it/commands.js b/lib/dijit/_editor/nls/it/commands.js
new file mode 100644 (file)
index 0000000..4abbd7e
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Rimuovi formato","copy":"Copia","paste":"Incolla","selectAll":"Seleziona tutto","insertOrderedList":"Elenco numerato","insertTable":"Inserisci/Modifica tabella","print":"Stampa","underline":"Sottolinea","foreColor":"Colore primo piano","htmlToggle":"Origine HTML","formatBlock":"Stile paragrafo","newPage":"Nuova pagina","insertHorizontalRule":"Righello orizzontale","delete":"Elimina","insertUnorderedList":"Elenco puntato","tableProp":"Proprietà tabella","insertImage":"Inserisci immagine","superscript":"Apice","subscript":"Pedice","createLink":"Crea collegamento","undo":"Annulla","fullScreen":"Attiva/Disattiva schermo intero","italic":"Corsivo","fontName":"Nome carattere","justifyLeft":"Allinea a sinistra","unlink":"Rimuovi collegamento","toggleTableBorder":"Attiva/Disattiva bordo tabella","viewSource":"Visualizza origine HTML","fontSize":"Dimensione carattere","systemShortcut":"La azione \"${0}\" è disponibile solo nel browser tramite un tasto di scelta rapida. Utilizzare ${1}.","indent":"Rientro","redo":"Ripristina","strikethrough":"Barrato","justifyFull":"Giustifica","justifyCenter":"Allinea al centro","hiliteColor":"Colore sfondo","deleteTable":"Elimina tabella","outdent":"Annulla rientro","cut":"Taglia","plainFormatBlock":"Stile paragrafo","toggleDir":"Attiva/Disattiva direzione","bold":"Grassetto","tabIndent":"Rientro tabulazione","justifyRight":"Allinea a destra","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ja/FontChoice.js b/lib/dijit/_editor/nls/ja/FontChoice.js
new file mode 100644 (file)
index 0000000..6083ab3
--- /dev/null
@@ -0,0 +1 @@
+({"1":"超極小","2":"極小","formatBlock":"フォーマット","3":"小","4":"標準","5":"大","6":"特大","7":"超特大","fantasy":"fantasy","serif":"serif","p":"段落","pre":"事前フォーマット済み","sans-serif":"sans-serif","fontName":"フォント","h1":"見出し","h2":"副見出し","h3":"副見出しの副見出し","monospace":"monospace","fontSize":"サイズ","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ja/LinkDialog.js b/lib/dijit/_editor/nls/ja/LinkDialog.js
new file mode 100644 (file)
index 0000000..815f508
--- /dev/null
@@ -0,0 +1 @@
+({"text":"説明:","insertImageTitle":"イメージ・プロパティー","set":"設定","newWindow":"新規ウィンドウ","topWindow":"最上位ウィンドウ","target":"ターゲット:","createLinkTitle":"リンク・プロパティー","parentWindow":"親ウィンドウ","currentWindow":"現行ウィンドウ","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ja/commands.js b/lib/dijit/_editor/nls/ja/commands.js
new file mode 100644 (file)
index 0000000..618746e
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"形式の除去","copy":"コピー","paste":"貼り付け","selectAll":"すべて選択","insertOrderedList":"番号付きリスト","insertTable":"テーブルの挿入/編集","print":"印刷","underline":"下線","foreColor":"前景色","htmlToggle":"HTML ソース","formatBlock":"段落スタイル","newPage":"新しいページ","insertHorizontalRule":"水平罫線","delete":"削除","insertUnorderedList":"黒丸付きリスト","tableProp":"テーブルプロパティ","insertImage":"イメージの挿入","superscript":"上付き文字","subscript":"下付き文字","createLink":"リンクの作成","undo":"元に戻す","fullScreen":"全画面表示に切り替え","italic":"斜体","fontName":"フォント名","justifyLeft":"左揃え","unlink":"リンクの削除","toggleTableBorder":"テーブルボーダーの切り替え","viewSource":"HTML ソースの表示","fontSize":"フォントサイズ","systemShortcut":"\"${0}\" アクションを使用できるのは、ブラウザーでキーボードショートカットを使用する場合のみです。 ${1} を使用してください。","indent":"インデント","redo":"やり直し","strikethrough":"取り消し線","justifyFull":"両端揃え","justifyCenter":"中央揃え","hiliteColor":"背景色","deleteTable":"テーブルの削除","outdent":"アウトデント","cut":"切り取り","plainFormatBlock":"段落スタイル","toggleDir":"方向の切り替え","bold":"太字","tabIndent":"タブインデント","justifyRight":"右揃え","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ko/FontChoice.js b/lib/dijit/_editor/nls/ko/FontChoice.js
new file mode 100644 (file)
index 0000000..fda7337
--- /dev/null
@@ -0,0 +1 @@
+({"1":"가장 작게","2":"조금 작게","formatBlock":"서식","3":"작게","4":"중간","5":"크게","6":"조금 크게","7":"가장 크게","fantasy":"fantasy","serif":"serif","p":"단락","pre":"서식이 지정됨","sans-serif":"sans-serif","fontName":"글꼴","h1":"제목","h2":"부제목","h3":"하위 부제목","monospace":"monospace","fontSize":"크기","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ko/LinkDialog.js b/lib/dijit/_editor/nls/ko/LinkDialog.js
new file mode 100644 (file)
index 0000000..1f46bd7
--- /dev/null
@@ -0,0 +1 @@
+({"text":"설명:","insertImageTitle":"이미지 특성","set":"설정","newWindow":"새 창","topWindow":"최상위 창","target":"대상:","createLinkTitle":"링크 특성","parentWindow":"상위 창","currentWindow":"현재 창","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ko/commands.js b/lib/dijit/_editor/nls/ko/commands.js
new file mode 100644 (file)
index 0000000..4c8f954
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"형식 제거","copy":"복사","paste":"붙여넣기","selectAll":"모두 선택","insertOrderedList":"번호 목록","insertTable":"테이블 삽입/편집","print":"인쇄","underline":"밑줄","foreColor":"전경색","htmlToggle":"HTML 소스","formatBlock":"단락 스타일","newPage":"새 페이지","insertHorizontalRule":"수평 자","delete":"삭제","insertUnorderedList":"글머리표 목록","tableProp":"테이블 특성","insertImage":"이미지 삽입","superscript":"위첨자","subscript":"아래첨자","createLink":"링크 작성","undo":"실행 취소","fullScreen":"토글 전체 화면","italic":"기울임체","fontName":"글꼴 이름","justifyLeft":"왼쪽 맞춤","unlink":"링크 제거","toggleTableBorder":"토글 테이블 테두리","viewSource":"HTML 소스 보기","fontSize":"글꼴 크기","systemShortcut":"\"${0}\" 조치는 브라우저에서 키보드 단축키를 이용해서만 사용할 수 있습니다. ${1}을(를) 사용하십시오.","indent":"들여쓰기","redo":"다시 실행","strikethrough":"취소선","justifyFull":"양쪽 맞춤","justifyCenter":"가운데 맞춤","hiliteColor":"배경색","deleteTable":"테이블 삭제","outdent":"내어쓰기","cut":"잘라내기","plainFormatBlock":"단락 스타일","toggleDir":"토글 방향","bold":"굵은체","tabIndent":"탭 들여쓰기","justifyRight":"오른쪽 맞춤","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/nb/FontChoice.js b/lib/dijit/_editor/nls/nb/FontChoice.js
new file mode 100644 (file)
index 0000000..b1ad6ab
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-liten","2":"x-liten","formatBlock":"Format","3":"liten","4":"middels","5":"stor","6":"x-stor","7":"xx-stor","fantasy":"fantasi","serif":"serif","p":"Avsnitt","pre":"Forhåndsformatert","sans-serif":"sans-serif","fontName":"Skrift","h1":"Overskrift","h2":"Undertittel","h3":"Under-undertittel","monospace":"monospace","fontSize":"Størrelse","cursive":"kursiv","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/nb/LinkDialog.js b/lib/dijit/_editor/nls/nb/LinkDialog.js
new file mode 100644 (file)
index 0000000..5a5653c
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Beskrivelse:","insertImageTitle":"Bildeegenskaper","set":"Definer","newWindow":"Nytt vindu","topWindow":"Øverste vindu","target":"Mål:","createLinkTitle":"Koblingsegenskaper","parentWindow":"Overordnet vindu","currentWindow":"Gjeldende vindu","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/nb/commands.js b/lib/dijit/_editor/nls/nb/commands.js
new file mode 100644 (file)
index 0000000..d1f215f
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Fjern format","copy":"Kopier","paste":"Lim inn","selectAll":"Velg alle","insertOrderedList":"Nummerert liste","insertTable":"Sett inn/rediger tabell","print":"Skriv ut","underline":"Understreking","foreColor":"Forgrunnsfarge","htmlToggle":"HTML-kilde","formatBlock":"Avsnittsstil","newPage":"Ny side","insertHorizontalRule":"Vannrett strek","delete":"Slett","insertUnorderedList":"Punktliste","tableProp":"Tabellegenskap","insertImage":"Sett inn bilde","superscript":"Hevet skrift","subscript":"Senket skrift","createLink":"Opprett kobling","undo":"Angre","fullScreen":"Slå på/av full skjerm","italic":"Kursiv","fontName":"Skriftnavn","justifyLeft":"Venstrejuster","unlink":"Fjern kobling","toggleTableBorder":"Bytt tabellkant","viewSource":"Vis HTML-kilde","fontSize":"Skriftstørrelse","systemShortcut":"Handlingen \"${0}\" er bare tilgjengelig i nettleseren ved hjelp av en tastatursnarvei. Bruk ${1}.","indent":"Innrykk","redo":"Gjør om","strikethrough":"Gjennomstreking","justifyFull":"Juster","justifyCenter":"Midtstill","hiliteColor":"Bakgrunnsfarge","deleteTable":"Slett tabell","outdent":"Fjern innrykk","cut":"Klipp ut","plainFormatBlock":"Avsnittsstil","toggleDir":"Bytt retning","bold":"Fet","tabIndent":"Tabulatorinnrykk","justifyRight":"Høyrejuster","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/nl/FontChoice.js b/lib/dijit/_editor/nls/nl/FontChoice.js
new file mode 100644 (file)
index 0000000..d3d4f19
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-klein","2":"x-klein","formatBlock":"Opmaak","3":"klein","4":"gemiddeld","5":"groot","6":"x-groot","7":"xx-groot","fantasy":"fantasy","serif":"serif","p":"Alinea","pre":"Vooraf opgemaakt","sans-serif":"sans-serif","fontName":"Lettertype","h1":"Kop","h2":"Subkop","h3":"Sub-subkop","monospace":"monospace","fontSize":"Grootte","cursive":"cursief","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/nl/LinkDialog.js b/lib/dijit/_editor/nls/nl/LinkDialog.js
new file mode 100644 (file)
index 0000000..5f4ba58
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Beschrijving:","insertImageTitle":"Afbeeldingseigenschappen","set":"Instellen","newWindow":"Nieuw venster","topWindow":"Bovenste venster","target":"Doel:","createLinkTitle":"Linkeigenschappen","parentWindow":"Hoofdvenster","currentWindow":"Huidig venster","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/nl/commands.js b/lib/dijit/_editor/nls/nl/commands.js
new file mode 100644 (file)
index 0000000..ebc7c99
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Opmaak verwijderen","copy":"Kopiëren","paste":"Plakken","selectAll":"Alles selecteren","insertOrderedList":"Genummerde lijst","insertTable":"Tabel invoegen/bewerken","print":"Afdrukken","underline":"Onderstrepen","foreColor":"Voorgrondkleur","htmlToggle":"HTML-bron","formatBlock":"Alineastijl","newPage":"Nieuwe pagina","insertHorizontalRule":"Horizontale liniaal","delete":"Wissen","insertUnorderedList":"Lijst met opsommingstekens","tableProp":"Tabeleigenschap","insertImage":"Afbeelding invoegen","superscript":"Superscript","subscript":"Subscript","createLink":"Link maken","undo":"Ongedaan maken","fullScreen":"Volledig scherm in-/uitschakelen","italic":"Cursief","fontName":"Lettertype","justifyLeft":"Links uitlijnen","unlink":"Link verwijderen","toggleTableBorder":"Tabelkader wijzigen","viewSource":"HTML-bron bekijken","fontSize":"Lettergrootte","systemShortcut":"De actie \"${0}\" is alleen beschikbaar in uw browser via een sneltoetscombinatie. Gebruik ${1}.","indent":"Inspringen","redo":"Opnieuw","strikethrough":"Doorhalen","justifyFull":"Uitvullen","justifyCenter":"Centreren","hiliteColor":"Achtergrondkleur","deleteTable":"Tabel wissen","outdent":"Uitspringen","cut":"Knippen","plainFormatBlock":"Alineastijl","toggleDir":"Schrijfrichting wijzigen","bold":"Vet","tabIndent":"Inspringen","justifyRight":"Rechts uitlijnen","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/pl/FontChoice.js b/lib/dijit/_editor/nls/pl/FontChoice.js
new file mode 100644 (file)
index 0000000..8beb6bf
--- /dev/null
@@ -0,0 +1 @@
+({"1":"najmniejsza","2":"mniejsza","formatBlock":"Format","3":"mała","4":"średnia","5":"duża","6":"większa","7":"największa","fantasy":"fantazyjna","serif":"szeryfowa","p":"Akapit","pre":"Wstępnie sformatowane","sans-serif":"bezszeryfowa","fontName":"Czcionka","h1":"Nagłówek","h2":"Nagłówek 2-go poziomu","h3":"Nagłówek 3-go poziomu","monospace":"czcionka o stałej szerokości","fontSize":"Wielkość","cursive":"kursywa","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/pl/LinkDialog.js b/lib/dijit/_editor/nls/pl/LinkDialog.js
new file mode 100644 (file)
index 0000000..86f71e5
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Opis:","insertImageTitle":"Właściwości obrazu","set":"Ustaw","newWindow":"Nowe okno","topWindow":"Okno najwyższego poziomu","target":"Cel:","createLinkTitle":"Właściwości odsyłacza","parentWindow":"Okno macierzyste","currentWindow":"Bieżące okno","url":"Adres URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/pl/commands.js b/lib/dijit/_editor/nls/pl/commands.js
new file mode 100644 (file)
index 0000000..8ee8acf
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Usuń formatowanie","copy":"Kopiuj","paste":"Wklej","selectAll":"Wybierz wszystko","insertOrderedList":"Lista numerowana","insertTable":"Wstaw/edytuj tabelę","print":"Drukuj","underline":"Podkreślenie","foreColor":"Kolor pierwszego planu","htmlToggle":"Źródło HTML","formatBlock":"Styl akapitu","newPage":"Nowa strona","insertHorizontalRule":"Linia pozioma","delete":"Usuń","insertUnorderedList":"Lista wypunktowana","tableProp":"Właściwość tabeli","insertImage":"Wstaw obraz","superscript":"Indeks górny","subscript":"Indeks dolny","createLink":"Utwórz odsyłacz","undo":"Cofnij","fullScreen":"Przełącz pełny ekran","italic":"Kursywa","fontName":"Nazwa czcionki","justifyLeft":"Wyrównaj do lewej","unlink":"Usuń odsyłacz","toggleTableBorder":"Przełącz ramkę tabeli","viewSource":"Wyświetl kod źródłowy HTML","ctrlKey":"Ctrl+${0}","fontSize":"Wielkość czcionki","systemShortcut":"Działanie ${0} jest dostępne w tej przeglądarce wyłącznie przy użyciu skrótu klawiaturowego. Należy użyć klawiszy ${1}.","indent":"Wcięcie","redo":"Ponów","strikethrough":"Przekreślenie","justifyFull":"Wyrównaj do lewej i prawej","justifyCenter":"Wyrównaj do środka","hiliteColor":"Kolor tła","deleteTable":"Usuń tabelę","outdent":"Usuń wcięcie","cut":"Wytnij","plainFormatBlock":"Styl akapitu","toggleDir":"Przełącz kierunek","bold":"Pogrubienie","tabIndent":"Wcięcie o tabulator","justifyRight":"Wyrównaj do prawej","appleKey":"⌘${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/pt-pt/FontChoice.js b/lib/dijit/_editor/nls/pt-pt/FontChoice.js
new file mode 100644 (file)
index 0000000..dec5354
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xxs","2":"xs","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"xl","7":"xxl","fantasy":"fantasy","serif":"serif","p":"Parágrafo","pre":"Pré-formatado","sans-serif":"sans-serif","fontName":"Tipo de letra","h1":"Título","h2":"Sub-título","h3":"Sub-subtítulo","monospace":"monospace","fontSize":"Tamanho","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/pt-pt/LinkDialog.js b/lib/dijit/_editor/nls/pt-pt/LinkDialog.js
new file mode 100644 (file)
index 0000000..4499fa7
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Descrição:","insertImageTitle":"Propriedades da imagem","set":"Definir","newWindow":"Nova janela","topWindow":"Janela superior","target":"Destino:","createLinkTitle":"Propriedades da ligação","parentWindow":"Janela ascendente","currentWindow":"Janela actual","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/pt-pt/commands.js b/lib/dijit/_editor/nls/pt-pt/commands.js
new file mode 100644 (file)
index 0000000..fbf5182
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Remover formato","copy":"Copiar","paste":"Colar","selectAll":"Seleccionar tudo","insertOrderedList":"Lista numerada","insertTable":"Inserir/Editar tabela","print":"Imprimir","underline":"Sublinhado","foreColor":"Cor de primeiro plano","htmlToggle":"Origem HTML","formatBlock":"Estilo de parágrafo","newPage":"Nova página","insertHorizontalRule":"Régua horizontal","delete":"Eliminar","insertUnorderedList":"Lista marcada","tableProp":"Propriedades da tabela","insertImage":"Inserir imagem","superscript":"Superior à linha","subscript":"Inferior à linha","createLink":"Criar ligação","undo":"Anular","fullScreen":"Alternar ecrã completo","italic":"Itálico","fontName":"Nome do tipo de letra","justifyLeft":"Alinhar à esquerda","unlink":"Remover ligação","toggleTableBorder":"Alternar contorno da tabela","viewSource":"Ver origem HTML","fontSize":"Tamanho do tipo de letra","systemShortcut":"A acção \"${0}\" apenas está disponível no navegador utilizando um atalho de teclado. Utilize ${1}.","indent":"Indentar","redo":"Repetir","strikethrough":"Rasurado","justifyFull":"Justificar","justifyCenter":"Alinhar ao centro","hiliteColor":"Cor de segundo plano","deleteTable":"Eliminar tabela","outdent":"Recuar","cut":"Cortar","plainFormatBlock":"Estilo de parágrafo","toggleDir":"Alternar direcção","bold":"Negrito","tabIndent":"Indentar com a tecla Tab","justifyRight":"Alinhar à direita","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/pt/FontChoice.js b/lib/dijit/_editor/nls/pt/FontChoice.js
new file mode 100644 (file)
index 0000000..50de220
--- /dev/null
@@ -0,0 +1 @@
+({"1":"extra-extra-pequeno","2":"extra-pequeno","formatBlock":"Formatar","3":"pequena","4":"médio","5":"grande","6":"extra-grande","7":"extra-extra-grande","fantasy":"fantasy","serif":"serif","p":"Parágrafo","pre":"Pré-formatado","sans-serif":"sans-serif","fontName":"Fonte","h1":"Título","h2":"Subtítulo","h3":"Sub-subtítulo","monospace":"espaço simples","fontSize":"Tamanho","cursive":"cursiva","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/pt/LinkDialog.js b/lib/dijit/_editor/nls/pt/LinkDialog.js
new file mode 100644 (file)
index 0000000..0a55795
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Descrição:","insertImageTitle":"Propriedades de Imagem","set":"Definir","newWindow":"Nova Janela","topWindow":"Primeira Janela","target":"Destino:","createLinkTitle":"Propriedades de Link","parentWindow":"Janela Pai","currentWindow":"Janela Atual","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/pt/commands.js b/lib/dijit/_editor/nls/pt/commands.js
new file mode 100644 (file)
index 0000000..271c6cf
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Remover Formato","copy":"Copiar","paste":"Colar","selectAll":"Selecionar Todos","insertOrderedList":"Lista Numerada","insertTable":"Inserir/Editar Tabela","print":"Impressão","underline":"Sublinhado","foreColor":"Cor do Primeiro Plano","htmlToggle":"Origem HTML","formatBlock":"Estilo de Parágrafo","newPage":"Nova Página","insertHorizontalRule":"Régua Horizontal","delete":"Excluir","insertUnorderedList":"Lista com Marcadores","tableProp":"Propriedade da Tabela","insertImage":"Inserir Imagem","superscript":"Sobrescrito","subscript":"Subscrito","createLink":"Criar Link","undo":"Desfazer","fullScreen":"Comutar Tela Cheia","italic":"Itálico","fontName":"Nome da Fonte","justifyLeft":"Alinhar pela Esquerda","unlink":"Remover Link","toggleTableBorder":"Alternar Moldura da Tabela","viewSource":"Visualizar Origem HTML","fontSize":"Tamanho da Fonte","systemShortcut":"A ação \"${0}\" está disponível em seu navegador apenas usando um atalho do teclado. Use ${1}.","indent":"Recuar","redo":"Refazer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinhar pelo Centro","hiliteColor":"Cor de segundo plano","deleteTable":"Excluir Tabela","outdent":"Não-chanfrado","cut":"Recortar","plainFormatBlock":"Estilo de Parágrafo","toggleDir":"Comutar Direção","bold":"Negrito","tabIndent":"Recuo de Guia","justifyRight":"Alinhar pela Direita","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ro/FontChoice.js b/lib/dijit/_editor/nls/ro/FontChoice.js
new file mode 100644 (file)
index 0000000..4806cb3
--- /dev/null
@@ -0,0 +1 @@
+({"noFormat":"Fără","1":"xxs (xx-small)","2":"xs (x-small)","formatBlock":"Format","3":"s (small)","4":"m (medium)","5":"l (large)","6":"xl (x-large)","7":"xxl (xx-large)","fantasy":"fantasy","serif":"serif","p":"Paragraf","pre":"Preformatat","sans-serif":"sans-serif","fontName":"Font","h1":"Titlu","h2":"Subtitlu","h3":"Sub-subtitlu","monospace":"monospace","fontSize":"Dimensiune","cursive":"cursive"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ro/LinkDialog.js b/lib/dijit/_editor/nls/ro/LinkDialog.js
new file mode 100644 (file)
index 0000000..c3cfb39
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Descriere:","insertImageTitle":"Proprietăţi imagine","set":"Setare","newWindow":"Fereastră nouă","topWindow":"Fereastra cea mai de sus","target":"Ţintă:","createLinkTitle":"Proprietăţi legătură","parentWindow":"Fereastra părinte","currentWindow":"Fereastra curentă","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ro/commands.js b/lib/dijit/_editor/nls/ro/commands.js
new file mode 100644 (file)
index 0000000..f73017c
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Înlăturare format","copy":"Copiere","paste":"Lipire","selectAll":"Selectare toate","insertOrderedList":"Listă numerotată","insertTable":"Inserare/Editare tabelă","print":"Tipărire","underline":"Subliniere","foreColor":"Culoare prim plan","htmlToggle":"Sursă HTML","formatBlock":"Stil paragraf","newPage":"Pagină nouă","insertHorizontalRule":"Regulă orizontală","delete":"Ştergere","insertUnorderedList":"Listă cu marcaje","tableProp":"Proprietăţi tabelă","insertImage":"Inserare imagine","superscript":"Scriere indice superior","subscript":"Scriere indice inferior","createLink":"Creare legătură","undo":"Anulare acţiune","fullScreen":"Comutare ecran complet","italic":"Cursive","fontName":"Nume font","justifyLeft":"Aliniere la stânga","unlink":"Înlăturare legătură","toggleTableBorder":"Comutare bordură tabelă","viewSource":"Vizualizare sursă HTML","fontSize":"Dimensiune font","systemShortcut":"Acţiunea \"${0}\" este disponibilă în browser folosind o scurtătură de la tastatură. Folosiţi ${1}.","indent":"Indentare","redo":"Repetare acţiune","strikethrough":"Suprascriere linie","justifyFull":"Aliniere","justifyCenter":"Aliniere pe centru","hiliteColor":"Culoare fundal","deleteTable":"Ştergere tabelă","outdent":"Outdentare","cut":"Tăiere","plainFormatBlock":"Stil paragraf","toggleDir":"Comutare direcţie","bold":"Aldine","tabIndent":"Indentare cu tab","justifyRight":"Aliniere la dreapta","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ru/FontChoice.js b/lib/dijit/_editor/nls/ru/FontChoice.js
new file mode 100644 (file)
index 0000000..bdc1043
--- /dev/null
@@ -0,0 +1 @@
+({"1":"самый маленький","2":"очень маленький","formatBlock":"Формат","3":"маленький","4":"средний","5":"большой","6":"очень большой","7":"самый большой","fantasy":"артистический","serif":"с засечками","p":"Абзац","pre":"Заранее отформатированный","sans-serif":"без засечек","fontName":"Шрифт","h1":"Заголовок","h2":"Подзаголовок","h3":"Вложенный подзаголовок","monospace":"непропорциональный","fontSize":"Размер","cursive":"курсив","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ru/LinkDialog.js b/lib/dijit/_editor/nls/ru/LinkDialog.js
new file mode 100644 (file)
index 0000000..ddc2f7b
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Описание:","insertImageTitle":"Свойства изображения","set":"Задать","newWindow":"Новое окно","topWindow":"Окно верхнего уровня","target":"Целевой объект:","createLinkTitle":"Свойства ссылки","parentWindow":"Родительское окно","currentWindow":"Текущее окно","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/ru/commands.js b/lib/dijit/_editor/nls/ru/commands.js
new file mode 100644 (file)
index 0000000..bbc7617
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Удалить формат","copy":"Копировать","paste":"Вставить","selectAll":"Выбрать все","insertOrderedList":"Нумерованный список","insertTable":"Вставить/изменить таблицу","print":"Печать","underline":"Подчеркивание","foreColor":"Цвет текста","htmlToggle":"Код HTML","formatBlock":"Стиль абзаца","newPage":"Создать страницу","insertHorizontalRule":"Горизонтальная линейка","delete":"Удалить","insertUnorderedList":"Список с маркерами","tableProp":"Свойства таблицы","insertImage":"Вставить изображение","superscript":"Верхний индекс","subscript":"Нижний индекс","createLink":"Создать ссылку","undo":"Отменить","fullScreen":"Переключить полноэкранный режим","italic":"Курсив","fontName":"Название шрифта","justifyLeft":"По левому краю","unlink":"Удалить ссылку","toggleTableBorder":"Переключить рамку таблицы","viewSource":"Показать исходный код HTML","fontSize":"Размер шрифта","systemShortcut":"Действие \"${0}\" можно выполнить в браузере только путем нажатия клавиш ${1}.","indent":"Отступ","redo":"Повторить","strikethrough":"Перечеркивание","justifyFull":"По ширине","justifyCenter":"По центру","hiliteColor":"Цвет фона","deleteTable":"Удалить таблицу","outdent":"Втяжка","cut":"Вырезать","plainFormatBlock":"Стиль абзаца","toggleDir":"Изменить направление","bold":"Полужирный","tabIndent":"Табуляция","justifyRight":"По правому краю","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/sk/FontChoice.js b/lib/dijit/_editor/nls/sk/FontChoice.js
new file mode 100644 (file)
index 0000000..b7415e8
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-small","2":"x-small","formatBlock":"Formát","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Odsek","pre":"Predformátované","sans-serif":"sans-serif","fontName":"Písmo","h1":"Hlavička","h2":"Podhlavička","h3":"Pod-podhlavička","monospace":"monospace","fontSize":"Veľkosť","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/sk/LinkDialog.js b/lib/dijit/_editor/nls/sk/LinkDialog.js
new file mode 100644 (file)
index 0000000..75d0f88
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Opis:","insertImageTitle":"Vlastnosti obrázka ","set":"Nastaviť","newWindow":"Nové okno ","topWindow":"Najvrchnejšie okno ","target":"Cieľ:","createLinkTitle":"Pripojiť vlastnosti","parentWindow":"Rodičovské okno ","currentWindow":"Aktuálne okno ","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/sk/commands.js b/lib/dijit/_editor/nls/sk/commands.js
new file mode 100644 (file)
index 0000000..a59975e
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Odstrániť formát","copy":"Kopírovať","paste":"Nalepiť","selectAll":"Vybrať všetko","insertOrderedList":"Číslovaný zoznam","insertTable":"Vložiť/upraviť tabuľku","print":"Tlačiť","underline":"Podčiarknuť","foreColor":"Farba popredia","htmlToggle":"Zdroj HTML","formatBlock":"Štýl odseku","newPage":"Nová stránka ","insertHorizontalRule":"Horizontálna čiara","delete":"Vymazať","insertUnorderedList":"Zoznam s odrážkami","tableProp":"Vlastnosť tabuľky","insertImage":"Vložiť obrázok","superscript":"Horný index","subscript":"Dolný index","createLink":"Vytvoriť prepojenie","undo":"Vrátiť späť","fullScreen":"Zobraziť na celú obrazovku","italic":"Kurzíva","fontName":"Názov písma","justifyLeft":"Zarovnať doľava","unlink":"Odstrániť prepojenie","toggleTableBorder":"Prepnúť rámček tabuľky","viewSource":"Zobraziť zdrojový kód HTML ","fontSize":"Veľkosť písma","systemShortcut":"Akcia \"${0}\" je vo vašom prehliadači dostupná len s použitím klávesovej skratky. Použite ${1}.","indent":"Odsadiť","redo":"Znova vykonať","strikethrough":"Prečiarknuť","justifyFull":"Zarovnať podľa okraja","justifyCenter":"Zarovnať na stred","hiliteColor":"Farba pozadia","deleteTable":"Vymazať tabuľku","outdent":"Predsadiť","cut":"Vystrihnúť","plainFormatBlock":"Štýl odseku","toggleDir":"Prepnúť smer","bold":"Tučné písmo","tabIndent":"Odsadenie tabulátora","justifyRight":"Zarovnať doprava","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/sl/FontChoice.js b/lib/dijit/_editor/nls/sl/FontChoice.js
new file mode 100644 (file)
index 0000000..2dcfed1
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-majhno","2":"x-majhno","formatBlock":"Oblika","3":"majhno","4":"srednje","5":"veliko","6":"x-veliko","7":"xx-veliko","fantasy":"fantasy","serif":"serif","p":"Odstavek","pre":"Vnaprej oblikovano","sans-serif":"sans-serif","fontName":"Pisava","h1":"Naslov","h2":"Podnaslov","h3":"Pod podnaslov","monospace":"monospace","fontSize":"Velikost","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/sl/LinkDialog.js b/lib/dijit/_editor/nls/sl/LinkDialog.js
new file mode 100644 (file)
index 0000000..bad7dd6
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Opis:","insertImageTitle":"Lastnosti slike","set":"Nastavi","newWindow":"Novo okno","topWindow":"Najvišje okno","target":"Cilj:","createLinkTitle":"Lastnosti povezave","parentWindow":"Nadrejeno okno","currentWindow":"Trenutno okno","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/sl/commands.js b/lib/dijit/_editor/nls/sl/commands.js
new file mode 100644 (file)
index 0000000..72431aa
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Odstrani obliko zapisa","copy":"Prekopiraj","paste":"Prilepi","selectAll":"Izberi vse","insertOrderedList":"Oštevilčen seznam","insertTable":"Vstavi/uredi tabelo","print":"Natisni","underline":"Podčrtano","foreColor":"Barva ospredja","htmlToggle":"Izvorna koda HTML","formatBlock":"Slog odstavka","newPage":"Nova stran","insertHorizontalRule":"Vodoravno ravnilo","delete":"Izbriši","insertUnorderedList":"Naštevni seznam","tableProp":"Lastnost tabele","insertImage":"Vstavi sliko","superscript":"Nadpisano","subscript":"Podpisano","createLink":"Ustvari povezavo","undo":"Razveljavi","fullScreen":"Preklopi na celozaslonski način","italic":"Ležeče","fontName":"Ime pisave","justifyLeft":"Poravnaj levo","unlink":"Odstrani povezavo","toggleTableBorder":"Preklopi na rob tabele","viewSource":"Prikaži izvorno kodo HTML","fontSize":"Velikost pisave","systemShortcut":"Dejanje \"${0}\" lahko v vašem brskalniku uporabite samo z bližnjico na tipkovnici. Uporabite ${1}.","indent":"Zamik","redo":"Znova uveljavi","strikethrough":"Prečrtano","justifyFull":"Obojestranska poravnava","justifyCenter":"Poravnaj na sredino","hiliteColor":"Barva ozadja","deleteTable":"Izbriši tabelo","outdent":"Viseč odstavek","cut":"Izreži","plainFormatBlock":"Slog odstavka","toggleDir":"Preklopi na usmeritev","bold":"Krepko","tabIndent":"Zamik tabulatorja","justifyRight":"Poravnaj desno","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/sv/FontChoice.js b/lib/dijit/_editor/nls/sv/FontChoice.js
new file mode 100644 (file)
index 0000000..a778cc8
--- /dev/null
@@ -0,0 +1 @@
+({"1":"mycket, mycket litet","2":"mycket litet","formatBlock":"Format","3":"litet","4":"medelstort","5":"stort","6":"extra stort","7":"extra extra stort","fantasy":"fantasy","serif":"serif","p":"Stycke","pre":"Förformaterat","sans-serif":"sans-serif","fontName":"Teckensnitt","h1":"Rubrik","h2":"Underrubrik","h3":"Underunderrubrik","monospace":"monospace","fontSize":"Storlek","cursive":"kursivt","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/sv/LinkDialog.js b/lib/dijit/_editor/nls/sv/LinkDialog.js
new file mode 100644 (file)
index 0000000..80a1259
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Beskrivning:","insertImageTitle":"Bildegenskaper","set":"Ange","newWindow":"nytt fönster","topWindow":"översta fönstret","target":"Mål:","createLinkTitle":"Länkegenskaper","parentWindow":"överordnat fönster","currentWindow":"aktuellt fönster","url":"URL-adress:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/sv/commands.js b/lib/dijit/_editor/nls/sv/commands.js
new file mode 100644 (file)
index 0000000..b571e82
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Ta bort format","copy":"Kopiera","paste":"Klistra in","selectAll":"Markera allt","insertOrderedList":"Numrerad lista","insertTable":"Infoga/redigera tabell","print":"Skriv ut","underline":"Understrykning","foreColor":"Förgrundsfärg","htmlToggle":"HTML-källkod","formatBlock":"Styckeformat","newPage":"Ny sida","insertHorizontalRule":"Horisontell linjal","delete":"Ta bort","appleKey":"⌘+${0}","insertUnorderedList":"Punktlista","tableProp":"Tabellegenskap","insertImage":"Infoga bild","superscript":"Upphöjt","subscript":"Nedsänkt","createLink":"Skapa länk","undo":"Ångra","fullScreen":"Växla helskärm","italic":"Kursiv","fontName":"Teckensnittsnamn","justifyLeft":"Vänsterjustera","unlink":"Ta bort länk","toggleTableBorder":"Aktivera/avaktivera tabellram","viewSource":"Visa HTML-kod","ctrlKey":"Ctrl+${0}","fontSize":"Teckenstorlek","systemShortcut":"Åtgärden \"${0}\" är endast tillgänglig i webbläsaren med hjälp av ett kortkommando. Använd ${1}.","indent":"Indrag","redo":"Gör om","strikethrough":"Genomstruken","justifyFull":"Marginaljustera","justifyCenter":"Centrera","hiliteColor":"Bakgrundsfärg","deleteTable":"Ta bort tabell","outdent":"Utdrag","cut":"Klipp ut","plainFormatBlock":"Styckeformat","toggleDir":"Växla riktning","bold":"Fetstil","tabIndent":"Tabbindrag","justifyRight":"Högerjustera"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/th/FontChoice.js b/lib/dijit/_editor/nls/th/FontChoice.js
new file mode 100644 (file)
index 0000000..c3e8f81
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-small","2":"x-small","formatBlock":"รูปแบบ","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"ย่อหน้า","pre":"การกำหนดรูปแบบล่วงหน้า","sans-serif":"sans-serif","fontName":"ฟอนต์","h1":"ส่วนหัว","h2":"ส่วนหัวย่อย","h3":"ส่วนย่อยของส่วนหัวย่อย","monospace":"monospace","fontSize":"ขนาด","cursive":"cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/th/LinkDialog.js b/lib/dijit/_editor/nls/th/LinkDialog.js
new file mode 100644 (file)
index 0000000..d571c53
--- /dev/null
@@ -0,0 +1 @@
+({"text":"รายละเอียด","insertImageTitle":"คุณสมบัติอิมเมจ","set":"ตั้งค่า","newWindow":"หน้าต่างใหม่","topWindow":"หน้าต่างบนสุด","target":"เป้าหมาย:","createLinkTitle":"คุณสมบัติลิงก์","parentWindow":"หน้าต่างหลัก","currentWindow":"หน้าต่างปัจจุบัน","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/th/commands.js b/lib/dijit/_editor/nls/th/commands.js
new file mode 100644 (file)
index 0000000..a98942a
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"ลบรูปแบบออก","copy":"คัดลอก","paste":"วาง","selectAll":"เลือกทั้งหมด","insertOrderedList":"ลำดับเลข","insertTable":"แทรก/แก้ไขตาราง","print":"พิมพ์","underline":"ขีดเส้นใต้","foreColor":"สีพื้นหน้า","htmlToggle":"ซอร์ส HTML","formatBlock":"ลักษณะย่อหน้า","newPage":"หน้าใหม่","insertHorizontalRule":"ไม้บรรทัดแนวนอน","delete":"ลบ","insertUnorderedList":"หัวข้อย่อย","tableProp":"คุณสมบัติตาราง","insertImage":"แทรกอิมเมจ","superscript":"ตัวยก","subscript":"ตัวห้อย","createLink":"สร้างลิงก์","undo":"เลิกทำ","fullScreen":"สลับจอภาพแบบเต็ม","italic":"ตัวเอียง","fontName":"ชื่อฟอนต์","justifyLeft":"จัดชิดซ้าย","unlink":"ลบลิงก์ออก","toggleTableBorder":"สลับเส้นขอบตาราง","viewSource":"ดูซอร์ส HTML","fontSize":"ขนาดฟอนต์","systemShortcut":"การดำเนินการ\"${0}\" ใช้งานได้เฉพาะกับเบราว์เซอร์ของคุณโดยใช้แป้นพิมพ์ลัด ใช้ ${1}","indent":"เพิ่มการเยื้อง","redo":"ทำซ้ำ","strikethrough":"ขีดทับ","justifyFull":"จัดชิดขอบ","justifyCenter":"จัดกึ่งกลาง","hiliteColor":"สีพื้นหลัง","deleteTable":"ลบตาราง","outdent":"ลดการเยื้อง","cut":"ตัด","plainFormatBlock":"ลักษณะย่อหน้า","toggleDir":"สลับทิศทาง","bold":"ตัวหนา","tabIndent":"เยื้องแท็บ","justifyRight":"จัดชิดขวา","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/tr/FontChoice.js b/lib/dijit/_editor/nls/tr/FontChoice.js
new file mode 100644 (file)
index 0000000..c9cdfea
--- /dev/null
@@ -0,0 +1 @@
+({"1":"xx-küçük","2":"x-küçük","formatBlock":"Biçim","3":"küçük","4":"orta","5":"büyük","6":"x-büyük","7":"xx-büyük","fantasy":"fantazi","serif":"serif","p":"Paragraf","pre":"Önceden Biçimlendirilmiş","sans-serif":"sans-serif","fontName":"Yazı Tipi","h1":"Başlık","h2":"Alt Başlık","h3":"Alt Alt Başlık","monospace":"tek aralıklı","fontSize":"Boyut","cursive":"el yazısı","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/tr/LinkDialog.js b/lib/dijit/_editor/nls/tr/LinkDialog.js
new file mode 100644 (file)
index 0000000..64bf3e2
--- /dev/null
@@ -0,0 +1 @@
+({"text":"Açıklama:","insertImageTitle":"Resim Özellikleri","set":"Ayarla","newWindow":"Yeni Pencere","topWindow":"En Üst Pencere","target":"Hedef:","createLinkTitle":"Bağlantı Özellikleri","parentWindow":"Üst Pencere","currentWindow":"Geçerli Pencere","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/tr/commands.js b/lib/dijit/_editor/nls/tr/commands.js
new file mode 100644 (file)
index 0000000..ed7b66d
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"Biçimi Kaldır","copy":"Kopyala","paste":"Yapıştır","selectAll":"Tümünü Seç","insertOrderedList":"Numaralı Liste","insertTable":"Tablo Ekle/Düzenle","print":"Yazdır","underline":"Altı Çizili","foreColor":"Ön Plan Rengi","htmlToggle":"HTML Kaynağı","formatBlock":"Paragraf Stili","newPage":"Yeni Sayfa","insertHorizontalRule":"Yatay Kural","delete":"Sil","insertUnorderedList":"Madde İşaretli Liste","tableProp":"Tablo Özelliği","insertImage":"Resim Ekle","superscript":"Üst Simge","subscript":"Alt Simge","createLink":"Bağlantı Oluştur","undo":"Geri Al","fullScreen":"Tam Ekranı Aç/Kapat","italic":"İtalik","fontName":"Yazı Tipi Adı","justifyLeft":"Sola Hizala","unlink":"Bağlantıyı Kaldır","toggleTableBorder":"Tablo Kenarlığını Göster/Gizle","viewSource":"HTML Kaynağını Görüntüle","fontSize":"Yazı Tipi Boyutu","systemShortcut":"\"${0}\" işlemi yalnızca tarayıcınızda bir klavye kısayoluyla birlikte kullanılabilir. Şunu kullanın: ${1}.","indent":"Girinti","redo":"Yinele","strikethrough":"Üstü Çizili","justifyFull":"Yasla","justifyCenter":"Ortaya Hizala","hiliteColor":"Arka Plan Rengi","deleteTable":"Tabloyu Sil","outdent":"Çıkıntı","cut":"Kes","plainFormatBlock":"Paragraf Stili","toggleDir":"Yönü Değiştir","bold":"Kalın","tabIndent":"Sekme Girintisi","justifyRight":"Sağa Hizala","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/zh-tw/FontChoice.js b/lib/dijit/_editor/nls/zh-tw/FontChoice.js
new file mode 100644 (file)
index 0000000..b821ec0
--- /dev/null
@@ -0,0 +1 @@
+({"1":"最小","2":"較小","formatBlock":"格式","3":"小","4":"中","5":"大","6":"較大","7":"最大","fantasy":"Fantasy","serif":"新細明體","p":"段落","pre":"預先格式化","sans-serif":"新細明體","fontName":"字型","h1":"標題","h2":"子標題","h3":"次子標題","monospace":"等寬","fontSize":"大小","cursive":"Cursive","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/zh-tw/LinkDialog.js b/lib/dijit/_editor/nls/zh-tw/LinkDialog.js
new file mode 100644 (file)
index 0000000..949318b
--- /dev/null
@@ -0,0 +1 @@
+({"text":"說明:","insertImageTitle":"影像內容","set":"設定","newWindow":"新視窗","topWindow":"最上面的視窗","target":"目標:","createLinkTitle":"鏈結內容","parentWindow":"上層視窗","currentWindow":"現行視窗","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/zh-tw/commands.js b/lib/dijit/_editor/nls/zh-tw/commands.js
new file mode 100644 (file)
index 0000000..d72dc4e
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"移除格式","copy":"複製","paste":"貼上","selectAll":"全選","insertOrderedList":"編號清單","insertTable":"插入/編輯表格","print":"列印","underline":"底線","foreColor":"前景顏色","htmlToggle":"HTML 原始檔","formatBlock":"段落樣式","newPage":"新建頁面","insertHorizontalRule":"水平尺規","delete":"刪除","insertUnorderedList":"項目符號清單","tableProp":"表格內容","insertImage":"插入影像","superscript":"上標","subscript":"下標","createLink":"建立鏈結","undo":"復原","fullScreen":"切換全螢幕","italic":"斜體","fontName":"字型名稱","justifyLeft":"靠左對齊","unlink":"移除鏈結","toggleTableBorder":"切換表格邊框","viewSource":"檢視 HTML 原始檔","fontSize":"字型大小","systemShortcut":"\"${0}\" 動作只能在瀏覽器中透過使用鍵盤快速鍵來使用。請使用 ${1}。","indent":"縮排","redo":"重做","strikethrough":"加刪除線","justifyFull":"對齊","justifyCenter":"置中對齊","hiliteColor":"背景顏色","deleteTable":"刪除表格","outdent":"凸排","cut":"剪下","plainFormatBlock":"段落樣式","toggleDir":"切換方向","bold":"粗體","tabIndent":"定位點縮排","justifyRight":"靠右對齊","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/zh/FontChoice.js b/lib/dijit/_editor/nls/zh/FontChoice.js
new file mode 100644 (file)
index 0000000..4d52bb7
--- /dev/null
@@ -0,0 +1 @@
+({"1":"XXS 号","2":"XS 号","formatBlock":"格式","3":"S 号","4":"M 号","5":"L 号","6":"XL 号","7":"XXL 号","fantasy":"虚线","serif":"有衬线","p":"段落","pre":"预设有格式的","sans-serif":"无衬线","fontName":"字体","h1":"标题","h2":"子标题","h3":"二级子标题","monospace":"等宽字体","fontSize":"大小","cursive":"草书","noFormat":"None"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/zh/LinkDialog.js b/lib/dijit/_editor/nls/zh/LinkDialog.js
new file mode 100644 (file)
index 0000000..da4c500
--- /dev/null
@@ -0,0 +1 @@
+({"text":"描述:","insertImageTitle":"图像属性","set":"设置","newWindow":"新窗口","topWindow":"最顶部窗口","target":"目标:","createLinkTitle":"链接属性","parentWindow":"父窗口","currentWindow":"当前窗口","url":"URL:"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/nls/zh/commands.js b/lib/dijit/_editor/nls/zh/commands.js
new file mode 100644 (file)
index 0000000..11763df
--- /dev/null
@@ -0,0 +1 @@
+({"removeFormat":"除去格式","copy":"复制","paste":"粘贴","selectAll":"全选","insertOrderedList":"编号列表","insertTable":"插入/编辑表","print":"打印","underline":"下划线","foreColor":"前景色","htmlToggle":"HTML 源代码","formatBlock":"段落样式","newPage":"新建页面","insertHorizontalRule":"水平线","delete":"删除","insertUnorderedList":"符号列表","tableProp":"表属性","insertImage":"插入图像","superscript":"上标","subscript":"下标","createLink":"创建链接","undo":"撤销","fullScreen":"切换全屏幕","italic":"斜体","fontName":"字体名称","justifyLeft":"左对齐","unlink":"除去链接","toggleTableBorder":"切换表边框","viewSource":"查看 HTML 源代码","fontSize":"字体大小","systemShortcut":"只能在浏览器中通过键盘快捷方式执行“${0}”操作。使用 ${1}。","indent":"增加缩进","redo":"重做","strikethrough":"删除线","justifyFull":"对齐","justifyCenter":"居中","hiliteColor":"背景色","deleteTable":"删除表","outdent":"减少缩进","cut":"剪切","plainFormatBlock":"段落样式","toggleDir":"固定方向","bold":"粗体","tabIndent":"制表符缩进","justifyRight":"右对齐","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"})
\ No newline at end of file
diff --git a/lib/dijit/_editor/plugins/AlwaysShowToolbar.js b/lib/dijit/_editor/plugins/AlwaysShowToolbar.js
new file mode 100644 (file)
index 0000000..1e0e2ed
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.AlwaysShowToolbar"]){
+dojo._hasResource["dijit._editor.plugins.AlwaysShowToolbar"]=true;
+dojo.provide("dijit._editor.plugins.AlwaysShowToolbar");
+dojo.declare("dijit._editor.plugins.AlwaysShowToolbar",dijit._editor._Plugin,{_handleScroll:true,setEditor:function(e){
+if(!e.iframe){
+return;
+}
+this.editor=e;
+e.onLoadDeferred.addCallback(dojo.hitch(this,this.enable));
+},enable:function(d){
+this._updateHeight();
+this.connect(window,"onscroll","globalOnScrollHandler");
+this.connect(this.editor,"onNormalizedDisplayChanged","_updateHeight");
+return d;
+},_updateHeight:function(){
+var e=this.editor;
+if(!e.isLoaded){
+return;
+}
+if(e.height){
+return;
+}
+var _1=dojo.marginBox(e.editNode).h;
+if(dojo.isOpera){
+_1=e.editNode.scrollHeight;
+}
+if(!_1){
+_1=dojo.marginBox(e.document.body).h;
+}
+if(_1==0){
+return;
+}
+if(dojo.isIE<=7&&this.editor.minHeight){
+var _2=parseInt(this.editor.minHeight);
+if(_1<_2){
+_1=_2;
+}
+}
+if(_1!=this._lastHeight){
+this._lastHeight=_1;
+dojo.marginBox(e.iframe,{h:this._lastHeight});
+}
+},_lastHeight:0,globalOnScrollHandler:function(){
+var _3=dojo.isIE<7;
+if(!this._handleScroll){
+return;
+}
+var _4=this.editor.header;
+var db=dojo.body;
+if(!this._scrollSetUp){
+this._scrollSetUp=true;
+this._scrollThreshold=dojo.position(_4,true).y;
+}
+var _5=dojo._docScroll().y;
+var s=_4.style;
+if(_5>this._scrollThreshold&&_5<this._scrollThreshold+this._lastHeight){
+if(!this._fixEnabled){
+var _6=dojo.marginBox(_4);
+this.editor.iframe.style.marginTop=_6.h+"px";
+if(_3){
+s.left=dojo.position(_4).x;
+if(_4.previousSibling){
+this._IEOriginalPos=["after",_4.previousSibling];
+}else{
+if(_4.nextSibling){
+this._IEOriginalPos=["before",_4.nextSibling];
+}else{
+this._IEOriginalPos=["last",_4.parentNode];
+}
+}
+dojo.body().appendChild(_4);
+dojo.addClass(_4,"dijitIEFixedToolbar");
+}else{
+s.position="fixed";
+s.top="0px";
+}
+dojo.marginBox(_4,{w:_6.w});
+s.zIndex=2000;
+this._fixEnabled=true;
+}
+var _7=(this.height)?parseInt(this.editor.height):this.editor._lastHeight;
+s.display=(_5>this._scrollThreshold+_7)?"none":"";
+}else{
+if(this._fixEnabled){
+this.editor.iframe.style.marginTop="";
+s.position="";
+s.top="";
+s.zIndex="";
+s.display="";
+if(_3){
+s.left="";
+dojo.removeClass(_4,"dijitIEFixedToolbar");
+if(this._IEOriginalPos){
+dojo.place(_4,this._IEOriginalPos[1],this._IEOriginalPos[0]);
+this._IEOriginalPos=null;
+}else{
+dojo.place(_4,this.editor.iframe,"before");
+}
+}
+s.width="";
+this._fixEnabled=false;
+}
+}
+},destroy:function(){
+this._IEOriginalPos=null;
+this._handleScroll=false;
+dojo.forEach(this._connects,dojo.disconnect);
+if(dojo.isIE<7){
+dojo.removeClass(this.editor.header,"dijitIEFixedToolbar");
+}
+}});
+}
diff --git a/lib/dijit/_editor/plugins/EnterKeyHandling.js b/lib/dijit/_editor/plugins/EnterKeyHandling.js
new file mode 100644 (file)
index 0000000..51a8fdd
--- /dev/null
@@ -0,0 +1,423 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.EnterKeyHandling"]){
+dojo._hasResource["dijit._editor.plugins.EnterKeyHandling"]=true;
+dojo.provide("dijit._editor.plugins.EnterKeyHandling");
+dojo.require("dojo.window");
+dojo.declare("dijit._editor.plugins.EnterKeyHandling",dijit._editor._Plugin,{blockNodeForEnter:"BR",constructor:function(_1){
+if(_1){
+dojo.mixin(this,_1);
+}
+},setEditor:function(_2){
+this.editor=_2;
+if(this.blockNodeForEnter=="BR"){
+if(dojo.isIE){
+_2.contentDomPreFilters.push(dojo.hitch(this,"regularPsToSingleLinePs"));
+_2.contentDomPostFilters.push(dojo.hitch(this,"singleLinePsToRegularPs"));
+_2.onLoadDeferred.addCallback(dojo.hitch(this,"_fixNewLineBehaviorForIE"));
+}else{
+_2.onLoadDeferred.addCallback(dojo.hitch(this,function(d){
+try{
+this.editor.document.execCommand("insertBrOnReturn",false,true);
+}
+catch(e){
+}
+return d;
+}));
+}
+}else{
+if(this.blockNodeForEnter){
+dojo["require"]("dijit._editor.range");
+var h=dojo.hitch(this,this.handleEnterKey);
+_2.addKeyHandler(13,0,0,h);
+_2.addKeyHandler(13,0,1,h);
+this.connect(this.editor,"onKeyPressed","onKeyPressed");
+}
+}
+},onKeyPressed:function(e){
+if(this._checkListLater){
+if(dojo.withGlobal(this.editor.window,"isCollapsed",dijit)){
+var _3=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,["LI"]);
+if(!_3){
+dijit._editor.RichText.prototype.execCommand.call(this.editor,"formatblock",this.blockNodeForEnter);
+var _4=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.blockNodeForEnter]);
+if(_4){
+_4.innerHTML=this.bogusHtmlContent;
+if(dojo.isIE){
+var r=this.editor.document.selection.createRange();
+r.move("character",-1);
+r.select();
+}
+}else{
+console.error("onKeyPressed: Cannot find the new block node");
+}
+}else{
+if(dojo.isMoz){
+if(_3.parentNode.parentNode.nodeName=="LI"){
+_3=_3.parentNode.parentNode;
+}
+}
+var fc=_3.firstChild;
+if(fc&&fc.nodeType==1&&(fc.nodeName=="UL"||fc.nodeName=="OL")){
+_3.insertBefore(fc.ownerDocument.createTextNode(" "),fc);
+var _5=dijit.range.create(this.editor.window);
+_5.setStart(_3.firstChild,0);
+var _6=dijit.range.getSelection(this.editor.window,true);
+_6.removeAllRanges();
+_6.addRange(_5);
+}
+}
+}
+this._checkListLater=false;
+}
+if(this._pressedEnterInBlock){
+if(this._pressedEnterInBlock.previousSibling){
+this.removeTrailingBr(this._pressedEnterInBlock.previousSibling);
+}
+delete this._pressedEnterInBlock;
+}
+},bogusHtmlContent:"&nbsp;",blockNodes:/^(?:P|H1|H2|H3|H4|H5|H6|LI)$/,handleEnterKey:function(e){
+var _7,_8,_9,_a=this.editor.document,br;
+if(e.shiftKey){
+var _b=dojo.withGlobal(this.editor.window,"getParentElement",dijit._editor.selection);
+var _c=dijit.range.getAncestor(_b,this.blockNodes);
+if(_c){
+if(!e.shiftKey&&_c.tagName=="LI"){
+return true;
+}
+_7=dijit.range.getSelection(this.editor.window);
+_8=_7.getRangeAt(0);
+if(!_8.collapsed){
+_8.deleteContents();
+_7=dijit.range.getSelection(this.editor.window);
+_8=_7.getRangeAt(0);
+}
+if(dijit.range.atBeginningOfContainer(_c,_8.startContainer,_8.startOffset)){
+if(e.shiftKey){
+br=_a.createElement("br");
+_9=dijit.range.create(this.editor.window);
+_c.insertBefore(br,_c.firstChild);
+_9.setStartBefore(br.nextSibling);
+_7.removeAllRanges();
+_7.addRange(_9);
+}else{
+dojo.place(br,_c,"before");
+}
+}else{
+if(dijit.range.atEndOfContainer(_c,_8.startContainer,_8.startOffset)){
+_9=dijit.range.create(this.editor.window);
+br=_a.createElement("br");
+if(e.shiftKey){
+_c.appendChild(br);
+_c.appendChild(_a.createTextNode(" "));
+_9.setStart(_c.lastChild,0);
+}else{
+dojo.place(br,_c,"after");
+_9.setStartAfter(_c);
+}
+_7.removeAllRanges();
+_7.addRange(_9);
+}else{
+return true;
+}
+}
+}else{
+dijit._editor.RichText.prototype.execCommand.call(this.editor,"inserthtml","<br>");
+}
+return false;
+}
+var _d=true;
+_7=dijit.range.getSelection(this.editor.window);
+_8=_7.getRangeAt(0);
+if(!_8.collapsed){
+_8.deleteContents();
+_7=dijit.range.getSelection(this.editor.window);
+_8=_7.getRangeAt(0);
+}
+var _e=dijit.range.getBlockAncestor(_8.endContainer,null,this.editor.editNode);
+var _f=_e.blockNode;
+if((this._checkListLater=(_f&&(_f.nodeName=="LI"||_f.parentNode.nodeName=="LI")))){
+if(dojo.isMoz){
+this._pressedEnterInBlock=_f;
+}
+if(/^(\s|&nbsp;|\xA0|<span\b[^>]*\bclass=['"]Apple-style-span['"][^>]*>(\s|&nbsp;|\xA0)<\/span>)?(<br>)?$/.test(_f.innerHTML)){
+_f.innerHTML="";
+if(dojo.isWebKit){
+_9=dijit.range.create(this.editor.window);
+_9.setStart(_f,0);
+_7.removeAllRanges();
+_7.addRange(_9);
+}
+this._checkListLater=false;
+}
+return true;
+}
+if(!_e.blockNode||_e.blockNode===this.editor.editNode){
+try{
+dijit._editor.RichText.prototype.execCommand.call(this.editor,"formatblock",this.blockNodeForEnter);
+}
+catch(e2){
+}
+_e={blockNode:dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.blockNodeForEnter]),blockContainer:this.editor.editNode};
+if(_e.blockNode){
+if(_e.blockNode!=this.editor.editNode&&(!(_e.blockNode.textContent||_e.blockNode.innerHTML).replace(/^\s+|\s+$/g,"").length)){
+this.removeTrailingBr(_e.blockNode);
+return false;
+}
+}else{
+_e.blockNode=this.editor.editNode;
+}
+_7=dijit.range.getSelection(this.editor.window);
+_8=_7.getRangeAt(0);
+}
+var _10=_a.createElement(this.blockNodeForEnter);
+_10.innerHTML=this.bogusHtmlContent;
+this.removeTrailingBr(_e.blockNode);
+if(dijit.range.atEndOfContainer(_e.blockNode,_8.endContainer,_8.endOffset)){
+if(_e.blockNode===_e.blockContainer){
+_e.blockNode.appendChild(_10);
+}else{
+dojo.place(_10,_e.blockNode,"after");
+}
+_d=false;
+_9=dijit.range.create(this.editor.window);
+_9.setStart(_10,0);
+_7.removeAllRanges();
+_7.addRange(_9);
+if(this.editor.height){
+dojo.window.scrollIntoView(_10);
+}
+}else{
+if(dijit.range.atBeginningOfContainer(_e.blockNode,_8.startContainer,_8.startOffset)){
+dojo.place(_10,_e.blockNode,_e.blockNode===_e.blockContainer?"first":"before");
+if(_10.nextSibling&&this.editor.height){
+_9=dijit.range.create(this.editor.window);
+_9.setStart(_10.nextSibling,0);
+_7.removeAllRanges();
+_7.addRange(_9);
+dojo.window.scrollIntoView(_10.nextSibling);
+}
+_d=false;
+}else{
+if(_e.blockNode===_e.blockContainer){
+_e.blockNode.appendChild(_10);
+}else{
+dojo.place(_10,_e.blockNode,"after");
+}
+_d=false;
+if(_e.blockNode.style){
+if(_10.style){
+if(_e.blockNode.style.cssText){
+_10.style.cssText=_e.blockNode.style.cssText;
+}
+}
+}
+var rs=_8.startContainer;
+if(rs&&rs.nodeType==3){
+var _11,_12;
+var txt=rs.nodeValue;
+var _13=_a.createTextNode(txt.substring(0,_8.startOffset));
+var _14=_a.createTextNode(txt.substring(_8.startOffset,txt.length));
+dojo.place(_13,rs,"before");
+dojo.place(_14,rs,"after");
+dojo.destroy(rs);
+var _15=_13.parentNode;
+while(_15!==_e.blockNode){
+var tg=_15.tagName;
+var _16=_a.createElement(tg);
+if(_15.style){
+if(_16.style){
+if(_15.style.cssText){
+_16.style.cssText=_15.style.cssText;
+}
+}
+}
+_11=_14;
+while(_11){
+_12=_11.nextSibling;
+_16.appendChild(_11);
+_11=_12;
+}
+dojo.place(_16,_15,"after");
+_13=_15;
+_14=_16;
+_15=_15.parentNode;
+}
+_11=_14;
+if(_11.nodeType==1||(_11.nodeType==3&&_11.nodeValue)){
+_10.innerHTML="";
+}
+while(_11){
+_12=_11.nextSibling;
+_10.appendChild(_11);
+_11=_12;
+}
+}
+_9=dijit.range.create(this.editor.window);
+_9.setStart(_10,0);
+_7.removeAllRanges();
+_7.addRange(_9);
+if(this.editor.height){
+dijit.scrollIntoView(_10);
+}
+if(dojo.isMoz){
+this._pressedEnterInBlock=_e.blockNode;
+}
+}
+}
+return _d;
+},removeTrailingBr:function(_17){
+var _18=/P|DIV|LI/i.test(_17.tagName)?_17:dijit._editor.selection.getParentOfType(_17,["P","DIV","LI"]);
+if(!_18){
+return;
+}
+if(_18.lastChild){
+if((_18.childNodes.length>1&&_18.lastChild.nodeType==3&&/^[\s\xAD]*$/.test(_18.lastChild.nodeValue))||_18.lastChild.tagName=="BR"){
+dojo.destroy(_18.lastChild);
+}
+}
+if(!_18.childNodes.length){
+_18.innerHTML=this.bogusHtmlContent;
+}
+},_fixNewLineBehaviorForIE:function(d){
+var doc=this.editor.document;
+if(doc.__INSERTED_EDITIOR_NEWLINE_CSS===undefined){
+var _19=dojo.create("style",{type:"text/css"},doc.getElementsByTagName("head")[0]);
+_19.styleSheet.cssText="p{margin:0;}";
+this.editor.document.__INSERTED_EDITIOR_NEWLINE_CSS=true;
+}
+return d;
+},regularPsToSingleLinePs:function(_1a,_1b){
+function _1c(el){
+function _1d(_1e){
+var _1f=_1e[0].ownerDocument.createElement("p");
+_1e[0].parentNode.insertBefore(_1f,_1e[0]);
+dojo.forEach(_1e,function(_20){
+_1f.appendChild(_20);
+});
+};
+var _21=0;
+var _22=[];
+var _23;
+while(_21<el.childNodes.length){
+_23=el.childNodes[_21];
+if(_23.nodeType==3||(_23.nodeType==1&&_23.nodeName!="BR"&&dojo.style(_23,"display")!="block")){
+_22.push(_23);
+}else{
+var _24=_23.nextSibling;
+if(_22.length){
+_1d(_22);
+_21=(_21+1)-_22.length;
+if(_23.nodeName=="BR"){
+dojo.destroy(_23);
+}
+}
+_22=[];
+}
+_21++;
+}
+if(_22.length){
+_1d(_22);
+}
+};
+function _25(el){
+var _26=null;
+var _27=[];
+var _28=el.childNodes.length-1;
+for(var i=_28;i>=0;i--){
+_26=el.childNodes[i];
+if(_26.nodeName=="BR"){
+var _29=_26.ownerDocument.createElement("p");
+dojo.place(_29,el,"after");
+if(_27.length==0&&i!=_28){
+_29.innerHTML="&nbsp;";
+}
+dojo.forEach(_27,function(_2a){
+_29.appendChild(_2a);
+});
+dojo.destroy(_26);
+_27=[];
+}else{
+_27.unshift(_26);
+}
+}
+};
+var _2b=[];
+var ps=_1a.getElementsByTagName("p");
+dojo.forEach(ps,function(p){
+_2b.push(p);
+});
+dojo.forEach(_2b,function(p){
+var _2c=p.previousSibling;
+if((_2c)&&(_2c.nodeType==1)&&(_2c.nodeName=="P"||dojo.style(_2c,"display")!="block")){
+var _2d=p.parentNode.insertBefore(this.document.createElement("p"),p);
+_2d.innerHTML=_1b?"":"&nbsp;";
+}
+_25(p);
+},this.editor);
+_1c(_1a);
+return _1a;
+},singleLinePsToRegularPs:function(_2e){
+function _2f(_30){
+var ps=_30.getElementsByTagName("p");
+var _31=[];
+for(var i=0;i<ps.length;i++){
+var p=ps[i];
+var _32=false;
+for(var k=0;k<_31.length;k++){
+if(_31[k]===p.parentNode){
+_32=true;
+break;
+}
+}
+if(!_32){
+_31.push(p.parentNode);
+}
+}
+return _31;
+};
+function _33(_34){
+return (!_34.childNodes.length||_34.innerHTML=="&nbsp;");
+};
+var _35=_2f(_2e);
+for(var i=0;i<_35.length;i++){
+var _36=_35[i];
+var _37=null;
+var _38=_36.firstChild;
+var _39=null;
+while(_38){
+if(_38.nodeType!=1||_38.tagName!="P"||(_38.getAttributeNode("style")||{}).specified){
+_37=null;
+}else{
+if(_33(_38)){
+_39=_38;
+_37=null;
+}else{
+if(_37==null){
+_37=_38;
+}else{
+if((!_37.lastChild||_37.lastChild.nodeName!="BR")&&(_38.firstChild)&&(_38.firstChild.nodeName!="BR")){
+_37.appendChild(this.editor.document.createElement("br"));
+}
+while(_38.firstChild){
+_37.appendChild(_38.firstChild);
+}
+_39=_38;
+}
+}
+}
+_38=_38.nextSibling;
+if(_39){
+dojo.destroy(_39);
+_39=null;
+}
+}
+}
+return _2e;
+}});
+}
diff --git a/lib/dijit/_editor/plugins/FontChoice.js b/lib/dijit/_editor/plugins/FontChoice.js
new file mode 100644 (file)
index 0000000..c5578e3
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.FontChoice"]){
+dojo._hasResource["dijit._editor.plugins.FontChoice"]=true;
+dojo.provide("dijit._editor.plugins.FontChoice");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit._editor.range");
+dojo.require("dijit._editor.selection");
+dojo.require("dijit.form.FilteringSelect");
+dojo.require("dojo.data.ItemFileReadStore");
+dojo.require("dojo.i18n");
+dojo.requireLocalization("dijit._editor","FontChoice",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit._editor.plugins._FontDropDown",[dijit._Widget,dijit._Templated],{label:"",widgetsInTemplate:true,plainText:false,templateString:"<span style='white-space: nowrap' class='dijit dijitReset dijitInline'>"+"<label class='dijitLeft dijitInline' for='${selectId}'>${label}</label>"+"<input dojoType='dijit.form.FilteringSelect' required=false labelType=html labelAttr=label searchAttr=name "+"tabIndex='-1' id='${selectId}' dojoAttachPoint='select' value=''/>"+"</span>",postMixInProperties:function(){
+this.inherited(arguments);
+this.strings=dojo.i18n.getLocalization("dijit._editor","FontChoice");
+this.label=this.strings[this.command];
+this.id=dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));
+this.selectId=this.id+"_select";
+this.inherited(arguments);
+},postCreate:function(){
+var _1=dojo.map(this.values,function(_2){
+var _3=this.strings[_2]||_2;
+return {label:this.getLabel(_2,_3),name:_3,value:_2};
+},this);
+this.select.store=new dojo.data.ItemFileReadStore({data:{identifier:"value",items:_1}});
+this.select.set("value","",false);
+this.disabled=this.select.get("disabled");
+},_setValueAttr:function(_4,_5){
+_5=_5!==false?true:false;
+this.select.set("value",dojo.indexOf(this.values,_4)<0?"":_4,_5);
+if(!_5){
+this.select._lastValueReported=null;
+}
+},_getValueAttr:function(){
+return this.select.get("value");
+},focus:function(){
+this.select.focus();
+},_setDisabledAttr:function(_6){
+this.disabled=_6;
+this.select.set("disabled",_6);
+}});
+dojo.declare("dijit._editor.plugins._FontNameDropDown",dijit._editor.plugins._FontDropDown,{generic:false,command:"fontName",postMixInProperties:function(){
+if(!this.values){
+this.values=this.generic?["serif","sans-serif","monospace","cursive","fantasy"]:["Arial","Times New Roman","Comic Sans MS","Courier New"];
+}
+this.inherited(arguments);
+},getLabel:function(_7,_8){
+if(this.plainText){
+return _8;
+}else{
+return "<div style='font-family: "+_7+"'>"+_8+"</div>";
+}
+},_setValueAttr:function(_9,_a){
+_a=_a!==false?true:false;
+if(this.generic){
+var _b={"Arial":"sans-serif","Helvetica":"sans-serif","Myriad":"sans-serif","Times":"serif","Times New Roman":"serif","Comic Sans MS":"cursive","Apple Chancery":"cursive","Courier":"monospace","Courier New":"monospace","Papyrus":"fantasy"};
+_9=_b[_9]||_9;
+}
+this.inherited(arguments,[_9,_a]);
+}});
+dojo.declare("dijit._editor.plugins._FontSizeDropDown",dijit._editor.plugins._FontDropDown,{command:"fontSize",values:[1,2,3,4,5,6,7],getLabel:function(_c,_d){
+if(this.plainText){
+return _d;
+}else{
+return "<font size="+_c+"'>"+_d+"</font>";
+}
+},_setValueAttr:function(_e,_f){
+_f=_f!==false?true:false;
+if(_e.indexOf&&_e.indexOf("px")!=-1){
+var _10=parseInt(_e,10);
+_e={10:1,13:2,16:3,18:4,24:5,32:6,48:7}[_10]||_e;
+}
+this.inherited(arguments,[_e,_f]);
+}});
+dojo.declare("dijit._editor.plugins._FormatBlockDropDown",dijit._editor.plugins._FontDropDown,{command:"formatBlock",values:["noFormat","p","h1","h2","h3","pre"],postCreate:function(){
+this.inherited(arguments);
+this.set("value","noFormat",false);
+},getLabel:function(_11,_12){
+if(this.plainText){
+return _12;
+}else{
+return "<"+_11+">"+_12+"</"+_11+">";
+}
+},_execCommand:function(_13,_14,_15){
+if(_15==="noFormat"){
+var _16;
+var end;
+var sel=dijit.range.getSelection(_13.window);
+if(sel&&sel.rangeCount>0){
+var _17=sel.getRangeAt(0);
+var _18,tag;
+if(_17){
+_16=_17.startContainer;
+end=_17.endContainer;
+while(_16&&_16!==_13.editNode&&_16!==_13.document.body&&_16.nodeType!==1){
+_16=_16.parentNode;
+}
+while(end&&end!==_13.editNode&&end!==_13.document.body&&end.nodeType!==1){
+end=end.parentNode;
+}
+var _19=dojo.hitch(this,function(_1a,_1b){
+if(_1a.childNodes&&_1a.childNodes.length){
+var i;
+for(i=0;i<_1a.childNodes.length;i++){
+var c=_1a.childNodes[i];
+if(c.nodeType==1){
+if(dojo.withGlobal(_13.window,"inSelection",dijit._editor.selection,[c])){
+var tag=c.tagName?c.tagName.toLowerCase():"";
+if(dojo.indexOf(this.values,tag)!==-1){
+_1b.push(c);
+}
+_19(c,_1b);
+}
+}
+}
+}
+});
+var _1c=dojo.hitch(this,function(_1d){
+if(_1d&&_1d.length){
+_13.beginEditing();
+while(_1d.length){
+this._removeFormat(_13,_1d.pop());
+}
+_13.endEditing();
+}
+});
+var _1e=[];
+if(_16==end){
+var _1f;
+_18=_16;
+while(_18&&_18!==_13.editNode&&_18!==_13.document.body){
+if(_18.nodeType==1){
+tag=_18.tagName?_18.tagName.toLowerCase():"";
+if(dojo.indexOf(this.values,tag)!==-1){
+_1f=_18;
+break;
+}
+}
+_18=_18.parentNode;
+}
+_19(_16,_1e);
+if(_1f){
+_1e=[_1f].concat(_1e);
+}
+_1c(_1e);
+}else{
+_18=_16;
+while(dojo.withGlobal(_13.window,"inSelection",dijit._editor.selection,[_18])){
+if(_18.nodeType==1){
+tag=_18.tagName?_18.tagName.toLowerCase():"";
+if(dojo.indexOf(this.values,tag)!==-1){
+_1e.push(_18);
+}
+_19(_18,_1e);
+}
+_18=_18.nextSibling;
+}
+_1c(_1e);
+}
+_13.onDisplayChanged();
+}
+}
+}else{
+_13.execCommand(_14,_15);
+}
+},_removeFormat:function(_20,_21){
+if(_20.customUndo){
+while(_21.firstChild){
+dojo.place(_21.firstChild,_21,"before");
+}
+_21.parentNode.removeChild(_21);
+}else{
+dojo.withGlobal(_20.window,"selectElementChildren",dijit._editor.selection,[_21]);
+var _22=dojo.withGlobal(_20.window,"getSelectedHtml",dijit._editor.selection,[null]);
+dojo.withGlobal(_20.window,"selectElement",dijit._editor.selection,[_21]);
+_20.execCommand("inserthtml",_22||"");
+}
+}});
+dojo.declare("dijit._editor.plugins.FontChoice",dijit._editor._Plugin,{useDefaultCommand:false,_initButton:function(){
+var _23={fontName:dijit._editor.plugins._FontNameDropDown,fontSize:dijit._editor.plugins._FontSizeDropDown,formatBlock:dijit._editor.plugins._FormatBlockDropDown}[this.command],_24=this.params;
+if(this.params.custom){
+_24.values=this.params.custom;
+}
+var _25=this.editor;
+this.button=new _23(dojo.delegate({dir:_25.dir,lang:_25.lang},_24));
+this.connect(this.button.select,"onChange",function(_26){
+this.editor.focus();
+if(this.command=="fontName"&&_26.indexOf(" ")!=-1){
+_26="'"+_26+"'";
+}
+if(this.button._execCommand){
+this.button._execCommand(this.editor,this.command,_26);
+}else{
+this.editor.execCommand(this.command,_26);
+}
+this.editor.customUndo=this.editor.customUndo||dojo.isWebKit;
+});
+},updateState:function(){
+var _27=this.editor;
+var _28=this.command;
+if(!_27||!_27.isLoaded||!_28.length){
+return;
+}
+if(this.button){
+var _29;
+try{
+_29=_27.queryCommandValue(_28)||"";
+}
+catch(e){
+_29="";
+}
+var _2a=dojo.isString(_29)&&_29.match(/'([^']*)'/);
+if(_2a){
+_29=_2a[1];
+}
+if(_28==="formatBlock"){
+if(!_29||_29=="p"){
+_29=null;
+var _2b;
+var sel=dijit.range.getSelection(this.editor.window);
+if(sel&&sel.rangeCount>0){
+var _2c=sel.getRangeAt(0);
+if(_2c){
+_2b=_2c.endContainer;
+}
+}
+while(_2b&&_2b!==_27.editNode&&_2b!==_27.document){
+var tg=_2b.tagName?_2b.tagName.toLowerCase():"";
+if(tg&&dojo.indexOf(this.button.values,tg)>-1){
+_29=tg;
+break;
+}
+_2b=_2b.parentNode;
+}
+if(!_29){
+_29="noFormat";
+}
+}else{
+if(dojo.indexOf(this.button.values,_29)<0){
+_29="noFormat";
+}
+}
+}
+if(_29!==this.button.get("value")){
+this.button.set("value",_29,false);
+}
+}
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+switch(o.args.name){
+case "fontName":
+case "fontSize":
+case "formatBlock":
+o.plugin=new dijit._editor.plugins.FontChoice({command:o.args.name,plainText:o.args.plainText?o.args.plainText:false});
+}
+});
+}
diff --git a/lib/dijit/_editor/plugins/FullScreen.js b/lib/dijit/_editor/plugins/FullScreen.js
new file mode 100644 (file)
index 0000000..7a6dac5
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.FullScreen"]){
+dojo._hasResource["dijit._editor.plugins.FullScreen"]=true;
+dojo.provide("dijit._editor.plugins.FullScreen");
+dojo.require("dojo.window");
+dojo.require("dojo.i18n");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit.form.Button");
+dojo.requireLocalization("dijit._editor","commands",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit._editor.plugins.FullScreen",dijit._editor._Plugin,{zIndex:500,_origState:null,_origiFrameState:null,_resizeHandle:null,isFullscreen:false,toggle:function(){
+this.button.set("checked",!this.button.get("checked"));
+},_initButton:function(){
+var _1=dojo.i18n.getLocalization("dijit._editor","commands"),_2=this.editor;
+this.button=new dijit.form.ToggleButton({label:_1["fullScreen"],dir:_2.dir,lang:_2.lang,showLabel:false,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"FullScreen",tabIndex:"-1",onChange:dojo.hitch(this,"_setFullScreen")});
+},setEditor:function(_3){
+this.editor=_3;
+this._initButton();
+this.editor.addKeyHandler(dojo.keys.F11,true,true,dojo.hitch(this,function(e){
+this.toggle();
+dojo.stopEvent(e);
+setTimeout(dojo.hitch(this,function(){
+this.editor.focus();
+}),250);
+return true;
+}));
+this.connect(this.editor.domNode,"onkeydown","_containFocus");
+},_containFocus:function(e){
+if(this.isFullscreen){
+var ed=this.editor;
+if(!ed.isTabIndent&&ed._fullscreen_oldOnKeyDown&&e.keyCode===dojo.keys.TAB){
+var f=dijit.getFocus();
+var _4=this._getAltViewNode();
+if(f.node==ed.iframe||(_4&&f.node===_4)){
+setTimeout(dojo.hitch(this,function(){
+ed.toolbar.focus();
+}),10);
+}else{
+if(_4&&dojo.style(ed.iframe,"display")==="none"){
+setTimeout(dojo.hitch(this,function(){
+dijit.focus(_4);
+}),10);
+}else{
+setTimeout(dojo.hitch(this,function(){
+ed.focus();
+}),10);
+}
+}
+dojo.stopEvent(e);
+}else{
+if(ed._fullscreen_oldOnKeyDown){
+ed._fullscreen_oldOnKeyDown(e);
+}
+}
+}
+},_resizeEditor:function(){
+var vp=dojo.window.getBox();
+dojo.marginBox(this.editor.domNode,{w:vp.w,h:vp.h});
+var _5=this.editor.getHeaderHeight();
+var _6=this.editor.getFooterHeight();
+var _7=dojo._getPadBorderExtents(this.editor.domNode);
+var _8=dojo._getPadBorderExtents(this.editor.iframe.parentNode);
+var _9=dojo._getMarginExtents(this.editor.iframe.parentNode);
+var _a=vp.h-(_5+_7.h+_6);
+dojo.marginBox(this.editor.iframe.parentNode,{h:_a,w:vp.w});
+dojo.marginBox(this.editor.iframe,{h:_a-(_8.h+_9.h)});
+},_getAltViewNode:function(){
+},_setFullScreen:function(_b){
+var vp=dojo.window.getBox();
+var ed=this.editor;
+var _c=dojo.body();
+var _d=ed.domNode.parentNode;
+this.isFullscreen=_b;
+if(_b){
+while(_d&&_d!==dojo.body()){
+dojo.addClass(_d,"dijitForceStatic");
+_d=_d.parentNode;
+}
+this._editorResizeHolder=this.editor.resize;
+ed.resize=function(){
+};
+ed._fullscreen_oldOnKeyDown=ed.onKeyDown;
+ed.onKeyDown=dojo.hitch(this,this._containFocus);
+this._origState={};
+this._origiFrameState={};
+var _e=ed.domNode,_f=_e&&_e.style||{};
+this._origState={width:_f.width||"",height:_f.height||"",top:dojo.style(_e,"top")||"",left:dojo.style(_e,"left")||"",position:dojo.style(_e,"position")||"static",marginBox:dojo.marginBox(ed.domNode)};
+var _10=ed.iframe,_11=_10&&_10.style||{};
+var bc=dojo.style(ed.iframe,"backgroundColor");
+this._origiFrameState={backgroundColor:bc||"transparent",width:_11.width||"auto",height:_11.height||"auto",zIndex:_11.zIndex||""};
+dojo.style(ed.domNode,{position:"absolute",top:"0px",left:"0px",zIndex:this.zIndex,width:vp.w+"px",height:vp.h+"px"});
+dojo.style(ed.iframe,{height:"100%",width:"100%",zIndex:this.zIndex,backgroundColor:bc!=="transparent"&&bc!=="rgba(0, 0, 0, 0)"?bc:"white"});
+dojo.style(ed.iframe.parentNode,{height:"95%",width:"100%"});
+if(_c.style&&_c.style.overflow){
+this._oldOverflow=dojo.style(_c,"overflow");
+}else{
+this._oldOverflow="";
+}
+if(dojo.isIE&&!dojo.isQuirks){
+if(_c.parentNode&&_c.parentNode.style&&_c.parentNode.style.overflow){
+this._oldBodyParentOverflow=_c.parentNode.style.overflow;
+}else{
+try{
+this._oldBodyParentOverflow=dojo.style(_c.parentNode,"overflow");
+}
+catch(e){
+this._oldBodyParentOverflow="scroll";
+}
+}
+dojo.style(_c.parentNode,"overflow","hidden");
+}
+dojo.style(_c,"overflow","hidden");
+var _12=function(){
+var vp=dojo.window.getBox();
+if("_prevW" in this&&"_prevH" in this){
+if(vp.w===this._prevW&&vp.h===this._prevH){
+return;
+}
+}else{
+this._prevW=vp.w;
+this._prevH=vp.h;
+}
+if(this._resizer){
+clearTimeout(this._resizer);
+delete this._resizer;
+}
+this._resizer=setTimeout(dojo.hitch(this,function(){
+delete this._resizer;
+this._resizeEditor();
+}),10);
+};
+this._resizeHandle=dojo.connect(window,"onresize",this,_12);
+this._resizeHandle2=dojo.connect(ed,"resize",dojo.hitch(this,function(){
+if(this._resizer){
+clearTimeout(this._resizer);
+delete this._resizer;
+}
+this._resizer=setTimeout(dojo.hitch(this,function(){
+delete this._resizer;
+this._resizeEditor();
+}),10);
+}));
+this._resizeEditor();
+var dn=this.editor.toolbar.domNode;
+setTimeout(function(){
+dojo.window.scrollIntoView(dn);
+},250);
+}else{
+if(this._resizeHandle){
+dojo.disconnect(this._resizeHandle);
+this._resizeHandle=null;
+}
+if(this._resizeHandle2){
+dojo.disconnect(this._resizeHandle2);
+this._resizeHandle2=null;
+}
+if(this._rst){
+clearTimeout(this._rst);
+this._rst=null;
+}
+while(_d&&_d!==dojo.body()){
+dojo.removeClass(_d,"dijitForceStatic");
+_d=_d.parentNode;
+}
+if(this._editorResizeHolder){
+this.editor.resize=this._editorResizeHolder;
+}
+if(!this._origState&&!this._origiFrameState){
+return;
+}
+if(ed._fullscreen_oldOnKeyDown){
+ed.onKeyDown=ed._fullscreen_oldOnKeyDown;
+delete ed._fullscreen_oldOnKeyDown;
+}
+var _13=this;
+setTimeout(function(){
+var mb=_13._origState.marginBox;
+var oh=_13._origState.height;
+if(dojo.isIE&&!dojo.isQuirks){
+_c.parentNode.style.overflow=_13._oldBodyParentOverflow;
+delete _13._oldBodyParentOverflow;
+}
+dojo.style(_c,"overflow",_13._oldOverflow);
+delete _13._oldOverflow;
+dojo.style(ed.domNode,_13._origState);
+dojo.style(ed.iframe.parentNode,{height:"",width:""});
+dojo.style(ed.iframe,_13._origiFrameState);
+delete _13._origState;
+delete _13._origiFrameState;
+var _14=dijit.getEnclosingWidget(ed.domNode.parentNode);
+if(_14&&_14.resize){
+_14.resize();
+}else{
+if(!oh||oh.indexOf("%")<0){
+setTimeout(dojo.hitch(this,function(){
+ed.resize({h:mb.h});
+}),0);
+}
+}
+dojo.window.scrollIntoView(_13.editor.toolbar.domNode);
+},100);
+}
+},destroy:function(){
+if(this._resizeHandle){
+dojo.disconnect(this._resizeHandle);
+this._resizeHandle=null;
+}
+if(this._resizeHandle2){
+dojo.disconnect(this._resizeHandle2);
+this._resizeHandle2=null;
+}
+if(this._resizer){
+clearTimeout(this._resizer);
+this._resizer=null;
+}
+this.inherited(arguments);
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+var _15=o.args.name.toLowerCase();
+if(_15==="fullscreen"){
+o.plugin=new dijit._editor.plugins.FullScreen({zIndex:("zIndex" in o.args)?o.args.zIndex:500});
+}
+});
+}
diff --git a/lib/dijit/_editor/plugins/LinkDialog.js b/lib/dijit/_editor/plugins/LinkDialog.js
new file mode 100644 (file)
index 0000000..71de3ad
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.LinkDialog"]){
+dojo._hasResource["dijit._editor.plugins.LinkDialog"]=true;
+dojo.provide("dijit._editor.plugins.LinkDialog");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit.TooltipDialog");
+dojo.require("dijit.form.Button");
+dojo.require("dijit.form.ValidationTextBox");
+dojo.require("dijit.form.Select");
+dojo.require("dijit._editor.range");
+dojo.require("dojo.i18n");
+dojo.require("dojo.string");
+dojo.requireLocalization("dijit","common",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.requireLocalization("dijit._editor","LinkDialog",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit._editor.plugins.LinkDialog",dijit._editor._Plugin,{buttonClass:dijit.form.DropDownButton,useDefaultCommand:false,urlRegExp:"((https?|ftps?|file)\\://|./|/|)(/[a-zA-Z]{1,1}:/|)(((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)*(?:[a-zA-Z](?:[-\\da-zA-Z]{0,80}[\\da-zA-Z])?)\\.?)|(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])|(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]|(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]|(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])|0[xX]0*[\\da-fA-F]{1,8}|([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}|([\\da-fA-F]{1,4}\\:){6}((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])))(\\:\\d+)?(/(?:[^?#\\s/]+/)*(?:[^?#\\s/]+(?:\\?[^?#\\s/]*)?(?:#.*)?)?)?",emailRegExp:"<?(mailto\\:)([!#-'*+\\-\\/-9=?A-Z^-~]+[.])*[!#-'*+\\-\\/-9=?A-Z^-~]+"+"@"+"((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)+(?:[a-zA-Z](?:[-\\da-zA-Z]{0,6}[\\da-zA-Z])?)\\.?)|localhost|^[^-][a-zA-Z0-9_-]*>?",htmlTemplate:"<a href=\"${urlInput}\" _djrealurl=\"${urlInput}\""+" target=\"${targetSelect}\""+">${textInput}</a>",tag:"a",_hostRxp:new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),_userAtRxp:new RegExp("^([!#-'*+\\-\\/-9=?A-Z^-~]+[.])*[!#-'*+\\-\\/-9=?A-Z^-~]+@","i"),linkDialogTemplate:["<table><tr><td>","<label for='${id}_urlInput'>${url}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' required='true' "+"id='${id}_urlInput' name='urlInput' intermediateChanges='true'>","</td></tr><tr><td>","<label for='${id}_textInput'>${text}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' required='true' id='${id}_textInput' "+"name='textInput' intermediateChanges='true'>","</td></tr><tr><td>","<label for='${id}_targetSelect'>${target}</label>","</td><td>","<select id='${id}_targetSelect' name='targetSelect' dojoType='dijit.form.Select'>","<option selected='selected' value='_self'>${currentWindow}</option>","<option value='_blank'>${newWindow}</option>","<option value='_top'>${topWindow}</option>","<option value='_parent'>${parentWindow}</option>","</select>","</td></tr><tr><td colspan='2'>","<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>","<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>","</td></tr></table>"].join(""),_initButton:function(){
+var _1=this;
+this.tag=this.command=="insertImage"?"img":"a";
+var _2=dojo.mixin(dojo.i18n.getLocalization("dijit","common",this.lang),dojo.i18n.getLocalization("dijit._editor","LinkDialog",this.lang));
+var _3=(this.dropDown=new dijit.TooltipDialog({title:_2[this.command+"Title"],execute:dojo.hitch(this,"setValue"),onOpen:function(){
+_1._onOpenDialog();
+dijit.TooltipDialog.prototype.onOpen.apply(this,arguments);
+},onCancel:function(){
+setTimeout(dojo.hitch(_1,"_onCloseDialog"),0);
+}}));
+_2.urlRegExp=this.urlRegExp;
+_2.id=dijit.getUniqueId(this.editor.id);
+this._uniqueId=_2.id;
+this._setContent(_3.title+"<div style='border-bottom: 1px black solid;padding-bottom:2pt;margin-bottom:4pt'></div>"+dojo.string.substitute(this.linkDialogTemplate,_2));
+_3.startup();
+this._urlInput=dijit.byId(this._uniqueId+"_urlInput");
+this._textInput=dijit.byId(this._uniqueId+"_textInput");
+this._setButton=dijit.byId(this._uniqueId+"_setButton");
+this.connect(dijit.byId(this._uniqueId+"_cancelButton"),"onClick",function(){
+this.dropDown.onCancel();
+});
+if(this._urlInput){
+this.connect(this._urlInput,"onChange","_checkAndFixInput");
+}
+if(this._textInput){
+this.connect(this._textInput,"onChange","_checkAndFixInput");
+}
+this._urlRegExp=new RegExp("^"+this.urlRegExp+"$","i");
+this._emailRegExp=new RegExp("^"+this.emailRegExp+"$","i");
+this._urlInput.isValid=dojo.hitch(this,function(){
+var _4=this._urlInput.get("value");
+return this._urlRegExp.test(_4)||this._emailRegExp.test(_4);
+});
+this._connectTagEvents();
+this.inherited(arguments);
+},_checkAndFixInput:function(){
+var _5=this;
+var _6=this._urlInput.get("value");
+var _7=function(_8){
+var _9=false;
+var _a=false;
+if(_8&&_8.length>1){
+_8=dojo.trim(_8);
+if(_8.indexOf("mailto:")!==0){
+if(_8.indexOf("/")>0){
+if(_8.indexOf("://")===-1){
+if(_8.charAt(0)!=="/"&&_8.indexOf("./")!==0){
+if(_5._hostRxp.test(_8)){
+_9=true;
+}
+}
+}
+}else{
+if(_5._userAtRxp.test(_8)){
+_a=true;
+}
+}
+}
+}
+if(_9){
+_5._urlInput.set("value","http://"+_8);
+}
+if(_a){
+_5._urlInput.set("value","mailto:"+_8);
+}
+_5._setButton.set("disabled",!_5._isValid());
+};
+if(this._delayedCheck){
+clearTimeout(this._delayedCheck);
+this._delayedCheck=null;
+}
+this._delayedCheck=setTimeout(function(){
+_7(_6);
+},250);
+},_connectTagEvents:function(){
+this.editor.onLoadDeferred.addCallback(dojo.hitch(this,function(){
+this.connect(this.editor.editNode,"ondblclick",this._onDblClick);
+}));
+},_isValid:function(){
+return this._urlInput.isValid()&&this._textInput.isValid();
+},_setContent:function(_b){
+this.dropDown.set("content",_b);
+},_checkValues:function(_c){
+if(_c&&_c.urlInput){
+_c.urlInput=_c.urlInput.replace(/"/g,"&quot;");
+}
+return _c;
+},setValue:function(_d){
+this._onCloseDialog();
+if(dojo.isIE){
+var _e=dijit.range.getSelection(this.editor.window);
+var _f=_e.getRangeAt(0);
+var a=_f.endContainer;
+if(a.nodeType===3){
+a=a.parentNode;
+}
+if(a&&(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){
+a=dojo.withGlobal(this.editor.window,"getSelectedElement",dijit._editor.selection,[this.tag]);
+}
+if(a&&(a.nodeName&&a.nodeName.toLowerCase()===this.tag)){
+if(this.editor.queryCommandEnabled("unlink")){
+dojo.withGlobal(this.editor.window,"selectElementChildren",dijit._editor.selection,[a]);
+this.editor.execCommand("unlink");
+}
+}
+}
+_d=this._checkValues(_d);
+this.editor.execCommand("inserthtml",dojo.string.substitute(this.htmlTemplate,_d));
+},_onCloseDialog:function(){
+this.editor.focus();
+},_getCurrentValues:function(a){
+var url,_10,_11;
+if(a&&a.tagName.toLowerCase()===this.tag){
+url=a.getAttribute("_djrealurl")||a.getAttribute("href");
+_11=a.getAttribute("target")||"_self";
+_10=a.textContent||a.innerText;
+dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[a,true]);
+}else{
+_10=dojo.withGlobal(this.editor.window,dijit._editor.selection.getSelectedText);
+}
+return {urlInput:url||"",textInput:_10||"",targetSelect:_11||""};
+},_onOpenDialog:function(){
+var a;
+if(dojo.isIE){
+var sel=dijit.range.getSelection(this.editor.window);
+var _12=sel.getRangeAt(0);
+a=_12.endContainer;
+if(a.nodeType===3){
+a=a.parentNode;
+}
+if(a&&(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){
+a=dojo.withGlobal(this.editor.window,"getSelectedElement",dijit._editor.selection,[this.tag]);
+}
+}else{
+a=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.tag]);
+}
+this.dropDown.reset();
+this._setButton.set("disabled",true);
+this.dropDown.set("value",this._getCurrentValues(a));
+},_onDblClick:function(e){
+if(e&&e.target){
+var t=e.target;
+var tg=t.tagName?t.tagName.toLowerCase():"";
+if(tg===this.tag&&dojo.attr(t,"href")){
+dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[t]);
+this.editor.onDisplayChanged();
+setTimeout(dojo.hitch(this,function(){
+this.button.set("disabled",false);
+this.button.openDropDown();
+}),10);
+}
+}
+}});
+dojo.declare("dijit._editor.plugins.ImgLinkDialog",[dijit._editor.plugins.LinkDialog],{linkDialogTemplate:["<table><tr><td>","<label for='${id}_urlInput'>${url}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' regExp='${urlRegExp}' "+"required='true' id='${id}_urlInput' name='urlInput' intermediateChanges='true'>","</td></tr><tr><td>","<label for='${id}_textInput'>${text}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' required='false' id='${id}_textInput' "+"name='textInput' intermediateChanges='true'>","</td></tr><tr><td>","</td><td>","</td></tr><tr><td colspan='2'>","<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>","<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>","</td></tr></table>"].join(""),htmlTemplate:"<img src=\"${urlInput}\" _djrealurl=\"${urlInput}\" alt=\"${textInput}\" />",tag:"img",_getCurrentValues:function(img){
+var url,_13;
+if(img&&img.tagName.toLowerCase()===this.tag){
+url=img.getAttribute("_djrealurl")||img.getAttribute("src");
+_13=img.getAttribute("alt");
+dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[img,true]);
+}else{
+_13=dojo.withGlobal(this.editor.window,dijit._editor.selection.getSelectedText);
+}
+return {urlInput:url||"",textInput:_13||""};
+},_isValid:function(){
+return this._urlInput.isValid();
+},_connectTagEvents:function(){
+this.inherited(arguments);
+this.editor.onLoadDeferred.addCallback(dojo.hitch(this,function(){
+this.connect(this.editor.editNode,"onmousedown",this._selectTag);
+}));
+},_selectTag:function(e){
+if(e&&e.target){
+var t=e.target;
+var tg=t.tagName?t.tagName.toLowerCase():"";
+if(tg===this.tag){
+dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[t]);
+}
+}
+},_checkValues:function(_14){
+if(_14&&_14.urlInput){
+_14.urlInput=_14.urlInput.replace(/"/g,"&quot;");
+}
+if(_14&&_14.textInput){
+_14.textInput=_14.textInput.replace(/"/g,"&quot;");
+}
+return _14;
+},_onDblClick:function(e){
+if(e&&e.target){
+var t=e.target;
+var tg=t.tagName?t.tagName.toLowerCase():"";
+if(tg===this.tag&&dojo.attr(t,"src")){
+dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[t]);
+this.editor.onDisplayChanged();
+setTimeout(dojo.hitch(this,function(){
+this.button.set("disabled",false);
+this.button.openDropDown();
+}),10);
+}
+}
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+switch(o.args.name){
+case "createLink":
+o.plugin=new dijit._editor.plugins.LinkDialog({command:o.args.name});
+break;
+case "insertImage":
+o.plugin=new dijit._editor.plugins.ImgLinkDialog({command:o.args.name});
+break;
+}
+});
+}
diff --git a/lib/dijit/_editor/plugins/NewPage.js b/lib/dijit/_editor/plugins/NewPage.js
new file mode 100644 (file)
index 0000000..14c2cfa
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.NewPage"]){
+dojo._hasResource["dijit._editor.plugins.NewPage"]=true;
+dojo.provide("dijit._editor.plugins.NewPage");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit.form.Button");
+dojo.require("dojo.i18n");
+dojo.requireLocalization("dijit._editor","commands",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit._editor.plugins.NewPage",dijit._editor._Plugin,{content:"<br>",_initButton:function(){
+var _1=dojo.i18n.getLocalization("dijit._editor","commands"),_2=this.editor;
+this.button=new dijit.form.Button({label:_1["newPage"],dir:_2.dir,lang:_2.lang,showLabel:false,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"NewPage",tabIndex:"-1",onClick:dojo.hitch(this,"_newPage")});
+},setEditor:function(_3){
+this.editor=_3;
+this._initButton();
+},_newPage:function(){
+this.editor.beginEditing();
+this.editor.set("value",this.content);
+this.editor.endEditing();
+this.editor.focus();
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+var _4=o.args.name.toLowerCase();
+if(_4==="newpage"){
+o.plugin=new dijit._editor.plugins.NewPage({content:("content" in o.args)?o.args.content:"<br>"});
+}
+});
+}
diff --git a/lib/dijit/_editor/plugins/Print.js b/lib/dijit/_editor/plugins/Print.js
new file mode 100644 (file)
index 0000000..b2e739a
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.Print"]){
+dojo._hasResource["dijit._editor.plugins.Print"]=true;
+dojo.provide("dijit._editor.plugins.Print");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit.form.Button");
+dojo.require("dojo.i18n");
+dojo.requireLocalization("dijit._editor","commands",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit._editor.plugins.Print",dijit._editor._Plugin,{_initButton:function(){
+var _1=dojo.i18n.getLocalization("dijit._editor","commands"),_2=this.editor;
+this.button=new dijit.form.Button({label:_1["print"],dir:_2.dir,lang:_2.lang,showLabel:false,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"Print",tabIndex:"-1",onClick:dojo.hitch(this,"_print")});
+},setEditor:function(_3){
+this.editor=_3;
+this._initButton();
+this.editor.onLoadDeferred.addCallback(dojo.hitch(this,function(){
+if(!this.editor.iframe.contentWindow["print"]){
+this.button.set("disabled",true);
+}
+}));
+},_print:function(){
+var _4=this.editor.iframe;
+if(_4.contentWindow["print"]){
+if(!dojo.isOpera&&!dojo.isChrome){
+dijit.focus(_4);
+_4.contentWindow.print();
+}else{
+var _5=this.editor.document;
+var _6=this.editor.get("value");
+_6="<html><head><meta http-equiv='Content-Type' "+"content='text/html; charset='UTF-8'></head><body>"+_6+"</body></html>";
+var _7=window.open("javascript: ''","","status=0,menubar=0,location=0,toolbar=0,"+"width=1,height=1,resizable=0,scrollbars=0");
+_7.document.open();
+_7.document.write(_6);
+_7.document.close();
+var _8=[];
+var _9=_5.getElementsByTagName("style");
+if(_9){
+var i;
+for(i=0;i<_9.length;i++){
+var _a=_9[i].innerHTML;
+var _b=_7.document.createElement("style");
+_b.appendChild(_7.document.createTextNode(_a));
+_7.document.getElementsByTagName("head")[0].appendChild(_b);
+}
+}
+_7.print();
+_7.close();
+}
+}
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+var _c=o.args.name.toLowerCase();
+if(_c==="print"){
+o.plugin=new dijit._editor.plugins.Print({command:"print"});
+}
+});
+}
diff --git a/lib/dijit/_editor/plugins/TabIndent.js b/lib/dijit/_editor/plugins/TabIndent.js
new file mode 100644 (file)
index 0000000..74cda40
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.TabIndent"]){
+dojo._hasResource["dijit._editor.plugins.TabIndent"]=true;
+dojo.provide("dijit._editor.plugins.TabIndent");
+dojo.experimental("dijit._editor.plugins.TabIndent");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit.form.ToggleButton");
+dojo.declare("dijit._editor.plugins.TabIndent",dijit._editor._Plugin,{useDefaultCommand:false,buttonClass:dijit.form.ToggleButton,command:"tabIndent",_initButton:function(){
+this.inherited(arguments);
+var e=this.editor;
+this.connect(this.button,"onChange",function(_1){
+e.set("isTabIndent",_1);
+});
+this.updateState();
+},updateState:function(){
+this.button.set("checked",this.editor.isTabIndent,false);
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+switch(o.args.name){
+case "tabIndent":
+o.plugin=new dijit._editor.plugins.TabIndent({command:o.args.name});
+}
+});
+}
diff --git a/lib/dijit/_editor/plugins/TextColor.js b/lib/dijit/_editor/plugins/TextColor.js
new file mode 100644 (file)
index 0000000..da7bbc9
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.TextColor"]){
+dojo._hasResource["dijit._editor.plugins.TextColor"]=true;
+dojo.provide("dijit._editor.plugins.TextColor");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit.ColorPalette");
+dojo.declare("dijit._editor.plugins.TextColor",dijit._editor._Plugin,{buttonClass:dijit.form.DropDownButton,useDefaultCommand:false,constructor:function(){
+this.dropDown=new dijit.ColorPalette();
+this.connect(this.dropDown,"onChange",function(_1){
+this.editor.execCommand(this.command,_1);
+});
+},updateState:function(){
+var _2=this.editor;
+var _3=this.command;
+if(!_2||!_2.isLoaded||!_3.length){
+return;
+}
+if(this.button){
+var _4;
+try{
+_4=_2.queryCommandValue(_3)||"";
+}
+catch(e){
+_4="";
+}
+}
+if(_4==""){
+_4="#000000";
+}
+if(_4=="transparent"){
+_4="#ffffff";
+}
+if(typeof _4=="string"){
+if(_4.indexOf("rgb")>-1){
+_4=dojo.colorFromRgb(_4).toHex();
+}
+}else{
+_4=((_4&255)<<16)|(_4&65280)|((_4&16711680)>>>16);
+_4=_4.toString(16);
+_4="#000000".slice(0,7-_4.length)+_4;
+}
+if(_4!==this.dropDown.get("value")){
+this.dropDown.set("value",_4,false);
+}
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+switch(o.args.name){
+case "foreColor":
+case "hiliteColor":
+o.plugin=new dijit._editor.plugins.TextColor({command:o.args.name});
+}
+});
+}
diff --git a/lib/dijit/_editor/plugins/ToggleDir.js b/lib/dijit/_editor/plugins/ToggleDir.js
new file mode 100644 (file)
index 0000000..f5ecb79
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.ToggleDir"]){
+dojo._hasResource["dijit._editor.plugins.ToggleDir"]=true;
+dojo.provide("dijit._editor.plugins.ToggleDir");
+dojo.experimental("dijit._editor.plugins.ToggleDir");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit.form.ToggleButton");
+dojo.declare("dijit._editor.plugins.ToggleDir",dijit._editor._Plugin,{useDefaultCommand:false,command:"toggleDir",buttonClass:dijit.form.ToggleButton,_initButton:function(){
+this.inherited(arguments);
+this.editor.onLoadDeferred.addCallback(dojo.hitch(this,function(){
+var _1=this.editor.editorObject.contentWindow.document.documentElement;
+_1=_1.getElementsByTagName("body")[0];
+var _2=dojo.getComputedStyle(_1).direction=="ltr";
+this.button.set("checked",!_2);
+this.connect(this.button,"onChange","_setRtl");
+}));
+},updateState:function(){
+},_setRtl:function(_3){
+var _4="ltr";
+if(_3){
+_4="rtl";
+}
+var _5=this.editor.editorObject.contentWindow.document.documentElement;
+_5=_5.getElementsByTagName("body")[0];
+_5.dir=_4;
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+switch(o.args.name){
+case "toggleDir":
+o.plugin=new dijit._editor.plugins.ToggleDir({command:o.args.name});
+}
+});
+}
diff --git a/lib/dijit/_editor/plugins/ViewSource.js b/lib/dijit/_editor/plugins/ViewSource.js
new file mode 100644 (file)
index 0000000..41ea297
--- /dev/null
@@ -0,0 +1,317 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.plugins.ViewSource"]){
+dojo._hasResource["dijit._editor.plugins.ViewSource"]=true;
+dojo.provide("dijit._editor.plugins.ViewSource");
+dojo.require("dojo.window");
+dojo.require("dojo.i18n");
+dojo.require("dijit._editor._Plugin");
+dojo.require("dijit.form.Button");
+dojo.requireLocalization("dijit._editor","commands",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit._editor.plugins.ViewSource",dijit._editor._Plugin,{stripScripts:true,stripComments:true,stripIFrames:true,readOnly:false,_fsPlugin:null,toggle:function(){
+if(dojo.isWebKit){
+this._vsFocused=true;
+}
+this.button.set("checked",!this.button.get("checked"));
+},_initButton:function(){
+var _1=dojo.i18n.getLocalization("dijit._editor","commands"),_2=this.editor;
+this.button=new dijit.form.ToggleButton({label:_1["viewSource"],dir:_2.dir,lang:_2.lang,showLabel:false,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"ViewSource",tabIndex:"-1",onChange:dojo.hitch(this,"_showSource")});
+if(dojo.isIE==7){
+this._ieFixNode=dojo.create("div",{style:{opacity:"0",zIndex:"-1000",position:"absolute",top:"-1000px"}},dojo.body());
+}
+this.button.set("readOnly",false);
+},setEditor:function(_3){
+this.editor=_3;
+this._initButton();
+this.editor.addKeyHandler(dojo.keys.F12,true,true,dojo.hitch(this,function(e){
+this.button.focus();
+this.toggle();
+dojo.stopEvent(e);
+setTimeout(dojo.hitch(this,function(){
+this.editor.focus();
+}),100);
+}));
+},_showSource:function(_4){
+var ed=this.editor;
+var _5=ed._plugins;
+var _6;
+this._sourceShown=_4;
+var _7=this;
+try{
+if(!this.sourceArea){
+this._createSourceView();
+}
+if(_4){
+ed._sourceQueryCommandEnabled=ed.queryCommandEnabled;
+ed.queryCommandEnabled=function(_8){
+var _9=_8.toLowerCase();
+if(_9==="viewsource"){
+return true;
+}else{
+return false;
+}
+};
+this.editor.onDisplayChanged();
+_6=ed.get("value");
+_6=this._filter(_6);
+ed.set("value",_6);
+this._pluginList=[];
+this._disabledPlugins=dojo.filter(_5,function(p){
+if(p&&p.button&&!p.button.get("disabled")&&!(p instanceof dijit._editor.plugins.ViewSource)){
+p._vs_updateState=p.updateState;
+p.updateState=function(){
+return false;
+};
+p.button.set("disabled",true);
+if(p.command){
+switch(p.command){
+case "bold":
+case "italic":
+case "underline":
+case "strikethrough":
+case "superscript":
+case "subscript":
+p.button.set("checked",false);
+break;
+default:
+break;
+}
+}
+return true;
+}
+});
+if(this._fsPlugin){
+this._fsPlugin._getAltViewNode=function(){
+return _7.sourceArea;
+};
+}
+this.sourceArea.value=_6;
+var is=dojo.marginBox(ed.iframe.parentNode);
+dojo.marginBox(this.sourceArea,{w:is.w,h:is.h});
+dojo.style(ed.iframe,"display","none");
+dojo.style(this.sourceArea,{display:"block"});
+var _a=function(){
+var vp=dojo.window.getBox();
+if("_prevW" in this&&"_prevH" in this){
+if(vp.w===this._prevW&&vp.h===this._prevH){
+return;
+}else{
+this._prevW=vp.w;
+this._prevH=vp.h;
+}
+}else{
+this._prevW=vp.w;
+this._prevH=vp.h;
+}
+if(this._resizer){
+clearTimeout(this._resizer);
+delete this._resizer;
+}
+this._resizer=setTimeout(dojo.hitch(this,function(){
+delete this._resizer;
+this._resize();
+}),10);
+};
+this._resizeHandle=dojo.connect(window,"onresize",this,_a);
+setTimeout(dojo.hitch(this,this._resize),100);
+this.editor.onNormalizedDisplayChanged();
+}else{
+if(!ed._sourceQueryCommandEnabled){
+return;
+}
+dojo.disconnect(this._resizeHandle);
+delete this._resizeHandle;
+ed.queryCommandEnabled=ed._sourceQueryCommandEnabled;
+if(!this._readOnly){
+_6=this.sourceArea.value;
+_6=this._filter(_6);
+ed.beginEditing();
+ed.set("value",_6);
+ed.endEditing();
+}
+dojo.forEach(this._disabledPlugins,function(p){
+p.button.set("disabled",false);
+if(p._vs_updateState){
+p.updateState=p._vs_updateState;
+}
+});
+this._disabledPlugins=null;
+dojo.style(this.sourceArea,"display","none");
+dojo.style(ed.iframe,"display","block");
+delete ed._sourceQueryCommandEnabled;
+this.editor.onDisplayChanged();
+}
+setTimeout(dojo.hitch(this,function(){
+var _b=ed.domNode.parentNode;
+if(_b){
+var _c=dijit.getEnclosingWidget(_b);
+if(_c&&_c.resize){
+_c.resize();
+}
+}
+ed.resize();
+}),300);
+}
+catch(e){
+}
+},_resize:function(){
+var ed=this.editor;
+var _d=ed.getHeaderHeight();
+var fH=ed.getFooterHeight();
+var eb=dojo.position(ed.domNode);
+var _e=dojo._getPadBorderExtents(ed.iframe.parentNode);
+var _f=dojo._getMarginExtents(ed.iframe.parentNode);
+var _10=dojo._getPadBorderExtents(ed.domNode);
+var _11=dojo._getMarginExtents(ed.domNode);
+var edb={w:eb.w-(_10.w+_11.w),h:eb.h-(_d+_10.h+_11.h+fH)};
+if(this._fsPlugin&&this._fsPlugin.isFullscreen){
+var vp=dojo.window.getBox();
+edb.w=(vp.w-_10.w);
+edb.h=(vp.h-(_d+_10.h+fH));
+}
+if(dojo.isIE){
+edb.h-=2;
+}
+if(this._ieFixNode){
+var _12=-this._ieFixNode.offsetTop/1000;
+edb.w=Math.floor((edb.w+0.9)/_12);
+edb.h=Math.floor((edb.h+0.9)/_12);
+}
+dojo.marginBox(this.sourceArea,{w:edb.w-(_e.w+_f.w),h:edb.h-(_e.h+_f.h)});
+dojo.marginBox(ed.iframe.parentNode,{h:edb.h});
+},_createSourceView:function(){
+var ed=this.editor;
+var _13=ed._plugins;
+this.sourceArea=dojo.create("textarea");
+if(this.readOnly){
+dojo.attr(this.sourceArea,"readOnly",true);
+this._readOnly=true;
+}
+dojo.style(this.sourceArea,{padding:"0px",margin:"0px",borderWidth:"0px",borderStyle:"none"});
+dojo.place(this.sourceArea,ed.iframe,"before");
+if(dojo.isIE&&ed.iframe.parentNode.lastChild!==ed.iframe){
+dojo.style(ed.iframe.parentNode.lastChild,{width:"0px",height:"0px",padding:"0px",margin:"0px",borderWidth:"0px",borderStyle:"none"});
+}
+ed._viewsource_oldFocus=ed.focus;
+var _14=this;
+ed.focus=function(){
+if(_14._sourceShown){
+_14.setSourceAreaCaret();
+}else{
+try{
+if(this._vsFocused){
+delete this._vsFocused;
+dijit.focus(ed.editNode);
+}else{
+ed._viewsource_oldFocus();
+}
+}
+catch(e){
+}
+}
+};
+var i,p;
+for(i=0;i<_13.length;i++){
+p=_13[i];
+if(p&&(p.declaredClass==="dijit._editor.plugins.FullScreen"||p.declaredClass===(dijit._scopeName+"._editor.plugins.FullScreen"))){
+this._fsPlugin=p;
+break;
+}
+}
+if(this._fsPlugin){
+this._fsPlugin._viewsource_getAltViewNode=this._fsPlugin._getAltViewNode;
+this._fsPlugin._getAltViewNode=function(){
+return _14._sourceShown?_14.sourceArea:this._viewsource_getAltViewNode();
+};
+}
+this.connect(this.sourceArea,"onkeydown",dojo.hitch(this,function(e){
+if(this._sourceShown&&e.keyCode==dojo.keys.F12&&e.ctrlKey&&e.shiftKey){
+this.button.focus();
+this.button.set("checked",false);
+setTimeout(dojo.hitch(this,function(){
+ed.focus();
+}),100);
+dojo.stopEvent(e);
+}
+}));
+},_stripScripts:function(_15){
+if(_15){
+_15=_15.replace(/<\s*script[^>]*>((.|\s)*?)<\\?\/\s*script\s*>/ig,"");
+_15=_15.replace(/<\s*script\b([^<>]|\s)*>?/ig,"");
+_15=_15.replace(/<[^>]*=(\s|)*[("|')]javascript:[^$1][(\s|.)]*[$1][^>]*>/ig,"");
+}
+return _15;
+},_stripComments:function(_16){
+if(_16){
+_16=_16.replace(/<!--(.|\s){1,}?-->/g,"");
+}
+return _16;
+},_stripIFrames:function(_17){
+if(_17){
+_17=_17.replace(/<\s*iframe[^>]*>((.|\s)*?)<\\?\/\s*iframe\s*>/ig,"");
+}
+return _17;
+},_filter:function(_18){
+if(_18){
+if(this.stripScripts){
+_18=this._stripScripts(_18);
+}
+if(this.stripComments){
+_18=this._stripComments(_18);
+}
+if(this.stripIFrames){
+_18=this._stripIFrames(_18);
+}
+}
+return _18;
+},setSourceAreaCaret:function(){
+var win=dojo.global;
+var _19=this.sourceArea;
+dijit.focus(_19);
+if(this._sourceShown&&!this.readOnly){
+if(dojo.isIE){
+if(this.sourceArea.createTextRange){
+var _1a=_19.createTextRange();
+_1a.collapse(true);
+_1a.moveStart("character",-99999);
+_1a.moveStart("character",0);
+_1a.moveEnd("character",0);
+_1a.select();
+}
+}else{
+if(win.getSelection){
+if(_19.setSelectionRange){
+_19.setSelectionRange(0,0);
+}
+}
+}
+}
+},destroy:function(){
+if(this._ieFixNode){
+dojo.body().removeChild(this._ieFixNode);
+}
+if(this._resizer){
+clearTimeout(this._resizer);
+delete this._resizer;
+}
+if(this._resizeHandle){
+dojo.disconnect(this._resizeHandle);
+delete this._resizeHandle;
+}
+this.inherited(arguments);
+}});
+dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){
+if(o.plugin){
+return;
+}
+var _1b=o.args.name.toLowerCase();
+if(_1b==="viewsource"){
+o.plugin=new dijit._editor.plugins.ViewSource({readOnly:("readOnly" in o.args)?o.args.readOnly:false,stripComments:("stripComments" in o.args)?o.args.stripComments:true,stripScripts:("stripScripts" in o.args)?o.args.stripScripts:true,stripIFrames:("stripIFrames" in o.args)?o.args.stripIFrames:true});
+}
+});
+}
diff --git a/lib/dijit/_editor/range.js b/lib/dijit/_editor/range.js
new file mode 100644 (file)
index 0000000..2b1bd81
--- /dev/null
@@ -0,0 +1,453 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.range"]){
+dojo._hasResource["dijit._editor.range"]=true;
+dojo.provide("dijit._editor.range");
+dijit.range={};
+dijit.range.getIndex=function(_1,_2){
+var _3=[],_4=[];
+var _5=_2;
+var _6=_1;
+var _7,n;
+while(_1!=_5){
+var i=0;
+_7=_1.parentNode;
+while((n=_7.childNodes[i++])){
+if(n===_1){
+--i;
+break;
+}
+}
+_3.unshift(i);
+_4.unshift(i-_7.childNodes.length);
+_1=_7;
+}
+if(_3.length>0&&_6.nodeType==3){
+n=_6.previousSibling;
+while(n&&n.nodeType==3){
+_3[_3.length-1]--;
+n=n.previousSibling;
+}
+n=_6.nextSibling;
+while(n&&n.nodeType==3){
+_4[_4.length-1]++;
+n=n.nextSibling;
+}
+}
+return {o:_3,r:_4};
+};
+dijit.range.getNode=function(_8,_9){
+if(!dojo.isArray(_8)||_8.length==0){
+return _9;
+}
+var _a=_9;
+dojo.every(_8,function(i){
+if(i>=0&&i<_a.childNodes.length){
+_a=_a.childNodes[i];
+}else{
+_a=null;
+return false;
+}
+return true;
+});
+return _a;
+};
+dijit.range.getCommonAncestor=function(n1,n2,_b){
+_b=_b||n1.ownerDocument.body;
+var _c=function(n){
+var as=[];
+while(n){
+as.unshift(n);
+if(n!==_b){
+n=n.parentNode;
+}else{
+break;
+}
+}
+return as;
+};
+var _d=_c(n1);
+var _e=_c(n2);
+var m=Math.min(_d.length,_e.length);
+var _f=_d[0];
+for(var i=1;i<m;i++){
+if(_d[i]===_e[i]){
+_f=_d[i];
+}else{
+break;
+}
+}
+return _f;
+};
+dijit.range.getAncestor=function(_10,_11,_12){
+_12=_12||_10.ownerDocument.body;
+while(_10&&_10!==_12){
+var _13=_10.nodeName.toUpperCase();
+if(_11.test(_13)){
+return _10;
+}
+_10=_10.parentNode;
+}
+return null;
+};
+dijit.range.BlockTagNames=/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/;
+dijit.range.getBlockAncestor=function(_14,_15,_16){
+_16=_16||_14.ownerDocument.body;
+_15=_15||dijit.range.BlockTagNames;
+var _17=null,_18;
+while(_14&&_14!==_16){
+var _19=_14.nodeName.toUpperCase();
+if(!_17&&_15.test(_19)){
+_17=_14;
+}
+if(!_18&&(/^(?:BODY|TD|TH|CAPTION)$/).test(_19)){
+_18=_14;
+}
+_14=_14.parentNode;
+}
+return {blockNode:_17,blockContainer:_18||_14.ownerDocument.body};
+};
+dijit.range.atBeginningOfContainer=function(_1a,_1b,_1c){
+var _1d=false;
+var _1e=(_1c==0);
+if(!_1e&&_1b.nodeType==3){
+if(/^[\s\xA0]+$/.test(_1b.nodeValue.substr(0,_1c))){
+_1e=true;
+}
+}
+if(_1e){
+var _1f=_1b;
+_1d=true;
+while(_1f&&_1f!==_1a){
+if(_1f.previousSibling){
+_1d=false;
+break;
+}
+_1f=_1f.parentNode;
+}
+}
+return _1d;
+};
+dijit.range.atEndOfContainer=function(_20,_21,_22){
+var _23=false;
+var _24=(_22==(_21.length||_21.childNodes.length));
+if(!_24&&_21.nodeType==3){
+if(/^[\s\xA0]+$/.test(_21.nodeValue.substr(_22))){
+_24=true;
+}
+}
+if(_24){
+var _25=_21;
+_23=true;
+while(_25&&_25!==_20){
+if(_25.nextSibling){
+_23=false;
+break;
+}
+_25=_25.parentNode;
+}
+}
+return _23;
+};
+dijit.range.adjacentNoneTextNode=function(_26,_27){
+var _28=_26;
+var len=(0-_26.length)||0;
+var _29=_27?"nextSibling":"previousSibling";
+while(_28){
+if(_28.nodeType!=3){
+break;
+}
+len+=_28.length;
+_28=_28[_29];
+}
+return [_28,len];
+};
+dijit.range._w3c=Boolean(window["getSelection"]);
+dijit.range.create=function(win){
+if(dijit.range._w3c){
+return (win||dojo.global).document.createRange();
+}else{
+return new dijit.range.W3CRange;
+}
+};
+dijit.range.getSelection=function(win,_2a){
+if(dijit.range._w3c){
+return win.getSelection();
+}else{
+var s=new dijit.range.ie.selection(win);
+if(!_2a){
+s._getCurrentSelection();
+}
+return s;
+}
+};
+if(!dijit.range._w3c){
+dijit.range.ie={cachedSelection:{},selection:function(win){
+this._ranges=[];
+this.addRange=function(r,_2b){
+this._ranges.push(r);
+if(!_2b){
+r._select();
+}
+this.rangeCount=this._ranges.length;
+};
+this.removeAllRanges=function(){
+this._ranges=[];
+this.rangeCount=0;
+};
+var _2c=function(){
+var r=win.document.selection.createRange();
+var _2d=win.document.selection.type.toUpperCase();
+if(_2d=="CONTROL"){
+return new dijit.range.W3CRange(dijit.range.ie.decomposeControlRange(r));
+}else{
+return new dijit.range.W3CRange(dijit.range.ie.decomposeTextRange(r));
+}
+};
+this.getRangeAt=function(i){
+return this._ranges[i];
+};
+this._getCurrentSelection=function(){
+this.removeAllRanges();
+var r=_2c();
+if(r){
+this.addRange(r,true);
+}
+};
+},decomposeControlRange:function(_2e){
+var _2f=_2e.item(0),_30=_2e.item(_2e.length-1);
+var _31=_2f.parentNode,_32=_30.parentNode;
+var _33=dijit.range.getIndex(_2f,_31).o;
+var _34=dijit.range.getIndex(_30,_32).o+1;
+return [_31,_33,_32,_34];
+},getEndPoint:function(_35,end){
+var _36=_35.duplicate();
+_36.collapse(!end);
+var _37="EndTo"+(end?"End":"Start");
+var _38=_36.parentElement();
+var _39,_3a,_3b;
+if(_38.childNodes.length>0){
+dojo.every(_38.childNodes,function(_3c,i){
+var _3d;
+if(_3c.nodeType!=3){
+_36.moveToElementText(_3c);
+if(_36.compareEndPoints(_37,_35)>0){
+if(_3b&&_3b.nodeType==3){
+_39=_3b;
+_3d=true;
+}else{
+_39=_38;
+_3a=i;
+return false;
+}
+}else{
+if(i==_38.childNodes.length-1){
+_39=_38;
+_3a=_38.childNodes.length;
+return false;
+}
+}
+}else{
+if(i==_38.childNodes.length-1){
+_39=_3c;
+_3d=true;
+}
+}
+if(_3d&&_39){
+var _3e=dijit.range.adjacentNoneTextNode(_39)[0];
+if(_3e){
+_39=_3e.nextSibling;
+}else{
+_39=_38.firstChild;
+}
+var _3f=dijit.range.adjacentNoneTextNode(_39);
+_3e=_3f[0];
+var _40=_3f[1];
+if(_3e){
+_36.moveToElementText(_3e);
+_36.collapse(false);
+}else{
+_36.moveToElementText(_38);
+}
+_36.setEndPoint(_37,_35);
+_3a=_36.text.length-_40;
+return false;
+}
+_3b=_3c;
+return true;
+});
+}else{
+_39=_38;
+_3a=0;
+}
+if(!end&&_39.nodeType==1&&_3a==_39.childNodes.length){
+var _41=_39.nextSibling;
+if(_41&&_41.nodeType==3){
+_39=_41;
+_3a=0;
+}
+}
+return [_39,_3a];
+},setEndPoint:function(_42,_43,_44){
+var _45=_42.duplicate(),_46,len;
+if(_43.nodeType!=3){
+if(_44>0){
+_46=_43.childNodes[_44-1];
+if(_46){
+if(_46.nodeType==3){
+_43=_46;
+_44=_46.length;
+}else{
+if(_46.nextSibling&&_46.nextSibling.nodeType==3){
+_43=_46.nextSibling;
+_44=0;
+}else{
+_45.moveToElementText(_46.nextSibling?_46:_43);
+var _47=_46.parentNode;
+var _48=_47.insertBefore(_46.ownerDocument.createTextNode(" "),_46.nextSibling);
+_45.collapse(false);
+_47.removeChild(_48);
+}
+}
+}
+}else{
+_45.moveToElementText(_43);
+_45.collapse(true);
+}
+}
+if(_43.nodeType==3){
+var _49=dijit.range.adjacentNoneTextNode(_43);
+var _4a=_49[0];
+len=_49[1];
+if(_4a){
+_45.moveToElementText(_4a);
+_45.collapse(false);
+if(_4a.contentEditable!="inherit"){
+len++;
+}
+}else{
+_45.moveToElementText(_43.parentNode);
+_45.collapse(true);
+}
+_44+=len;
+if(_44>0){
+if(_45.move("character",_44)!=_44){
+console.error("Error when moving!");
+}
+}
+}
+return _45;
+},decomposeTextRange:function(_4b){
+var _4c=dijit.range.ie.getEndPoint(_4b);
+var _4d=_4c[0],_4e=_4c[1];
+var _4f=_4c[0],_50=_4c[1];
+if(_4b.htmlText.length){
+if(_4b.htmlText==_4b.text){
+_50=_4e+_4b.text.length;
+}else{
+_4c=dijit.range.ie.getEndPoint(_4b,true);
+_4f=_4c[0],_50=_4c[1];
+}
+}
+return [_4d,_4e,_4f,_50];
+},setRange:function(_51,_52,_53,_54,_55,_56){
+var _57=dijit.range.ie.setEndPoint(_51,_52,_53);
+_51.setEndPoint("StartToStart",_57);
+if(!_56){
+var end=dijit.range.ie.setEndPoint(_51,_54,_55);
+}
+_51.setEndPoint("EndToEnd",end||_57);
+return _51;
+}};
+dojo.declare("dijit.range.W3CRange",null,{constructor:function(){
+if(arguments.length>0){
+this.setStart(arguments[0][0],arguments[0][1]);
+this.setEnd(arguments[0][2],arguments[0][3]);
+}else{
+this.commonAncestorContainer=null;
+this.startContainer=null;
+this.startOffset=0;
+this.endContainer=null;
+this.endOffset=0;
+this.collapsed=true;
+}
+},_updateInternal:function(){
+if(this.startContainer!==this.endContainer){
+this.commonAncestorContainer=dijit.range.getCommonAncestor(this.startContainer,this.endContainer);
+}else{
+this.commonAncestorContainer=this.startContainer;
+}
+this.collapsed=(this.startContainer===this.endContainer)&&(this.startOffset==this.endOffset);
+},setStart:function(_58,_59){
+_59=parseInt(_59);
+if(this.startContainer===_58&&this.startOffset==_59){
+return;
+}
+delete this._cachedBookmark;
+this.startContainer=_58;
+this.startOffset=_59;
+if(!this.endContainer){
+this.setEnd(_58,_59);
+}else{
+this._updateInternal();
+}
+},setEnd:function(_5a,_5b){
+_5b=parseInt(_5b);
+if(this.endContainer===_5a&&this.endOffset==_5b){
+return;
+}
+delete this._cachedBookmark;
+this.endContainer=_5a;
+this.endOffset=_5b;
+if(!this.startContainer){
+this.setStart(_5a,_5b);
+}else{
+this._updateInternal();
+}
+},setStartAfter:function(_5c,_5d){
+this._setPoint("setStart",_5c,_5d,1);
+},setStartBefore:function(_5e,_5f){
+this._setPoint("setStart",_5e,_5f,0);
+},setEndAfter:function(_60,_61){
+this._setPoint("setEnd",_60,_61,1);
+},setEndBefore:function(_62,_63){
+this._setPoint("setEnd",_62,_63,0);
+},_setPoint:function(_64,_65,_66,ext){
+var _67=dijit.range.getIndex(_65,_65.parentNode).o;
+this[_64](_65.parentNode,_67.pop()+ext);
+},_getIERange:function(){
+var r=(this._body||this.endContainer.ownerDocument.body).createTextRange();
+dijit.range.ie.setRange(r,this.startContainer,this.startOffset,this.endContainer,this.endOffset,this.collapsed);
+return r;
+},getBookmark:function(_68){
+this._getIERange();
+return this._cachedBookmark;
+},_select:function(){
+var r=this._getIERange();
+r.select();
+},deleteContents:function(){
+var r=this._getIERange();
+r.pasteHTML("");
+this.endContainer=this.startContainer;
+this.endOffset=this.startOffset;
+this.collapsed=true;
+},cloneRange:function(){
+var r=new dijit.range.W3CRange([this.startContainer,this.startOffset,this.endContainer,this.endOffset]);
+r._body=this._body;
+return r;
+},detach:function(){
+this._body=null;
+this.commonAncestorContainer=null;
+this.startContainer=null;
+this.startOffset=0;
+this.endContainer=null;
+this.endOffset=0;
+this.collapsed=true;
+}});
+}
+}
diff --git a/lib/dijit/_editor/selection.js b/lib/dijit/_editor/selection.js
new file mode 100644 (file)
index 0000000..3c99c06
--- /dev/null
@@ -0,0 +1,267 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._editor.selection"]){
+dojo._hasResource["dijit._editor.selection"]=true;
+dojo.provide("dijit._editor.selection");
+dojo.mixin(dijit._editor.selection,{getType:function(){
+if(dojo.isIE){
+return dojo.doc.selection.type.toLowerCase();
+}else{
+var _1="text";
+var _2;
+try{
+_2=dojo.global.getSelection();
+}
+catch(e){
+}
+if(_2&&_2.rangeCount==1){
+var _3=_2.getRangeAt(0);
+if((_3.startContainer==_3.endContainer)&&((_3.endOffset-_3.startOffset)==1)&&(_3.startContainer.nodeType!=3)){
+_1="control";
+}
+}
+return _1;
+}
+},getSelectedText:function(){
+if(dojo.isIE){
+if(dijit._editor.selection.getType()=="control"){
+return null;
+}
+return dojo.doc.selection.createRange().text;
+}else{
+var _4=dojo.global.getSelection();
+if(_4){
+return _4.toString();
+}
+}
+return "";
+},getSelectedHtml:function(){
+if(dojo.isIE){
+if(dijit._editor.selection.getType()=="control"){
+return null;
+}
+return dojo.doc.selection.createRange().htmlText;
+}else{
+var _5=dojo.global.getSelection();
+if(_5&&_5.rangeCount){
+var i;
+var _6="";
+for(i=0;i<_5.rangeCount;i++){
+var _7=_5.getRangeAt(i).cloneContents();
+var _8=dojo.doc.createElement("div");
+_8.appendChild(_7);
+_6+=_8.innerHTML;
+}
+return _6;
+}
+return null;
+}
+},getSelectedElement:function(){
+if(dijit._editor.selection.getType()=="control"){
+if(dojo.isIE){
+var _9=dojo.doc.selection.createRange();
+if(_9&&_9.item){
+return dojo.doc.selection.createRange().item(0);
+}
+}else{
+var _a=dojo.global.getSelection();
+return _a.anchorNode.childNodes[_a.anchorOffset];
+}
+}
+return null;
+},getParentElement:function(){
+if(dijit._editor.selection.getType()=="control"){
+var p=this.getSelectedElement();
+if(p){
+return p.parentNode;
+}
+}else{
+if(dojo.isIE){
+var r=dojo.doc.selection.createRange();
+r.collapse(true);
+return r.parentElement();
+}else{
+var _b=dojo.global.getSelection();
+if(_b){
+var _c=_b.anchorNode;
+while(_c&&(_c.nodeType!=1)){
+_c=_c.parentNode;
+}
+return _c;
+}
+}
+}
+return null;
+},hasAncestorElement:function(_d){
+return this.getAncestorElement.apply(this,arguments)!=null;
+},getAncestorElement:function(_e){
+var _f=this.getSelectedElement()||this.getParentElement();
+return this.getParentOfType(_f,arguments);
+},isTag:function(_10,_11){
+if(_10&&_10.tagName){
+var _12=_10.tagName.toLowerCase();
+for(var i=0;i<_11.length;i++){
+var _13=String(_11[i]).toLowerCase();
+if(_12==_13){
+return _13;
+}
+}
+}
+return "";
+},getParentOfType:function(_14,_15){
+while(_14){
+if(this.isTag(_14,_15).length){
+return _14;
+}
+_14=_14.parentNode;
+}
+return null;
+},collapse:function(_16){
+if(window.getSelection){
+var _17=dojo.global.getSelection();
+if(_17.removeAllRanges){
+if(_16){
+_17.collapseToStart();
+}else{
+_17.collapseToEnd();
+}
+}else{
+_17.collapse(_16);
+}
+}else{
+if(dojo.isIE){
+var _18=dojo.doc.selection.createRange();
+_18.collapse(_16);
+_18.select();
+}
+}
+},remove:function(){
+var sel=dojo.doc.selection;
+if(dojo.isIE){
+if(sel.type.toLowerCase()!="none"){
+sel.clear();
+}
+return sel;
+}else{
+sel=dojo.global.getSelection();
+sel.deleteFromDocument();
+return sel;
+}
+},selectElementChildren:function(_19,_1a){
+var win=dojo.global;
+var doc=dojo.doc;
+var _1b;
+_19=dojo.byId(_19);
+if(doc.selection&&dojo.isIE&&dojo.body().createTextRange){
+_1b=_19.ownerDocument.body.createTextRange();
+_1b.moveToElementText(_19);
+if(!_1a){
+try{
+_1b.select();
+}
+catch(e){
+}
+}
+}else{
+if(win.getSelection){
+var _1c=dojo.global.getSelection();
+if(dojo.isOpera){
+if(_1c.rangeCount){
+_1b=_1c.getRangeAt(0);
+}else{
+_1b=doc.createRange();
+}
+_1b.setStart(_19,0);
+_1b.setEnd(_19,(_19.nodeType==3)?_19.length:_19.childNodes.length);
+_1c.addRange(_1b);
+}else{
+_1c.selectAllChildren(_19);
+}
+}
+}
+},selectElement:function(_1d,_1e){
+var _1f;
+var doc=dojo.doc;
+var win=dojo.global;
+_1d=dojo.byId(_1d);
+if(dojo.isIE&&dojo.body().createTextRange){
+try{
+_1f=dojo.body().createControlRange();
+_1f.addElement(_1d);
+if(!_1e){
+_1f.select();
+}
+}
+catch(e){
+this.selectElementChildren(_1d,_1e);
+}
+}else{
+if(dojo.global.getSelection){
+var _20=win.getSelection();
+_1f=doc.createRange();
+if(_20.removeAllRanges){
+if(dojo.isOpera){
+if(_20.getRangeAt(0)){
+_1f=_20.getRangeAt(0);
+}
+}
+_1f.selectNode(_1d);
+_20.removeAllRanges();
+_20.addRange(_1f);
+}
+}
+}
+},inSelection:function(_21){
+if(_21){
+var _22;
+var doc=dojo.doc;
+var _23;
+if(dojo.global.getSelection){
+var sel=dojo.global.getSelection();
+if(sel&&sel.rangeCount>0){
+_23=sel.getRangeAt(0);
+}
+if(_23&&_23.compareBoundaryPoints&&doc.createRange){
+try{
+_22=doc.createRange();
+_22.setStart(_21,0);
+if(_23.compareBoundaryPoints(_23.START_TO_END,_22)===1){
+return true;
+}
+}
+catch(e){
+}
+}
+}else{
+if(doc.selection){
+_23=doc.selection.createRange();
+try{
+_22=_21.ownerDocument.body.createControlRange();
+if(_22){
+_22.addElement(_21);
+}
+}
+catch(e1){
+try{
+_22=_21.ownerDocument.body.createTextRange();
+_22.moveToElementText(_21);
+}
+catch(e2){
+}
+}
+if(_23&&_22){
+if(_23.compareEndPoints("EndToStart",_22)===1){
+return true;
+}
+}
+}
+}
+}
+return false;
+}});
+}
diff --git a/lib/dijit/_tree/dndSource.js b/lib/dijit/_tree/dndSource.js
new file mode 100644 (file)
index 0000000..41f9f2a
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit._tree.dndSource"]){
+dojo._hasResource["dijit._tree.dndSource"]=true;
+dojo.provide("dijit._tree.dndSource");
+dojo.require("dijit.tree.dndSource");
+dojo.deprecated("dijit._tree.dndSource has been moved to dijit.tree.dndSource, use that instead","","2.0");
+dijit._tree.dndSource=dijit.tree.dndSource;
+}
diff --git a/lib/dijit/dijit-all.js b/lib/dijit/dijit-all.js
new file mode 100644 (file)
index 0000000..4039311
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+if(!dojo._hasResource["dojo.colors"]){dojo._hasResource["dojo.colors"]=true;dojo.provide("dojo.colors");(function(){var _1=function(m1,m2,h){if(h<0){++h;}if(h>1){--h;}var h6=6*h;if(h6<1){return m1+(m2-m1)*h6;}if(2*h<1){return m2;}if(3*h<2){return m1+(m2-m1)*(2/3-h)*6;}return m1;};dojo.colorFromRgb=function(_2,_3){var m=_2.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(m){var c=m[2].split(/\s*,\s*/),l=c.length,t=m[1],a;if((t=="rgb"&&l==3)||(t=="rgba"&&l==4)){var r=c[0];if(r.charAt(r.length-1)=="%"){a=dojo.map(c,function(x){return parseFloat(x)*2.56;});if(l==4){a[3]=c[3];}return dojo.colorFromArray(a,_3);}return dojo.colorFromArray(c,_3);}if((t=="hsl"&&l==3)||(t=="hsla"&&l==4)){var H=((parseFloat(c[0])%360)+360)%360/360,S=parseFloat(c[1])/100,L=parseFloat(c[2])/100,m2=L<=0.5?L*(S+1):L+S-L*S,m1=2*L-m2;a=[_1(m1,m2,H+1/3)*256,_1(m1,m2,H)*256,_1(m1,m2,H-1/3)*256,1];if(l==4){a[3]=c[3];}return dojo.colorFromArray(a,_3);}}return null;};var _4=function(c,_5,_6){c=Number(c);return isNaN(c)?_6:c<_5?_5:c>_6?_6:c;};dojo.Color.prototype.sanitize=function(){var t=this;t.r=Math.round(_4(t.r,0,255));t.g=Math.round(_4(t.g,0,255));t.b=Math.round(_4(t.b,0,255));t.a=_4(t.a,0,1);return this;};})();dojo.colors.makeGrey=function(g,a){return dojo.colorFromArray([g,g,g,a]);};dojo.mixin(dojo.Color.named,{aliceblue:[240,248,255],antiquewhite:[250,235,215],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],blanchedalmond:[255,235,205],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],oldlace:[253,245,230],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],thistle:[216,191,216],tomato:[255,99,71],transparent:[0,0,0,0],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],whitesmoke:[245,245,245],yellowgreen:[154,205,50]});}if(!dojo._hasResource["dojo.i18n"]){dojo._hasResource["dojo.i18n"]=true;dojo.provide("dojo.i18n");dojo.i18n.getLocalization=function(_7,_8,_9){_9=dojo.i18n.normalizeLocale(_9);var _a=_9.split("-");var _b=[_7,"nls",_8].join(".");var _c=dojo._loadedModules[_b];if(_c){var _d;for(var i=_a.length;i>0;i--){var _e=_a.slice(0,i).join("_");if(_c[_e]){_d=_c[_e];break;}}if(!_d){_d=_c.ROOT;}if(_d){var _f=function(){};_f.prototype=_d;return new _f();}}throw new Error("Bundle not found: "+_8+" in "+_7+" , locale="+_9);};dojo.i18n.normalizeLocale=function(_10){var _11=_10?_10.toLowerCase():dojo.locale;if(_11=="root"){_11="ROOT";}return _11;};dojo.i18n._requireLocalization=function(_12,_13,_14,_15){var _16=dojo.i18n.normalizeLocale(_14);var _17=[_12,"nls",_13].join(".");var _18="";if(_15){var _19=_15.split(",");for(var i=0;i<_19.length;i++){if(_16["indexOf"](_19[i])==0){if(_19[i].length>_18.length){_18=_19[i];}}}if(!_18){_18="ROOT";}}var _1a=_15?_18:_16;var _1b=dojo._loadedModules[_17];var _1c=null;if(_1b){if(dojo.config.localizationComplete&&_1b._built){return;}var _1d=_1a.replace(/-/g,"_");var _1e=_17+"."+_1d;_1c=dojo._loadedModules[_1e];}if(!_1c){_1b=dojo["provide"](_17);var _1f=dojo._getModuleSymbols(_12);var _20=_1f.concat("nls").join("/");var _21;dojo.i18n._searchLocalePath(_1a,_15,function(loc){var _22=loc.replace(/-/g,"_");var _23=_17+"."+_22;var _24=false;if(!dojo._loadedModules[_23]){dojo["provide"](_23);var _25=[_20];if(loc!="ROOT"){_25.push(loc);}_25.push(_13);var _26=_25.join("/")+".js";_24=dojo._loadPath(_26,null,function(_27){var _28=function(){};_28.prototype=_21;_1b[_22]=new _28();for(var j in _27){_1b[_22][j]=_27[j];}});}else{_24=true;}if(_24&&_1b[_22]){_21=_1b[_22];}else{_1b[_22]=_21;}if(_15){return true;}});}if(_15&&_16!=_18){_1b[_16.replace(/-/g,"_")]=_1b[_18.replace(/-/g,"_")];}};(function(){var _29=dojo.config.extraLocale;if(_29){if(!_29 instanceof Array){_29=[_29];}var req=dojo.i18n._requireLocalization;dojo.i18n._requireLocalization=function(m,b,_2a,_2b){req(m,b,_2a,_2b);if(_2a){return;}for(var i=0;i<_29.length;i++){req(m,b,_29[i],_2b);}};}})();dojo.i18n._searchLocalePath=function(_2c,_2d,_2e){_2c=dojo.i18n.normalizeLocale(_2c);var _2f=_2c.split("-");var _30=[];for(var i=_2f.length;i>0;i--){_30.push(_2f.slice(0,i).join("-"));}_30.push(false);if(_2d){_30.reverse();}for(var j=_30.length-1;j>=0;j--){var loc=_30[j]||"ROOT";var _31=_2e(loc);if(_31){break;}}};dojo.i18n._preloadLocalizations=function(_32,_33){function _34(_35){_35=dojo.i18n.normalizeLocale(_35);dojo.i18n._searchLocalePath(_35,true,function(loc){for(var i=0;i<_33.length;i++){if(_33[i]==loc){dojo["require"](_32+"_"+loc);return true;}}return false;});};_34();var _36=dojo.config.extraLocale||[];for(var i=0;i<_36.length;i++){_34(_36[i]);}};}if(!dojo._hasResource["dijit._PaletteMixin"]){dojo._hasResource["dijit._PaletteMixin"]=true;dojo.provide("dijit._PaletteMixin");dojo.declare("dijit._PaletteMixin",[dijit._CssStateMixin],{defaultTimeout:500,timeoutChangeRate:0.9,value:null,_selectedCell:-1,tabIndex:"0",cellClass:"dijitPaletteCell",dyeClass:"",_preparePalette:function(_37,_38){this._cells=[];var url=this._blankGif;var _39=dojo.getObject(this.dyeClass);for(var row=0;row<_37.length;row++){var _3a=dojo.create("tr",{tabIndex:"-1"},this.gridNode);for(var col=0;col<_37[row].length;col++){var _3b=_37[row][col];if(_3b){var _3c=new _39(_3b);var _3d=dojo.create("td",{"class":this.cellClass,tabIndex:"-1",title:_38[_3b]});_3c.fillCell(_3d,url);this.connect(_3d,"ondijitclick","_onCellClick");this._trackMouseState(_3d,this.cellClass);dojo.place(_3d,_3a);_3d.index=this._cells.length;this._cells.push({node:_3d,dye:_3c});}}}this._xDim=_37[0].length;this._yDim=_37.length;var _3e={UP_ARROW:-this._xDim,DOWN_ARROW:this._xDim,RIGHT_ARROW:this.isLeftToRight()?1:-1,LEFT_ARROW:this.isLeftToRight()?-1:1};for(var key in _3e){this._connects.push(dijit.typematic.addKeyListener(this.domNode,{charOrCode:dojo.keys[key],ctrlKey:false,altKey:false,shiftKey:false},this,function(){var _3f=_3e[key];return function(_40){this._navigateByKey(_3f,_40);};}(),this.timeoutChangeRate,this.defaultTimeout));}},postCreate:function(){this.inherited(arguments);this._setCurrent(this._cells[0].node);},focus:function(){dijit.focus(this._currentFocus);},_onCellClick:function(evt){var _41=evt.currentTarget,_42=this._getDye(_41).getValue();this._setCurrent(_41);setTimeout(dojo.hitch(this,function(){dijit.focus(_41);this._setValueAttr(_42,true);}));dojo.removeClass(_41,"dijitPaletteCellHover");dojo.stopEvent(evt);},_setCurrent:function(_43){if("_currentFocus" in this){dojo.attr(this._currentFocus,"tabIndex","-1");}this._currentFocus=_43;if(_43){dojo.attr(_43,"tabIndex",this.tabIndex);}},_setValueAttr:function(_44,_45){this.value=null;if(this._selectedCell>=0){dojo.removeClass(this._cells[this._selectedCell].node,"dijitPaletteCellSelected");}this._selectedCell=-1;if(_44){for(var i=0;i<this._cells.length;i++){if(_44==this._cells[i].dye.getValue()){this._selectedCell=i;this.value=_44;dojo.addClass(this._cells[i].node,"dijitPaletteCellSelected");if(_45||_45===undefined){this.onChange(_44);}break;}}}},onChange:function(_46){},_navigateByKey:function(_47,_48){if(_48==-1){return;}var _49=this._currentFocus.index+_47;if(_49<this._cells.length&&_49>-1){var _4a=this._cells[_49].node;this._setCurrent(_4a);setTimeout(dojo.hitch(dijit,"focus",_4a),0);}},_getDye:function(_4b){return this._cells[_4b.index].dye;}});}if(!dojo._hasResource["dijit.ColorPalette"]){dojo._hasResource["dijit.ColorPalette"]=true;dojo.provide("dijit.ColorPalette");dojo.declare("dijit.ColorPalette",[dijit._Widget,dijit._Templated,dijit._PaletteMixin],{palette:"7x10",_palettes:{"7x10":[["white","seashell","cornsilk","lemonchiffon","lightyellow","palegreen","paleturquoise","lightcyan","lavender","plum"],["lightgray","pink","bisque","moccasin","khaki","lightgreen","lightseagreen","lightskyblue","cornflowerblue","violet"],["silver","lightcoral","sandybrown","orange","palegoldenrod","chartreuse","mediumturquoise","skyblue","mediumslateblue","orchid"],["gray","red","orangered","darkorange","yellow","limegreen","darkseagreen","royalblue","slateblue","mediumorchid"],["dimgray","crimson","chocolate","coral","gold","forestgreen","seagreen","blue","blueviolet","darkorchid"],["darkslategray","firebrick","saddlebrown","sienna","olive","green","darkcyan","mediumblue","darkslateblue","darkmagenta"],["black","darkred","maroon","brown","darkolivegreen","darkgreen","midnightblue","navy","indigo","purple"]],"3x4":[["white","lime","green","blue"],["silver","yellow","fuchsia","navy"],["gray","red","purple","black"]]},_imagePaths:{"7x10":dojo.moduleUrl("dijit.themes","a11y/colors7x10.png"),"3x4":dojo.moduleUrl("dijit.themes","a11y/colors3x4.png"),"7x10-rtl":dojo.moduleUrl("dijit.themes","a11y/colors7x10-rtl.png"),"3x4-rtl":dojo.moduleUrl("dijit.themes","a11y/colors3x4-rtl.png")},templateString:dojo.cache("dijit","templates/ColorPalette.html","<div class=\"dijitInline dijitColorPalette\">\n\t<img class=\"dijitColorPaletteUnder\" dojoAttachPoint=\"imageNode\" waiRole=\"presentation\" alt=\"\"/>\n\t<table class=\"dijitPaletteTable\" cellSpacing=\"0\" cellPadding=\"0\">\n\t\t<tbody dojoAttachPoint=\"gridNode\"></tbody>\n\t</table>\n</div>\n"),baseClass:"dijitColorPalette",dyeClass:"dijit._Color",buildRendering:function(){this.inherited(arguments);this.imageNode.setAttribute("src",this._imagePaths[this.palette+(this.isLeftToRight()?"":"-rtl")].toString());var _4c=dojo.i18n.getLocalization("dojo","colors",this.lang);this._preparePalette(this._palettes[this.palette],_4c);}});dojo.declare("dijit._Color",dojo.Color,{constructor:function(_4d){this._alias=_4d;this.setColor(dojo.Color.named[_4d]);},getValue:function(){return this.toHex();},fillCell:function(_4e,_4f){dojo.create("img",{src:_4f,"class":"dijitPaletteImg",alt:this._alias},_4e);}});}if(!dojo._hasResource["dijit.Declaration"]){dojo._hasResource["dijit.Declaration"]=true;dojo.provide("dijit.Declaration");dojo.declare("dijit.Declaration",dijit._Widget,{_noScript:true,widgetClass:"",defaults:null,mixins:[],buildRendering:function(){var src=this.srcNodeRef.parentNode.removeChild(this.srcNodeRef),_50=dojo.query("> script[type^='dojo/method'][event]",src).orphan(),_51=dojo.query("> script[type^='dojo/method']",src).orphan(),_52=dojo.query("> script[type^='dojo/connect']",src).orphan(),_53=src.nodeName;var _54=this.defaults||{};dojo.forEach(_50,function(s){var evt=s.getAttribute("event"),_55=dojo.parser._functionFromScript(s);_54[evt]=_55;});this.mixins=this.mixins.length?dojo.map(this.mixins,function(_56){return dojo.getObject(_56);}):[dijit._Widget,dijit._Templated];_54.widgetsInTemplate=true;_54._skipNodeCache=true;_54.templateString="<"+_53+" class='"+src.className+"' dojoAttachPoint='"+(src.getAttribute("dojoAttachPoint")||"")+"' dojoAttachEvent='"+(src.getAttribute("dojoAttachEvent")||"")+"' >"+src.innerHTML.replace(/\%7B/g,"{").replace(/\%7D/g,"}")+"</"+_53+">";dojo.query("[dojoType]",src).forEach(function(_57){_57.removeAttribute("dojoType");});var wc=dojo.declare(this.widgetClass,this.mixins,_54);var _58=_52.concat(_51);dojo.forEach(_58,function(s){var evt=s.getAttribute("event")||"postscript",_59=dojo.parser._functionFromScript(s);dojo.connect(wc.prototype,evt,_59);});}});}if(!dojo._hasResource["dojo.dnd.common"]){dojo._hasResource["dojo.dnd.common"]=true;dojo.provide("dojo.dnd.common");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.dnd.autoscroll"]){dojo._hasResource["dojo.dnd.autoscroll"]=true;dojo.provide("dojo.dnd.autoscroll");dojo.dnd.getViewport=function(){var d=dojo.doc,dd=d.documentElement,w=window,b=dojo.body();if(dojo.isMozilla){return {w:dd.clientWidth,h:w.innerHeight};}else{if(!dojo.isOpera&&w.innerWidth){return {w:w.innerWidth,h:w.innerHeight};}else{if(!dojo.isOpera&&dd&&dd.clientWidth){return {w:dd.clientWidth,h:dd.clientHeight};}else{if(b.clientWidth){return {w:b.clientWidth,h:b.clientHeight};}}}}return null;};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.dnd.getViewport(),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 _5a=n.scrollLeft,_5b=n.scrollTop;n.scrollLeft=n.scrollLeft+dx;n.scrollTop=n.scrollTop+dy;if(_5a!=n.scrollLeft||_5b!=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(_5c,e,_5d){this.node=dojo.byId(_5c);this.marginBox={l:e.pageX,t:e.pageY};this.mouseButton=e.button;var h=this.host=_5d,d=_5c.ownerDocument,_5e=dojo.connect(d,"onmousemove",this,"onFirstMove");this.events=[dojo.connect(d,"onmousemove",this,"onMouseMove"),dojo.connect(d,"onmouseup",this,"onMouseUp"),dojo.connect(d,"ondragstart",dojo.stopEvent),dojo.connect(d.body,"onselectstart",dojo.stopEvent),_5e];if(h&&h.onMoveStart){h.onMoveStart(this);}},onMouseMove:function(e){dojo.dnd.autoScroll(e);var m=this.marginBox;this.host.onMove(this,{l:m.l+e.pageX,t:m.t+e.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.pop());},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(_5f,_60){this.node=dojo.byId(_5f);if(!_60){_60={};}this.handle=_60.handle?dojo.byId(_60.handle):null;if(!this.handle){this.handle=this.node;}this.delay=_60.delay>0?_60.delay:0;this.skip=_60.skip;this.mover=_60.mover?_60.mover:dojo.dnd.Mover;this.events=[dojo.connect(this.handle,"onmousedown",this,"onMouseDown"),dojo.connect(this.handle,"ondragstart",this,"onSelectStart"),dojo.connect(this.handle,"onselectstart",this,"onSelectStart")];},markupFactory:function(_61,_62){return new dojo.dnd.Moveable(_62,_61);},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,"onmouseup",this,"onMouseUp"));this._lastX=e.pageX;this._lastY=e.pageY;}else{this.onDragDetected(e);}dojo.stopEvent(e);},onMouseMove:function(e){if(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.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(_63){dojo.publish("/dnd/move/start",[_63]);dojo.addClass(dojo.body(),"dojoMove");dojo.addClass(this.node,"dojoMoveItem");},onMoveStop:function(_64){dojo.publish("/dnd/move/stop",[_64]);dojo.removeClass(dojo.body(),"dojoMove");dojo.removeClass(this.node,"dojoMoveItem");},onFirstMove:function(_65,e){},onMove:function(_66,_67,e){this.onMoving(_66,_67);var s=_66.node.style;s.left=_67.l+"px";s.top=_67.t+"px";this.onMoved(_66,_67);},onMoving:function(_68,_69){},onMoved:function(_6a,_6b){}});}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(_6c,_6d){return new dojo.dnd.move.constrainedMoveable(_6d,_6c);},constructor:function(_6e,_6f){if(!_6f){_6f={};}this.constraints=_6f.constraints;this.within=_6f.within;},onFirstMove:function(_70){var c=this.constraintBox=this.constraints.call(this,_70);c.r=c.l+c.w;c.b=c.t+c.h;if(this.within){var mb=dojo.marginBox(_70.node);c.r-=mb.w;c.b-=mb.h;}},onMove:function(_71,_72){var c=this.constraintBox,s=_71.node.style;s.left=(_72.l<c.l?c.l:c.r<_72.l?c.r:_72.l)+"px";s.top=(_72.t<c.t?c.t:c.b<_72.t?c.b:_72.t)+"px";}});dojo.declare("dojo.dnd.move.boxConstrainedMoveable",dojo.dnd.move.constrainedMoveable,{box:{},markupFactory:function(_73,_74){return new dojo.dnd.move.boxConstrainedMoveable(_74,_73);},constructor:function(_75,_76){var box=_76&&_76.box;this.constraints=function(){return box;};}});dojo.declare("dojo.dnd.move.parentConstrainedMoveable",dojo.dnd.move.constrainedMoveable,{area:"content",markupFactory:function(_77,_78){return new dojo.dnd.move.parentConstrainedMoveable(_78,_77);},constructor:function(_79,_7a){var _7b=_7a&&_7a.area;this.constraints=function(){var n=this.node.parentNode,s=dojo.getComputedStyle(n),mb=dojo._getMarginBox(n,s);if(_7b=="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(_7b=="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(_7b=="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.move.constrainedMover=function(fun,_7c){dojo.deprecated("dojo.dnd.move.constrainedMover, use dojo.dnd.move.constrainedMoveable instead");var _7d=function(_7e,e,_7f){dojo.dnd.Mover.call(this,_7e,e,_7f);};dojo.extend(_7d,dojo.dnd.Mover.prototype);dojo.extend(_7d,{onMouseMove:function(e){dojo.dnd.autoScroll(e);var m=this.marginBox,c=this.constraintBox,l=m.l+e.pageX,t=m.t+e.pageY;l=l<c.l?c.l:c.r<l?c.r:l;t=t<c.t?c.t:c.b<t?c.b:t;this.host.onMove(this,{l:l,t:t});},onFirstMove:function(){dojo.dnd.Mover.prototype.onFirstMove.call(this);var c=this.constraintBox=fun.call(this);c.r=c.l+c.w;c.b=c.t+c.h;if(_7c){var mb=dojo.marginBox(this.node);c.r-=mb.w;c.b-=mb.h;}}});return _7d;};dojo.dnd.move.boxConstrainedMover=function(box,_80){dojo.deprecated("dojo.dnd.move.boxConstrainedMover, use dojo.dnd.move.boxConstrainedMoveable instead");return dojo.dnd.move.constrainedMover(function(){return box;},_80);};dojo.dnd.move.parentConstrainedMover=function(_81,_82){dojo.deprecated("dojo.dnd.move.parentConstrainedMover, use dojo.dnd.move.parentConstrainedMoveable instead");var fun=function(){var n=this.node.parentNode,s=dojo.getComputedStyle(n),mb=dojo._getMarginBox(n,s);if(_81=="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(_81=="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(_81=="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;};return dojo.dnd.move.constrainedMover(fun,_82);};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 _83=dojo.dnd.Moveable.prototype.onMove;dojo.declare("dojo.dnd.TimedMoveable",dojo.dnd.Moveable,{timeout:40,constructor:function(_84,_85){if(!_85){_85={};}if(_85.timeout&&typeof _85.timeout=="number"&&_85.timeout>=0){this.timeout=_85.timeout;}},markupFactory:function(_86,_87){return new dojo.dnd.TimedMoveable(_87,_86);},onMoveStop:function(_88){if(_88._timer){clearTimeout(_88._timer);_83.call(this,_88,_88._leftTop);}dojo.dnd.Moveable.prototype.onMoveStop.apply(this,arguments);},onMove:function(_89,_8a){_89._leftTop=_8a;if(!_89._timer){var _8b=this;_89._timer=setTimeout(function(){_89._timer=null;_83.call(_8b,_89,_89._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(_8c){var _8d=this;dojo.mixin(_8d,_8c);_8d.node=_8c.node;_8d._showArgs=dojo.mixin({},_8c);_8d._showArgs.node=_8d.node;_8d._showArgs.duration=_8d.showDuration;_8d.showAnim=_8d.showFunc(_8d._showArgs);_8d._hideArgs=dojo.mixin({},_8c);_8d._hideArgs.node=_8d.node;_8d._hideArgs.duration=_8d.hideDuration;_8d.hideAnim=_8d.hideFunc(_8d._hideArgs);dojo.connect(_8d.showAnim,"beforeBegin",dojo.hitch(_8d.hideAnim,"stop",true));dojo.connect(_8d.hideAnim,"beforeBegin",dojo.hitch(_8d.showAnim,"stop",true));},show:function(_8e){return this.showAnim.play(_8e||0);},hide:function(_8f){return this.hideAnim.play(_8f||0);}});}if(!dojo._hasResource["dojo.fx"]){dojo._hasResource["dojo.fx"]=true;dojo.provide("dojo.fx");(function(){var d=dojo,_90={_fire:function(evt,_91){if(this[evt]){this[evt].apply(this,_91||[]);}return this;}};var _92=function(_93){this._index=-1;this._animations=_93||[];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(_92,{_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(_94,_95){if(!this._current){this._current=this._animations[this._index=0];}if(!_95&&this._current.status()=="playing"){return this;}var _96=d.connect(this._current,"beforeBegin",this,function(){this._fire("beforeBegin");}),_97=d.connect(this._current,"onBegin",this,function(arg){this._fire("onBegin",arguments);}),_98=d.connect(this._current,"onPlay",this,function(arg){this._fire("onPlay",arguments);d.disconnect(_96);d.disconnect(_97);d.disconnect(_98);});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(_99,_9a){this.pause();var _9b=this.duration*_99;this._current=null;d.some(this._animations,function(a){if(a.duration<=_9b){this._current=a;return true;}_9b-=a.duration;return false;});if(this._current){this._current.gotoPercent(_9b/this._current.duration,_9a);}return this;},stop:function(_9c){if(this._current){if(_9c){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(_92,_90);dojo.fx.chain=function(_9d){return new _92(_9d);};var _9e=function(_9f){this._animations=_9f||[];this._connects=[];this._finished=0;this.duration=0;d.forEach(_9f,function(a){var _a0=a.duration;if(a.delay){_a0+=a.delay;}if(this.duration<_a0){this.duration=_a0;}this._connects.push(d.connect(a,"onEnd",this,"_onEnd"));},this);this._pseudoAnimation=new d.Animation({curve:[0,1],duration:this.duration});var _a1=this;d.forEach(["beforeBegin","onBegin","onPlay","onAnimate","onPause","onStop","onEnd"],function(evt){_a1._connects.push(d.connect(_a1._pseudoAnimation,evt,function(){_a1._fire(evt,arguments);}));});};d.extend(_9e,{_doAction:function(_a2,_a3){d.forEach(this._animations,function(a){a[_a2].apply(a,_a3);});return this;},_onEnd:function(){if(++this._finished>this._animations.length){this._fire("onEnd");}},_call:function(_a4,_a5){var t=this._pseudoAnimation;t[_a4].apply(t,_a5);},play:function(_a6,_a7){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(_a8,_a9){var ms=this.duration*_a8;d.forEach(this._animations,function(a){a.gotoPercent(a.duration<ms?1:(ms/a.duration),_a9);});this._call("gotoPercent",arguments);return this;},stop:function(_aa){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(_9e,_90);dojo.fx.combine=function(_ab){return new _9e(_ab);};dojo.fx.wipeIn=function(_ac){var _ad=_ac.node=d.byId(_ac.node),s=_ad.style,o;var _ae=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 _af=d.style(_ad,"height");return Math.max(_af,1);}},end:function(){return _ad.scrollHeight;}}}},_ac));d.connect(_ae,"onEnd",function(){s.height="auto";s.overflow=o;});return _ae;};dojo.fx.wipeOut=function(_b0){var _b1=_b0.node=d.byId(_b0.node),s=_b1.style,o;var _b2=d.animateProperty(d.mixin({properties:{height:{end:1}}},_b0));d.connect(_b2,"beforeBegin",function(){o=s.overflow;s.overflow="hidden";s.display="";});d.connect(_b2,"onEnd",function(){s.overflow=o;s.height="auto";s.display="none";});return _b2;};dojo.fx.slideTo=function(_b3){var _b4=_b3.node=d.byId(_b3.node),top=null,_b5=null;var _b6=(function(n){return function(){var cs=d.getComputedStyle(n);var pos=cs.position;top=(pos=="absolute"?n.offsetTop:parseInt(cs.top)||0);_b5=(pos=="absolute"?n.offsetLeft:parseInt(cs.left)||0);if(pos!="absolute"&&pos!="relative"){var ret=d.position(n,true);top=ret.y;_b5=ret.x;n.style.position="absolute";n.style.top=top+"px";n.style.left=_b5+"px";}};})(_b4);_b6();var _b7=d.animateProperty(d.mixin({properties:{top:_b3.top||0,left:_b3.left||0}},_b3));d.connect(_b7,"beforeBegin",_b7,_b6);return _b7;};})();}if(!dojo._hasResource["dijit.form._FormMixin"]){dojo._hasResource["dijit.form._FormMixin"]=true;dojo.provide("dijit.form._FormMixin");dojo.declare("dijit.form._FormMixin",null,{reset:function(){dojo.forEach(this.getDescendants(),function(_b8){if(_b8.reset){_b8.reset();}});},validate:function(){var _b9=false;return dojo.every(dojo.map(this.getDescendants(),function(_ba){_ba._hasBeenBlurred=true;var _bb=_ba.disabled||!_ba.validate||_ba.validate();if(!_bb&&!_b9){dojo.window.scrollIntoView(_ba.containerNode||_ba.domNode);_ba.focus();_b9=true;}return _bb;}),function(_bc){return _bc;});},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(_bd){if(!_bd.name){return;}var _be=map[_bd.name]||(map[_bd.name]=[]);_be.push(_bd);});for(var _bf in map){if(!map.hasOwnProperty(_bf)){continue;}var _c0=map[_bf],_c1=dojo.getObject(_bf,false,obj);if(_c1===undefined){continue;}if(!dojo.isArray(_c1)){_c1=[_c1];}if(typeof _c0[0].checked=="boolean"){dojo.forEach(_c0,function(w,i){w.set("value",dojo.indexOf(_c1,w.value)!=-1);});}else{if(_c0[0].multiple){_c0[0].set("value",_c1);}else{dojo.forEach(_c0,function(w,i){w.set("value",_c1[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(_c2){var _c3=_c2.name;if(!_c3||_c2.disabled){return;}var _c4=_c2.get("value");if(typeof _c2.checked=="boolean"){if(/Radio/.test(_c2.declaredClass)){if(_c4!==false){dojo.setObject(_c3,_c4,obj);}else{_c4=dojo.getObject(_c3,false,obj);if(_c4===undefined){dojo.setObject(_c3,null,obj);}}}else{var ary=dojo.getObject(_c3,false,obj);if(!ary){ary=[];dojo.setObject(_c3,ary,obj);}if(_c4!==false){ary.push(_c4);}}}else{var _c5=dojo.getObject(_c3,false,obj);if(typeof _c5!="undefined"){if(dojo.isArray(_c5)){_c5.push(_c4);}else{dojo.setObject(_c3,[_c5,_c4],obj);}}else{dojo.setObject(_c3,_c4,obj);}}});return obj;},isValid:function(){this._invalidWidgets=dojo.filter(this.getDescendants(),function(_c6){return !_c6.disabled&&_c6.isValid&&!_c6.isValid();});return !this._invalidWidgets.length;},onValidStateChange:function(_c7){},_widgetChange:function(_c8){var _c9=this._lastValidState;if(!_c8||this._lastValidState===undefined){_c9=this.isValid();if(this._lastValidState===undefined){this._lastValidState=_c9;}}else{if(_c8.isValid){this._invalidWidgets=dojo.filter(this._invalidWidgets||[],function(w){return (w!=_c8);},this);if(!_c8.isValid()&&!_c8.get("disabled")){this._invalidWidgets.push(_c8);}_c9=(this._invalidWidgets.length===0);}}if(_c9!==this._lastValidState){this._lastValidState=_c9;this.onValidStateChange(_c9);}},connectChildren:function(){dojo.forEach(this._changeConnections,dojo.hitch(this,"disconnect"));var _ca=this;var _cb=(this._changeConnections=[]);dojo.forEach(dojo.filter(this.getDescendants(),function(_cc){return _cc.validate;}),function(_cd){_cb.push(_ca.connect(_cd,"validate",dojo.hitch(_ca,"_widgetChange",_cd)));_cb.push(_ca.connect(_cd,"_setDisabledAttr",dojo.hitch(_ca,"_widgetChange",_cd)));});this._widgetChange(null);},startup:function(){this.inherited(arguments);this._changeConnections=[];this.connectChildren();}});}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(_ce){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();this.execute(this.get("value"));},_getFocusItems:function(_cf){var _d0=dijit._getTabNavigable(dojo.byId(_cf));this._firstFocusItem=_d0.lowest||_d0.first||_cf;this._lastFocusItem=_d0.last||_d0.highest||this._firstFocusItem;if(dojo.isMoz&&this._firstFocusItem.tagName.toLowerCase()=="input"&&dojo.getNodeProp(this._firstFocusItem,"type").toLowerCase()=="file"){dojo.attr(_cf,"tabIndex","0");this._firstFocusItem=_cf;}}});}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");},_setClassAttr:function(_d1){this.node.className="dijitDialogUnderlay "+_d1;},postCreate:function(){dojo.body().appendChild(this.domNode);},layout:function(){var is=this.node.style,os=this.domNode.style;os.display="none";var _d2=dojo.window.getBox();os.top=_d2.t+"px";os.left=_d2.l+"px";is.width=_d2.w+"px";is.height=_d2.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();this.domNode.style.display="none";},uninitialize:function(){if(this.bgIframe){this.bgIframe.destroy();}this.inherited(arguments);}});}if(!dojo._hasResource["dojo.html"]){dojo._hasResource["dojo.html"]=true;dojo.provide("dojo.html");(function(){var _d3=0,d=dojo;dojo.html._secureForInnerHtml=function(_d4){return _d4.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"");};dojo.html._emptyNode=dojo.empty;dojo.html._setNodeContent=function(_d5,_d6){d.empty(_d5);if(_d6){if(typeof _d6=="string"){_d6=d._toDom(_d6,_d5.ownerDocument);}if(!_d6.nodeType&&d.isArrayLike(_d6)){for(var _d7=_d6.length,i=0;i<_d6.length;i=_d7==_d6.length?i+1:0){d.place(_d6[i],_d5,"last");}}else{d.place(_d6,_d5,"last");}}return _d5;};dojo.declare("dojo.html._ContentSetter",null,{node:"",content:"",id:"",cleanContent:false,extractContent:false,parseContent:false,constructor:function(_d8,_d9){dojo.mixin(this,_d8||{});_d9=this.node=dojo.byId(this.node||_d9);if(!this.id){this.id=["Setter",(_d9)?_d9.id||_d9.tagName:"",_d3++].join("_");}},set:function(_da,_db){if(undefined!==_da){this.content=_da;}if(_db){this._mixin(_db);}this.onBegin();this.setContent();this.onEnd();return this.node;},setContent:function(){var _dc=this.node;if(!_dc){throw new Error(this.declaredClass+": setContent given no node");}try{_dc=dojo.html._setNodeContent(_dc,this.content);}catch(e){var _dd=this.onContentError(e);try{_dc.innerHTML=_dd;}catch(e){console.error("Fatal "+this.declaredClass+".setContent could not change content due to "+e.message,e);}}this.node=_dc;},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 _de=this.content;if(dojo.isString(_de)){if(this.cleanContent){_de=dojo.html._secureForInnerHtml(_de);}if(this.extractContent){var _df=_de.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_df){_de=_df[1];}}}this.empty();this.content=_de;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(_e0){var _e1={},key;for(key in _e0){if(key in _e1){continue;}this[key]=_e0[key];}},_parse:function(){var _e2=this.node;try{this.parseResults=dojo.parser.parse({rootNode:_e2,dir:this.dir,lang:this.lang});}catch(e){this._onError("Content",e,"Error parsing in _ContentSetter#"+this.id);}},_onError:function(_e3,err,_e4){var _e5=this["on"+_e3+"Error"].call(this,err);if(_e4){console.error(_e4,err);}else{if(_e5){dojo.html._setNodeContent(this.node,_e5,true);}}}});dojo.html.set=function(_e6,_e7,_e8){if(undefined==_e7){console.warn("dojo.html.set: no cont argument provided, using empty string");_e7="";}if(!_e8){return dojo.html._setNodeContent(_e6,_e7,true);}else{var op=new dojo.html._ContentSetter(dojo.mixin(_e8,{content:_e7,node:_e6}));return op.set();}};})();}if(!dojo._hasResource["dijit.layout.ContentPane"]){dojo._hasResource["dijit.layout.ContentPane"]=true;dojo.provide("dijit.layout.ContentPane");dojo.declare("dijit.layout.ContentPane",dijit._Widget,{href:"",extractContent:false,parseOnLoad:true,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"<span class='dijitContentPaneLoading'>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'>${errorState}</span>",isLoaded:false,baseClass:"dijitContentPane",doLayout:true,ioArgs:{},isContainer:true,isLayoutContainer:true,onLoadDeferred:null,attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{title:[]}),postMixInProperties:function(){this.inherited(arguments);var _e9=dojo.i18n.getLocalization("dijit","loading",this.lang);this.loadingMessage=dojo.string.substitute(this.loadingMessage,_e9);this.errorMessage=dojo.string.substitute(this.errorMessage,_e9);if(!this.href&&this.srcNodeRef&&this.srcNodeRef.innerHTML){this.isLoaded=true;}},buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}},postCreate:function(){this.domNode.title="";if(!dojo.attr(this.domNode,"role")){dijit.setWaiRole(this.domNode,"group");}dojo.addClass(this.domNode,this.baseClass);},startup:function(){if(this._started){return;}var _ea=dijit._Contained.prototype.getParent.call(this);this._childOfLayoutWidget=_ea&&_ea.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;if(this.isLoaded){dojo.forEach(this.getChildren(),function(_eb){_eb.startup();});}if(this._isShown()||this.preload){this._onShow();}this.inherited(arguments);},_checkIfSingleChild:function(){var _ec=dojo.query("> *",this.containerNode).filter(function(_ed){return _ed.tagName!=="SCRIPT";}),_ee=_ec.filter(function(_ef){return dojo.hasAttr(_ef,"dojoType")||dojo.hasAttr(_ef,"widgetId");}),_f0=dojo.filter(_ee.map(dijit.byNode),function(_f1){return _f1&&_f1.domNode&&_f1.resize;});if(_ec.length==_ee.length&&_f0.length==1){this._singleChild=_f0[0];}else{delete this._singleChild;}dojo.toggleClass(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild);},setHref:function(_f2){dojo.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",_f2);},_setHrefAttr:function(_f3){this.cancel();this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel"));this.href=_f3;if(this._created&&(this.preload||this._isShown())){this._load();}else{this._hrefChanged=true;}return this.onLoadDeferred;},setContent:function(_f4){dojo.deprecated("dijit.layout.ContentPane.setContent() is deprecated.  Use set('content', ...) instead.","","2.0");this.set("content",_f4);},_setContentAttr:function(_f5){this.href="";this.cancel();this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel"));this._setContent(_f5||"");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(_f6){if(this._beingDestroyed){return;}this.inherited(arguments);},resize:function(_f7,_f8){if(!this._wasShown){this._onShow();}this._resizeCalled=true;if(_f7){dojo.marginBox(this.domNode,_f7);}var cn=this.containerNode;if(cn===this.domNode){var mb=_f8||{};dojo.mixin(mb,_f7||{});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();},_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 _f9=this.domNode;return (_f9.style.display!="none")&&(_f9.style.visibility!="hidden")&&!dojo.hasClass(_f9,"dijitHidden");}}},_onShow:function(){if(this.href){if(!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow)){this.refresh();}}else{if(!this._childOfLayoutWidget&&this._needLayout){this._layoutChildren();}}this.inherited(arguments);this._wasShown=true;},refresh:function(){this.cancel();this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel"));this._load();return this.onLoadDeferred;},_load:function(){this._setContent(this.onDownloadStart(),true);var _fa=this;var _fb={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};if(dojo.isObject(this.ioArgs)){dojo.mixin(_fb,this.ioArgs);}var _fc=(this._xhrDfd=(this.ioMethod||dojo.xhrGet)(_fb));_fc.addCallback(function(_fd){try{_fa._isDownloaded=true;_fa._setContent(_fd,false);_fa.onDownloadEnd();}catch(err){_fa._onError("Content",err);}delete _fa._xhrDfd;return _fd;});_fc.addErrback(function(err){if(!_fc.canceled){_fa._onError("Download",err);}delete _fa._xhrDfd;return err;});delete this._hrefChanged;},_onLoadHandler:function(_fe){this.isLoaded=true;try{this.onLoadDeferred.callback(_fe);this.onLoad(_fe);}catch(e){console.error("Error "+this.widgetId+" running custom onLoad code: "+e.message);}},_onUnloadHandler:function(){this.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 _ff=this._contentSetter;dojo.forEach(this.getChildren(),function(_100){if(_100.destroyRecursive){_100.destroyRecursive();}});if(_ff){dojo.forEach(_ff.parseResults,function(_101){if(_101.destroyRecursive&&_101.domNode&&_101.domNode.parentNode==dojo.body()){_101.destroyRecursive();}});delete _ff.parseResults;}dojo.html._emptyNode(this.containerNode);delete this._singleChild;},_setContent:function(cont,_102){this.destroyDescendants();var _103=this._contentSetter;if(!(_103&&_103 instanceof dojo.html._ContentSetter)){_103=this._contentSetter=new dojo.html._ContentSetter({node:this.containerNode,_onError:dojo.hitch(this,this._onError),onContentError:dojo.hitch(this,function(e){var _104=this.onContentError(e);try{this.containerNode.innerHTML=_104;}catch(e){console.error("Fatal "+this.id+" could not change content due to "+e.message,e);}})});}var _105=dojo.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:this.parseOnLoad,dir:this.dir,lang:this.lang},this._contentSetterParams||{});dojo.mixin(_103,_105);_103.set((dojo.isObject(cont)&&cont.domNode)?cont.domNode:cont);delete this._contentSetterParams;if(!_102){dojo.forEach(this.getChildren(),function(_106){if(!this.parseOnLoad||_106.getParent){_106.startup();}},this);this._scheduleLayout();this._onLoadHandler(cont);}},_onError:function(type,err,_107){this.onLoadDeferred.errback(err);var _108=this["on"+type+"Error"].call(this,err);if(_107){console.error(_107,err);}else{if(_108){this._setContent(_108,true);}}},_scheduleLayout:function(){if(this._isShown()){this._layoutChildren();}else{this._needLayout=true;}},_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(_109){if(_109.resize){_109.resize();}});}delete this._needLayout;},onLoad:function(data){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage;},onContentError:function(_10a){},onDownloadError:function(_10b){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 waiRole=\"presentation\">\n\t<div class=\"dijitTooltipContainer\" waiRole=\"presentation\">\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" dojoAttachPoint=\"containerNode\" tabindex=\"-1\" waiRole=\"dialog\"></div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" waiRole=\"presentation\"></div>\n</div>\n"),postCreate:function(){this.inherited(arguments);this.connect(this.containerNode,"onkeypress","_onKey");this.containerNode.title=this.title;},orient:function(node,_10c,_10d){var c=this._currentOrientClass;if(c){dojo.removeClass(this.domNode,c);}c="dijitTooltipAB"+(_10d.charAt(1)=="L"?"Left":"Right")+" dijitTooltip"+(_10d.charAt(0)=="T"?"Below":"Above");dojo.addClass(this.domNode,c);this._currentOrientClass=c;},onOpen:function(pos){this.orient(this.domNode,pos.aroundCorner,pos.corner);this._onShow();if(this.autofocus){this._getFocusItems(this.containerNode);dijit.focus(this._firstFocusItem);}},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 _10e=(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(!_10e){dijit.focus(this._lastFocusItem);}dojo.stopEvent(evt);}else{if(node==this._lastFocusItem&&evt.charOrCode===dk.TAB&&!evt.shiftKey){if(!_10e){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\" tabindex=\"-1\" waiRole=\"dialog\" waiState=\"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=\"onclick: onCancel\" title=\"${buttonCancel}\">\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 _10f=dojo.i18n.getLocalization("dijit","common");dojo.mixin(this,_10f);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){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});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(" ")};this._fadeIn=dojo.fadeIn({node:node,duration:this.duration,beforeBegin:dojo.hitch(this,function(){var _110=dijit._underlay;if(!_110){_110=dijit._underlay=new dijit.DialogUnderlay(this.underlayAttrs);}else{_110.set(this.underlayAttrs);}var ds=dijit._dialogStack,_111=948+ds.length*2;if(ds.length==1){_110.show();}dojo.style(dijit._underlay.domNode,"zIndex",_111);dojo.style(this.domNode,"zIndex",_111+1);}),onEnd:dojo.hitch(this,function(){if(this.autofocus){this._getFocusItems(this.domNode);dijit.focus(this._firstFocusItem);}})});this._fadeOut=dojo.fadeOut({node:node,duration:this.duration,onEnd:dojo.hitch(this,function(){node.style.display="none";var ds=dijit._dialogStack;if(ds.length==0){dijit._underlay.hide();}else{dojo.style(dijit._underlay.domNode,"zIndex",948+ds.length*2);dijit._underlay.set(ds[ds.length-1].underlayAttrs);}if(this.refocus){var _112=this._savedFocus;if(ds.length>0){var pd=ds[ds.length-1];if(!dojo.isDescendant(_112.node,pd.domNode)){pd._getFocusItems(pd.domNode);_112=pd._firstFocusItem;}}dijit.focus(_112);}})});},uninitialize:function(){var _113=false;if(this._fadeIn&&this._fadeIn.status()=="playing"){_113=true;this._fadeIn.stop();}if(this._fadeOut&&this._fadeOut.status()=="playing"){_113=true;this._fadeOut.stop();}if((this.open||_113)&&!dijit._underlay._destroyed){dijit._underlay.hide();}if(this._moveable){this._moveable.destroy();}this.inherited(arguments);},_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.marginBox(this.domNode);var _114=dojo.window.getBox();if(mb.w>=_114.w||mb.h>=_114.h){var w=Math.min(mb.w,Math.floor(_114.w*0.75)),h=Math.min(mb.h,Math.floor(_114.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,_115=dojo.window.getBox(),p=this._relativePosition,bb=p?null:dojo._getBorderBox(node),l=Math.floor(_115.l+(p?p.x:(_115.w-bb.w)/2)),t=Math.floor(_115.t+(p?p.y:(_115.h-bb.h)/2));dojo.style(node,{left:l+"px",top:t+"px"});}},_onKey:function(evt){var ds=dijit._dialogStack;if(ds[ds.length-1]!=this){return;}if(evt.charOrCode){var dk=dojo.keys;var node=evt.target;if(evt.charOrCode===dk.TAB){this._getFocusItems(this.domNode);}var _116=(this._firstFocusItem==this._lastFocusItem);if(node==this._firstFocusItem&&evt.shiftKey&&evt.charOrCode===dk.TAB){if(!_116){dijit.focus(this._lastFocusItem);}dojo.stopEvent(evt);}else{if(node==this._lastFocusItem&&evt.charOrCode===dk.TAB&&!evt.shiftKey){if(!_116){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._alreadyInitialized){this._setup();this._alreadyInitialized=true;}if(this._fadeOut.status()=="playing"){this._fadeOut.stop();}this._modalconnects.push(dojo.connect(window,"onscroll",this,"layout"));this._modalconnects.push(dojo.connect(window,"onresize",this,function(){var _117=dojo.window.getBox();if(!this._oldViewport||_117.h!=this._oldViewport.h||_117.w!=this._oldViewport.w){this.layout();this._oldViewport=_117;}}));this._modalconnects.push(dojo.connect(dojo.doc.documentElement,"onkeypress",this,"_onKey"));dojo.style(this.domNode,{opacity:0,display:""});this.open=true;this._onShow();this._size();this._position();dijit._dialogStack.push(this);this._fadeIn.play();this._savedFocus=dijit.getFocus(this);},hide:function(){var ds=dijit._dialogStack;if(!this._alreadyInitialized||this!=ds[ds.length-1]){return;}if(this._fadeIn.status()=="playing"){this._fadeIn.stop();}ds.pop();this._fadeOut.play();if(this._scrollConnected){this._scrollConnected=false;}dojo.forEach(this._modalconnects,dojo.disconnect);this._modalconnects=[];if(this._relativePosition){delete this._relativePosition;}this.open=false;this.onHide();},layout:function(){if(this.domNode.style.display!="none"){if(dijit._underlay){dijit._underlay.layout();}this._position();}},destroy:function(){dojo.forEach(this._modalconnects,dojo.disconnect);if(this.refocus&&this.open){setTimeout(dojo.hitch(dijit,"focus",this._savedFocus),25);}this.inherited(arguments);}});dojo.declare("dijit.Dialog",[dijit.layout.ContentPane,dijit._DialogBase],{});dijit._dialogStack=[];}if(!dojo._hasResource["dijit._editor.selection"]){dojo._hasResource["dijit._editor.selection"]=true;dojo.provide("dijit._editor.selection");dojo.mixin(dijit._editor.selection,{getType:function(){if(dojo.isIE){return dojo.doc.selection.type.toLowerCase();}else{var _118="text";var oSel;try{oSel=dojo.global.getSelection();}catch(e){}if(oSel&&oSel.rangeCount==1){var _119=oSel.getRangeAt(0);if((_119.startContainer==_119.endContainer)&&((_119.endOffset-_119.startOffset)==1)&&(_119.startContainer.nodeType!=3)){_118="control";}}return _118;}},getSelectedText:function(){if(dojo.isIE){if(dijit._editor.selection.getType()=="control"){return null;}return dojo.doc.selection.createRange().text;}else{var _11a=dojo.global.getSelection();if(_11a){return _11a.toString();}}return "";},getSelectedHtml:function(){if(dojo.isIE){if(dijit._editor.selection.getType()=="control"){return null;}return dojo.doc.selection.createRange().htmlText;}else{var _11b=dojo.global.getSelection();if(_11b&&_11b.rangeCount){var i;var html="";for(i=0;i<_11b.rangeCount;i++){var frag=_11b.getRangeAt(i).cloneContents();var div=dojo.doc.createElement("div");div.appendChild(frag);html+=div.innerHTML;}return html;}return null;}},getSelectedElement:function(){if(dijit._editor.selection.getType()=="control"){if(dojo.isIE){var _11c=dojo.doc.selection.createRange();if(_11c&&_11c.item){return dojo.doc.selection.createRange().item(0);}}else{var _11d=dojo.global.getSelection();return _11d.anchorNode.childNodes[_11d.anchorOffset];}}return null;},getParentElement:function(){if(dijit._editor.selection.getType()=="control"){var p=this.getSelectedElement();if(p){return p.parentNode;}}else{if(dojo.isIE){var r=dojo.doc.selection.createRange();r.collapse(true);return r.parentElement();}else{var _11e=dojo.global.getSelection();if(_11e){var node=_11e.anchorNode;while(node&&(node.nodeType!=1)){node=node.parentNode;}return node;}}}return null;},hasAncestorElement:function(_11f){return this.getAncestorElement.apply(this,arguments)!=null;},getAncestorElement:function(_120){var node=this.getSelectedElement()||this.getParentElement();return this.getParentOfType(node,arguments);},isTag:function(node,tags){if(node&&node.tagName){var _121=node.tagName.toLowerCase();for(var i=0;i<tags.length;i++){var _122=String(tags[i]).toLowerCase();if(_121==_122){return _122;}}}return "";},getParentOfType:function(node,tags){while(node){if(this.isTag(node,tags).length){return node;}node=node.parentNode;}return null;},collapse:function(_123){if(window.getSelection){var _124=dojo.global.getSelection();if(_124.removeAllRanges){if(_123){_124.collapseToStart();}else{_124.collapseToEnd();}}else{_124.collapse(_123);}}else{if(dojo.isIE){var _125=dojo.doc.selection.createRange();_125.collapse(_123);_125.select();}}},remove:function(){var sel=dojo.doc.selection;if(dojo.isIE){if(sel.type.toLowerCase()!="none"){sel.clear();}return sel;}else{sel=dojo.global.getSelection();sel.deleteFromDocument();return sel;}},selectElementChildren:function(_126,_127){var win=dojo.global;var doc=dojo.doc;var _128;_126=dojo.byId(_126);if(doc.selection&&dojo.isIE&&dojo.body().createTextRange){_128=_126.ownerDocument.body.createTextRange();_128.moveToElementText(_126);if(!_127){try{_128.select();}catch(e){}}}else{if(win.getSelection){var _129=dojo.global.getSelection();if(dojo.isOpera){if(_129.rangeCount){_128=_129.getRangeAt(0);}else{_128=doc.createRange();}_128.setStart(_126,0);_128.setEnd(_126,(_126.nodeType==3)?_126.length:_126.childNodes.length);_129.addRange(_128);}else{_129.selectAllChildren(_126);}}}},selectElement:function(_12a,_12b){var _12c;var doc=dojo.doc;var win=dojo.global;_12a=dojo.byId(_12a);if(dojo.isIE&&dojo.body().createTextRange){try{_12c=dojo.body().createControlRange();_12c.addElement(_12a);if(!_12b){_12c.select();}}catch(e){this.selectElementChildren(_12a,_12b);}}else{if(dojo.global.getSelection){var _12d=win.getSelection();_12c=doc.createRange();if(_12d.removeAllRanges){if(dojo.isOpera){if(_12d.getRangeAt(0)){_12c=_12d.getRangeAt(0);}}_12c.selectNode(_12a);_12d.removeAllRanges();_12d.addRange(_12c);}}}},inSelection:function(node){if(node){var _12e;var doc=dojo.doc;var _12f;if(dojo.global.getSelection){var sel=dojo.global.getSelection();if(sel&&sel.rangeCount>0){_12f=sel.getRangeAt(0);}if(_12f&&_12f.compareBoundaryPoints&&doc.createRange){try{_12e=doc.createRange();_12e.setStart(node,0);if(_12f.compareBoundaryPoints(_12f.START_TO_END,_12e)===1){return true;}}catch(e){}}}else{if(doc.selection){_12f=doc.selection.createRange();try{_12e=node.ownerDocument.body.createControlRange();if(_12e){_12e.addElement(node);}}catch(e1){try{_12e=node.ownerDocument.body.createTextRange();_12e.moveToElementText(node);}catch(e2){}}if(_12f&&_12e){if(_12f.compareEndPoints("EndToStart",_12e)===1){return true;}}}}}return false;}});}if(!dojo._hasResource["dijit._editor.range"]){dojo._hasResource["dijit._editor.range"]=true;dojo.provide("dijit._editor.range");dijit.range={};dijit.range.getIndex=function(node,_130){var ret=[],retR=[];var stop=_130;var _131=node;var _132,n;while(node!=stop){var i=0;_132=node.parentNode;while((n=_132.childNodes[i++])){if(n===node){--i;break;}}ret.unshift(i);retR.unshift(i-_132.childNodes.length);node=_132;}if(ret.length>0&&_131.nodeType==3){n=_131.previousSibling;while(n&&n.nodeType==3){ret[ret.length-1]--;n=n.previousSibling;}n=_131.nextSibling;while(n&&n.nodeType==3){retR[retR.length-1]++;n=n.nextSibling;}}return {o:ret,r:retR};};dijit.range.getNode=function(_133,_134){if(!dojo.isArray(_133)||_133.length==0){return _134;}var node=_134;dojo.every(_133,function(i){if(i>=0&&i<node.childNodes.length){node=node.childNodes[i];}else{node=null;return false;}return true;});return node;};dijit.range.getCommonAncestor=function(n1,n2,root){root=root||n1.ownerDocument.body;var _135=function(n){var as=[];while(n){as.unshift(n);if(n!==root){n=n.parentNode;}else{break;}}return as;};var n1as=_135(n1);var n2as=_135(n2);var m=Math.min(n1as.length,n2as.length);var com=n1as[0];for(var i=1;i<m;i++){if(n1as[i]===n2as[i]){com=n1as[i];}else{break;}}return com;};dijit.range.getAncestor=function(node,_136,root){root=root||node.ownerDocument.body;while(node&&node!==root){var name=node.nodeName.toUpperCase();if(_136.test(name)){return node;}node=node.parentNode;}return null;};dijit.range.BlockTagNames=/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/;dijit.range.getBlockAncestor=function(node,_137,root){root=root||node.ownerDocument.body;_137=_137||dijit.range.BlockTagNames;var _138=null,_139;while(node&&node!==root){var name=node.nodeName.toUpperCase();if(!_138&&_137.test(name)){_138=node;}if(!_139&&(/^(?:BODY|TD|TH|CAPTION)$/).test(name)){_139=node;}node=node.parentNode;}return {blockNode:_138,blockContainer:_139||node.ownerDocument.body};};dijit.range.atBeginningOfContainer=function(_13a,node,_13b){var _13c=false;var _13d=(_13b==0);if(!_13d&&node.nodeType==3){if(/^[\s\xA0]+$/.test(node.nodeValue.substr(0,_13b))){_13d=true;}}if(_13d){var _13e=node;_13c=true;while(_13e&&_13e!==_13a){if(_13e.previousSibling){_13c=false;break;}_13e=_13e.parentNode;}}return _13c;};dijit.range.atEndOfContainer=function(_13f,node,_140){var _141=false;var _142=(_140==(node.length||node.childNodes.length));if(!_142&&node.nodeType==3){if(/^[\s\xA0]+$/.test(node.nodeValue.substr(_140))){_142=true;}}if(_142){var _143=node;_141=true;while(_143&&_143!==_13f){if(_143.nextSibling){_141=false;break;}_143=_143.parentNode;}}return _141;};dijit.range.adjacentNoneTextNode=function(_144,next){var node=_144;var len=(0-_144.length)||0;var prop=next?"nextSibling":"previousSibling";while(node){if(node.nodeType!=3){break;}len+=node.length;node=node[prop];}return [node,len];};dijit.range._w3c=Boolean(window["getSelection"]);dijit.range.create=function(win){if(dijit.range._w3c){return (win||dojo.global).document.createRange();}else{return new dijit.range.W3CRange;}};dijit.range.getSelection=function(win,_145){if(dijit.range._w3c){return win.getSelection();}else{var s=new dijit.range.ie.selection(win);if(!_145){s._getCurrentSelection();}return s;}};if(!dijit.range._w3c){dijit.range.ie={cachedSelection:{},selection:function(win){this._ranges=[];this.addRange=function(r,_146){this._ranges.push(r);if(!_146){r._select();}this.rangeCount=this._ranges.length;};this.removeAllRanges=function(){this._ranges=[];this.rangeCount=0;};var _147=function(){var r=win.document.selection.createRange();var type=win.document.selection.type.toUpperCase();if(type=="CONTROL"){return new dijit.range.W3CRange(dijit.range.ie.decomposeControlRange(r));}else{return new dijit.range.W3CRange(dijit.range.ie.decomposeTextRange(r));}};this.getRangeAt=function(i){return this._ranges[i];};this._getCurrentSelection=function(){this.removeAllRanges();var r=_147();if(r){this.addRange(r,true);}};},decomposeControlRange:function(_148){var _149=_148.item(0),_14a=_148.item(_148.length-1);var _14b=_149.parentNode,_14c=_14a.parentNode;var _14d=dijit.range.getIndex(_149,_14b).o;var _14e=dijit.range.getIndex(_14a,_14c).o+1;return [_14b,_14d,_14c,_14e];},getEndPoint:function(_14f,end){var _150=_14f.duplicate();_150.collapse(!end);var _151="EndTo"+(end?"End":"Start");var _152=_150.parentElement();var _153,_154,_155;if(_152.childNodes.length>0){dojo.every(_152.childNodes,function(node,i){var _156;if(node.nodeType!=3){_150.moveToElementText(node);if(_150.compareEndPoints(_151,_14f)>0){if(_155&&_155.nodeType==3){_153=_155;_156=true;}else{_153=_152;_154=i;return false;}}else{if(i==_152.childNodes.length-1){_153=_152;_154=_152.childNodes.length;return false;}}}else{if(i==_152.childNodes.length-1){_153=node;_156=true;}}if(_156&&_153){var _157=dijit.range.adjacentNoneTextNode(_153)[0];if(_157){_153=_157.nextSibling;}else{_153=_152.firstChild;}var _158=dijit.range.adjacentNoneTextNode(_153);_157=_158[0];var _159=_158[1];if(_157){_150.moveToElementText(_157);_150.collapse(false);}else{_150.moveToElementText(_152);}_150.setEndPoint(_151,_14f);_154=_150.text.length-_159;return false;}_155=node;return true;});}else{_153=_152;_154=0;}if(!end&&_153.nodeType==1&&_154==_153.childNodes.length){var _15a=_153.nextSibling;if(_15a&&_15a.nodeType==3){_153=_15a;_154=0;}}return [_153,_154];},setEndPoint:function(_15b,_15c,_15d){var _15e=_15b.duplicate(),node,len;if(_15c.nodeType!=3){if(_15d>0){node=_15c.childNodes[_15d-1];if(node){if(node.nodeType==3){_15c=node;_15d=node.length;}else{if(node.nextSibling&&node.nextSibling.nodeType==3){_15c=node.nextSibling;_15d=0;}else{_15e.moveToElementText(node.nextSibling?node:_15c);var _15f=node.parentNode;var _160=_15f.insertBefore(node.ownerDocument.createTextNode(" "),node.nextSibling);_15e.collapse(false);_15f.removeChild(_160);}}}}else{_15e.moveToElementText(_15c);_15e.collapse(true);}}if(_15c.nodeType==3){var _161=dijit.range.adjacentNoneTextNode(_15c);var _162=_161[0];len=_161[1];if(_162){_15e.moveToElementText(_162);_15e.collapse(false);if(_162.contentEditable!="inherit"){len++;}}else{_15e.moveToElementText(_15c.parentNode);_15e.collapse(true);}_15d+=len;if(_15d>0){if(_15e.move("character",_15d)!=_15d){console.error("Error when moving!");}}}return _15e;},decomposeTextRange:function(_163){var _164=dijit.range.ie.getEndPoint(_163);var _165=_164[0],_166=_164[1];var _167=_164[0],_168=_164[1];if(_163.htmlText.length){if(_163.htmlText==_163.text){_168=_166+_163.text.length;}else{_164=dijit.range.ie.getEndPoint(_163,true);_167=_164[0],_168=_164[1];}}return [_165,_166,_167,_168];},setRange:function(_169,_16a,_16b,_16c,_16d,_16e){var _16f=dijit.range.ie.setEndPoint(_169,_16a,_16b);_169.setEndPoint("StartToStart",_16f);if(!_16e){var end=dijit.range.ie.setEndPoint(_169,_16c,_16d);}_169.setEndPoint("EndToEnd",end||_16f);return _169;}};dojo.declare("dijit.range.W3CRange",null,{constructor:function(){if(arguments.length>0){this.setStart(arguments[0][0],arguments[0][1]);this.setEnd(arguments[0][2],arguments[0][3]);}else{this.commonAncestorContainer=null;this.startContainer=null;this.startOffset=0;this.endContainer=null;this.endOffset=0;this.collapsed=true;}},_updateInternal:function(){if(this.startContainer!==this.endContainer){this.commonAncestorContainer=dijit.range.getCommonAncestor(this.startContainer,this.endContainer);}else{this.commonAncestorContainer=this.startContainer;}this.collapsed=(this.startContainer===this.endContainer)&&(this.startOffset==this.endOffset);},setStart:function(node,_170){_170=parseInt(_170);if(this.startContainer===node&&this.startOffset==_170){return;}delete this._cachedBookmark;this.startContainer=node;this.startOffset=_170;if(!this.endContainer){this.setEnd(node,_170);}else{this._updateInternal();}},setEnd:function(node,_171){_171=parseInt(_171);if(this.endContainer===node&&this.endOffset==_171){return;}delete this._cachedBookmark;this.endContainer=node;this.endOffset=_171;if(!this.startContainer){this.setStart(node,_171);}else{this._updateInternal();}},setStartAfter:function(node,_172){this._setPoint("setStart",node,_172,1);},setStartBefore:function(node,_173){this._setPoint("setStart",node,_173,0);},setEndAfter:function(node,_174){this._setPoint("setEnd",node,_174,1);},setEndBefore:function(node,_175){this._setPoint("setEnd",node,_175,0);},_setPoint:function(what,node,_176,ext){var _177=dijit.range.getIndex(node,node.parentNode).o;this[what](node.parentNode,_177.pop()+ext);},_getIERange:function(){var r=(this._body||this.endContainer.ownerDocument.body).createTextRange();dijit.range.ie.setRange(r,this.startContainer,this.startOffset,this.endContainer,this.endOffset,this.collapsed);return r;},getBookmark:function(body){this._getIERange();return this._cachedBookmark;},_select:function(){var r=this._getIERange();r.select();},deleteContents:function(){var r=this._getIERange();r.pasteHTML("");this.endContainer=this.startContainer;this.endOffset=this.startOffset;this.collapsed=true;},cloneRange:function(){var r=new dijit.range.W3CRange([this.startContainer,this.startOffset,this.endContainer,this.endOffset]);r._body=this._body;return r;},detach:function(){this._body=null;this.commonAncestorContainer=null;this.startContainer=null;this.startOffset=0;this.endContainer=null;this.endOffset=0;this.collapsed=true;}});}}if(!dojo._hasResource["dijit._editor.html"]){dojo._hasResource["dijit._editor.html"]=true;dojo.provide("dijit._editor.html");dijit._editor.escapeXml=function(str,_178){str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");if(!_178){str=str.replace(/'/gm,"&#39;");}return str;};dijit._editor.getNodeHtml=function(node){var _179;switch(node.nodeType){case 1:var _17a=node.nodeName.toLowerCase();if(!_17a||_17a.charAt(0)=="/"){return "";}_179="<"+_17a;var _17b=[];var attr;if(dojo.isIE&&node.outerHTML){var s=node.outerHTML;s=s.substr(0,s.indexOf(">")).replace(/(['"])[^"']*\1/g,"");var reg=/(\b\w+)\s?=/g;var m,key;while((m=reg.exec(s))){key=m[1];if(key.substr(0,3)!="_dj"){if(key=="src"||key=="href"){if(node.getAttribute("_djrealurl")){_17b.push([key,node.getAttribute("_djrealurl")]);continue;}}var val,_17c;switch(key){case "style":val=node.style.cssText.toLowerCase();break;case "class":val=node.className;break;case "width":if(_17a==="img"){_17c=/width=(\S+)/i.exec(s);if(_17c){val=_17c[1];}break;}case "height":if(_17a==="img"){_17c=/height=(\S+)/i.exec(s);if(_17c){val=_17c[1];}break;}default:val=node.getAttribute(key);}if(val!=null){_17b.push([key,val.toString()]);}}}}else{var i=0;while((attr=node.attributes[i++])){var n=attr.name;if(n.substr(0,3)!="_dj"){var v=attr.value;if(n=="src"||n=="href"){if(node.getAttribute("_djrealurl")){v=node.getAttribute("_djrealurl");}}_17b.push([n,v]);}}}_17b.sort(function(a,b){return a[0]<b[0]?-1:(a[0]==b[0]?0:1);});var j=0;while((attr=_17b[j++])){_179+=" "+attr[0]+"=\""+(dojo.isString(attr[1])?dijit._editor.escapeXml(attr[1],true):attr[1])+"\"";}if(_17a==="script"){_179+=">"+node.innerHTML+"</"+_17a+">";}else{if(node.childNodes.length){_179+=">"+dijit._editor.getChildrenHtml(node)+"</"+_17a+">";}else{switch(_17a){case "br":case "hr":case "img":case "input":case "base":case "meta":case "area":case "basefont":_179+=" />";break;default:_179+="></"+_17a+">";}}}break;case 4:case 3:_179=dijit._editor.escapeXml(node.nodeValue,true);break;case 8:_179="<!--"+dijit._editor.escapeXml(node.nodeValue,true)+"-->";break;default:_179="<!-- Element not recognized - Type: "+node.nodeType+" Name: "+node.nodeName+"-->";}return _179;};dijit._editor.getChildrenHtml=function(dom){var out="";if(!dom){return out;}var _17d=dom["childNodes"]||dom;var _17e=!dojo.isIE||_17d!==dom;var node,i=0;while((node=_17d[i++])){if(!_17e||node.parentNode==dom){out+=dijit._editor.getNodeHtml(node);}}return out;};}if(!dojo._hasResource["dijit._editor.RichText"]){dojo._hasResource["dijit._editor.RichText"]=true;dojo.provide("dijit._editor.RichText");if(!dojo.config["useXDomain"]||dojo.config["allowXdRichTextSave"]){if(dojo._postLoad){(function(){var _17f=dojo.doc.createElement("textarea");_17f.id=dijit._scopeName+"._editor.RichText.savedContent";dojo.style(_17f,{display:"none",position:"absolute",top:"-100px",height:"3px",width:"3px"});dojo.body().appendChild(_17f);})();}else{try{dojo.doc.write("<textarea id=\""+dijit._scopeName+"._editor.RichText.savedContent\" "+"style=\"display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;\"></textarea>");}catch(e){}}}dojo.declare("dijit._editor.RichText",[dijit._Widget,dijit._CssStateMixin],{constructor:function(_180){this.contentPreFilters=[];this.contentPostFilters=[];this.contentDomPreFilters=[];this.contentDomPostFilters=[];this.editingAreaStyleSheets=[];this.events=[].concat(this.events);this._keyHandlers={};this.contentPreFilters.push(dojo.hitch(this,"_preFixUrlAttributes"));if(dojo.isMoz){this.contentPreFilters.push(this._normalizeFontStyle);this.contentPostFilters.push(this._removeMozBogus);}if(dojo.isWebKit){this.contentPreFilters.push(this._removeWebkitBogus);this.contentPostFilters.push(this._removeWebkitBogus);}if(dojo.isIE){this.contentPostFilters.push(this._normalizeFontStyle);}if(_180&&dojo.isString(_180.value)){this.value=_180.value;}this.onLoadDeferred=new dojo.Deferred();},baseClass:"dijitEditor",inheritWidth:false,focusOnLoad:false,name:"",styleSheets:"",_content:"",height:"300px",minHeight:"1em",isClosed:true,isLoaded:false,_SEPARATOR:"@@**%%__RICHTEXTBOUNDRY__%%**@@",onLoadDeferred:null,isTabIndent:false,disableSpellCheck:false,postCreate:function(){if("textarea"==this.domNode.tagName.toLowerCase()){console.warn("RichText should not be used with the TEXTAREA tag.  See dijit._editor.RichText docs.");}this.inherited(arguments);dojo.publish(dijit._scopeName+"._editor.RichText::init",[this]);this.open();this.setupDefaultShortcuts();},setupDefaultShortcuts:function(){var exec=dojo.hitch(this,function(cmd,arg){return function(){return !this.execCommand(cmd,arg);};});var _181={b:exec("bold"),i:exec("italic"),u:exec("underline"),a:exec("selectall"),s:function(){this.save(true);},m:function(){this.isTabIndent=!this.isTabIndent;},"1":exec("formatblock","h1"),"2":exec("formatblock","h2"),"3":exec("formatblock","h3"),"4":exec("formatblock","h4"),"\\":exec("insertunorderedlist")};if(!dojo.isIE){_181.Z=exec("redo");}for(var key in _181){this.addKeyHandler(key,true,false,_181[key]);}},events:["onKeyPress","onKeyDown","onKeyUp","onClick"],captureEvents:[],_editorCommandsLocalized:false,_localizeEditorCommands:function(){if(this._editorCommandsLocalized){return;}this._editorCommandsLocalized=true;var _182=["div","p","pre","h1","h2","h3","h4","h5","h6","ol","ul","address"];var _183="",_184,i=0;while((_184=_182[i++])){if(_184.charAt(1)!="l"){_183+="<"+_184+"><span>content</span></"+_184+"><br/>";}else{_183+="<"+_184+"><li>content</li></"+_184+"><br/>";}}var div=dojo.doc.createElement("div");dojo.style(div,{position:"absolute",top:"-2000px"});dojo.doc.body.appendChild(div);div.innerHTML=_183;var node=div.firstChild;while(node){dijit._editor.selection.selectElement(node.firstChild);dojo.withGlobal(this.window,"selectElement",dijit._editor.selection,[node.firstChild]);var _185=node.tagName.toLowerCase();this._local2NativeFormatNames[_185]=document.queryCommandValue("formatblock");this._native2LocalFormatNames[this._local2NativeFormatNames[_185]]=_185;node=node.nextSibling.nextSibling;}dojo.body().removeChild(div);},open:function(_186){if(!this.onLoadDeferred||this.onLoadDeferred.fired>=0){this.onLoadDeferred=new dojo.Deferred();}if(!this.isClosed){this.close();}dojo.publish(dijit._scopeName+"._editor.RichText::open",[this]);this._content="";if(arguments.length==1&&_186.nodeName){this.domNode=_186;}var dn=this.domNode;var html;if(dojo.isString(this.value)){html=this.value;delete this.value;dn.innerHTML="";}else{if(dn.nodeName&&dn.nodeName.toLowerCase()=="textarea"){var ta=(this.textarea=dn);this.name=ta.name;html=ta.value;dn=this.domNode=dojo.doc.createElement("div");dn.setAttribute("widgetId",this.id);ta.removeAttribute("widgetId");dn.cssText=ta.cssText;dn.className+=" "+ta.className;dojo.place(dn,ta,"before");var _187=dojo.hitch(this,function(){dojo.style(ta,{display:"block",position:"absolute",top:"-1000px"});if(dojo.isIE){var s=ta.style;this.__overflow=s.overflow;s.overflow="hidden";}});if(dojo.isIE){setTimeout(_187,10);}else{_187();}if(ta.form){dojo.connect(ta.form,"onsubmit",this,function(){ta.value=this.getValue();});}}else{html=dijit._editor.getChildrenHtml(dn);dn.innerHTML="";}}var _188=dojo.contentBox(dn);this._oldHeight=_188.h;this._oldWidth=_188.w;this.savedContent=html;if(dn.nodeName&&dn.nodeName=="LI"){dn.innerHTML=" <br>";}this.header=dn.ownerDocument.createElement("div");dn.appendChild(this.header);this.editingArea=dn.ownerDocument.createElement("div");dn.appendChild(this.editingArea);this.footer=dn.ownerDocument.createElement("div");dn.appendChild(this.footer);if(this.name!==""&&(!dojo.config["useXDomain"]||dojo.config["allowXdRichTextSave"])){var _189=dojo.byId(dijit._scopeName+"._editor.RichText.savedContent");if(_189.value!==""){var _18a=_189.value.split(this._SEPARATOR),i=0,dat;while((dat=_18a[i++])){var data=dat.split(":");if(data[0]==this.name){html=data[1];_18a.splice(i,1);break;}}}dojo.addOnUnload(dojo.hitch(this,"_saveContent"));}this.isClosed=false;var ifr=(this.editorObject=this.iframe=dojo.doc.createElement("iframe"));ifr.id=this.id+"_iframe";this._iframeSrc=this._getIframeDocTxt();ifr.style.border="none";ifr.style.width="100%";if(this._layoutMode){ifr.style.height="100%";}else{if(dojo.isIE>=7){if(this.height){ifr.style.height=this.height;}if(this.minHeight){ifr.style.minHeight=this.minHeight;}}else{ifr.style.height=this.height?this.height:this.minHeight;}}ifr.frameBorder=0;ifr._loadFunc=dojo.hitch(this,function(win){this.window=win;this.document=this.window.document;if(dojo.isIE){this._localizeEditorCommands();}this.onLoad(html);});var s="javascript:parent."+dijit._scopeName+".byId(\""+this.id+"\")._iframeSrc";ifr.setAttribute("src",s);this.editingArea.appendChild(ifr);if(dn.nodeName=="LI"){dn.lastChild.style.marginTop="-1.2em";}dojo.addClass(this.domNode,this.baseClass);},_local2NativeFormatNames:{},_native2LocalFormatNames:{},_getIframeDocTxt:function(){var _18b=dojo.getComputedStyle(this.domNode);var html="";var _18c=true;if(dojo.isIE||(!this.height&&!dojo.isMoz)){html="<div id='dijitEditorBody'></div>";_18c=false;}else{if(dojo.isMoz){this._cursorToStart=true;html="&nbsp;";}}var font=[_18b.fontWeight,_18b.fontSize,_18b.fontFamily].join(" ");var _18d=_18b.lineHeight;if(_18d.indexOf("px")>=0){_18d=parseFloat(_18d)/parseFloat(_18b.fontSize);}else{if(_18d.indexOf("em")>=0){_18d=parseFloat(_18d);}else{_18d="normal";}}var _18e="";var self=this;this.style.replace(/(^|;)\s*(line-|font-?)[^;]+/ig,function(_18f){_18f=_18f.replace(/^;/ig,"")+";";var s=_18f.split(":")[0];if(s){s=dojo.trim(s);s=s.toLowerCase();var i;var sC="";for(i=0;i<s.length;i++){var c=s.charAt(i);switch(c){case "-":i++;c=s.charAt(i).toUpperCase();default:sC+=c;}}dojo.style(self.domNode,sC,"");}_18e+=_18f+";";});var _190=dojo.query("label[for=\""+this.id+"\"]");return [this.isLeftToRight()?"<html>\n<head>\n":"<html dir='rtl'>\n<head>\n",(dojo.isMoz&&_190.length?"<title>"+_190[0].innerHTML+"</title>\n":""),"<meta http-equiv='Content-Type' content='text/html'>\n","<style>\n","\tbody,html {\n","\t\tbackground:transparent;\n","\t\tpadding: 1px 0 0 0;\n","\t\tmargin: -1px 0 0 0;\n",((dojo.isWebKit)?"\t\twidth: 100%;\n":""),((dojo.isWebKit)?"\t\theight: 100%;\n":""),"\t}\n","\tbody{\n","\t\ttop:0px;\n","\t\tleft:0px;\n","\t\tright:0px;\n","\t\tfont:",font,";\n",((this.height||dojo.isOpera)?"":"\t\tposition: fixed;\n"),"\t\tmin-height:",this.minHeight,";\n","\t\tline-height:",_18d,";\n","\t}\n","\tp{ margin: 1em 0; }\n",(!_18c&&!this.height?"\tbody,html {overflow-y: hidden;}\n":""),"\t#dijitEditorBody{overflow-x: auto; overflow-y:"+(this.height?"auto;":"hidden;")+"}\n","\tli > ul:-moz-first-node, li > ol:-moz-first-node{ padding-top: 1.2em; }\n","\tli{ min-height:1.2em; }\n","</style>\n",this._applyEditingAreaStyleSheets(),"\n","</head>\n<body ",(_18c?"id='dijitEditorBody' ":""),"onload='frameElement._loadFunc(window,document)' style='"+_18e+"'>",html,"</body>\n</html>"].join("");},_applyEditingAreaStyleSheets:function(){var _191=[];if(this.styleSheets){_191=this.styleSheets.split(";");this.styleSheets="";}_191=_191.concat(this.editingAreaStyleSheets);this.editingAreaStyleSheets=[];var text="",i=0,url;while((url=_191[i++])){var _192=(new dojo._Url(dojo.global.location,url)).toString();this.editingAreaStyleSheets.push(_192);text+="<link rel=\"stylesheet\" type=\"text/css\" href=\""+_192+"\"/>";}return text;},addStyleSheet:function(uri){var url=uri.toString();if(url.charAt(0)=="."||(url.charAt(0)!="/"&&!uri.host)){url=(new dojo._Url(dojo.global.location,url)).toString();}if(dojo.indexOf(this.editingAreaStyleSheets,url)>-1){return;}this.editingAreaStyleSheets.push(url);this.onLoadDeferred.addCallback(dojo.hitch(function(){if(this.document.createStyleSheet){this.document.createStyleSheet(url);}else{var head=this.document.getElementsByTagName("head")[0];var _193=this.document.createElement("link");_193.rel="stylesheet";_193.type="text/css";_193.href=url;head.appendChild(_193);}}));},removeStyleSheet:function(uri){var url=uri.toString();if(url.charAt(0)=="."||(url.charAt(0)!="/"&&!uri.host)){url=(new dojo._Url(dojo.global.location,url)).toString();}var _194=dojo.indexOf(this.editingAreaStyleSheets,url);if(_194==-1){return;}delete this.editingAreaStyleSheets[_194];dojo.withGlobal(this.window,"query",dojo,["link:[href=\""+url+"\"]"]).orphan();},disabled:false,_mozSettingProps:{"styleWithCSS":false},_setDisabledAttr:function(_195){this.disabled=_195;if(!this.isLoaded){return;}_195=!!_195;if(dojo.isIE||dojo.isWebKit||dojo.isOpera){var _196=dojo.isIE&&(this.isLoaded||!this.focusOnLoad);if(_196){this.editNode.unselectable="on";}this.editNode.contentEditable=!_195;if(_196){var _197=this;setTimeout(function(){_197.editNode.unselectable="off";},0);}}else{try{this.document.designMode=(_195?"off":"on");}catch(e){return;}if(!_195&&this._mozSettingProps){var ps=this._mozSettingProps;for(var n in ps){if(ps.hasOwnProperty(n)){try{this.document.execCommand(n,false,ps[n]);}catch(e2){}}}}}this._disabledOK=true;},onLoad:function(html){if(!this.window.__registeredWindow){this.window.__registeredWindow=true;this._iframeRegHandle=dijit.registerIframe(this.iframe);}if(!dojo.isIE&&(this.height||dojo.isMoz)){this.editNode=this.document.body;}else{this.editNode=this.document.body.firstChild;var _198=this;if(dojo.isIE){var _199=(this.tabStop=dojo.doc.createElement("<div tabIndex=-1>"));this.editingArea.appendChild(_199);this.iframe.onfocus=function(){_198.editNode.setActive();};}}this.focusNode=this.editNode;var _19a=this.events.concat(this.captureEvents);var ap=this.iframe?this.document:this.editNode;dojo.forEach(_19a,function(item){this.connect(ap,item.toLowerCase(),item);},this);if(dojo.isIE){this.connect(this.document,"onmousedown","_onIEMouseDown");this.editNode.style.zoom=1;}else{this.connect(this.document,"onmousedown",function(){delete this._cursorToStart;});}if(dojo.isWebKit){this._webkitListener=this.connect(this.document,"onmouseup","onDisplayChanged");}if(dojo.isIE){try{this.document.execCommand("RespectVisibilityInDesign",true,null);}catch(e){}}this.isLoaded=true;this.set("disabled",this.disabled);var _19b=dojo.hitch(this,function(){this.setValue(html);if(this.onLoadDeferred){this.onLoadDeferred.callback(true);}this.onDisplayChanged();if(this.focusOnLoad){dojo.addOnLoad(dojo.hitch(this,function(){setTimeout(dojo.hitch(this,"focus"),this.updateInterval);}));}this.savedContent=this.getValue(true);});if(this.setValueDeferred){this.setValueDeferred.addCallback(_19b);}else{_19b();}},onKeyDown:function(e){if(e.keyCode===dojo.keys.TAB&&this.isTabIndent){dojo.stopEvent(e);if(this.queryCommandEnabled((e.shiftKey?"outdent":"indent"))){this.execCommand((e.shiftKey?"outdent":"indent"));}}if(dojo.isIE){if(e.keyCode==dojo.keys.TAB&&!this.isTabIndent){if(e.shiftKey&&!e.ctrlKey&&!e.altKey){this.iframe.focus();}else{if(!e.shiftKey&&!e.ctrlKey&&!e.altKey){this.tabStop.focus();}}}else{if(e.keyCode===dojo.keys.BACKSPACE&&this.document.selection.type==="Control"){dojo.stopEvent(e);this.execCommand("delete");}else{if((65<=e.keyCode&&e.keyCode<=90)||(e.keyCode>=37&&e.keyCode<=40)){e.charCode=e.keyCode;this.onKeyPress(e);}}}}return true;},onKeyUp:function(e){return;},setDisabled:function(_19c){dojo.deprecated("dijit.Editor::setDisabled is deprecated","use dijit.Editor::attr(\"disabled\",boolean) instead",2);this.set("disabled",_19c);},_setValueAttr:function(_19d){this.setValue(_19d);},_setDisableSpellCheckAttr:function(_19e){if(this.document){dojo.attr(this.document.body,"spellcheck",!_19e);}else{this.onLoadDeferred.addCallback(dojo.hitch(this,function(){dojo.attr(this.document.body,"spellcheck",!_19e);}));}this.disableSpellCheck=_19e;},onKeyPress:function(e){var c=(e.keyChar&&e.keyChar.toLowerCase())||e.keyCode,_19f=this._keyHandlers[c],args=arguments;if(_19f&&!e.altKey){dojo.some(_19f,function(h){if(!(h.shift^e.shiftKey)&&!(h.ctrl^(e.ctrlKey||e.metaKey))){if(!h.handler.apply(this,args)){e.preventDefault();}return true;}},this);}if(!this._onKeyHitch){this._onKeyHitch=dojo.hitch(this,"onKeyPressed");}setTimeout(this._onKeyHitch,1);return true;},addKeyHandler:function(key,ctrl,_1a0,_1a1){if(!dojo.isArray(this._keyHandlers[key])){this._keyHandlers[key]=[];}this._keyHandlers[key].push({shift:_1a0||false,ctrl:ctrl||false,handler:_1a1});},onKeyPressed:function(){this.onDisplayChanged();},onClick:function(e){this.onDisplayChanged(e);},_onIEMouseDown:function(e){if(!this._focused&&!this.disabled){this.focus();}},_onBlur:function(e){this.inherited(arguments);var _1a2=this.getValue(true);if(_1a2!=this.savedContent){this.onChange(_1a2);this.savedContent=_1a2;}},_onFocus:function(e){if(!this.disabled){if(!this._disabledOK){this.set("disabled",false);}this.inherited(arguments);}},blur:function(){if(!dojo.isIE&&this.window.document.documentElement&&this.window.document.documentElement.focus){this.window.document.documentElement.focus();}else{if(dojo.doc.body.focus){dojo.doc.body.focus();}}},focus:function(){if(!this.isLoaded){this.focusOnLoad=true;return;}if(this._cursorToStart){delete this._cursorToStart;if(this.editNode.childNodes){this.placeCursorAtStart();return;}}if(!dojo.isIE){dijit.focus(this.iframe);}else{if(this.editNode&&this.editNode.focus){this.iframe.fireEvent("onfocus",document.createEventObject());}}},updateInterval:200,_updateTimer:null,onDisplayChanged:function(e){if(this._updateTimer){clearTimeout(this._updateTimer);}if(!this._updateHandler){this._updateHandler=dojo.hitch(this,"onNormalizedDisplayChanged");}this._updateTimer=setTimeout(this._updateHandler,this.updateInterval);},onNormalizedDisplayChanged:function(){delete this._updateTimer;},onChange:function(_1a3){},_normalizeCommand:function(cmd,_1a4){var _1a5=cmd.toLowerCase();if(_1a5=="formatblock"){if(dojo.isSafari&&_1a4===undefined){_1a5="heading";}}else{if(_1a5=="hilitecolor"&&!dojo.isMoz){_1a5="backcolor";}}return _1a5;},_qcaCache:{},queryCommandAvailable:function(_1a6){var ca=this._qcaCache[_1a6];if(ca!==undefined){return ca;}return (this._qcaCache[_1a6]=this._queryCommandAvailable(_1a6));},_queryCommandAvailable:function(_1a7){var ie=1;var _1a8=1<<1;var _1a9=1<<2;var _1aa=1<<3;var _1ab=1<<4;function _1ac(_1ad){return {ie:Boolean(_1ad&ie),mozilla:Boolean(_1ad&_1a8),webkit:Boolean(_1ad&_1a9),webkit420:Boolean(_1ad&_1ab),opera:Boolean(_1ad&_1aa)};};var _1ae=null;switch(_1a7.toLowerCase()){case "bold":case "italic":case "underline":case "subscript":case "superscript":case "fontname":case "fontsize":case "forecolor":case "hilitecolor":case "justifycenter":case "justifyfull":case "justifyleft":case "justifyright":case "delete":case "selectall":case "toggledir":_1ae=_1ac(_1a8|ie|_1a9|_1aa);break;case "createlink":case "unlink":case "removeformat":case "inserthorizontalrule":case "insertimage":case "insertorderedlist":case "insertunorderedlist":case "indent":case "outdent":case "formatblock":case "inserthtml":case "undo":case "redo":case "strikethrough":case "tabindent":_1ae=_1ac(_1a8|ie|_1aa|_1ab);break;case "blockdirltr":case "blockdirrtl":case "dirltr":case "dirrtl":case "inlinedirltr":case "inlinedirrtl":_1ae=_1ac(ie);break;case "cut":case "copy":case "paste":_1ae=_1ac(ie|_1a8|_1ab);break;case "inserttable":_1ae=_1ac(_1a8|ie);break;case "insertcell":case "insertcol":case "insertrow":case "deletecells":case "deletecols":case "deleterows":case "mergecells":case "splitcell":_1ae=_1ac(ie|_1a8);break;default:return false;}return (dojo.isIE&&_1ae.ie)||(dojo.isMoz&&_1ae.mozilla)||(dojo.isWebKit&&_1ae.webkit)||(dojo.isWebKit>420&&_1ae.webkit420)||(dojo.isOpera&&_1ae.opera);},execCommand:function(_1af,_1b0){var _1b1;this.focus();_1af=this._normalizeCommand(_1af,_1b0);if(_1b0!==undefined){if(_1af=="heading"){throw new Error("unimplemented");}else{if((_1af=="formatblock")&&dojo.isIE){_1b0="<"+_1b0+">";}}}var _1b2="_"+_1af+"Impl";if(this[_1b2]){_1b1=this[_1b2](_1b0);}else{_1b0=arguments.length>1?_1b0:null;if(_1b0||_1af!="createlink"){_1b1=this.document.execCommand(_1af,false,_1b0);}}this.onDisplayChanged();return _1b1;},queryCommandEnabled:function(_1b3){if(this.disabled||!this._disabledOK){return false;}_1b3=this._normalizeCommand(_1b3);if(dojo.isMoz||dojo.isWebKit){if(_1b3=="unlink"){return this._sCall("hasAncestorElement",["a"]);}else{if(_1b3=="inserttable"){return true;}}}if(dojo.isWebKit){if(_1b3=="copy"){_1b3="cut";}else{if(_1b3=="paste"){return true;}}}var elem=dojo.isIE?this.document.selection.createRange():this.document;try{return elem.queryCommandEnabled(_1b3);}catch(e){return false;}},queryCommandState:function(_1b4){if(this.disabled||!this._disabledOK){return false;}_1b4=this._normalizeCommand(_1b4);try{return this.document.queryCommandState(_1b4);}catch(e){return false;}},queryCommandValue:function(_1b5){if(this.disabled||!this._disabledOK){return false;}var r;_1b5=this._normalizeCommand(_1b5);if(dojo.isIE&&_1b5=="formatblock"){r=this._native2LocalFormatNames[this.document.queryCommandValue(_1b5)];}else{if(dojo.isMoz&&_1b5==="hilitecolor"){var _1b6;try{_1b6=this.document.queryCommandValue("styleWithCSS");}catch(e){_1b6=false;}this.document.execCommand("styleWithCSS",false,true);r=this.document.queryCommandValue(_1b5);this.document.execCommand("styleWithCSS",false,_1b6);}else{r=this.document.queryCommandValue(_1b5);}}return r;},_sCall:function(name,args){return dojo.withGlobal(this.window,name,dijit._editor.selection,args);},placeCursorAtStart:function(){this.focus();var _1b7=false;if(dojo.isMoz){var _1b8=this.editNode.firstChild;while(_1b8){if(_1b8.nodeType==3){if(_1b8.nodeValue.replace(/^\s+|\s+$/g,"").length>0){_1b7=true;this._sCall("selectElement",[_1b8]);break;}}else{if(_1b8.nodeType==1){_1b7=true;var tg=_1b8.tagName?_1b8.tagName.toLowerCase():"";if(/br|input|img|base|meta|area|basefont|hr|link/.test(tg)){this._sCall("selectElement",[_1b8]);}else{this._sCall("selectElementChildren",[_1b8]);}break;}}_1b8=_1b8.nextSibling;}}else{_1b7=true;this._sCall("selectElementChildren",[this.editNode]);}if(_1b7){this._sCall("collapse",[true]);}},placeCursorAtEnd:function(){this.focus();var _1b9=false;if(dojo.isMoz){var last=this.editNode.lastChild;while(last){if(last.nodeType==3){if(last.nodeValue.replace(/^\s+|\s+$/g,"").length>0){_1b9=true;this._sCall("selectElement",[last]);break;}}else{if(last.nodeType==1){_1b9=true;if(last.lastChild){this._sCall("selectElement",[last.lastChild]);}else{this._sCall("selectElement",[last]);}break;}}last=last.previousSibling;}}else{_1b9=true;this._sCall("selectElementChildren",[this.editNode]);}if(_1b9){this._sCall("collapse",[false]);}},getValue:function(_1ba){if(this.textarea){if(this.isClosed||!this.isLoaded){return this.textarea.value;}}return this._postFilterContent(null,_1ba);},_getValueAttr:function(){return this.getValue(true);},setValue:function(html){if(!this.isLoaded){this.onLoadDeferred.addCallback(dojo.hitch(this,function(){this.setValue(html);}));return;}this._cursorToStart=true;if(this.textarea&&(this.isClosed||!this.isLoaded)){this.textarea.value=html;}else{html=this._preFilterContent(html);var node=this.isClosed?this.domNode:this.editNode;if(!html&&dojo.isWebKit){html="&nbsp;";}node.innerHTML=html;this._preDomFilterContent(node);}this.onDisplayChanged();},replaceValue:function(html){if(this.isClosed){this.setValue(html);}else{if(this.window&&this.window.getSelection&&!dojo.isMoz){this.setValue(html);}else{if(this.window&&this.window.getSelection){html=this._preFilterContent(html);this.execCommand("selectall");if(!html){this._cursorToStart=true;html="&nbsp;";}this.execCommand("inserthtml",html);this._preDomFilterContent(this.editNode);}else{if(this.document&&this.document.selection){this.setValue(html);}}}}},_preFilterContent:function(html){var ec=html;dojo.forEach(this.contentPreFilters,function(ef){if(ef){ec=ef(ec);}});return ec;},_preDomFilterContent:function(dom){dom=dom||this.editNode;dojo.forEach(this.contentDomPreFilters,function(ef){if(ef&&dojo.isFunction(ef)){ef(dom);}},this);},_postFilterContent:function(dom,_1bb){var ec;if(!dojo.isString(dom)){dom=dom||this.editNode;if(this.contentDomPostFilters.length){if(_1bb){dom=dojo.clone(dom);}dojo.forEach(this.contentDomPostFilters,function(ef){dom=ef(dom);});}ec=dijit._editor.getChildrenHtml(dom);}else{ec=dom;}if(!dojo.trim(ec.replace(/^\xA0\xA0*/,"").replace(/\xA0\xA0*$/,"")).length){ec="";}dojo.forEach(this.contentPostFilters,function(ef){ec=ef(ec);});return ec;},_saveContent:function(e){var _1bc=dojo.byId(dijit._scopeName+"._editor.RichText.savedContent");if(_1bc.value){_1bc.value+=this._SEPARATOR;}_1bc.value+=this.name+":"+this.getValue(true);},escapeXml:function(str,_1bd){str=str.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");if(!_1bd){str=str.replace(/'/gm,"&#39;");}return str;},getNodeHtml:function(node){dojo.deprecated("dijit.Editor::getNodeHtml is deprecated","use dijit._editor.getNodeHtml instead",2);return dijit._editor.getNodeHtml(node);},getNodeChildrenHtml:function(dom){dojo.deprecated("dijit.Editor::getNodeChildrenHtml is deprecated","use dijit._editor.getChildrenHtml instead",2);return dijit._editor.getChildrenHtml(dom);},close:function(save){if(this.isClosed){return false;}if(!arguments.length){save=true;}this._content=this.getValue();var _1be=(this.savedContent!=this._content);if(this.interval){clearInterval(this.interval);}if(this._webkitListener){this.disconnect(this._webkitListener);delete this._webkitListener;}if(dojo.isIE){this.iframe.onfocus=null;}this.iframe._loadFunc=null;if(this._iframeRegHandle){dijit.unregisterIframe(this._iframeRegHandle);delete this._iframeRegHandle;}if(this.textarea){var s=this.textarea.style;s.position="";s.left=s.top="";if(dojo.isIE){s.overflow=this.__overflow;this.__overflow=null;}this.textarea.value=save?this._content:this.savedContent;dojo.destroy(this.domNode);this.domNode=this.textarea;}else{this.domNode.innerHTML=save?this._content:this.savedContent;}delete this.iframe;dojo.removeClass(this.domNode,this.baseClass);this.isClosed=true;this.isLoaded=false;delete this.editNode;delete this.focusNode;if(this.window&&this.window._frameElement){this.window._frameElement=null;}this.window=null;this.document=null;this.editingArea=null;this.editorObject=null;return _1be;},destroy:function(){if(!this.isClosed){this.close(false);}this.inherited(arguments);},_removeMozBogus:function(html){return html.replace(/\stype="_moz"/gi,"").replace(/\s_moz_dirty=""/gi,"").replace(/_moz_resizing="(true|false)"/gi,"");},_removeWebkitBogus:function(html){html=html.replace(/\sclass="webkit-block-placeholder"/gi,"");html=html.replace(/\sclass="apple-style-span"/gi,"");return html;},_normalizeFontStyle:function(html){return html.replace(/<(\/)?strong([ \>])/gi,"<$1b$2").replace(/<(\/)?em([ \>])/gi,"<$1i$2");},_preFixUrlAttributes:function(html){return html.replace(/(?:(<a(?=\s).*?\shref=)("|')(.*?)\2)|(?:(<a\s.*?href=)([^"'][^ >]+))/gi,"$1$4$2$3$5$2 _djrealurl=$2$3$5$2").replace(/(?:(<img(?=\s).*?\ssrc=)("|')(.*?)\2)|(?:(<img\s.*?src=)([^"'][^ >]+))/gi,"$1$4$2$3$5$2 _djrealurl=$2$3$5$2");},_inserthorizontalruleImpl:function(_1bf){if(dojo.isIE){return this._inserthtmlImpl("<hr>");}return this.document.execCommand("inserthorizontalrule",false,_1bf);},_unlinkImpl:function(_1c0){if((this.queryCommandEnabled("unlink"))&&(dojo.isMoz||dojo.isWebKit)){var a=this._sCall("getAncestorElement",["a"]);this._sCall("selectElement",[a]);return this.document.execCommand("unlink",false,null);}return this.document.execCommand("unlink",false,_1c0);},_hilitecolorImpl:function(_1c1){var _1c2;if(dojo.isMoz){this.document.execCommand("styleWithCSS",false,true);_1c2=this.document.execCommand("hilitecolor",false,_1c1);this.document.execCommand("styleWithCSS",false,false);}else{_1c2=this.document.execCommand("hilitecolor",false,_1c1);}return _1c2;},_backcolorImpl:function(_1c3){if(dojo.isIE){_1c3=_1c3?_1c3:null;}return this.document.execCommand("backcolor",false,_1c3);},_forecolorImpl:function(_1c4){if(dojo.isIE){_1c4=_1c4?_1c4:null;}return this.document.execCommand("forecolor",false,_1c4);},_inserthtmlImpl:function(_1c5){_1c5=this._preFilterContent(_1c5);var rv=true;if(dojo.isIE){var _1c6=this.document.selection.createRange();if(this.document.selection.type.toUpperCase()=="CONTROL"){var n=_1c6.item(0);while(_1c6.length){_1c6.remove(_1c6.item(0));}n.outerHTML=_1c5;}else{_1c6.pasteHTML(_1c5);}_1c6.select();}else{if(dojo.isMoz&&!_1c5.length){this._sCall("remove");}else{rv=this.document.execCommand("inserthtml",false,_1c5);}}return rv;},getHeaderHeight:function(){return this._getNodeChildrenHeight(this.header);},getFooterHeight:function(){return this._getNodeChildrenHeight(this.footer);},_getNodeChildrenHeight:function(node){var h=0;if(node&&node.childNodes){var i;for(i=0;i<node.childNodes.length;i++){var size=dojo.position(node.childNodes[i]);h+=size.h;}}return h;}});}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(_1c7,_1c8){var _1c9=(this._keyNavCodes={});var prev=dojo.hitch(this,this.focusPrev);var next=dojo.hitch(this,this.focusNext);dojo.forEach(_1c7,function(code){_1c9[code]=prev;});dojo.forEach(_1c8,function(code){_1c9[code]=next;});this.connect(this.domNode,"onkeypress","_onContainerKeypress");this.connect(this.domNode,"onfocus","_onContainerFocus");},startupKeyNavChildren:function(){dojo.forEach(this.getChildren(),dojo.hitch(this,"_startupChild"));},addChild:function(_1ca,_1cb){dijit._KeyNavContainer.superclass.addChild.apply(this,arguments);this._startupChild(_1ca);},focus:function(){this.focusFirstChild();},focusFirstChild:function(){var _1cc=this._getFirstFocusableChild();if(_1cc){this.focusChild(_1cc);}},focusNext:function(){var _1cd=this._getNextFocusableChild(this.focusedChild,1);this.focusChild(_1cd);},focusPrev:function(){var _1ce=this._getNextFocusableChild(this.focusedChild,-1);this.focusChild(_1ce,true);},focusChild:function(_1cf,last){if(this.focusedChild&&_1cf!==this.focusedChild){this._onChildBlur(this.focusedChild);}_1cf.focus(last?"end":"start");this.focusedChild=_1cf;},_startupChild:function(_1d0){_1d0.set("tabIndex","-1");this.connect(_1d0,"_onFocus",function(){_1d0.set("tabIndex",this.tabIndex);});this.connect(_1d0,"_onBlur",function(){_1d0.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(_1d1){},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1);},_getNextFocusableChild:function(_1d2,dir){if(_1d2){_1d2=this._getSiblingOfChild(_1d2,dir);}var _1d3=this.getChildren();for(var i=0;i<_1d3.length;i++){if(!_1d2){_1d2=_1d3[(dir>0)?0:(_1d3.length-1)];}if(_1d2.isFocusable()){return _1d2;}_1d2=this._getSiblingOfChild(_1d2,dir);}return null;}});}if(!dojo._hasResource["dijit.ToolbarSeparator"]){dojo._hasResource["dijit.ToolbarSeparator"]=true;dojo.provide("dijit.ToolbarSeparator");dojo.declare("dijit.ToolbarSeparator",[dijit._Widget,dijit._Templated],{templateString:"<div class=\"dijitToolbarSeparator dijitInline\" waiRole=\"presentation\"></div>",postCreate:function(){dojo.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});}if(!dojo._hasResource["dijit.Toolbar"]){dojo._hasResource["dijit.Toolbar"]=true;dojo.provide("dijit.Toolbar");dojo.declare("dijit.Toolbar",[dijit._Widget,dijit._Templated,dijit._KeyNavContainer],{templateString:"<div class=\"dijit\" waiRole=\"toolbar\" tabIndex=\"${tabIndex}\" dojoAttachPoint=\"containerNode\">"+"</div>",baseClass:"dijitToolbar",postCreate:function(){this.connectKeyNavHandlers(this.isLeftToRight()?[dojo.keys.LEFT_ARROW]:[dojo.keys.RIGHT_ARROW],this.isLeftToRight()?[dojo.keys.RIGHT_ARROW]:[dojo.keys.LEFT_ARROW]);this.inherited(arguments);},startup:function(){if(this._started){return;}this.startupKeyNavChildren();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;}this._docHandler=this.connect(dojo.doc,"onmouseup","_onDropDownMouseUp");this.toggleDropDown();},_onDropDownMouseUp:function(e){if(e&&this._docHandler){this.disconnect(this._docHandler);}var _1d4=this.dropDown,_1d5=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&&!_1d5){if(dojo.hasClass(t,"dijitPopup")){_1d5=true;}else{t=t.parentNode;}}if(_1d5){t=e.target;if(_1d4.onItemClick){var _1d6;while(t&&!(_1d6=dijit.byNode(t))){t=t.parentNode;}if(_1d6&&_1d6.onClick&&_1d6.getParent){_1d6.getParent().onItemClick(_1d6,e);}}return;}}}if(this._opened&&_1d4.focus){window.setTimeout(dojo.hitch(_1d4,"focus"),1);}},_onDropDownClick:function(e){if(this._stopClickEvents){dojo.stopEvent(e);}},_setupDropdown:function(){this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;this._aroundNode=this._aroundNode||this.domNode;this.connect(this._buttonNode,"onmousedown","_onDropDownMouseDown");this.connect(this._buttonNode,"onclick","_onDropDownClick");this.connect(this._buttonNode,"onkeydown","_onDropDownKeydown");this.connect(this._buttonNode,"onkeyup","_onKey");if(this._setStateClass){this.connect(this,"openDropDown","_setStateClass");this.connect(this,"closeDropDown","_setStateClass");}var _1d7={"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"+_1d7+"ArrowButton");},postCreate:function(){this._setupDropdown();this.inherited(arguments);},destroyDescendants:function(){if(this.dropDown){if(!this.dropDown._destroyed){this.dropDown.destroyRecursive();}delete this.dropDown;}this.inherited(arguments);},_onDropDownKeydown:function(e){if(e.keyCode==dojo.keys.DOWN_ARROW||e.keyCode==dojo.keys.ENTER||e.keyCode==dojo.keys.SPACE){e.preventDefault();}},_onKey:function(e){if(this.disabled||this.readOnly){return;}var d=this.dropDown;if(d&&this._opened&&d.handleKey){if(d.handleKey(e)===false){return;}}if(d&&this._opened&&e.keyCode==dojo.keys.ESCAPE){this.toggleDropDown();}else{if(d&&!this._opened&&(e.keyCode==dojo.keys.DOWN_ARROW||e.keyCode==dojo.keys.ENTER||e.keyCode==dojo.keys.SPACE)){this.toggleDropDown();if(d.focus){setTimeout(dojo.hitch(d,"focus"),1);}}}},_onBlur:function(){this.closeDropDown();this.inherited(arguments);},isLoaded:function(){return true;},loadDropDown:function(_1d8){_1d8();},toggleDropDown:function(){if(this.disabled||this.readOnly){return;}this.focus();var _1d9=this.dropDown;if(!_1d9){return;}if(!this._opened){if(!this.isLoaded()){this.loadDropDown(dojo.hitch(this,"openDropDown"));return;}else{this.openDropDown();}}else{this.closeDropDown();}},openDropDown:function(){var _1da=this.dropDown;var _1db=_1da.domNode;var self=this;if(!this._preparedNode){dijit.popup.moveOffScreen(_1db);this._preparedNode=true;if(_1db.style.width){this._explicitDDWidth=true;}if(_1db.style.height){this._explicitDDHeight=true;}}if(this.maxHeight||this.forceWidth||this.autoWidth){var _1dc={display:"",visibility:"hidden"};if(!this._explicitDDWidth){_1dc.width="";}if(!this._explicitDDHeight){_1dc.height="";}dojo.style(_1db,_1dc);var mb=dojo.marginBox(_1db);var _1dd=(this.maxHeight&&mb.h>this.maxHeight);dojo.style(_1db,{overflowX:"hidden",overflowY:_1dd?"auto":"hidden"});if(_1dd){mb.h=this.maxHeight;if("w" in mb){mb.w+=16;}}else{delete mb.h;}delete mb.t;delete mb.l;if(this.forceWidth){mb.w=this.domNode.offsetWidth;}else{if(this.autoWidth){mb.w=Math.max(mb.w,this.domNode.offsetWidth);}else{delete mb.w;}}if(dojo.isFunction(_1da.resize)){_1da.resize(mb);}else{dojo.marginBox(_1db,mb);}}var _1de=dijit.popup.open({parent:this,popup:_1da,around:this._aroundNode,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;self.state="";}});dojo.attr(this._popupStateNode,"popupActive","true");dojo.addClass(self._popupStateNode,"dijitHasDropDownOpen");this._opened=true;this.state="Opened";return _1de;},closeDropDown:function(_1df){if(this._opened){if(_1df){this.focus();}dijit.popup.close(this.dropDown);this._opened=false;this.state="";}}});}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\twaiRole=\"button\" waiState=\"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\"\n\t\tdojoAttachPoint=\"valueNode\"\n/></span>\n"),attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{value:"valueNode",iconClass:{node:"iconNode",type:"class"}}),_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 _1e0=dijit.byNode(node);if(_1e0&&typeof _1e0._onSubmit=="function"){_1e0._onSubmit(e);break;}}}else{if(this.valueNode){this.valueNode.click();e.preventDefault();}}}},_fillContent:function(_1e1){if(_1e1&&(!this.params||!("label" in this.params))){this.set("label",_1e1.innerHTML);}},postCreate:function(){dojo.setSelectable(this.focusNode,false);this.inherited(arguments);},_setShowLabelAttr:function(val){if(this.containerNode){dojo.toggleClass(this.containerNode,"dijitDisplayNone",!val);}this.showLabel=val;},onClick:function(e){return true;},_clicked:function(e){},setLabel:function(_1e2){dojo.deprecated("dijit.form.Button.setLabel() is deprecated.  Use set('label', ...) instead.","","2.0");this.set("label",_1e2);},_setLabelAttr:function(_1e3){this.containerNode.innerHTML=this.label=_1e3;if(this.showLabel==false&&!this.params.title){this.titleNode.title=dojo.trim(this.containerNode.innerText||this.containerNode.textContent||"");}}});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\twaiRole=\"button\" waiState=\"haspopup-true,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\"\n\t\tdojoAttachPoint=\"valueNode\"\n/></span>\n"),_fillContent:function(){if(this.srcNodeRef){var _1e4=dojo.query("*",this.srcNodeRef);dijit.form.DropDownButton.superclass._fillContent.call(this,_1e4[0]);this.dropDownContainer=this.srcNodeRef;}},startup:function(){if(this._started){return;}if(!this.dropDown){var _1e5=dojo.query("[widgetId]",this.dropDownContainer)[0];this.dropDown=dijit.byNode(_1e5);delete this.dropDownContainer;}dijit.popup.moveOffScreen(this.dropDown.domNode);this.inherited(arguments);},isLoaded:function(){var _1e6=this.dropDown;return (!_1e6.href||_1e6.isLoaded);},loadDropDown:function(){var _1e7=this.dropDown;if(!_1e7){return;}if(!this.isLoaded()){var _1e8=dojo.connect(_1e7,"onLoad",this,function(){dojo.disconnect(_1e8);this.openDropDown();});_1e7.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' waiRole=\"presentation\"\n\t><tbody waiRole=\"presentation\"><tr waiRole=\"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\twaiRole=\"button\" waiState=\"labelledby-${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" dojoAttachPoint=\"iconNode\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\" waiRole=\"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\twaiRole=\"button\" waiState=\"haspopup-true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" waiRole=\"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(_1e9){dijit.focus(_1e9=="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(_1ea,_1eb){this.checked=_1ea;dojo.attr(this.focusNode||this.domNode,"checked",_1ea);dijit.setWaiState(this.focusNode||this.domNode,"pressed",_1ea);this._handleOnChange(_1ea,_1eb);},setChecked:function(_1ec){dojo.deprecated("setChecked("+_1ec+") is deprecated. Use set('checked',"+_1ec+") instead.","","2.0");this.set("checked",_1ec);},reset:function(){this._hasBeenBlurred=false;this.set("checked",this.params.checked||false);}});}if(!dojo._hasResource["dijit._editor._Plugin"]){dojo._hasResource["dijit._editor._Plugin"]=true;dojo.provide("dijit._editor._Plugin");dojo.declare("dijit._editor._Plugin",null,{constructor:function(args,node){this.params=args||{};dojo.mixin(this,this.params);this._connects=[];},editor:null,iconClassPrefix:"dijitEditorIcon",button:null,command:"",useDefaultCommand:true,buttonClass:dijit.form.Button,getLabel:function(key){return this.editor.commands[key];},_initButton:function(){if(this.command.length){var _1ed=this.getLabel(this.command),_1ee=this.editor,_1ef=this.iconClassPrefix+" "+this.iconClassPrefix+this.command.charAt(0).toUpperCase()+this.command.substr(1);if(!this.button){var _1f0=dojo.mixin({label:_1ed,dir:_1ee.dir,lang:_1ee.lang,showLabel:false,iconClass:_1ef,dropDown:this.dropDown,tabIndex:"-1"},this.params||{});this.button=new this.buttonClass(_1f0);}}},destroy:function(){dojo.forEach(this._connects,dojo.disconnect);if(this.dropDown){this.dropDown.destroyRecursive();}},connect:function(o,f,tf){this._connects.push(dojo.connect(o,f,this,tf));},updateState:function(){var e=this.editor,c=this.command,_1f1,_1f2;if(!e||!e.isLoaded||!c.length){return;}if(this.button){try{_1f2=e.queryCommandEnabled(c);if(this.enabled!==_1f2){this.enabled=_1f2;this.button.set("disabled",!_1f2);}if(typeof this.button.checked=="boolean"){_1f1=e.queryCommandState(c);if(this.checked!==_1f1){this.checked=_1f1;this.button.set("checked",e.queryCommandState(c));}}}catch(e){}}},setEditor:function(_1f3){this.editor=_1f3;this._initButton();if(this.button&&this.useDefaultCommand){if(this.editor.queryCommandAvailable(this.command)){this.connect(this.button,"onClick",dojo.hitch(this.editor,"execCommand",this.command,this.commandArg));}else{this.button.domNode.style.display="none";}}this.connect(this.editor,"onNormalizedDisplayChanged","updateState");},setToolbar:function(_1f4){if(this.button){_1f4.addChild(this.button);}}});}if(!dojo._hasResource["dijit._editor.plugins.EnterKeyHandling"]){dojo._hasResource["dijit._editor.plugins.EnterKeyHandling"]=true;dojo.provide("dijit._editor.plugins.EnterKeyHandling");dojo.declare("dijit._editor.plugins.EnterKeyHandling",dijit._editor._Plugin,{blockNodeForEnter:"BR",constructor:function(args){if(args){dojo.mixin(this,args);}},setEditor:function(_1f5){this.editor=_1f5;if(this.blockNodeForEnter=="BR"){if(dojo.isIE){_1f5.contentDomPreFilters.push(dojo.hitch(this,"regularPsToSingleLinePs"));_1f5.contentDomPostFilters.push(dojo.hitch(this,"singleLinePsToRegularPs"));_1f5.onLoadDeferred.addCallback(dojo.hitch(this,"_fixNewLineBehaviorForIE"));}else{_1f5.onLoadDeferred.addCallback(dojo.hitch(this,function(d){try{this.editor.document.execCommand("insertBrOnReturn",false,true);}catch(e){}return d;}));}}else{if(this.blockNodeForEnter){dojo["require"]("dijit._editor.range");var h=dojo.hitch(this,this.handleEnterKey);_1f5.addKeyHandler(13,0,0,h);_1f5.addKeyHandler(13,0,1,h);this.connect(this.editor,"onKeyPressed","onKeyPressed");}}},onKeyPressed:function(e){if(this._checkListLater){if(dojo.withGlobal(this.editor.window,"isCollapsed",dijit)){var _1f6=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,["LI"]);if(!_1f6){dijit._editor.RichText.prototype.execCommand.call(this.editor,"formatblock",this.blockNodeForEnter);var _1f7=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.blockNodeForEnter]);if(_1f7){_1f7.innerHTML=this.bogusHtmlContent;if(dojo.isIE){var r=this.editor.document.selection.createRange();r.move("character",-1);r.select();}}else{console.error("onKeyPressed: Cannot find the new block node");}}else{if(dojo.isMoz){if(_1f6.parentNode.parentNode.nodeName=="LI"){_1f6=_1f6.parentNode.parentNode;}}var fc=_1f6.firstChild;if(fc&&fc.nodeType==1&&(fc.nodeName=="UL"||fc.nodeName=="OL")){_1f6.insertBefore(fc.ownerDocument.createTextNode(" "),fc);var _1f8=dijit.range.create(this.editor.window);_1f8.setStart(_1f6.firstChild,0);var _1f9=dijit.range.getSelection(this.editor.window,true);_1f9.removeAllRanges();_1f9.addRange(_1f8);}}}this._checkListLater=false;}if(this._pressedEnterInBlock){if(this._pressedEnterInBlock.previousSibling){this.removeTrailingBr(this._pressedEnterInBlock.previousSibling);}delete this._pressedEnterInBlock;}},bogusHtmlContent:"&nbsp;",blockNodes:/^(?:P|H1|H2|H3|H4|H5|H6|LI)$/,handleEnterKey:function(e){var _1fa,_1fb,_1fc,doc=this.editor.document,br;if(e.shiftKey){var _1fd=dojo.withGlobal(this.editor.window,"getParentElement",dijit._editor.selection);var _1fe=dijit.range.getAncestor(_1fd,this.blockNodes);if(_1fe){if(!e.shiftKey&&_1fe.tagName=="LI"){return true;}_1fa=dijit.range.getSelection(this.editor.window);_1fb=_1fa.getRangeAt(0);if(!_1fb.collapsed){_1fb.deleteContents();_1fa=dijit.range.getSelection(this.editor.window);_1fb=_1fa.getRangeAt(0);}if(dijit.range.atBeginningOfContainer(_1fe,_1fb.startContainer,_1fb.startOffset)){if(e.shiftKey){br=doc.createElement("br");_1fc=dijit.range.create(this.editor.window);_1fe.insertBefore(br,_1fe.firstChild);_1fc.setStartBefore(br.nextSibling);_1fa.removeAllRanges();_1fa.addRange(_1fc);}else{dojo.place(br,_1fe,"before");}}else{if(dijit.range.atEndOfContainer(_1fe,_1fb.startContainer,_1fb.startOffset)){_1fc=dijit.range.create(this.editor.window);br=doc.createElement("br");if(e.shiftKey){_1fe.appendChild(br);_1fe.appendChild(doc.createTextNode(" "));_1fc.setStart(_1fe.lastChild,0);}else{dojo.place(br,_1fe,"after");_1fc.setStartAfter(_1fe);}_1fa.removeAllRanges();_1fa.addRange(_1fc);}else{return true;}}}else{dijit._editor.RichText.prototype.execCommand.call(this.editor,"inserthtml","<br>");}return false;}var _1ff=true;_1fa=dijit.range.getSelection(this.editor.window);_1fb=_1fa.getRangeAt(0);if(!_1fb.collapsed){_1fb.deleteContents();_1fa=dijit.range.getSelection(this.editor.window);_1fb=_1fa.getRangeAt(0);}var _200=dijit.range.getBlockAncestor(_1fb.endContainer,null,this.editor.editNode);var _201=_200.blockNode;if((this._checkListLater=(_201&&(_201.nodeName=="LI"||_201.parentNode.nodeName=="LI")))){if(dojo.isMoz){this._pressedEnterInBlock=_201;}if(/^(\s|&nbsp;|\xA0|<span\b[^>]*\bclass=['"]Apple-style-span['"][^>]*>(\s|&nbsp;|\xA0)<\/span>)?(<br>)?$/.test(_201.innerHTML)){_201.innerHTML="";if(dojo.isWebKit){_1fc=dijit.range.create(this.editor.window);_1fc.setStart(_201,0);_1fa.removeAllRanges();_1fa.addRange(_1fc);}this._checkListLater=false;}return true;}if(!_200.blockNode||_200.blockNode===this.editor.editNode){try{dijit._editor.RichText.prototype.execCommand.call(this.editor,"formatblock",this.blockNodeForEnter);}catch(e2){}_200={blockNode:dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.blockNodeForEnter]),blockContainer:this.editor.editNode};if(_200.blockNode){if(_200.blockNode!=this.editor.editNode&&(!(_200.blockNode.textContent||_200.blockNode.innerHTML).replace(/^\s+|\s+$/g,"").length)){this.removeTrailingBr(_200.blockNode);return false;}}else{_200.blockNode=this.editor.editNode;}_1fa=dijit.range.getSelection(this.editor.window);_1fb=_1fa.getRangeAt(0);}var _202=doc.createElement(this.blockNodeForEnter);_202.innerHTML=this.bogusHtmlContent;this.removeTrailingBr(_200.blockNode);if(dijit.range.atEndOfContainer(_200.blockNode,_1fb.endContainer,_1fb.endOffset)){if(_200.blockNode===_200.blockContainer){_200.blockNode.appendChild(_202);}else{dojo.place(_202,_200.blockNode,"after");}_1ff=false;_1fc=dijit.range.create(this.editor.window);_1fc.setStart(_202,0);_1fa.removeAllRanges();_1fa.addRange(_1fc);if(this.editor.height){dojo.window.scrollIntoView(_202);}}else{if(dijit.range.atBeginningOfContainer(_200.blockNode,_1fb.startContainer,_1fb.startOffset)){dojo.place(_202,_200.blockNode,_200.blockNode===_200.blockContainer?"first":"before");if(_202.nextSibling&&this.editor.height){_1fc=dijit.range.create(this.editor.window);_1fc.setStart(_202.nextSibling,0);_1fa.removeAllRanges();_1fa.addRange(_1fc);dojo.window.scrollIntoView(_202.nextSibling);}_1ff=false;}else{if(_200.blockNode===_200.blockContainer){_200.blockNode.appendChild(_202);}else{dojo.place(_202,_200.blockNode,"after");}_1ff=false;if(_200.blockNode.style){if(_202.style){if(_200.blockNode.style.cssText){_202.style.cssText=_200.blockNode.style.cssText;}}}var rs=_1fb.startContainer;if(rs&&rs.nodeType==3){var _203,_204;var txt=rs.nodeValue;var _205=doc.createTextNode(txt.substring(0,_1fb.startOffset));var _206=doc.createTextNode(txt.substring(_1fb.startOffset,txt.length));dojo.place(_205,rs,"before");dojo.place(_206,rs,"after");dojo.destroy(rs);var _207=_205.parentNode;while(_207!==_200.blockNode){var tg=_207.tagName;var _208=doc.createElement(tg);if(_207.style){if(_208.style){if(_207.style.cssText){_208.style.cssText=_207.style.cssText;}}}_203=_206;while(_203){_204=_203.nextSibling;_208.appendChild(_203);_203=_204;}dojo.place(_208,_207,"after");_205=_207;_206=_208;_207=_207.parentNode;}_203=_206;if(_203.nodeType==1||(_203.nodeType==3&&_203.nodeValue)){_202.innerHTML="";}while(_203){_204=_203.nextSibling;_202.appendChild(_203);_203=_204;}}_1fc=dijit.range.create(this.editor.window);_1fc.setStart(_202,0);_1fa.removeAllRanges();_1fa.addRange(_1fc);if(this.editor.height){dijit.scrollIntoView(_202);}if(dojo.isMoz){this._pressedEnterInBlock=_200.blockNode;}}}return _1ff;},removeTrailingBr:function(_209){var para=/P|DIV|LI/i.test(_209.tagName)?_209:dijit._editor.selection.getParentOfType(_209,["P","DIV","LI"]);if(!para){return;}if(para.lastChild){if((para.childNodes.length>1&&para.lastChild.nodeType==3&&/^[\s\xAD]*$/.test(para.lastChild.nodeValue))||para.lastChild.tagName=="BR"){dojo.destroy(para.lastChild);}}if(!para.childNodes.length){para.innerHTML=this.bogusHtmlContent;}},_fixNewLineBehaviorForIE:function(d){var doc=this.editor.document;if(doc.__INSERTED_EDITIOR_NEWLINE_CSS===undefined){var _20a=dojo.create("style",{type:"text/css"},doc.getElementsByTagName("head")[0]);_20a.styleSheet.cssText="p{margin:0;}";this.editor.document.__INSERTED_EDITIOR_NEWLINE_CSS=true;}return d;},regularPsToSingleLinePs:function(_20b,_20c){function _20d(el){function _20e(_20f){var newP=_20f[0].ownerDocument.createElement("p");_20f[0].parentNode.insertBefore(newP,_20f[0]);dojo.forEach(_20f,function(node){newP.appendChild(node);});};var _210=0;var _211=[];var _212;while(_210<el.childNodes.length){_212=el.childNodes[_210];if(_212.nodeType==3||(_212.nodeType==1&&_212.nodeName!="BR"&&dojo.style(_212,"display")!="block")){_211.push(_212);}else{var _213=_212.nextSibling;if(_211.length){_20e(_211);_210=(_210+1)-_211.length;if(_212.nodeName=="BR"){dojo.destroy(_212);}}_211=[];}_210++;}if(_211.length){_20e(_211);}};function _214(el){var _215=null;var _216=[];var _217=el.childNodes.length-1;for(var i=_217;i>=0;i--){_215=el.childNodes[i];if(_215.nodeName=="BR"){var newP=_215.ownerDocument.createElement("p");dojo.place(newP,el,"after");if(_216.length==0&&i!=_217){newP.innerHTML="&nbsp;";}dojo.forEach(_216,function(node){newP.appendChild(node);});dojo.destroy(_215);_216=[];}else{_216.unshift(_215);}}};var _218=[];var ps=_20b.getElementsByTagName("p");dojo.forEach(ps,function(p){_218.push(p);});dojo.forEach(_218,function(p){var _219=p.previousSibling;if((_219)&&(_219.nodeType==1)&&(_219.nodeName=="P"||dojo.style(_219,"display")!="block")){var newP=p.parentNode.insertBefore(this.document.createElement("p"),p);newP.innerHTML=_20c?"":"&nbsp;";}_214(p);},this.editor);_20d(_20b);return _20b;},singleLinePsToRegularPs:function(_21a){function _21b(node){var ps=node.getElementsByTagName("p");var _21c=[];for(var i=0;i<ps.length;i++){var p=ps[i];var _21d=false;for(var k=0;k<_21c.length;k++){if(_21c[k]===p.parentNode){_21d=true;break;}}if(!_21d){_21c.push(p.parentNode);}}return _21c;};function _21e(node){return (!node.childNodes.length||node.innerHTML=="&nbsp;");};var _21f=_21b(_21a);for(var i=0;i<_21f.length;i++){var _220=_21f[i];var _221=null;var node=_220.firstChild;var _222=null;while(node){if(node.nodeType!=1||node.tagName!="P"||(node.getAttributeNode("style")||{}).specified){_221=null;}else{if(_21e(node)){_222=node;_221=null;}else{if(_221==null){_221=node;}else{if((!_221.lastChild||_221.lastChild.nodeName!="BR")&&(node.firstChild)&&(node.firstChild.nodeName!="BR")){_221.appendChild(this.editor.document.createElement("br"));}while(node.firstChild){_221.appendChild(node.firstChild);}_222=node;}}}node=node.nextSibling;if(_222){dojo.destroy(_222);_222=null;}}}return _21a;}});}if(!dojo._hasResource["dijit.Editor"]){dojo._hasResource["dijit.Editor"]=true;dojo.provide("dijit.Editor");dojo.declare("dijit.Editor",dijit._editor.RichText,{plugins:null,extraPlugins:null,constructor:function(){if(!dojo.isArray(this.plugins)){this.plugins=["undo","redo","|","cut","copy","paste","|","bold","italic","underline","strikethrough","|","insertOrderedList","insertUnorderedList","indent","outdent","|","justifyLeft","justifyRight","justifyCenter","justifyFull","dijit._editor.plugins.EnterKeyHandling"];}this._plugins=[];this._editInterval=this.editActionInterval*1000;if(dojo.isIE){this.events.push("onBeforeDeactivate");this.events.push("onBeforeActivate");}},postCreate:function(){this._steps=this._steps.slice(0);this._undoedSteps=this._undoedSteps.slice(0);if(dojo.isArray(this.extraPlugins)){this.plugins=this.plugins.concat(this.extraPlugins);}this.setValueDeferred=new dojo.Deferred();this.inherited(arguments);this.commands=dojo.i18n.getLocalization("dijit._editor","commands",this.lang);if(!this.toolbar){this.toolbar=new dijit.Toolbar({dir:this.dir,lang:this.lang});this.header.appendChild(this.toolbar.domNode);}dojo.forEach(this.plugins,this.addPlugin,this);this.setValueDeferred.callback(true);dojo.addClass(this.iframe.parentNode,"dijitEditorIFrameContainer");dojo.addClass(this.iframe,"dijitEditorIFrame");dojo.attr(this.iframe,"allowTransparency",true);if(dojo.isWebKit){dojo.style(this.domNode,"KhtmlUserSelect","none");}this.toolbar.startup();this.onNormalizedDisplayChanged();},destroy:function(){dojo.forEach(this._plugins,function(p){if(p&&p.destroy){p.destroy();}});this._plugins=[];this.toolbar.destroyRecursive();delete this.toolbar;this.inherited(arguments);},addPlugin:function(_223,_224){var args=dojo.isString(_223)?{name:_223}:_223;if(!args.setEditor){var o={"args":args,"plugin":null,"editor":this};dojo.publish(dijit._scopeName+".Editor.getPlugin",[o]);if(!o.plugin){var pc=dojo.getObject(args.name);if(pc){o.plugin=new pc(args);}}if(!o.plugin){console.warn("Cannot find plugin",_223);return;}_223=o.plugin;}if(arguments.length>1){this._plugins[_224]=_223;}else{this._plugins.push(_223);}_223.setEditor(this);if(dojo.isFunction(_223.setToolbar)){_223.setToolbar(this.toolbar);}},startup:function(){},resize:function(size){if(size){dijit.layout._LayoutWidget.prototype.resize.apply(this,arguments);}},layout:function(){var _225=(this._contentBox.h-(this.getHeaderHeight()+this.getFooterHeight()+dojo._getPadBorderExtents(this.iframe.parentNode).h+dojo._getMarginExtents(this.iframe.parentNode).h));this.editingArea.style.height=_225+"px";if(this.iframe){this.iframe.style.height="100%";}this._layoutMode=true;},_onIEMouseDown:function(e){var _226;var b=this.document.body;var _227=b.clientWidth;var _228=b.clientHeight;var _229=b.clientLeft;var _22a=b.offsetWidth;var _22b=b.offsetHeight;var _22c=b.offsetLeft;bodyDir=b.dir?b.dir.toLowerCase():"";if(bodyDir!="rtl"){if(_227<_22a&&e.x>_227&&e.x<_22a){_226=true;}}else{if(e.x<_229&&e.x>_22c){_226=true;}}if(!_226){if(_228<_22b&&e.y>_228&&e.y<_22b){_226=true;}}if(!_226){delete this._cursorToStart;delete this._savedSelection;if(e.target.tagName=="BODY"){setTimeout(dojo.hitch(this,"placeCursorAtEnd"),0);}this.inherited(arguments);}},onBeforeActivate:function(e){this._restoreSelection();},onBeforeDeactivate:function(e){if(this.customUndo){this.endEditing(true);}if(e.target.tagName!="BODY"){this._saveSelection();}},customUndo:dojo.isIE||dojo.isWebKit,editActionInterval:3,beginEditing:function(cmd){if(!this._inEditing){this._inEditing=true;this._beginEditing(cmd);}if(this.editActionInterval>0){if(this._editTimer){clearTimeout(this._editTimer);}this._editTimer=setTimeout(dojo.hitch(this,this.endEditing),this._editInterval);}},_steps:[],_undoedSteps:[],execCommand:function(cmd){if(this.customUndo&&(cmd=="undo"||cmd=="redo")){return this[cmd]();}else{if(this.customUndo){this.endEditing();this._beginEditing();}var r;try{r=this.inherited("execCommand",arguments);if(dojo.isWebKit&&cmd=="paste"&&!r){throw {code:1011};}}catch(e){if(e.code==1011&&/copy|cut|paste/.test(cmd)){var sub=dojo.string.substitute,_22d={cut:"X",copy:"C",paste:"V"};alert(sub(this.commands.systemShortcut,[this.commands[cmd],sub(this.commands[dojo.isMac?"appleKey":"ctrlKey"],[_22d[cmd]])]));}r=false;}if(this.customUndo){this._endEditing();}return r;}},queryCommandEnabled:function(cmd){if(this.customUndo&&(cmd=="undo"||cmd=="redo")){return cmd=="undo"?(this._steps.length>1):(this._undoedSteps.length>0);}else{return this.inherited("queryCommandEnabled",arguments);}},_moveToBookmark:function(b){var _22e=b.mark;var mark=b.mark;var col=b.isCollapsed;var r,_22f,_230,sel;if(mark){if(dojo.isIE){if(dojo.isArray(mark)){_22e=[];dojo.forEach(mark,function(n){_22e.push(dijit.range.getNode(n,this.editNode));},this);dojo.withGlobal(this.window,"moveToBookmark",dijit,[{mark:_22e,isCollapsed:col}]);}else{if(mark.startContainer&&mark.endContainer){sel=dijit.range.getSelection(this.window);if(sel&&sel.removeAllRanges){sel.removeAllRanges();r=dijit.range.create(this.window);_22f=dijit.range.getNode(mark.startContainer,this.editNode);_230=dijit.range.getNode(mark.endContainer,this.editNode);if(_22f&&_230){r.setStart(_22f,mark.startOffset);r.setEnd(_230,mark.endOffset);sel.addRange(r);}}}}}else{sel=dijit.range.getSelection(this.window);if(sel&&sel.removeAllRanges){sel.removeAllRanges();r=dijit.range.create(this.window);_22f=dijit.range.getNode(mark.startContainer,this.editNode);_230=dijit.range.getNode(mark.endContainer,this.editNode);if(_22f&&_230){r.setStart(_22f,mark.startOffset);r.setEnd(_230,mark.endOffset);sel.addRange(r);}}}}},_changeToStep:function(from,to){this.setValue(to.text);var b=to.bookmark;if(!b){return;}this._moveToBookmark(b);},undo:function(){var ret=false;if(!this._undoRedoActive){this._undoRedoActive=true;this.endEditing(true);var s=this._steps.pop();if(s&&this._steps.length>0){this.focus();this._changeToStep(s,this._steps[this._steps.length-1]);this._undoedSteps.push(s);this.onDisplayChanged();delete this._undoRedoActive;ret=true;}delete this._undoRedoActive;}return ret;},redo:function(){var ret=false;if(!this._undoRedoActive){this._undoRedoActive=true;this.endEditing(true);var s=this._undoedSteps.pop();if(s&&this._steps.length>0){this.focus();this._changeToStep(this._steps[this._steps.length-1],s);this._steps.push(s);this.onDisplayChanged();ret=true;}delete this._undoRedoActive;}return ret;},endEditing:function(_231){if(this._editTimer){clearTimeout(this._editTimer);}if(this._inEditing){this._endEditing(_231);this._inEditing=false;}},_getBookmark:function(){var b=dojo.withGlobal(this.window,dijit.getBookmark);var tmp=[];if(b&&b.mark){var mark=b.mark;if(dojo.isIE){var sel=dijit.range.getSelection(this.window);if(!dojo.isArray(mark)){if(sel){var _232;if(sel.rangeCount){_232=sel.getRangeAt(0);}if(_232){b.mark=_232.cloneRange();}else{b.mark=dojo.withGlobal(this.window,dijit.getBookmark);}}}else{dojo.forEach(b.mark,function(n){tmp.push(dijit.range.getIndex(n,this.editNode).o);},this);b.mark=tmp;}}try{if(b.mark&&b.mark.startContainer){tmp=dijit.range.getIndex(b.mark.startContainer,this.editNode).o;b.mark={startContainer:tmp,startOffset:b.mark.startOffset,endContainer:b.mark.endContainer===b.mark.startContainer?tmp:dijit.range.getIndex(b.mark.endContainer,this.editNode).o,endOffset:b.mark.endOffset};}}catch(e){b.mark=null;}}return b;},_beginEditing:function(cmd){if(this._steps.length===0){this._steps.push({"text":dijit._editor.getChildrenHtml(this.editNode),"bookmark":this._getBookmark()});}},_endEditing:function(_233){var v=dijit._editor.getChildrenHtml(this.editNode);this._undoedSteps=[];this._steps.push({text:v,bookmark:this._getBookmark()});},onKeyDown:function(e){if(!dojo.isIE&&!this.iframe&&e.keyCode==dojo.keys.TAB&&!this.tabIndent){this._saveSelection();}if(!this.customUndo){this.inherited(arguments);return;}var k=e.keyCode,ks=dojo.keys;if(e.ctrlKey&&!e.altKey){if(k==90||k==122){dojo.stopEvent(e);this.undo();return;}else{if(k==89||k==121){dojo.stopEvent(e);this.redo();return;}}}this.inherited(arguments);switch(k){case ks.ENTER:case ks.BACKSPACE:case ks.DELETE:this.beginEditing();break;case 88:case 86:if(e.ctrlKey&&!e.altKey&&!e.metaKey){this.endEditing();if(e.keyCode==88){this.beginEditing("cut");setTimeout(dojo.hitch(this,this.endEditing),1);}else{this.beginEditing("paste");setTimeout(dojo.hitch(this,this.endEditing),1);}break;}default:if(!e.ctrlKey&&!e.altKey&&!e.metaKey&&(e.keyCode<dojo.keys.F1||e.keyCode>dojo.keys.F15)){this.beginEditing();break;}case ks.ALT:this.endEditing();break;case ks.UP_ARROW:case ks.DOWN_ARROW:case ks.LEFT_ARROW:case ks.RIGHT_ARROW:case ks.HOME:case ks.END:case ks.PAGE_UP:case ks.PAGE_DOWN:this.endEditing(true);break;case ks.CTRL:case ks.SHIFT:case ks.TAB:break;}},_onBlur:function(){this.inherited("_onBlur",arguments);this.endEditing(true);},_saveSelection:function(){this._savedSelection=this._getBookmark();},_restoreSelection:function(){if(this._savedSelection){delete this._cursorToStart;if(dojo.withGlobal(this.window,"isCollapsed",dijit)){this._moveToBookmark(this._savedSelection);}delete this._savedSelection;}},onClick:function(){this.endEditing(true);this.inherited(arguments);},_setDisabledAttr:function(_234){if(!this.disabled&&_234){this._buttonEnabledPlugins=dojo.filter(this._plugins,function(p){if(p&&p.button&&!p.button.get("disabled")){p.button.set("disabled",true);return true;}return false;});}else{if(this.disabled&&!_234){dojo.forEach(this._buttonEnabledPlugins,function(p){p.button.attr("disabled",false);p.updateState&&p.updateState();});}}this.inherited(arguments);},_setStateClass:function(){this.inherited(arguments);if(this.document&&this.document.body){dojo.style(this.document.body,"color",dojo.style(this.iframe,"color"));}}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}var args=o.args,p;var _235=dijit._editor._Plugin;var name=args.name;switch(name){case "undo":case "redo":case "cut":case "copy":case "paste":case "insertOrderedList":case "insertUnorderedList":case "indent":case "outdent":case "justifyCenter":case "justifyFull":case "justifyLeft":case "justifyRight":case "delete":case "selectAll":case "removeFormat":case "unlink":case "insertHorizontalRule":p=new _235({command:name});break;case "bold":case "italic":case "underline":case "strikethrough":case "subscript":case "superscript":p=new _235({buttonClass:dijit.form.ToggleButton,command:name});break;case "|":p=new _235({button:new dijit.ToolbarSeparator(),setEditor:function(_236){this.editor=_236;}});}o.plugin=p;});}if(!dojo._hasResource["dojo.regexp"]){dojo._hasResource["dojo.regexp"]=true;dojo.provide("dojo.regexp");dojo.regexp.escapeString=function(str,_237){return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(ch){if(_237&&_237.indexOf(ch)!=-1){return ch;}return "\\"+ch;});};dojo.regexp.buildGroupRE=function(arr,re,_238){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("|"),_238);};dojo.regexp.group=function(_239,_23a){return "("+(_23a?"?:":"")+_239+")";};}if(!dojo._hasResource["dojo.data.util.sorter"]){dojo._hasResource["dojo.data.util.sorter"]=true;dojo.provide("dojo.data.util.sorter");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(_23b,_23c){var _23d=[];function _23e(attr,dir,comp,s){return function(_23f,_240){var a=s.getValue(_23f,attr);var b=s.getValue(_240,attr);return dir*comp(a,b);};};var _241;var map=_23c.comparatorMap;var bc=dojo.data.util.sorter.basicComparator;for(var i=0;i<_23b.length;i++){_241=_23b[i];var attr=_241.attribute;if(attr){var dir=(_241.descending)?-1:1;var comp=bc;if(map){if(typeof attr!=="string"&&("toString" in attr)){attr=attr.toString();}comp=map[attr]||bc;}_23d.push(_23e(attr,dir,comp,_23c));}}return function(rowA,rowB){var i=0;while(i<_23d.length){var ret=_23d[i++](rowA,rowB);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.data.util.simpleFetch.fetch=function(_242){_242=_242||{};if(!_242.store){_242.store=this;}var self=this;var _243=function(_244,_245){if(_245.onError){var _246=_245.scope||dojo.global;_245.onError.call(_246,_244,_245);}};var _247=function(_248,_249){var _24a=_249.abort||null;var _24b=false;var _24c=_249.start?_249.start:0;var _24d=(_249.count&&(_249.count!==Infinity))?(_24c+_249.count):_248.length;_249.abort=function(){_24b=true;if(_24a){_24a.call(_249);}};var _24e=_249.scope||dojo.global;if(!_249.store){_249.store=self;}if(_249.onBegin){_249.onBegin.call(_24e,_248.length,_249);}if(_249.sort){_248.sort(dojo.data.util.sorter.createSortFunction(_249.sort,self));}if(_249.onItem){for(var i=_24c;(i<_248.length)&&(i<_24d);++i){var item=_248[i];if(!_24b){_249.onItem.call(_24e,item,_249);}}}if(_249.onComplete&&!_24b){var _24f=null;if(!_249.onItem){_24f=_248.slice(_24c,_24d);}_249.onComplete.call(_24e,_24f,_249);}};this._fetchItems(_242,_247,_243);return _242;};}if(!dojo._hasResource["dojo.data.util.filter"]){dojo._hasResource["dojo.data.util.filter"]=true;dojo.provide("dojo.data.util.filter");dojo.data.util.filter.patternToRegExp=function(_250,_251){var rxp="^";var c=null;for(var i=0;i<_250.length;i++){c=_250.charAt(i);switch(c){case "\\":rxp+=c;i++;rxp+=_250.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(_251){return new RegExp(rxp,"mi");}else{return new RegExp(rxp,"m");}};}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}\" waiRole=\"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.toLowerCase()=="input"||((type=="hidden"||type=="file")&&this.templateString==dijit.form.TextBox.prototype.templateString)){this.templateString=this._singleNodeTemplate;}this.inherited(arguments);},_setPlaceHolderAttr:function(v){this.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(_252,_253,_254){var _255;if(_252!==undefined){_255=this.filter(_252);if(typeof _254!="string"){if(_255!==null&&((typeof _255!="number")||!isNaN(_255))){_254=this.filter(this.format(_255,this.constraints));}else{_254="";}}}if(_254!=null&&_254!=undefined&&((typeof _254)!="number"||!isNaN(_254))&&this.textbox.value!=_254){this.textbox.value=_254;}this._updatePlaceHolder();this.inherited(arguments,[_255,_253]);},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(_256){dojo.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",_256);},_setDisplayedValueAttr:function(_257){if(_257===null||_257===undefined){_257="";}else{if(typeof _257!="string"){_257=String(_257);}}this.textbox.value=_257;this._setValueAttr(this.get("value"),undefined,_257);},format:function(_258,_259){return ((_258==null||_258==undefined)?"":(_258.toString?_258.toString():_258));},parse:function(_25a,_25b){return _25a;},_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 _25c=this;setTimeout(function(){_25c._handleOnChange(_25c.get("value"),false);},0);}this._refreshState();},postCreate:function(){if(dojo.isIE){var s=dojo.getComputedStyle(this.domNode);if(s){var ff=s.fontFamily;if(ff){var _25d=this.domNode.getElementsByTagName("INPUT");if(_25d){for(var i=0;i<_25d.length;i++){_25d[i].style.fontFamily=ff;}}}}}this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);if(dojo.isMoz||dojo.isOpera){this.connect(this.textbox,"oninput",this._onInput);}else{this.connect(this.textbox,"onkeydown",this._onInput);this.connect(this.textbox,"onkeyup",this._onInput);this.connect(this.textbox,"onpaste",this._onInput);this.connect(this.textbox,"oncut",this._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 _25e;if(dojo.isIE){var _25f=dojo.doc.selection.createRange();var _260=_25f.parentElement();_25e=_260==this.textbox&&_25f.text.length==0;}else{_25e=this.textbox.selectionStart==this.textbox.selectionEnd;}if(_25e){dijit.selectInputText(this.textbox);}});}this._updatePlaceHolder();this._refreshState();this.inherited(arguments);},reset:function(){this.textbox.value="";this.inherited(arguments);}});dijit.selectInputText=function(_261,_262,stop){var _263=dojo.global;var _264=dojo.doc;_261=dojo.byId(_261);if(isNaN(_262)){_262=0;}if(isNaN(stop)){stop=_261.value?_261.value.length:0;}dijit.focus(_261);if(_264["selection"]&&dojo.body()["createTextRange"]){if(_261.createTextRange){var _265=_261.createTextRange();with(_265){collapse(true);moveStart("character",-99999);moveStart("character",_262);moveEnd("character",stop-_262);select();}}}else{if(_263["getSelection"]){if(_261.setSelectionRange){_261.setSelectionRange(_262,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\" waiRole='alert'></div>\n\t<div class=\"dijitTooltipConnector\"></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(_266,_267,_268,rtl){if(this.aroundNode&&this.aroundNode===_267){return;}if(this.fadeOut.status()=="playing"){this._onDeck=arguments;return;}this.containerNode.innerHTML=_266;var pos=dijit.placeOnScreenAroundElement(this.domNode,_267,dijit.getPopupAroundAlignment((_268&&_268.length)?_268:dijit.Tooltip.defaultPosition,!rtl),dojo.hitch(this,"orient"));dojo.style(this.domNode,"opacity",0);this.fadeIn.play();this.isShowingNow=true;this.aroundNode=_267;},orient:function(node,_269,_26a){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"}[_269+"-"+_26a];},_onShow:function(){if(dojo.isIE){this.domNode.style.filter="";}},hide:function(_26b){if(this._onDeck&&this._onDeck[1]==_26b){this._onDeck=null;}else{if(this.aroundNode===_26b){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(_26c,_26d,_26e,rtl){if(!dijit._masterTT){dijit._masterTT=new dijit._MasterTooltip();}return dijit._masterTT.show(_26c,_26d,_26e,rtl);};dijit.hideTooltip=function(_26f){if(!dijit._masterTT){dijit._masterTT=new dijit._MasterTooltip();}return dijit._masterTT.hide(_26f);};dojo.declare("dijit.Tooltip",dijit._Widget,{label:"",showDelay:400,connectId:[],position:[],constructor:function(){this._nodeConnectionsById={};},_setConnectIdAttr:function(_270){for(var _271 in this._nodeConnectionsById){this.removeTarget(_271);}dojo.forEach(dojo.isArrayLike(_270)?_270:[_270],this.addTarget,this);},_getConnectIdAttr:function(){var ary=[];for(var id in this._nodeConnectionsById){ary.push(id);}return ary;},addTarget:function(id){var node=dojo.byId(id);if(!node){return;}if(node.id in this._nodeConnectionsById){return;}this._nodeConnectionsById[node.id]=[this.connect(node,"onmouseenter","_onTargetMouseEnter"),this.connect(node,"onmouseleave","_onTargetMouseLeave"),this.connect(node,"onfocus","_onTargetFocus"),this.connect(node,"onblur","_onTargetBlur")];},removeTarget:function(node){var id=node.id||node;if(id in this._nodeConnectionsById){dojo.forEach(this._nodeConnectionsById[id],this.disconnect,this);delete this._nodeConnectionsById[id];}},postCreate:function(){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 _272=e.target;this._showTimer=setTimeout(dojo.hitch(this,function(){this.open(_272);}),this.showDelay);}},_onUnHover:function(e){if(this._focus){return;}if(this._showTimer){clearTimeout(this._showTimer);delete this._showTimer;}this.close();},open:function(_273){if(this._showTimer){clearTimeout(this._showTimer);delete this._showTimer;}dijit.showTooltip(this.label||this.domNode.innerHTML,_273,this.position,!this.isLeftToRight());this._connectNode=_273;this.onShow(_273,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(_274,_275){},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}\" waiRole=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&Chi; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"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_$",constraints:{},regExp:".*",regExpGen:function(_276){return this.regExp;},state:"",tooltipPosition:[],_setValueAttr:function(){this.inherited(arguments);this.validate(this._focused);},validator:function(_277,_278){return (new RegExp("^(?:"+this.regExpGen(_278)+")"+(this.required?"":"?")+"$")).test(_277)&&(!this.required||!this._isEmpty(_277))&&(this._isEmpty(_277)||this.parse(_277,_278)!==undefined);},_isValidSubset:function(){return this.textbox.value.search(this._partialre)==0;},isValid:function(_279){return this.validator(this.textbox.value,this.constraints);},_isEmpty:function(_27a){return /^\s*$/.test(_27a);},getErrorMessage:function(_27b){return (this.required&&this._isEmpty(this.textbox.value))?this.missingMessage:this.invalidMessage;},getPromptMessage:function(_27c){return this.promptMessage;},_maskValidSubsetError:true,validate:function(_27d){var _27e="";var _27f=this.disabled||this.isValid(_27d);if(_27f){this._maskValidSubsetError=true;}var _280=this._isEmpty(this.textbox.value);var _281=!_27f&&!_280&&_27d&&this._isValidSubset();this.state=((_27f||((!this._hasBeenBlurred||_27d)&&_280)||_281)&&this._maskValidSubsetError)?"":"Error";if(this.state=="Error"){this._maskValidSubsetError=_27d;}this._setStateClass();dijit.setWaiState(this.focusNode,"invalid",_27f?"false":"true");if(_27d){if(this.state=="Error"){_27e=this.getErrorMessage(true);}else{_27e=this.getPromptMessage(true);}this._maskValidSubsetError=true;}this.displayMessage(_27e);return _27f;},_message:"",displayMessage:function(_282){if(this._message==_282){return;}this._message=_282;dijit.hideTooltip(this.domNode);if(_282){dijit.showTooltip(_282,this.domNode,this.tooltipPosition,!this.isLeftToRight());}},_refreshState:function(){this.validate(this._focused);this.inherited(arguments);},constructor:function(){this.constraints={};},_setConstraintsAttr:function(_283){if(!_283.locale&&this.lang){_283.locale=this.lang;}this.constraints=_283;this._computePartialRE();},_computePartialRE:function(){var p=this.regExpGen(this.constraints);this.regExp=p;var _284="";if(p!=".*"){this.regExp.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(re){switch(re.charAt(0)){case "{":case "+":case "?":case "*":case "^":case "$":case "|":case "(":_284+=re;break;case ")":_284+="|$)";break;default:_284+="(?:"+re+"|$)";break;}});}try{"".search(_284);}catch(e){_284=this.regExp;console.warn("RegExp error in "+this.declaredClass+": "+this.regExp);}this._partialre="^(?:"+_284+")$";},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(_285){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_286){this.required=_286;dijit.setWaiState(this.focusNode,"required",_286);this._refreshState();},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,_287){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+"'":"")+">",this.textbox,"after");},reset:function(){this.valueNode.value="";this.inherited(arguments);}});dojo.declare("dijit.form.RangeBoundTextBox",dijit.form.MappedTextBox,{rangeMessage:"",rangeCheck:function(_288,_289){return ("min" in _289?(this.compare(_288,_289.min)>=0):true)&&("max" in _289?(this.compare(_288,_289.max)<=0):true);},isInRange:function(_28a){return this.rangeCheck(this.get("value"),this.constraints);},_isDefinitelyOutOfRange:function(){var val=this.get("value");var _28b=false;var _28c=false;if("min" in this.constraints){var min=this.constraints.min;min=this.compare(val,((typeof min=="number")&&min>=0&&val!=0)?0:min);_28b=(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);_28c=(typeof max=="number")&&max>0;}return _28b||_28c;},_isValidSubset:function(){return this.inherited(arguments)&&!this._isDefinitelyOutOfRange();},isValid:function(_28d){return this.inherited(arguments)&&((this._isEmpty(this.textbox.value)&&!this.required)||this.isInRange(_28d));},getErrorMessage:function(_28e){var v=this.get("value");if(v!==null&&v!==""&&v!==undefined&&(typeof v!="number"||!isNaN(v))&&!this.isInRange(_28e)){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(_28f){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(_290,_291){dijit.setWaiState(this.focusNode,"valuenow",_290);this.inherited(arguments);}});}if(!dojo._hasResource["dijit.form.ComboBox"]){dojo._hasResource["dijit.form.ComboBox"]=true;dojo.provide("dijit.form.ComboBox");dojo.declare("dijit.form.ComboBoxMixin",null,{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/ComboBox.html","<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\"\n\tdojoAttachPoint=\"comboNode\" waiRole=\"combobox\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdojoAttachPoint=\"downArrowNode\" waiRole=\"presentation\"\n\t\tdojoAttachEvent=\"onmousedown:_onArrowMouseDown\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"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=\"&Chi; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"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\tdojoAttachEvent=\"onkeypress:_onKeyPress,compositionend\"\n\t\t\tdojoAttachPoint=\"textbox,focusNode\" waiRole=\"textbox\" waiState=\"haspopup-true,autocomplete-list\"\n\t/></div\n></div>\n"),baseClass:"dijitTextBox dijitComboBox",cssStateNodes:{"downArrowNode":"dijitDownArrowButton"},_getCaretPos:function(_292){var pos=0;if(typeof (_292.selectionStart)=="number"){pos=_292.selectionStart;}else{if(dojo.isIE){var tr=dojo.doc.selection.createRange().duplicate();var ntr=_292.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(_293,_294){_294=parseInt(_294);dijit.selectInputText(_293,_294,_294);},_setDisabledAttr:function(_295){this.inherited(arguments);dijit.setWaiState(this.comboNode,"disabled",_295);},_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._onKeyPress({charOrCode:229});}),100);}this.inherited(arguments);},_onKeyPress:function(evt){var key=evt.charOrCode;if(evt.altKey||((evt.ctrlKey||evt.metaKey)&&(key!="x"&&key!="v"))||key==dojo.keys.SHIFT){return;}var _296=false;var _297="_startSearchFromInput";var pw=this._popupWidget;var dk=dojo.keys;var _298=null;this._prev_key_backspace=false;this._abortQuery();if(this._isShowingNow){pw.handleKey(key);_298=pw.getHighlightedOption();}switch(key){case dk.PAGE_DOWN:case dk.DOWN_ARROW:case dk.PAGE_UP:case dk.UP_ARROW:if(!this._isShowingNow){_296=true;_297="_startSearchAll";}else{this._announceOption(_298);}dojo.stopEvent(evt);break;case dk.ENTER:if(_298){if(_298==pw.nextButton){this._nextSearch(1);dojo.stopEvent(evt);break;}else{if(_298==pw.previousButton){this._nextSearch(-1);dojo.stopEvent(evt);break;}}}else{this._setBlurValue();this._setCaretPos(this.focusNode,this.focusNode.value.length);}evt.preventDefault();case dk.TAB:var _299=this.get("displayedValue");if(pw&&(_299==pw._messages["previousMessage"]||_299==pw._messages["nextMessage"])){break;}if(_298){this._selectOption();}if(this._isShowingNow){this._lastQuery=null;this._hideResultList();}break;case " ":if(_298){dojo.stopEvent(evt);this._selectOption();this._hideResultList();}else{_296=true;}break;case dk.ESCAPE:if(this._isShowingNow){dojo.stopEvent(evt);this._hideResultList();}break;case dk.DELETE:case dk.BACKSPACE:this._prev_key_backspace=true;_296=true;break;default:_296=typeof key=="string"||key==229;}if(_296){this.item=undefined;this.searchTimer=setTimeout(dojo.hitch(this,_297),1);}},_autoCompleteText:function(text){var fn=this.focusNode;dijit.selectInputText(fn,fn.value.length);var _29a=this.ignoreCase?"toLowerCase":"substr";if(text[_29a](0).indexOf(this.focusNode.value[_29a](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(_29b,_29c){this._fetchHandle=null;if(this.disabled||this.readOnly||(_29c.query[this.searchAttr]!=this._lastQuery)){return;}this._popupWidget.clearResultList();if(!_29b.length&&!this._maxOptions){this._hideResultList();return;}_29c._maxOptions=this._maxOptions;var _29d=this._popupWidget.createOptions(_29b,_29c,dojo.hitch(this,"_getMenuLabelFromItem"));this._showResultList();if(_29c.direction){if(1==_29c.direction){this._popupWidget.highlightFirstOption();}else{if(-1==_29c.direction){this._popupWidget.highlightLastOption();}}this._announceOption(this._popupWidget.getHighlightedOption());}else{if(this.autoComplete&&!this._prev_key_backspace&&!/^[*]+$/.test(_29c.query[this.searchAttr])){this._announceOption(_29d[1]);}}},_showResultList:function(){this._hideResultList();this.displayMessage("");dojo.style(this._popupWidget.domNode,{width:"",height:""});var best=this.open();var _29e=dojo.marginBox(this._popupWidget.domNode);this._popupWidget.domNode.style.overflow=((best.h==_29e.h)&&(best.w==_29e.w))?"hidden":"auto";var _29f=best.w;if(best.h<this._popupWidget.domNode.scrollHeight){_29f+=16;}dojo.marginBox(this._popupWidget.domNode,{h:best.h,w:Math.max(_29f,this.domNode.offsetWidth)});if(_29f<this.domNode.offsetWidth){this._popupWidget.domNode.parentNode.style.left=dojo.position(this.domNode,true).x+"px";}dijit.setWaiState(this.comboNode,"expanded","true");},_hideResultList:function(){this._abortQuery();if(this._isShowingNow){dijit.popup.close(this._popupWidget);this._isShowingNow=false;dijit.setWaiState(this.comboNode,"expanded","false");dijit.removeWaiState(this.focusNode,"activedescendant");}},_setBlurValue:function(){var _2a0=this.get("displayedValue");var pw=this._popupWidget;if(pw&&(_2a0==pw._messages["previousMessage"]||_2a0==pw._messages["nextMessage"])){this._setValueAttr(this._lastValueReported,true);}else{if(typeof this.item=="undefined"){this.item=null;this.set("displayedValue",_2a0);}else{if(this.value!=this._lastValueReported){dijit.form._FormValueWidget.prototype._setValueAttr.call(this,this.value,true);}this._refreshState();}}},_onBlur:function(){this._hideResultList();this.inherited(arguments);},_setItemAttr:function(item,_2a1,_2a2){if(!_2a2){_2a2=this.labelFunc(item,this.store);}this.value=this._getValueField()!=this.searchAttr?this.store.getIdentity(item):_2a2;this.item=item;dijit.form.ComboBox.superclass._setValueAttr.call(this,this.value,_2a1,_2a2);},_announceOption:function(node){if(!node){return;}var _2a3;if(node==this._popupWidget.nextButton||node==this._popupWidget.previousButton){_2a3=node.innerHTML;this.item=undefined;this.value="";}else{_2a3=this.labelFunc(node.item,this.store);this.set("item",node.item,false,_2a3);}this.focusNode.value=this.focusNode.value.substring(0,this._lastInput.length);dijit.setWaiState(this.focusNode,"activedescendant",dojo.attr(node,"id"));this._autoCompleteText(_2a3);},_selectOption:function(evt){if(evt){this._announceOption(evt.target);}this._hideResultList();this._setCaretPos(this.focusNode,this.focusNode.value.length);dijit.form._FormValueWidget.prototype._setValueAttr.call(this,this.value,true);},_onArrowMouseDown:function(evt){if(this.disabled||this.readOnly){return;}dojo.stopEvent(evt);this.focus();if(this._isShowingNow){this._hideResultList();}else{this._startSearchAll();}},_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._popupWidget){var _2a4=this.id+"_popup";this._popupWidget=new dijit.form._ComboBoxMenu({onChange:dojo.hitch(this,this._selectOption),id:_2a4,dir:this.dir});dijit.removeWaiState(this.focusNode,"activedescendant");dijit.setWaiState(this.textbox,"owns",_2a4);}var _2a5=dojo.clone(this.query);this._lastInput=key;this._lastQuery=_2a5[this.searchAttr]=this._getQueryString(key);this.searchTimer=setTimeout(dojo.hitch(this,function(_2a6,_2a7){this.searchTimer=null;var _2a8={queryOptions:{ignoreCase:this.ignoreCase,deep:true},query:_2a6,onBegin:dojo.hitch(this,"_setMaxOptions"),onComplete:dojo.hitch(this,"_openResultList"),onError:function(_2a9){_2a7._fetchHandle=null;console.error("dijit.form.ComboBox: "+_2a9);dojo.hitch(_2a7,"_hideResultList")();},start:0,count:this.pageSize};dojo.mixin(_2a8,_2a7.fetchProperties);this._fetchHandle=_2a7.store.fetch(_2a8);var _2aa=function(_2ab,_2ac){_2ab.start+=_2ab.count*_2ac;_2ab.direction=_2ac;this._fetchHandle=this.store.fetch(_2ab);};this._nextSearch=this._popupWidget.onPage=dojo.hitch(this,_2aa,this._fetchHandle);},_2a5,this),this.searchDelay);},_setMaxOptions:function(size,_2ad){this._maxOptions=size;},_getValueField:function(){return this.searchAttr;},compositionend:function(evt){this._onKeyPress({charOrCode:229});},constructor:function(){this.query={};this.fetchProperties={};},postMixInProperties:function(){if(!this.store){var _2ae=this.srcNodeRef;this.store=new dijit.form._ComboBoxDataStore(_2ae);if(!("value" in this.params)){var item=this.store.fetchSelectedItem();if(item){var _2af=this._getValueField();this.value=_2af!=this.searchAttr?this.store.getValue(item,_2af):this.labelFunc(item,this.store);}}}this.inherited(arguments);},postCreate:function(){if(!this.hasDownArrow){this.downArrowNode.style.display="none";}var _2b0=dojo.query("label[for=\""+this.id+"\"]");if(_2b0.length){_2b0[0].id=(this.id+"_label");var cn=this.comboNode;dijit.setWaiState(cn,"labelledby",_2b0[0].id);}this.inherited(arguments);},uninitialize:function(){if(this._popupWidget&&!this._popupWidget._destroyed){this._hideResultList();this._popupWidget.destroy();}this.inherited(arguments);},_getMenuLabelFromItem:function(item){var _2b1=this.labelAttr?this.store.getValue(item,this.labelAttr):this.labelFunc(item,this.store);var _2b2=this.labelType;if(this.highlightMatch!="none"&&this.labelType=="text"&&this._lastInput){_2b1=this.doHighlight(_2b1,this._escapeHtml(this._lastInput));_2b2="html";}return {html:_2b2=="html",label:_2b1};},doHighlight:function(_2b3,find){var _2b4="i"+(this.highlightMatch=="all"?"g":"");var _2b5=this._escapeHtml(_2b3);find=dojo.regexp.escapeString(find);var ret=_2b5.replace(new RegExp("(^|\\s)("+find+")",_2b4),"$1<span class=\"dijitComboBoxHighlightMatch\">$2</span>");return ret;},_escapeHtml:function(str){str=String(str).replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");return str;},open:function(){this._isShowingNow=true;return dijit.popup.open({popup:this._popupWidget,around:this.domNode,parent:this});},reset:function(){this.item=null;this.inherited(arguments);},labelFunc:function(item,_2b6){return _2b6.getValue(item,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' tabIndex='-1' style='overflow: \"auto\"; overflow-x: \"hidden\";'>"+"<li class='dijitMenuItem dijitMenuPreviousButton' dojoAttachPoint='previousButton' waiRole='option'></li>"+"<li class='dijitMenuItem dijitMenuNextButton' dojoAttachPoint='nextButton' waiRole='option'></li>"+"</ul>",_messages:null,baseClass:"dijitComboBoxMenu",postMixInProperties:function(){this._messages=dojo.i18n.getLocalization("dijit.form","ComboBox",this.lang);this.inherited(arguments);},_setValueAttr:function(_2b7){this.value=_2b7;this.onChange(_2b7);},onChange:function(_2b8){},onPage:function(_2b9){},postCreate:function(){this.previousButton.innerHTML=this._messages["previousMessage"];this.nextButton.innerHTML=this._messages["nextMessage"];this.inherited(arguments);},onClose:function(){this._blurOptionNode();},_createOption:function(item,_2ba){var _2bb=_2ba(item);var _2bc=dojo.doc.createElement("li");dijit.setWaiRole(_2bc,"option");if(_2bb.html){_2bc.innerHTML=_2bb.label;}else{_2bc.appendChild(dojo.doc.createTextNode(_2bb.label));}if(_2bc.innerHTML==""){_2bc.innerHTML="&nbsp;";}_2bc.item=item;return _2bc;},createOptions:function(_2bd,_2be,_2bf){this.previousButton.style.display=(_2be.start==0)?"none":"";dojo.attr(this.previousButton,"id",this.id+"_prev");dojo.forEach(_2bd,function(item,i){var _2c0=this._createOption(item,_2bf);_2c0.className="dijitReset dijitMenuItem"+(this.isLeftToRight()?"":" dijitMenuItemRtl");dojo.attr(_2c0,"id",this.id+i);this.domNode.insertBefore(_2c0,this.nextButton);},this);var _2c1=false;if(_2be._maxOptions&&_2be._maxOptions!=-1){if((_2be.start+_2be.count)<_2be._maxOptions){_2c1=true;}else{if((_2be.start+_2be.count)>_2be._maxOptions&&_2be.count==_2bd.length){_2c1=true;}}}else{if(_2be.count==_2bd.length){_2c1=true;}}this.nextButton.style.display=_2c1?"":"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]);}},_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.onPage(-1);}else{if(evt.target==this.nextButton){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 _2c2=this.domNode.firstChild;var _2c3=_2c2.nextSibling;this._focusOptionNode(_2c3.style.display=="none"?_2c2:_2c3);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 _2c4=0;var _2c5=this.domNode.scrollTop;var _2c6=dojo.style(this.domNode,"height");if(!this.getHighlightedOption()){this._highlightNextOption();}while(_2c4<_2c6){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 _2c7=this.domNode.scrollTop;_2c4+=(_2c7-_2c5)*(up?-1:1);_2c5=_2c7;}},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(key){switch(key){case dojo.keys.DOWN_ARROW:this._highlightNextOption();break;case dojo.keys.PAGE_DOWN:this.pageDown();break;case dojo.keys.UP_ARROW:this._highlightPrevOption();break;case dojo.keys.PAGE_UP:this.pageUp();break;}}});dojo.declare("dijit.form.ComboBox",[dijit.form.ValidationTextBox,dijit.form.ComboBoxMixin],{_setValueAttr:function(_2c8,_2c9,_2ca){this.item=null;if(!_2c8){_2c8="";}dijit.form.ValidationTextBox.prototype._setValueAttr.call(this,_2c8,_2c9,_2ca);}});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,_2cb,_2cc){return (_2cb=="value")?item.value:(item.innerText||item.textContent||"");},isItemLoaded:function(_2cd){return true;},getFeatures:function(){return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true};},_fetchItems:function(args,_2ce,_2cf){if(!args.query){args.query={};}if(!args.query.name){args.query.name="";}if(!args.queryOptions){args.queryOptions={};}var _2d0=dojo.data.util.filter.patternToRegExp(args.query.name,args.queryOptions.ignoreCase),_2d1=dojo.query("> option",this.root).filter(function(_2d2){return (_2d2.innerText||_2d2.textContent||"").match(_2d0);});if(args.sort){_2d1.sort(dojo.data.util.sorter.createSortFunction(args.sort,this));}_2ce(_2d1,args);},close:function(_2d3){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.FilteringSelect"]){dojo._hasResource["dijit.form.FilteringSelect"]=true;dojo.provide("dijit.form.FilteringSelect");dojo.declare("dijit.form.FilteringSelect",[dijit.form.MappedTextBox,dijit.form.ComboBoxMixin],{_isvalid:true,required:true,_lastDisplayedValue:"",isValid:function(){return this._isvalid||(!this.required&&this.get("displayedValue")=="");},_refreshState:function(){if(!this.searchTimer){this.inherited(arguments);}},_callbackSetLabel:function(_2d4,_2d5,_2d6){if((_2d5&&_2d5.query[this.searchAttr]!=this._lastQuery)||(!_2d5&&_2d4.length&&this.store.getIdentity(_2d4[0])!=this._lastQuery)){return;}if(!_2d4.length){this.valueNode.value="";dijit.form.TextBox.superclass._setValueAttr.call(this,"",_2d6||(_2d6===undefined&&!this._focused));this._isvalid=false;this.validate(this._focused);this.item=null;}else{this.set("item",_2d4[0],_2d6);}},_openResultList:function(_2d7,_2d8){if(_2d8.query[this.searchAttr]!=this._lastQuery){return;}if(this.item===undefined){this._isvalid=_2d7.length!=0||this._maxOptions!=0;this.validate(true);}dijit.form.ComboBoxMixin.prototype._openResultList.apply(this,arguments);},_getValueAttr:function(){return this.valueNode.value;},_getValueField:function(){return "value";},_setValueAttr:function(_2d9,_2da){if(!this._onChangeActive){_2da=null;}this._lastQuery=_2d9;if(_2d9===null||_2d9===""){this._setDisplayedValueAttr("",_2da);return;}var self=this;this.store.fetchItemByIdentity({identity:_2d9,onItem:function(item){self._callbackSetLabel(item?[item]:[],undefined,_2da);}});},_setItemAttr:function(item,_2db,_2dc){this._isvalid=true;this.inherited(arguments);this.valueNode.value=this.value;this._lastDisplayedValue=this.textbox.value;},_getDisplayQueryString:function(text){return text.replace(/([\\\*\?])/g,"\\$1");},_setDisplayedValueAttr:function(_2dd,_2de){if(!this._created){_2de=false;}if(this.store){this._hideResultList();var _2df=dojo.clone(this.query);this._lastQuery=_2df[this.searchAttr]=this._getDisplayQueryString(_2dd);this.textbox.value=_2dd;this._lastDisplayedValue=_2dd;var _2e0=this;var _2e1={query:_2df,queryOptions:{ignoreCase:this.ignoreCase,deep:true},onComplete:function(_2e2,_2e3){_2e0._fetchHandle=null;dojo.hitch(_2e0,"_callbackSetLabel")(_2e2,_2e3,_2de);},onError:function(_2e4){_2e0._fetchHandle=null;console.error("dijit.form.FilteringSelect: "+_2e4);dojo.hitch(_2e0,"_callbackSetLabel")([],undefined,false);}};dojo.mixin(_2e1,this.fetchProperties);this._fetchHandle=this.store.fetch(_2e1);}},postMixInProperties:function(){this.inherited(arguments);this._isvalid=!this.required;},undo:function(){this.set("displayedValue",this._lastDisplayedValue);}});}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(_2e5){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_2e5.url;this._ccUrl=_2e5.url;this.url=_2e5.url;this._jsonData=_2e5.data;this.data=null;this._datatypeMap=_2e5.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_2e6){return dojo.date.stamp.fromISOString(_2e6);}};}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(_2e5.urlPreventCache!==undefined){this.urlPreventCache=_2e5.urlPreventCache?true:false;}if(_2e5.hierarchical!==undefined){this.hierarchical=_2e5.hierarchical?true:false;}if(_2e5.clearOnClose){this.clearOnClose=true;}if("failOk" in _2e5){this.failOk=_2e5.failOk?true:false;}},url:"",_ccUrl:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,failOk:false,hierarchical:true,_assertIsItem:function(item){if(!this.isItem(item)){throw new Error("dojo.data.ItemFileReadStore: Invalid item argument.");}},_assertIsAttribute:function(_2e7){if(typeof _2e7!=="string"){throw new Error("dojo.data.ItemFileReadStore: Invalid attribute argument.");}},getValue:function(item,_2e8,_2e9){var _2ea=this.getValues(item,_2e8);return (_2ea.length>0)?_2ea[0]:_2e9;},getValues:function(item,_2eb){this._assertIsItem(item);this._assertIsAttribute(_2eb);return (item[_2eb]||[]).slice(0);},getAttributes:function(item){this._assertIsItem(item);var _2ec=[];for(var key in item){if((key!==this._storeRefPropName)&&(key!==this._itemNumPropName)&&(key!==this._rootItemPropName)&&(key!==this._reverseRefMap)){_2ec.push(key);}}return _2ec;},hasAttribute:function(item,_2ed){this._assertIsItem(item);this._assertIsAttribute(_2ed);return (_2ed in item);},containsValue:function(item,_2ee,_2ef){var _2f0=undefined;if(typeof _2ef==="string"){_2f0=dojo.data.util.filter.patternToRegExp(_2ef,false);}return this._containsValue(item,_2ee,_2ef,_2f0);},_containsValue:function(item,_2f1,_2f2,_2f3){return dojo.some(this.getValues(item,_2f1),function(_2f4){if(_2f4!==null&&!dojo.isObject(_2f4)&&_2f3){if(_2f4.toString().match(_2f3)){return true;}}else{if(_2f2===_2f4){return true;}}});},isItem:function(_2f5){if(_2f5&&_2f5[this._storeRefPropName]===this){if(this._arrayOfAllItems[_2f5[this._itemNumPropName]]===_2f5){return true;}}return false;},isItemLoaded:function(_2f6){return this.isItem(_2f6);},loadItem:function(_2f7){this._assertIsItem(_2f7.item);},getFeatures:function(){return this._features;},getLabel:function(item){if(this._labelAttr&&this.isItem(item)){return this.getValue(item,this._labelAttr);}return undefined;},getLabelAttributes:function(item){if(this._labelAttr){return [this._labelAttr];}return null;},_fetchItems:function(_2f8,_2f9,_2fa){var self=this,_2fb=function(_2fc,_2fd){var _2fe=[],i,key;if(_2fc.query){var _2ff,_300=_2fc.queryOptions?_2fc.queryOptions.ignoreCase:false;var _301={};for(key in _2fc.query){_2ff=_2fc.query[key];if(typeof _2ff==="string"){_301[key]=dojo.data.util.filter.patternToRegExp(_2ff,_300);}else{if(_2ff instanceof RegExp){_301[key]=_2ff;}}}for(i=0;i<_2fd.length;++i){var _302=true;var _303=_2fd[i];if(_303===null){_302=false;}else{for(key in _2fc.query){_2ff=_2fc.query[key];if(!self._containsValue(_303,key,_2ff,_301[key])){_302=false;}}}if(_302){_2fe.push(_303);}}_2f9(_2fe,_2fc);}else{for(i=0;i<_2fd.length;++i){var item=_2fd[i];if(item!==null){_2fe.push(item);}}_2f9(_2fe,_2fc);}};if(this._loadFinished){_2fb(_2f8,this._getItemsArray(_2f8.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==null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_2f8,filter:_2fb});}else{this._loadInProgress=true;var _304={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _305=dojo.xhrGet(_304);_305.addCallback(function(data){try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;_2fb(_2f8,self._getItemsArray(_2f8.queryOptions));self._handleQueuedFetches();}catch(e){self._loadFinished=true;self._loadInProgress=false;_2fa(e,_2f8);}});_305.addErrback(function(_306){self._loadInProgress=false;_2fa(_306,_2f8);});var _307=null;if(_2f8.abort){_307=_2f8.abort;}_2f8.abort=function(){var df=_305;if(df&&df.fired===-1){df.cancel();df=null;}if(_307){_307.call(_2f8);}};}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;_2fb(_2f8,this._getItemsArray(_2f8.queryOptions));}catch(e){_2fa(e,_2f8);}}else{_2fa(new Error("dojo.data.ItemFileReadStore: No JSON source data was provided as either URL or a nested Javascript object."),_2f8);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i<this._queuedFetches.length;i++){var _308=this._queuedFetches[i],_309=_308.args,_30a=_308.filter;if(_30a){_30a(_309,this._getItemsArray(_309.queryOptions));}else{this.fetchItemByIdentity(_309);}}this._queuedFetches=[];}},_getItemsArray:function(_30b){if(_30b&&_30b.deep){return this._arrayOfAllItems;}return this._arrayOfTopLevelItems;},close:function(_30c){if(this.clearOnClose&&this._loadFinished&&!this._loadInProgress){if(((this._jsonFileUrl==""||this._jsonFileUrl==null)&&(this.url==""||this.url==null))&&this.data==null){}this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._itemsByIdentity=null;this._loadInProgress=false;this._queuedFetches=[];}},_getItemsFromLoadedData:function(_30d){var _30e=false,self=this;function _30f(_310){var _311=((_310!==null)&&(typeof _310==="object")&&(!dojo.isArray(_310)||_30e)&&(!dojo.isFunction(_310))&&(_310.constructor==Object||dojo.isArray(_310))&&(typeof _310._reference==="undefined")&&(typeof _310._type==="undefined")&&(typeof _310._value==="undefined")&&self.hierarchical);return _311;};function _312(_313){self._arrayOfAllItems.push(_313);for(var _314 in _313){var _315=_313[_314];if(_315){if(dojo.isArray(_315)){var _316=_315;for(var k=0;k<_316.length;++k){var _317=_316[k];if(_30f(_317)){_312(_317);}}}else{if(_30f(_315)){_312(_315);}}}}};this._labelAttr=_30d.label;var i,item;this._arrayOfAllItems=[];this._arrayOfTopLevelItems=_30d.items;for(i=0;i<this._arrayOfTopLevelItems.length;++i){item=this._arrayOfTopLevelItems[i];if(dojo.isArray(item)){_30e=true;}_312(item);item[this._rootItemPropName]=true;}var _318={},key;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){if(key!==this._rootItemPropName){var _319=item[key];if(_319!==null){if(!dojo.isArray(_319)){item[key]=[_319];}}else{item[key]=[null];}}_318[key]=key;}}while(_318[this._storeRefPropName]){this._storeRefPropName+="_";}while(_318[this._itemNumPropName]){this._itemNumPropName+="_";}while(_318[this._reverseRefMap]){this._reverseRefMap+="_";}var _31a;var _31b=_30d.identifier;if(_31b){this._itemsByIdentity={};this._features["dojo.data.api.Identity"]=_31b;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];_31a=item[_31b];var _31c=_31a[0];if(!this._itemsByIdentity[_31c]){this._itemsByIdentity[_31c]=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: ["+_31b+"].  Value collided: ["+_31c+"]");}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: ["+_31b+"].  Value collided: ["+_31c+"]");}}}}}else{this._features["dojo.data.api.Identity"]=Number;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];item[this._storeRefPropName]=this;item[this._itemNumPropName]=i;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){_31a=item[key];for(var j=0;j<_31a.length;++j){_319=_31a[j];if(_319!==null&&typeof _319=="object"){if(("_type" in _319)&&("_value" in _319)){var type=_319._type;var _31d=this._datatypeMap[type];if(!_31d){throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '"+type+"'");}else{if(dojo.isFunction(_31d)){_31a[j]=new _31d(_319._value);}else{if(dojo.isFunction(_31d.deserialize)){_31a[j]=_31d.deserialize(_319._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(_319._reference){var _31e=_319._reference;if(!dojo.isObject(_31e)){_31a[j]=this._getItemByIdentity(_31e);}else{for(var k=0;k<this._arrayOfAllItems.length;++k){var _31f=this._arrayOfAllItems[k],_320=true;for(var _321 in _31e){if(_31f[_321]!=_31e[_321]){_320=false;}}if(_320){_31a[j]=_31f;}}}if(this.referenceIntegrity){var _322=_31a[j];if(this.isItem(_322)){this._addReferenceToMap(_322,item,key);}}}else{if(this.isItem(_319)){if(this.referenceIntegrity){this._addReferenceToMap(_319,item,key);}}}}}}}},_addReferenceToMap:function(_323,_324,_325){},getIdentity:function(item){var _326=this._features["dojo.data.api.Identity"];if(_326===Number){return item[this._itemNumPropName];}else{var _327=item[_326];if(_327){return _327[0];}}return null;},fetchItemByIdentity:function(_328){var item,_329;if(!this._loadFinished){var self=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:_328});}else{this._loadInProgress=true;var _32a={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _32b=dojo.xhrGet(_32a);_32b.addCallback(function(data){var _32c=_328.scope?_328.scope:dojo.global;try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;item=self._getItemByIdentity(_328.identity);if(_328.onItem){_328.onItem.call(_32c,item);}self._handleQueuedFetches();}catch(error){self._loadInProgress=false;if(_328.onError){_328.onError.call(_32c,error);}}});_32b.addErrback(function(_32d){self._loadInProgress=false;if(_328.onError){var _32e=_328.scope?_328.scope:dojo.global;_328.onError.call(_32e,_32d);}});}}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;item=self._getItemByIdentity(_328.identity);if(_328.onItem){_329=_328.scope?_328.scope:dojo.global;_328.onItem.call(_329,item);}}}}else{item=this._getItemByIdentity(_328.identity);if(_328.onItem){_329=_328.scope?_328.scope:dojo.global;_328.onItem.call(_329,item);}}},_getItemByIdentity:function(_32f){var item=null;if(this._itemsByIdentity){item=this._itemsByIdentity[_32f];}else{item=this._arrayOfAllItems[_32f];}if(item===undefined){item=null;}return item;},getIdentityAttributes:function(item){var _330=this._features["dojo.data.api.Identity"];if(_330===Number){return null;}else{return [_330];}},_forceLoad:function(){var self=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){var _331={url:this._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk,sync:true};var _332=dojo.xhrGet(_331);_332.addCallback(function(data){try{if(self._loadInProgress!==true&&!self._loadFinished){self._getItemsFromLoadedData(data);self._loadFinished=true;}else{if(self._loadInProgress){throw new Error("dojo.data.ItemFileReadStore:  Unable to perform a synchronous load, an async load is in progress.");}}}catch(e){throw e;}});_332.addErrback(function(_333){throw _333;});}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;}}}});dojo.extend(dojo.data.ItemFileReadStore,dojo.data.util.simpleFetch);}if(!dojo._hasResource["dijit._editor.plugins.FontChoice"]){dojo._hasResource["dijit._editor.plugins.FontChoice"]=true;dojo.provide("dijit._editor.plugins.FontChoice");dojo.declare("dijit._editor.plugins._FontDropDown",[dijit._Widget,dijit._Templated],{label:"",widgetsInTemplate:true,plainText:false,templateString:"<span style='white-space: nowrap' class='dijit dijitReset dijitInline'>"+"<label class='dijitLeft dijitInline' for='${selectId}'>${label}</label>"+"<input dojoType='dijit.form.FilteringSelect' required=false labelType=html labelAttr=label searchAttr=name "+"tabIndex='-1' id='${selectId}' dojoAttachPoint='select' value=''/>"+"</span>",postMixInProperties:function(){this.inherited(arguments);this.strings=dojo.i18n.getLocalization("dijit._editor","FontChoice");this.label=this.strings[this.command];this.id=dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));this.selectId=this.id+"_select";this.inherited(arguments);},postCreate:function(){var _334=dojo.map(this.values,function(_335){var name=this.strings[_335]||_335;return {label:this.getLabel(_335,name),name:name,value:_335};},this);this.select.store=new dojo.data.ItemFileReadStore({data:{identifier:"value",items:_334}});this.select.set("value","",false);this.disabled=this.select.get("disabled");},_setValueAttr:function(_336,_337){_337=_337!==false?true:false;this.select.set("value",dojo.indexOf(this.values,_336)<0?"":_336,_337);if(!_337){this.select._lastValueReported=null;}},_getValueAttr:function(){return this.select.get("value");},focus:function(){this.select.focus();},_setDisabledAttr:function(_338){this.disabled=_338;this.select.set("disabled",_338);}});dojo.declare("dijit._editor.plugins._FontNameDropDown",dijit._editor.plugins._FontDropDown,{generic:false,command:"fontName",postMixInProperties:function(){if(!this.values){this.values=this.generic?["serif","sans-serif","monospace","cursive","fantasy"]:["Arial","Times New Roman","Comic Sans MS","Courier New"];}this.inherited(arguments);},getLabel:function(_339,name){if(this.plainText){return name;}else{return "<div style='font-family: "+_339+"'>"+name+"</div>";}},_setValueAttr:function(_33a,_33b){_33b=_33b!==false?true:false;if(this.generic){var map={"Arial":"sans-serif","Helvetica":"sans-serif","Myriad":"sans-serif","Times":"serif","Times New Roman":"serif","Comic Sans MS":"cursive","Apple Chancery":"cursive","Courier":"monospace","Courier New":"monospace","Papyrus":"fantasy"};_33a=map[_33a]||_33a;}this.inherited(arguments,[_33a,_33b]);}});dojo.declare("dijit._editor.plugins._FontSizeDropDown",dijit._editor.plugins._FontDropDown,{command:"fontSize",values:[1,2,3,4,5,6,7],getLabel:function(_33c,name){if(this.plainText){return name;}else{return "<font size="+_33c+"'>"+name+"</font>";}},_setValueAttr:function(_33d,_33e){_33e=_33e!==false?true:false;if(_33d.indexOf&&_33d.indexOf("px")!=-1){var _33f=parseInt(_33d,10);_33d={10:1,13:2,16:3,18:4,24:5,32:6,48:7}[_33f]||_33d;}this.inherited(arguments,[_33d,_33e]);}});dojo.declare("dijit._editor.plugins._FormatBlockDropDown",dijit._editor.plugins._FontDropDown,{command:"formatBlock",values:["noFormat","p","h1","h2","h3","pre"],postCreate:function(){this.inherited(arguments);this.set("value","noFormat",false);},getLabel:function(_340,name){if(this.plainText){return name;}else{return "<"+_340+">"+name+"</"+_340+">";}},_execCommand:function(_341,_342,_343){if(_343==="noFormat"){var _344;var end;var sel=dijit.range.getSelection(_341.window);if(sel&&sel.rangeCount>0){var _345=sel.getRangeAt(0);var node,tag;if(_345){_344=_345.startContainer;end=_345.endContainer;while(_344&&_344!==_341.editNode&&_344!==_341.document.body&&_344.nodeType!==1){_344=_344.parentNode;}while(end&&end!==_341.editNode&&end!==_341.document.body&&end.nodeType!==1){end=end.parentNode;}var _346=dojo.hitch(this,function(node,_347){if(node.childNodes&&node.childNodes.length){var i;for(i=0;i<node.childNodes.length;i++){var c=node.childNodes[i];if(c.nodeType==1){if(dojo.withGlobal(_341.window,"inSelection",dijit._editor.selection,[c])){var tag=c.tagName?c.tagName.toLowerCase():"";if(dojo.indexOf(this.values,tag)!==-1){_347.push(c);}_346(c,_347);}}}}});var _348=dojo.hitch(this,function(_349){if(_349&&_349.length){_341.beginEditing();while(_349.length){this._removeFormat(_341,_349.pop());}_341.endEditing();}});var _34a=[];if(_344==end){var _34b;node=_344;while(node&&node!==_341.editNode&&node!==_341.document.body){if(node.nodeType==1){tag=node.tagName?node.tagName.toLowerCase():"";if(dojo.indexOf(this.values,tag)!==-1){_34b=node;break;}}node=node.parentNode;}_346(_344,_34a);if(_34b){_34a=[_34b].concat(_34a);}_348(_34a);}else{node=_344;while(dojo.withGlobal(_341.window,"inSelection",dijit._editor.selection,[node])){if(node.nodeType==1){tag=node.tagName?node.tagName.toLowerCase():"";if(dojo.indexOf(this.values,tag)!==-1){_34a.push(node);}_346(node,_34a);}node=node.nextSibling;}_348(_34a);}_341.onDisplayChanged();}}}else{_341.execCommand(_342,_343);}},_removeFormat:function(_34c,node){if(_34c.customUndo){while(node.firstChild){dojo.place(node.firstChild,node,"before");}node.parentNode.removeChild(node);}else{dojo.withGlobal(_34c.window,"selectElementChildren",dijit._editor.selection,[node]);var html=dojo.withGlobal(_34c.window,"getSelectedHtml",dijit._editor.selection,[null]);dojo.withGlobal(_34c.window,"selectElement",dijit._editor.selection,[node]);_34c.execCommand("inserthtml",html||"");}}});dojo.declare("dijit._editor.plugins.FontChoice",dijit._editor._Plugin,{useDefaultCommand:false,_initButton:function(){var _34d={fontName:dijit._editor.plugins._FontNameDropDown,fontSize:dijit._editor.plugins._FontSizeDropDown,formatBlock:dijit._editor.plugins._FormatBlockDropDown}[this.command],_34e=this.params;if(this.params.custom){_34e.values=this.params.custom;}var _34f=this.editor;this.button=new _34d(dojo.delegate({dir:_34f.dir,lang:_34f.lang},_34e));this.connect(this.button.select,"onChange",function(_350){this.editor.focus();if(this.command=="fontName"&&_350.indexOf(" ")!=-1){_350="'"+_350+"'";}if(this.button._execCommand){this.button._execCommand(this.editor,this.command,_350);}else{this.editor.execCommand(this.command,_350);}this.editor.customUndo=this.editor.customUndo||dojo.isWebKit;});},updateState:function(){var _351=this.editor;var _352=this.command;if(!_351||!_351.isLoaded||!_352.length){return;}if(this.button){var _353;try{_353=_351.queryCommandValue(_352)||"";}catch(e){_353="";}var _354=dojo.isString(_353)&&_353.match(/'([^']*)'/);if(_354){_353=_354[1];}if(_352==="formatBlock"){if(!_353||_353=="p"){_353=null;var elem;var sel=dijit.range.getSelection(this.editor.window);if(sel&&sel.rangeCount>0){var _355=sel.getRangeAt(0);if(_355){elem=_355.endContainer;}}while(elem&&elem!==_351.editNode&&elem!==_351.document){var tg=elem.tagName?elem.tagName.toLowerCase():"";if(tg&&dojo.indexOf(this.button.values,tg)>-1){_353=tg;break;}elem=elem.parentNode;}if(!_353){_353="noFormat";}}else{if(dojo.indexOf(this.button.values,_353)<0){_353="noFormat";}}}if(_353!==this.button.get("value")){this.button.set("value",_353,false);}}}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}switch(o.args.name){case "fontName":case "fontSize":case "formatBlock":o.plugin=new dijit._editor.plugins.FontChoice({command:o.args.name,plainText:o.args.plainText?o.args.plainText:false});}});}if(!dojo._hasResource["dijit.form._FormSelectWidget"]){dojo._hasResource["dijit.form._FormSelectWidget"]=true;dojo.provide("dijit.form._FormSelectWidget");dojo.declare("dijit.form._FormSelectWidget",dijit.form._FormValueWidget,{multiple:false,options:null,store:null,query:null,queryOptions:null,onFetch:null,sortByLabel:true,loadChildrenOnOpen:false,getOptions:function(_356){var _357=_356,opts=this.options||[],l=opts.length;if(_357===undefined){return opts;}if(dojo.isArray(_357)){return dojo.map(_357,"return this.getOptions(item);",this);}if(dojo.isObject(_356)){if(!dojo.some(this.options,function(o,idx){if(o===_357||(o.value&&o.value===_357.value)){_357=idx;return true;}return false;})){_357=-1;}}if(typeof _357=="string"){for(var i=0;i<l;i++){if(opts[i].value===_357){_357=i;break;}}}if(typeof _357=="number"&&_357>=0&&_357<l){return this.options[_357];}return null;},addOption:function(_358){if(!dojo.isArray(_358)){_358=[_358];}dojo.forEach(_358,function(i){if(i&&dojo.isObject(i)){this.options.push(i);}},this);this._loadChildren();},removeOption:function(_359){if(!dojo.isArray(_359)){_359=[_359];}var _35a=this.getOptions(_359);dojo.forEach(_35a,function(i){if(i){this.options=dojo.filter(this.options,function(node,idx){return (node.value!==i.value);});this._removeOptionItem(i);}},this);this._loadChildren();},updateOption:function(_35b){if(!dojo.isArray(_35b)){_35b=[_35b];}dojo.forEach(_35b,function(i){var _35c=this.getOptions(i),k;if(_35c){for(k in i){_35c[k]=i[k];}}},this);this._loadChildren();},setStore:function(_35d,_35e,_35f){var _360=this.store;_35f=_35f||{};if(_360!==_35d){dojo.forEach(this._notifyConnections||[],dojo.disconnect);delete this._notifyConnections;if(_35d&&_35d.getFeatures()["dojo.data.api.Notification"]){this._notifyConnections=[dojo.connect(_35d,"onNew",this,"_onNewItem"),dojo.connect(_35d,"onDelete",this,"_onDeleteItem"),dojo.connect(_35d,"onSet",this,"_onSetItem")];}this.store=_35d;}this._onChangeActive=false;if(this.options&&this.options.length){this.removeOption(this.options);}if(_35d){var cb=function(_361){if(this.sortByLabel&&!_35f.sort&&_361.length){_361.sort(dojo.data.util.sorter.createSortFunction([{attribute:_35d.getLabelAttributes(_361[0])[0]}],_35d));}if(_35f.onFetch){_361=_35f.onFetch(_361);}dojo.forEach(_361,function(i){this._addOptionForItem(i);},this);this._loadingStore=false;this.set("value",(("_pendingValue" in this)?this._pendingValue:_35e));delete this._pendingValue;if(!this.loadChildrenOnOpen){this._loadChildren();}else{this._pseudoLoadChildren(_361);}this._fetchedWith=opts;this._lastValueReported=this.multiple?[]:null;this._onChangeActive=true;this.onSetStore();this._handleOnChange(this.value);};var opts=dojo.mixin({onComplete:cb,scope:this},_35f);this._loadingStore=true;_35d.fetch(opts);}else{delete this._fetchedWith;}return _360;},_setValueAttr:function(_362,_363){if(this._loadingStore){this._pendingValue=_362;return;}var opts=this.getOptions()||[];if(!dojo.isArray(_362)){_362=[_362];}dojo.forEach(_362,function(i,idx){if(!dojo.isObject(i)){i=i+"";}if(typeof i==="string"){_362[idx]=dojo.filter(opts,function(node){return node.value===i;})[0]||{value:"",label:""};}},this);_362=dojo.filter(_362,function(i){return i&&i.value;});if(!this.multiple&&(!_362[0]||!_362[0].value)&&opts.length){_362[0]=opts[0];}dojo.forEach(opts,function(i){i.selected=dojo.some(_362,function(v){return v.value===i.value;});});var val=dojo.map(_362,function(i){return i.value;}),disp=dojo.map(_362,function(i){return i.label;});this.value=this.multiple?val:val[0];this._setDisplay(this.multiple?disp:disp[0]);this._updateSelection();this._handleOnChange(this.value,_363);},_getDisplayedValueAttr:function(){var val=this.get("value");if(!dojo.isArray(val)){val=[val];}var ret=dojo.map(this.getOptions(val),function(v){if(v&&"label" in v){return v.label;}else{if(v){return v.value;}}return null;},this);return this.multiple?ret:ret[0];},_getValueDeprecated:false,getValue:function(){return this._lastValue;},undo:function(){this._setValueAttr(this._lastValueReported,false);},_loadChildren:function(){if(this._loadingStore){return;}dojo.forEach(this._getChildren(),function(_364){_364.destroyRecursive();});dojo.forEach(this.options,this._addOptionItem,this);this._updateSelection();},_updateSelection:function(){this.value=this._getValueFromOpts();var val=this.value;if(!dojo.isArray(val)){val=[val];}if(val&&val[0]){dojo.forEach(this._getChildren(),function(_365){var _366=dojo.some(val,function(v){return _365.option&&(v===_365.option.value);});dojo.toggleClass(_365.domNode,this.baseClass+"SelectedOption",_366);dijit.setWaiState(_365.domNode,"selected",_366);},this);}this._handleOnChange(this.value);},_getValueFromOpts:function(){var opts=this.getOptions()||[];if(!this.multiple&&opts.length){var opt=dojo.filter(opts,function(i){return i.selected;})[0];if(opt&&opt.value){return opt.value;}else{opts[0].selected=true;return opts[0].value;}}else{if(this.multiple){return dojo.map(dojo.filter(opts,function(i){return i.selected;}),function(i){return i.value;})||[];}}return "";},_onNewItem:function(item,_367){if(!_367||!_367.parent){this._addOptionForItem(item);}},_onDeleteItem:function(item){var _368=this.store;this.removeOption(_368.getIdentity(item));},_onSetItem:function(item){this.updateOption(this._getOptionObjForItem(item));},_getOptionObjForItem:function(item){var _369=this.store,_36a=_369.getLabel(item),_36b=(_36a?_369.getIdentity(item):null);return {value:_36b,label:_36a,item:item};},_addOptionForItem:function(item){var _36c=this.store;if(!_36c.isItemLoaded(item)){_36c.loadItem({item:item,onComplete:function(i){this._addOptionForItem(item);},scope:this});return;}var _36d=this._getOptionObjForItem(item);this.addOption(_36d);},constructor:function(_36e){this._oValue=(_36e||{}).value||null;},_fillContent:function(){var opts=this.options;if(!opts){opts=this.options=this.srcNodeRef?dojo.query(">",this.srcNodeRef).map(function(node){if(node.getAttribute("type")==="separator"){return {value:"",label:"",selected:false,disabled:false};}return {value:node.getAttribute("value"),label:String(node.innerHTML),selected:node.getAttribute("selected")||false,disabled:node.getAttribute("disabled")||false};},this):[];}if(!this.value){this.value=this._getValueFromOpts();}else{if(this.multiple&&typeof this.value=="string"){this.value=this.value.split(",");}}},postCreate:function(){dojo.setSelectable(this.focusNode,false);this.inherited(arguments);this.connect(this,"onChange","_updateSelection");this.connect(this,"startup","_loadChildren");this._setValueAttr(this.value,null);},startup:function(){this.inherited(arguments);var _36f=this.store,_370={};dojo.forEach(["query","queryOptions","onFetch"],function(i){if(this[i]){_370[i]=this[i];}delete this[i];},this);if(_36f&&_36f.getFeatures()["dojo.data.api.Identity"]){this.store=null;this.setStore(_36f,this._oValue,_370);}},destroy:function(){dojo.forEach(this._notifyConnections||[],dojo.disconnect);this.inherited(arguments);},_addOptionItem:function(_371){},_removeOptionItem:function(_372){},_setDisplay:function(_373){},_getChildren:function(){return [];},_getSelectedOptionsAttr:function(){return this.getOptions(this.get("value"));},_pseudoLoadChildren:function(_374){},onSetStore:function(){}});}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\" waiRole=\"menuitem\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" waiRole=\"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\" waiRole=\"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(_375){if(_375&&!("label" in this.params)){this.set("label",_375.innerHTML);}},postCreate:function(){this.inherited(arguments);dojo.setSelectable(this.domNode,false);var _376=this.id+"_text";dojo.attr(this.containerNode,"id",_376);if(this.accelKeyNode){dojo.attr(this.accelKeyNode,"id",this.id+"_accel");_376+=" "+this.id+"_accel";}dijit.setWaiState(this.domNode,"labelledby",_376);},_onHover:function(){this.getParent().onItemHover(this);},_onUnhover:function(){this.getParent().onItemUnhover(this);this._hovering=false;this._setStateClass();},_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(_377){dojo.toggleClass(this.domNode,"dijitMenuItemSelected",_377);},setLabel:function(_378){dojo.deprecated("dijit.MenuItem.setLabel() is deprecated.  Use set('label', ...) instead.","","2.0");this.set("label",_378);},setDisabled:function(_379){dojo.deprecated("dijit.Menu.setDisabled() is deprecated.  Use set('disabled', bool) instead.","","2.0");this.set("disabled",_379);},_setDisabledAttr:function(_37a){this.disabled=_37a;dijit.setWaiState(this.focusNode,"disabled",_37a?"true":"false");},_setAccelKeyAttr:function(_37b){this.accelKey=_37b;this.accelKeyNode.style.display=_37b?"":"none";this.accelKeyNode.innerHTML=_37b;dojo.attr(this.containerNode,"colSpan",_37b?"1":"2");}});}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 _37c=dojo.query("*",this.srcNodeRef);dijit.PopupMenuItem.superclass._fillContent.call(this,_37c[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\" waiRole=\"menuitemcheckbox\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" waiRole=\"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\" waiRole=\"presentation\">&nbsp;</td>\n</tr>\n"),checked:false,_setCheckedAttr:function(_37d){dojo.toggleClass(this.domNode,"dijitCheckedMenuItemChecked",_37d);dijit.setWaiState(this.domNode,"checked",_37d);this.checked=_37d;},onChange:function(_37e){},_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"),postCreate:function(){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(_37f){_37f.startup();});this.startupKeyNavChildren();this.inherited(arguments);},onExecute:function(){},onCancel:function(_380){},_moveToPopup:function(evt){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){this.focusedChild._onClick(evt);}else{var _381=this._getTopMenu();if(_381&&_381._isMenuBar){_381.focusNext();}}},_onPopupHover:function(evt){if(this.currentPopup&&this.currentPopup._pendingClose_timer){var _382=this.currentPopup.parentMenu;if(_382.focusedChild){_382.focusedChild._setSelected(false);}_382.focusedChild=this.currentPopup.from_item;_382.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 _383=item.popup;if(_383){this._stopPendingCloseTimer(_383);_383._pendingClose_timer=setTimeout(function(){_383._pendingClose_timer=null;if(_383.parentMenu){_383.parentMenu.currentPopup=null;}dijit.popup.close(_383);},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(_384){if(_384._pendingClose_timer){clearTimeout(_384._pendingClose_timer);_384._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 _385=this.focusedChild;if(!_385){return;}var _386=_385.popup;if(_386.isShowingNow){return;}if(this.currentPopup){this._stopPendingCloseTimer(this.currentPopup);dijit.popup.close(this.currentPopup);}_386.parentMenu=this;_386.from_item=_385;var self=this;dijit.popup.open({parent:this,popup:_386,around:_385.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(_385);self._cleanUp();_385._setSelected(true);self.focusedChild=_385;},onExecute:dojo.hitch(this,"_cleanUp")});this.currentPopup=_386;_386.connect(_386.domNode,"onmouseenter",dojo.hitch(self,"_onPopupHover"));if(_386.focus){_386._focus_timer=setTimeout(dojo.hitch(_386,function(){this._focus_timer=null;this.focus();}),0);}},_markActive:function(){this.isActive=true;dojo.addClass(this.domNode,"dijitMenuActive");dojo.removeClass(this.domNode,"dijitMenuPassive");},onOpen:function(e){this.isShowingNow=true;this._markActive();},_markInactive:function(){this.isActive=false;dojo.removeClass(this.domNode,"dijitMenuActive");dojo.addClass(this.domNode,"dijitMenuPassive");},onClose:function(){this._stopFocusTimer();this._markInactive();this.isShowingNow=false;this.parentMenu=null;},_closeChild:function(){this._stopPopupTimer();if(this.focusedChild){this.focusedChild._setSelected(false);this.focusedChild._onUnhover();this.focusedChild=null;}if(this.currentPopup){dijit.popup.close(this.currentPopup);this.currentPopup=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\" waiRole=\"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(_387){var win=dojo.window.get(this._iframeContentDocument(_387))||this._iframeContentDocument(_387)["__parent__"]||(_387.name&&dojo.doc.frames[_387.name])||null;return win;},_iframeContentDocument:function(_388){var doc=_388.contentDocument||(_388.contentWindow&&_388.contentWindow.document)||(_388.name&&dojo.doc.frames[_388.name]&&dojo.doc.frames[_388.name].document)||null;return doc;},bindDomNode:function(node){node=dojo.byId(node);var cn;if(node.tagName.toLowerCase()=="iframe"){var _389=node,win=this._iframeContentWindow(_389);cn=dojo.withGlobal(win,dojo.body);}else{cn=(node==dojo.body()?dojo.doc.documentElement:node);}var _38a={node:node,iframe:_389};dojo.attr(node,"_dijitMenu"+this.id,this._bindings.push(_38a));var _38b=dojo.hitch(this,function(cn){return [dojo.connect(cn,this.leftClickToOpen?"onclick":"oncontextmenu",this,function(evt){dojo.stopEvent(evt);this._scheduleOpen(evt.target,_389,{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,_389);}})];});_38a.connects=cn?_38b(cn):[];if(_389){_38a.onloadHandler=dojo.hitch(this,function(){var win=this._iframeContentWindow(_389);cn=dojo.withGlobal(win,dojo.body);_38a.connects=_38b(cn);});if(_389.addEventListener){_389.addEventListener("load",_38a.onloadHandler,false);}else{_389.attachEvent("onload",_38a.onloadHandler);}}},unBindDomNode:function(_38c){var node;try{node=dojo.byId(_38c);}catch(e){return;}var _38d="_dijitMenu"+this.id;if(node&&dojo.hasAttr(node,_38d)){var bid=dojo.attr(node,_38d)-1,b=this._bindings[bid];dojo.forEach(b.connects,dojo.disconnect);var _38e=b.iframe;if(_38e){if(_38e.removeEventListener){_38e.removeEventListener("load",b.onloadHandler,false);}else{_38e.detachEvent("onload",b.onloadHandler);}}dojo.removeAttr(node,_38d);delete this._bindings[bid];}},_scheduleOpen:function(_38f,_390,_391){if(!this._openTimer){this._openTimer=setTimeout(dojo.hitch(this,function(){delete this._openTimer;this._openMyself({target:_38f,iframe:_390,coords:_391});}),1);}},_openMyself:function(args){var _392=args.target,_393=args.iframe,_394=args.coords;if(_394){if(_393){var od=_392.ownerDocument,ifc=dojo.position(_393,true),win=this._iframeContentWindow(_393),_395=dojo.withGlobal(win,"_docScroll",dojo);var cs=dojo.getComputedStyle(_393),tp=dojo._toPixelValue,left=(dojo.isIE&&dojo.isQuirks?0:tp(_393,cs.paddingLeft))+(dojo.isIE&&dojo.isQuirks?tp(_393,cs.borderLeftWidth):0),top=(dojo.isIE&&dojo.isQuirks?0:tp(_393,cs.paddingTop))+(dojo.isIE&&dojo.isQuirks?tp(_393,cs.borderTopWidth):0);_394.x+=ifc.x+left-_395.x;_394.y+=ifc.y+top-_395.y;}}else{_394=dojo.position(_392,true);_394.x+=10;_394.y+=10;}var self=this;var _396=dijit.getFocus(this);function _397(){if(self.refocus){dijit.focus(_396);}dijit.popup.close(self);};dijit.popup.open({popup:this,x:_394.x,y:_394.y,onExecute:_397,onCancel:_397,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["dijit.form.Select"]){dojo._hasResource["dijit.form.Select"]=true;dojo.provide("dijit.form.Select");dojo.declare("dijit.form._SelectMenu",dijit.Menu,{buildRendering:function(){this.inherited(arguments);var o=(this.menuTableNode=this.domNode);var n=(this.domNode=dojo.create("div",{style:{overflowX:"hidden",overflowY:"scroll"}}));if(o.parentNode){o.parentNode.replaceChild(n,o);}dojo.removeClass(o,"dijitMenuTable");n.className=o.className+" dijitSelectMenu";o.className="dijitReset dijitMenuTable";dijit.setWaiRole(o,"listbox");dijit.setWaiRole(n,"presentation");n.appendChild(o);},resize:function(mb){if(mb){dojo.marginBox(this.domNode,mb);if("w" in mb){this.menuTableNode.style.width="100%";}}}});dojo.declare("dijit.form.Select",[dijit.form._FormSelectWidget,dijit._HasDropDown],{baseClass:"dijitSelect",templateString:dojo.cache("dijit.form","templates/Select.html","<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tdojoAttachPoint=\"_buttonNode,tableNode,focusNode\" cellspacing='0' cellpadding='0'\n\twaiRole=\"combobox\" waiState=\"haspopup-true\"\n\t><tbody waiRole=\"presentation\"><tr waiRole=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents dijitButtonNode\" waiRole=\"presentation\"\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"  dojoAttachPoint=\"containerNode,_popupStateNode\"></span\n\t\t\t><input type=\"hidden\" ${!nameAttrSetting} dojoAttachPoint=\"valueNode\" value=\"${value}\" waiState=\"hidden-true\"\n\t\t/></td><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton\"\n\t\t\t\tdojoAttachPoint=\"titleNode\" waiRole=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" waiRole=\"presentation\">&#9660;</div\n\t\t></td\n\t></tr></tbody\n></table>\n"),attributeMap:dojo.mixin(dojo.clone(dijit.form._FormSelectWidget.prototype.attributeMap),{style:"tableNode"}),required:false,state:"",tooltipPosition:[],emptyLabel:"",_isLoaded:false,_childrenLoaded:false,_fillContent:function(){this.inherited(arguments);if(this.options.length&&!this.value&&this.srcNodeRef){var si=this.srcNodeRef.selectedIndex;this.value=this.options[si!=-1?si:0].value;}this.dropDown=new dijit.form._SelectMenu({id:this.id+"_menu"});dojo.addClass(this.dropDown.domNode,this.baseClass+"Menu");},_getMenuItemForOption:function(_398){if(!_398.value){return new dijit.MenuSeparator();}else{var _399=dojo.hitch(this,"_setValueAttr",_398);var item=new dijit.MenuItem({option:_398,label:_398.label,onClick:_399,disabled:_398.disabled||false});dijit.setWaiRole(item.focusNode,"listitem");return item;}},_addOptionItem:function(_39a){if(this.dropDown){this.dropDown.addChild(this._getMenuItemForOption(_39a));}},_getChildren:function(){if(!this.dropDown){return [];}return this.dropDown.getChildren();},_loadChildren:function(_39b){if(_39b===true){if(this.dropDown){delete this.dropDown.focusedChild;}if(this.options.length){this.inherited(arguments);}else{dojo.forEach(this._getChildren(),function(_39c){_39c.destroyRecursive();});var item=new dijit.MenuItem({label:"&nbsp;"});this.dropDown.addChild(item);}}else{this._updateSelection();}var len=this.options.length;this._isLoaded=false;this._childrenLoaded=true;if(!this._loadingStore){this._setValueAttr(this.value);}},_setValueAttr:function(_39d){this.inherited(arguments);dojo.attr(this.valueNode,"value",this.get("value"));},_setDisplay:function(_39e){this.containerNode.innerHTML="<span class=\"dijitReset dijitInline "+this.baseClass+"Label\">"+(_39e||this.emptyLabel||"&nbsp;")+"</span>";dijit.setWaiState(this.focusNode,"valuetext",(_39e||this.emptyLabel||"&nbsp;"));},validate:function(_39f){var _3a0=this.isValid(_39f);this.state=_3a0?"":"Error";this._setStateClass();dijit.setWaiState(this.focusNode,"invalid",_3a0?"false":"true");var _3a1=_3a0?"":this._missingMsg;if(this._message!==_3a1){this._message=_3a1;dijit.hideTooltip(this.domNode);if(_3a1){dijit.showTooltip(_3a1,this.domNode,this.tooltipPosition,!this.isLeftToRight());}}return _3a0;},isValid:function(_3a2){return (!this.required||!(/^\s*$/.test(this.value)));},reset:function(){this.inherited(arguments);dijit.hideTooltip(this.domNode);this.state="";this._setStateClass();delete this._message;},postMixInProperties:function(){this.inherited(arguments);this._missingMsg=dojo.i18n.getLocalization("dijit.form","validate",this.lang).missingMessage;},postCreate:function(){this.inherited(arguments);if(this.tableNode.style.width){dojo.addClass(this.domNode,this.baseClass+"FixedWidth");}},isLoaded:function(){return this._isLoaded;},loadDropDown:function(_3a3){this._loadChildren(true);this._isLoaded=true;_3a3();},closeDropDown:function(){this.inherited(arguments);if(this.dropDown&&this.dropDown.menuTableNode){this.dropDown.menuTableNode.style.width="";}},uninitialize:function(_3a4){if(this.dropDown&&!this.dropDown._destroyed){this.dropDown.destroyRecursive(_3a4);delete this.dropDown;}this.inherited(arguments);}});}if(!dojo._hasResource["dijit._editor.plugins.LinkDialog"]){dojo._hasResource["dijit._editor.plugins.LinkDialog"]=true;dojo.provide("dijit._editor.plugins.LinkDialog");dojo.declare("dijit._editor.plugins.LinkDialog",dijit._editor._Plugin,{buttonClass:dijit.form.DropDownButton,useDefaultCommand:false,urlRegExp:"((https?|ftps?|file)\\://|./|/|)(/[a-zA-Z]{1,1}:/|)(((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)*(?:[a-zA-Z](?:[-\\da-zA-Z]{0,80}[\\da-zA-Z])?)\\.?)|(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])|(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]|(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]|(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])|0[xX]0*[\\da-fA-F]{1,8}|([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}|([\\da-fA-F]{1,4}\\:){6}((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])))(\\:\\d+)?(/(?:[^?#\\s/]+/)*(?:[^?#\\s/]+(?:\\?[^?#\\s/]*)?(?:#.*)?)?)?",emailRegExp:"<?(mailto\\:)([!#-'*+\\-\\/-9=?A-Z^-~]+[.])*[!#-'*+\\-\\/-9=?A-Z^-~]+"+"@"+"((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)+(?:[a-zA-Z](?:[-\\da-zA-Z]{0,6}[\\da-zA-Z])?)\\.?)|localhost|^[^-][a-zA-Z0-9_-]*>?",htmlTemplate:"<a href=\"${urlInput}\" _djrealurl=\"${urlInput}\""+" target=\"${targetSelect}\""+">${textInput}</a>",tag:"a",_hostRxp:new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),_userAtRxp:new RegExp("^([!#-'*+\\-\\/-9=?A-Z^-~]+[.])*[!#-'*+\\-\\/-9=?A-Z^-~]+@","i"),linkDialogTemplate:["<table><tr><td>","<label for='${id}_urlInput'>${url}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' required='true' "+"id='${id}_urlInput' name='urlInput' intermediateChanges='true'>","</td></tr><tr><td>","<label for='${id}_textInput'>${text}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' required='true' id='${id}_textInput' "+"name='textInput' intermediateChanges='true'>","</td></tr><tr><td>","<label for='${id}_targetSelect'>${target}</label>","</td><td>","<select id='${id}_targetSelect' name='targetSelect' dojoType='dijit.form.Select'>","<option selected='selected' value='_self'>${currentWindow}</option>","<option value='_blank'>${newWindow}</option>","<option value='_top'>${topWindow}</option>","<option value='_parent'>${parentWindow}</option>","</select>","</td></tr><tr><td colspan='2'>","<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>","<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>","</td></tr></table>"].join(""),_initButton:function(){var _3a5=this;this.tag=this.command=="insertImage"?"img":"a";var _3a6=dojo.mixin(dojo.i18n.getLocalization("dijit","common",this.lang),dojo.i18n.getLocalization("dijit._editor","LinkDialog",this.lang));var _3a7=(this.dropDown=new dijit.TooltipDialog({title:_3a6[this.command+"Title"],execute:dojo.hitch(this,"setValue"),onOpen:function(){_3a5._onOpenDialog();dijit.TooltipDialog.prototype.onOpen.apply(this,arguments);},onCancel:function(){setTimeout(dojo.hitch(_3a5,"_onCloseDialog"),0);}}));_3a6.urlRegExp=this.urlRegExp;_3a6.id=dijit.getUniqueId(this.editor.id);this._uniqueId=_3a6.id;this._setContent(_3a7.title+"<div style='border-bottom: 1px black solid;padding-bottom:2pt;margin-bottom:4pt'></div>"+dojo.string.substitute(this.linkDialogTemplate,_3a6));_3a7.startup();this._urlInput=dijit.byId(this._uniqueId+"_urlInput");this._textInput=dijit.byId(this._uniqueId+"_textInput");this._setButton=dijit.byId(this._uniqueId+"_setButton");this.connect(dijit.byId(this._uniqueId+"_cancelButton"),"onClick",function(){this.dropDown.onCancel();});if(this._urlInput){this.connect(this._urlInput,"onChange","_checkAndFixInput");}if(this._textInput){this.connect(this._textInput,"onChange","_checkAndFixInput");}this._urlRegExp=new RegExp("^"+this.urlRegExp+"$","i");this._emailRegExp=new RegExp("^"+this.emailRegExp+"$","i");this._urlInput.isValid=dojo.hitch(this,function(){var _3a8=this._urlInput.get("value");return this._urlRegExp.test(_3a8)||this._emailRegExp.test(_3a8);});this._connectTagEvents();this.inherited(arguments);},_checkAndFixInput:function(){var self=this;var url=this._urlInput.get("value");var _3a9=function(url){var _3aa=false;var _3ab=false;if(url&&url.length>1){url=dojo.trim(url);if(url.indexOf("mailto:")!==0){if(url.indexOf("/")>0){if(url.indexOf("://")===-1){if(url.charAt(0)!=="/"&&url.indexOf("./")!==0){if(self._hostRxp.test(url)){_3aa=true;}}}}else{if(self._userAtRxp.test(url)){_3ab=true;}}}}if(_3aa){self._urlInput.set("value","http://"+url);}if(_3ab){self._urlInput.set("value","mailto:"+url);}self._setButton.set("disabled",!self._isValid());};if(this._delayedCheck){clearTimeout(this._delayedCheck);this._delayedCheck=null;}this._delayedCheck=setTimeout(function(){_3a9(url);},250);},_connectTagEvents:function(){this.editor.onLoadDeferred.addCallback(dojo.hitch(this,function(){this.connect(this.editor.editNode,"ondblclick",this._onDblClick);}));},_isValid:function(){return this._urlInput.isValid()&&this._textInput.isValid();},_setContent:function(_3ac){this.dropDown.set("content",_3ac);},_checkValues:function(args){if(args&&args.urlInput){args.urlInput=args.urlInput.replace(/"/g,"&quot;");}return args;},setValue:function(args){this._onCloseDialog();if(dojo.isIE){var sel=dijit.range.getSelection(this.editor.window);var _3ad=sel.getRangeAt(0);var a=_3ad.endContainer;if(a.nodeType===3){a=a.parentNode;}if(a&&(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){a=dojo.withGlobal(this.editor.window,"getSelectedElement",dijit._editor.selection,[this.tag]);}if(a&&(a.nodeName&&a.nodeName.toLowerCase()===this.tag)){if(this.editor.queryCommandEnabled("unlink")){dojo.withGlobal(this.editor.window,"selectElementChildren",dijit._editor.selection,[a]);this.editor.execCommand("unlink");}}}args=this._checkValues(args);this.editor.execCommand("inserthtml",dojo.string.substitute(this.htmlTemplate,args));},_onCloseDialog:function(){this.editor.focus();},_getCurrentValues:function(a){var url,text,_3ae;if(a&&a.tagName.toLowerCase()===this.tag){url=a.getAttribute("_djrealurl")||a.getAttribute("href");_3ae=a.getAttribute("target")||"_self";text=a.textContent||a.innerText;dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[a,true]);}else{text=dojo.withGlobal(this.editor.window,dijit._editor.selection.getSelectedText);}return {urlInput:url||"",textInput:text||"",targetSelect:_3ae||""};},_onOpenDialog:function(){var a;if(dojo.isIE){var sel=dijit.range.getSelection(this.editor.window);var _3af=sel.getRangeAt(0);a=_3af.endContainer;if(a.nodeType===3){a=a.parentNode;}if(a&&(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){a=dojo.withGlobal(this.editor.window,"getSelectedElement",dijit._editor.selection,[this.tag]);}}else{a=dojo.withGlobal(this.editor.window,"getAncestorElement",dijit._editor.selection,[this.tag]);}this.dropDown.reset();this._setButton.set("disabled",true);this.dropDown.set("value",this._getCurrentValues(a));},_onDblClick:function(e){if(e&&e.target){var t=e.target;var tg=t.tagName?t.tagName.toLowerCase():"";if(tg===this.tag&&dojo.attr(t,"href")){dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[t]);this.editor.onDisplayChanged();setTimeout(dojo.hitch(this,function(){this.button.set("disabled",false);this.button.openDropDown();}),10);}}}});dojo.declare("dijit._editor.plugins.ImgLinkDialog",[dijit._editor.plugins.LinkDialog],{linkDialogTemplate:["<table><tr><td>","<label for='${id}_urlInput'>${url}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' regExp='${urlRegExp}' "+"required='true' id='${id}_urlInput' name='urlInput' intermediateChanges='true'>","</td></tr><tr><td>","<label for='${id}_textInput'>${text}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' required='false' id='${id}_textInput' "+"name='textInput' intermediateChanges='true'>","</td></tr><tr><td>","</td><td>","</td></tr><tr><td colspan='2'>","<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>","<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>","</td></tr></table>"].join(""),htmlTemplate:"<img src=\"${urlInput}\" _djrealurl=\"${urlInput}\" alt=\"${textInput}\" />",tag:"img",_getCurrentValues:function(img){var url,text;if(img&&img.tagName.toLowerCase()===this.tag){url=img.getAttribute("_djrealurl")||img.getAttribute("src");text=img.getAttribute("alt");dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[img,true]);}else{text=dojo.withGlobal(this.editor.window,dijit._editor.selection.getSelectedText);}return {urlInput:url||"",textInput:text||""};},_isValid:function(){return this._urlInput.isValid();},_connectTagEvents:function(){this.inherited(arguments);this.editor.onLoadDeferred.addCallback(dojo.hitch(this,function(){this.connect(this.editor.editNode,"onmousedown",this._selectTag);}));},_selectTag:function(e){if(e&&e.target){var t=e.target;var tg=t.tagName?t.tagName.toLowerCase():"";if(tg===this.tag){dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[t]);}}},_checkValues:function(args){if(args&&args.urlInput){args.urlInput=args.urlInput.replace(/"/g,"&quot;");}if(args&&args.textInput){args.textInput=args.textInput.replace(/"/g,"&quot;");}return args;},_onDblClick:function(e){if(e&&e.target){var t=e.target;var tg=t.tagName?t.tagName.toLowerCase():"";if(tg===this.tag&&dojo.attr(t,"src")){dojo.withGlobal(this.editor.window,"selectElement",dijit._editor.selection,[t]);this.editor.onDisplayChanged();setTimeout(dojo.hitch(this,function(){this.button.set("disabled",false);this.button.openDropDown();}),10);}}}});dojo.subscribe(dijit._scopeName+".Editor.getPlugin",null,function(o){if(o.plugin){return;}switch(o.args.name){case "createLink":o.plugin=new dijit._editor.plugins.LinkDialog({command:o.args.name});break;case "insertImage":o.plugin=new dijit._editor.plugins.ImgLinkDialog({command:o.args.name});break;}});}if(!dojo._hasResource["dijit.MenuBar"]){dojo._hasResource["dijit.MenuBar"]=true;dojo.provide("dijit.MenuBar");dojo.declare("dijit.MenuBar",dijit._MenuBase,{templateString:dojo.cache("dijit","templates/MenuBar.html","<div class=\"dijitMenuBar dijitMenuPassive\" dojoAttachPoint=\"containerNode\"  waiRole=\"menubar\" tabIndex=\"${tabIndex}\" dojoAttachEvent=\"onkeypress: _onKeyPress\"></div>\n"),baseClass:"dijitMenuBar",_isMenuBar:true,postCreate:function(){var k=dojo.keys,l=this.isLeftToRight();this.connectKeyNavHandlers(l?[k.LEFT_ARROW]:[k.RIGHT_ARROW],l?[k.RIGHT_ARROW]:[k.LEFT_ARROW]);this._orient=this.isLeftToRight()?{BL:"TL"}:{BR:"TR"};},focusChild:function(item){var _3b0=this.focusedChild,_3b1=_3b0&&_3b0.popup&&_3b0.popup.isShowingNow;this.inherited(arguments);if(_3b1&&item.popup&&!item.disabled){this._openPopup();}},_onKeyPress:function(evt){if(evt.ctrlKey||evt.altKey){return;}switch(evt.charOrCode){case dojo.keys.DOWN_ARROW:this._moveToPopup(evt);dojo.stopEvent(evt);}},onItemClick:function(item,evt){if(item.popup&&item.popup.isShowingNow){item.popup.onCancel();}else{this.inherited(arguments);}}});}if(!dojo._hasResource["dijit.MenuBarItem"]){dojo._hasResource["dijit.MenuBarItem"]=true;dojo.provide("dijit.MenuBarItem");dojo.declare("dijit._MenuBarItemMixin",null,{templateString:dojo.cache("dijit","templates/MenuBarItem.html","<div class=\"dijitReset dijitInline dijitMenuItem dijitMenuItemLabel\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitem\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<span dojoAttachPoint=\"containerNode\"></span>\n</div>\n"),attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{label:{node:"containerNode",type:"innerHTML"}})});dojo.declare("dijit.MenuBarItem",[dijit.MenuItem,dijit._MenuBarItemMixin],{});}if(!dojo._hasResource["dijit.PopupMenuBarItem"]){dojo._hasResource["dijit.PopupMenuBarItem"]=true;dojo.provide("dijit.PopupMenuBarItem");dojo.declare("dijit.PopupMenuBarItem",[dijit.PopupMenuItem,dijit._MenuBarItemMixin],{});}if(!dojo._hasResource["dojo.number"]){dojo._hasResource["dojo.number"]=true;dojo.provide("dojo.number");dojo.number.format=function(_3b2,_3b3){_3b3=dojo.mixin({},_3b3||{});var _3b4=dojo.i18n.normalizeLocale(_3b3.locale),_3b5=dojo.i18n.getLocalization("dojo.cldr","number",_3b4);_3b3.customs=_3b5;var _3b6=_3b3.pattern||_3b5[(_3b3.type||"decimal")+"Format"];if(isNaN(_3b2)||Math.abs(_3b2)==Infinity){return null;}return dojo.number._applyPattern(_3b2,_3b6,_3b3);};dojo.number._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;dojo.number._applyPattern=function(_3b7,_3b8,_3b9){_3b9=_3b9||{};var _3ba=_3b9.customs.group,_3bb=_3b9.customs.decimal,_3bc=_3b8.split(";"),_3bd=_3bc[0];_3b8=_3bc[(_3b7<0)?1:0]||("-"+_3bd);if(_3b8.indexOf("%")!=-1){_3b7*=100;}else{if(_3b8.indexOf("‰")!=-1){_3b7*=1000;}else{if(_3b8.indexOf("¤")!=-1){_3ba=_3b9.customs.currencyGroup||_3ba;_3bb=_3b9.customs.currencyDecimal||_3bb;_3b8=_3b8.replace(/\u00a4{1,3}/,function(_3be){var prop=["symbol","currency","displayName"][_3be.length-1];return _3b9[prop]||_3b9.currency||"";});}else{if(_3b8.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _3bf=dojo.number._numberPatternRE;var _3c0=_3bd.match(_3bf);if(!_3c0){throw new Error("unable to find a number expression in pattern: "+_3b8);}if(_3b9.fractional===false){_3b9.places=0;}return _3b8.replace(_3bf,dojo.number._formatAbsolute(_3b7,_3c0[0],{decimal:_3bb,group:_3ba,places:_3b9.places,round:_3b9.round}));};dojo.number.round=function(_3c1,_3c2,_3c3){var _3c4=10/(_3c3||10);return (_3c4*+_3c1).toFixed(_3c2)/_3c4;};if((0.9).toFixed()==0){(function(){var _3c5=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 _3c5(v,p,m)+(v>0?d:-d);};})();}dojo.number._formatAbsolute=function(_3c6,_3c7,_3c8){_3c8=_3c8||{};if(_3c8.places===true){_3c8.places=0;}if(_3c8.places===Infinity){_3c8.places=6;}var _3c9=_3c7.split("."),_3ca=typeof _3c8.places=="string"&&_3c8.places.indexOf(","),_3cb=_3c8.places;if(_3ca){_3cb=_3c8.places.substring(_3ca+1);}else{if(!(_3cb>=0)){_3cb=(_3c9[1]||[]).length;}}if(!(_3c8.round<0)){_3c6=dojo.number.round(_3c6,_3cb,_3c8.round);}var _3cc=String(Math.abs(_3c6)).split("."),_3cd=_3cc[1]||"";if(_3c9[1]||_3c8.places){if(_3ca){_3c8.places=_3c8.places.substring(0,_3ca);}var pad=_3c8.places!==undefined?_3c8.places:(_3c9[1]&&_3c9[1].lastIndexOf("0")+1);if(pad>_3cd.length){_3cc[1]=dojo.string.pad(_3cd,pad,"0",true);}if(_3cb<_3cd.length){_3cc[1]=_3cd.substr(0,_3cb);}}else{if(_3cc[1]){_3cc.pop();}}var _3ce=_3c9[0].replace(",","");pad=_3ce.indexOf("0");if(pad!=-1){pad=_3ce.length-pad;if(pad>_3cc[0].length){_3cc[0]=dojo.string.pad(_3cc[0],pad);}if(_3ce.indexOf("#")==-1){_3cc[0]=_3cc[0].substr(_3cc[0].length-pad);}}var _3cf=_3c9[0].lastIndexOf(","),_3d0,_3d1;if(_3cf!=-1){_3d0=_3c9[0].length-_3cf-1;var _3d2=_3c9[0].substr(0,_3cf);_3cf=_3d2.lastIndexOf(",");if(_3cf!=-1){_3d1=_3d2.length-_3cf-1;}}var _3d3=[];for(var _3d4=_3cc[0];_3d4;){var off=_3d4.length-_3d0;_3d3.push((off>0)?_3d4.substr(off):_3d4);_3d4=(off>0)?_3d4.slice(0,off):"";if(_3d1){_3d0=_3d1;delete _3d1;}}_3cc[0]=_3d3.reverse().join(_3c8.group||",");return _3cc.join(_3c8.decimal||".");};dojo.number.regexp=function(_3d5){return dojo.number._parseInfo(_3d5).regexp;};dojo.number._parseInfo=function(_3d6){_3d6=_3d6||{};var _3d7=dojo.i18n.normalizeLocale(_3d6.locale),_3d8=dojo.i18n.getLocalization("dojo.cldr","number",_3d7),_3d9=_3d6.pattern||_3d8[(_3d6.type||"decimal")+"Format"],_3da=_3d8.group,_3db=_3d8.decimal,_3dc=1;if(_3d9.indexOf("%")!=-1){_3dc/=100;}else{if(_3d9.indexOf("‰")!=-1){_3dc/=1000;}else{var _3dd=_3d9.indexOf("¤")!=-1;if(_3dd){_3da=_3d8.currencyGroup||_3da;_3db=_3d8.currencyDecimal||_3db;}}}var _3de=_3d9.split(";");if(_3de.length==1){_3de.push("-"+_3de[0]);}var re=dojo.regexp.buildGroupRE(_3de,function(_3df){_3df="(?:"+dojo.regexp.escapeString(_3df,".")+")";return _3df.replace(dojo.number._numberPatternRE,function(_3e0){var _3e1={signed:false,separator:_3d6.strict?_3da:[_3da,""],fractional:_3d6.fractional,decimal:_3db,exponent:false},_3e2=_3e0.split("."),_3e3=_3d6.places;if(_3e2.length==1&&_3dc!=1){_3e2[1]="###";}if(_3e2.length==1||_3e3===0){_3e1.fractional=false;}else{if(_3e3===undefined){_3e3=_3d6.pattern?_3e2[1].lastIndexOf("0")+1:Infinity;}if(_3e3&&_3d6.fractional==undefined){_3e1.fractional=true;}if(!_3d6.places&&(_3e3<_3e2[1].length)){_3e3+=","+_3e2[1].length;}_3e1.places=_3e3;}var _3e4=_3e2[0].split(",");if(_3e4.length>1){_3e1.groupSize=_3e4.pop().length;if(_3e4.length>1){_3e1.groupSize2=_3e4.pop().length;}}return "("+dojo.number._realNumberRegexp(_3e1)+")";});},true);if(_3dd){re=re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(_3e5,_3e6,_3e7,_3e8){var prop=["symbol","currency","displayName"][_3e7.length-1],_3e9=dojo.regexp.escapeString(_3d6[prop]||_3d6.currency||"");_3e6=_3e6?"[\\s\\xa0]":"";_3e8=_3e8?"[\\s\\xa0]":"";if(!_3d6.strict){if(_3e6){_3e6+="*";}if(_3e8){_3e8+="*";}return "(?:"+_3e6+_3e9+_3e8+")?";}return _3e6+_3e9+_3e8;});}return {regexp:re.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:_3da,decimal:_3db,factor:_3dc};};dojo.number.parse=function(_3ea,_3eb){var info=dojo.number._parseInfo(_3eb),_3ec=(new RegExp("^"+info.regexp+"$")).exec(_3ea);if(!_3ec){return NaN;}var _3ed=_3ec[1];if(!_3ec[1]){if(!_3ec[2]){return NaN;}_3ed=_3ec[2];info.factor*=-1;}_3ed=_3ed.replace(new RegExp("["+info.group+"\\s\\xa0"+"]","g"),"").replace(info.decimal,".");return _3ed*info.factor;};dojo.number._realNumberRegexp=function(_3ee){_3ee=_3ee||{};if(!("places" in _3ee)){_3ee.places=Infinity;}if(typeof _3ee.decimal!="string"){_3ee.decimal=".";}if(!("fractional" in _3ee)||/^0/.test(_3ee.places)){_3ee.fractional=[true,false];}if(!("exponent" in _3ee)){_3ee.exponent=[true,false];}if(!("eSigned" in _3ee)){_3ee.eSigned=[true,false];}var _3ef=dojo.number._integerRegexp(_3ee),_3f0=dojo.regexp.buildGroupRE(_3ee.fractional,function(q){var re="";if(q&&(_3ee.places!==0)){re="\\"+_3ee.decimal;if(_3ee.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_3ee.places+"}";}}return re;},true);var _3f1=dojo.regexp.buildGroupRE(_3ee.exponent,function(q){if(q){return "([eE]"+dojo.number._integerRegexp({signed:_3ee.eSigned})+")";}return "";});var _3f2=_3ef+_3f0;if(_3f0){_3f2="(?:(?:"+_3f2+")|(?:"+_3f0+"))";}return _3f2+_3f1;};dojo.number._integerRegexp=function(_3f3){_3f3=_3f3||{};if(!("signed" in _3f3)){_3f3.signed=[true,false];}if(!("separator" in _3f3)){_3f3.separator="";}else{if(!("groupSize" in _3f3)){_3f3.groupSize=3;}}var _3f4=dojo.regexp.buildGroupRE(_3f3.signed,function(q){return q?"[-+]":"";},true);var _3f5=dojo.regexp.buildGroupRE(_3f3.separator,function(sep){if(!sep){return "(?:\\d+)";}sep=dojo.regexp.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}}var grp=_3f3.groupSize,grp2=_3f3.groupSize2;if(grp2){var _3f6="(?:0|[1-9]\\d{0,"+(grp2-1)+"}(?:["+sep+"]\\d{"+grp2+"})*["+sep+"]\\d{"+grp+"})";return ((grp-grp2)>0)?"(?:"+_3f6+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_3f6;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _3f4+_3f5;};}if(!dojo._hasResource["dijit.ProgressBar"]){dojo._hasResource["dijit.ProgressBar"]=true;dojo.provide("dijit.ProgressBar");dojo.declare("dijit.ProgressBar",[dijit._Widget,dijit._Templated],{progress:"0",maximum:100,places:0,indeterminate:false,name:"",templateString:dojo.cache("dijit","templates/ProgressBar.html","<div class=\"dijitProgressBar dijitProgressBarEmpty\"\n\t><div waiRole=\"progressbar\" dojoAttachPoint=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\"></div\n\t\t><span style=\"visibility:hidden\">&nbsp;</span\n\t></div\n\t><div dojoAttachPoint=\"label\" class=\"dijitProgressBarLabel\" id=\"${id}_label\">&nbsp;</div\n\t><img dojoAttachPoint=\"indeterminateHighContrastImage\" class=\"dijitProgressBarIndeterminateHighContrastImage\" alt=\"\"\n/></div>\n"),_indeterminateHighContrastImagePath:dojo.moduleUrl("dijit","themes/a11y/indeterminate_progress.gif"),postCreate:function(){this.inherited(arguments);this.indeterminateHighContrastImage.setAttribute("src",this._indeterminateHighContrastImagePath.toString());this.update();},update:function(_3f7){dojo.mixin(this,_3f7||{});var tip=this.internalProgress;var _3f8=1,_3f9;if(this.indeterminate){_3f9="addClass";dijit.removeWaiState(tip,"valuenow");dijit.removeWaiState(tip,"valuemin");dijit.removeWaiState(tip,"valuemax");}else{_3f9="removeClass";if(String(this.progress).indexOf("%")!=-1){_3f8=Math.min(parseFloat(this.progress)/100,1);this.progress=_3f8*this.maximum;}else{this.progress=Math.min(this.progress,this.maximum);_3f8=this.progress/this.maximum;}var text=this.report(_3f8);this.label.firstChild.nodeValue=text;dijit.setWaiState(tip,"describedby",this.label.id);dijit.setWaiState(tip,"valuenow",this.progress);dijit.setWaiState(tip,"valuemin",0);dijit.setWaiState(tip,"valuemax",this.maximum);}dojo[_3f9](this.domNode,"dijitProgressBarIndeterminate");tip.style.width=(_3f8*100)+"%";this.onChange();},_setValueAttr:function(v){if(v==Infinity){this.update({indeterminate:true});}else{this.update({indeterminate:false,progress:v});}},_getValueAttr:function(){return this.progress;},report:function(_3fa){return dojo.number.format(_3fa,{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\" waiRole=\"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\" waiRole=\"presentation\">\n\t\t<div class=\"dijitReset\" dojoAttachPoint=\"wipeNode\" waiRole=\"presentation\">\n\t\t\t<div class=\"dijitTitlePaneContentInner\" dojoAttachPoint=\"containerNode\" waiRole=\"region\" tabindex=\"-1\" 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:""}),postCreate:function(){if(!this.open){this.hideNode.style.display=this.wipeNode.style.display="none";}if(this.toggleable){this._trackMouseState(this.titleBarNode,"dijitTitlePaneTitle");}this._setCss();dojo.setSelectable(this.titleNode,false);var _3fb=this.hideNode,_3fc=this.wipeNode;this._wipeIn=dojo.fx.wipeIn({node:this.wipeNode,duration:this.duration,beforeBegin:function(){_3fb.style.display="";}});this._wipeOut=dojo.fx.wipeOut({node:this.wipeNode,duration:this.duration,onEnd:function(){_3fb.style.display="none";}});this.inherited(arguments);},_setOpenAttr:function(open){if(this.open!==open){this.toggle();}dijit.setWaiState(this.containerNode,"hidden",this.open?"false":"true");dijit.setWaiState(this.focusNode,"pressed",this.open?"true":"false");},_setToggleableAttr:function(_3fd){this.toggleable=_3fd;dijit.setWaiRole(this.focusNode,_3fd?"button":"heading");if(_3fd){dijit.setWaiState(this.focusNode,"controls",this.id+"_pane");dojo.attr(this.focusNode,"tabIndex",this.tabIndex);}else{dojo.removeAttr(this.focusNode,"tabIndex");}this._setCss();},_setContentAttr:function(_3fe){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(){dojo.forEach([this._wipeIn,this._wipeOut],function(_3ff){if(_3ff&&_3ff.status()=="playing"){_3ff.stop();}});var anim=this[this.open?"_wipeOut":"_wipeIn"];if(anim){anim.play();}else{this.hideNode.style.display=this.open?"":"none";}this.open=!this.open;if(this.open){this._onShow();}else{this.onHide();}this._setCss();},_setCss:function(){var node=this.titleBarNode||this.focusNode;if(this._titleBarClass){dojo.removeClass(node,this._titleBarClass);}this._titleBarClass="dijit"+(this.toggleable?"":"Fixed")+(this.open?"Open":"Closed");dojo.addClass(node,this._titleBarClass);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(_400){dojo.deprecated("dijit.TitlePane.setTitle() is deprecated.  Use set('title', ...) instead.","","2.0");this.set("title",_400);}});}if(!dojo._hasResource["dojo.DeferredList"]){dojo._hasResource["dojo.DeferredList"]=true;dojo.provide("dojo.DeferredList");dojo.DeferredList=function(list,_401,_402,_403,_404){var _405=[];dojo.Deferred.call(this);var self=this;if(list.length===0&&!_401){this.resolve([0,[]]);}var _406=0;dojo.forEach(list,function(item,i){item.then(function(_407){if(_401){self.resolve([i,_407]);}else{_408(true,_407);}},function(_409){if(_402){self.reject(_409);}else{_408(false,_409);}if(_403){return null;}throw _409;});function _408(_40a,_40b){_405[i]=[_40a,_40b];_406++;if(_406===list.length){self.resolve(_405);}};});};dojo.DeferredList.prototype=new dojo.Deferred();dojo.DeferredList.prototype.gatherResults=function(_40c){var d=new dojo.DeferredList(_40c,false,true,false);d.addCallback(function(_40d){var ret=[];dojo.forEach(_40d,function(_40e){ret.push(_40e[1]);});return ret;});return d;};}if(!dojo._hasResource["dojo.cookie"]){dojo._hasResource["dojo.cookie"]=true;dojo.provide("dojo.cookie");dojo.cookie=function(name,_40f,_410){var c=document.cookie;if(arguments.length==1){var _411=c.match(new RegExp("(?:^|; )"+dojo.regexp.escapeString(name)+"=([^;]*)"));return _411?decodeURIComponent(_411[1]):undefined;}else{_410=_410||{};var exp=_410.expires;if(typeof exp=="number"){var d=new Date();d.setTime(d.getTime()+exp*24*60*60*1000);exp=_410.expires=d;}if(exp&&exp.toUTCString){_410.expires=exp.toUTCString();}_40f=encodeURIComponent(_40f);var _412=name+"="+_40f,_413;for(_413 in _410){_412+="; "+_413;var _414=_410[_413];if(_414!==true){_412+="="+_414;}}document.cookie=_412;}};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.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 _415=this.store;if(!_415.getFeatures()["dojo.data.api.Identity"]){throw new Error("dijit.Tree: store must support dojo.data.Identity");}if(_415.getFeatures()["dojo.data.api.Notification"]){this.connects=this.connects.concat([dojo.connect(_415,"onNew",this,"onNewItem"),dojo.connect(_415,"onDelete",this,"onDeleteItem"),dojo.connect(_415,"onSet",this,"onSetItem")]);}},destroy:function(){dojo.forEach(this.connects,dojo.disconnect);},getRoot:function(_416,_417){if(this.root){_416(this.root);}else{this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_418){if(_418.length!=1){throw new Error(this.declaredClass+": query "+dojo.toJson(this.query)+" returned "+_418.length+" items, but must return exactly one item");}this.root=_418[0];_416(this.root);}),onError:_417});}},mayHaveChildren:function(item){return dojo.some(this.childrenAttrs,function(attr){return this.store.hasAttribute(item,attr);},this);},getChildren:function(_419,_41a,_41b){var _41c=this.store;if(!_41c.isItemLoaded(_419)){var _41d=dojo.hitch(this,arguments.callee);_41c.loadItem({item:_419,onItem:function(_41e){_41d(_41e,_41a,_41b);},onError:_41b});return;}var _41f=[];for(var i=0;i<this.childrenAttrs.length;i++){var vals=_41c.getValues(_419,this.childrenAttrs[i]);_41f=_41f.concat(vals);}var _420=0;if(!this.deferItemLoadingUntilExpand){dojo.forEach(_41f,function(item){if(!_41c.isItemLoaded(item)){_420++;}});}if(_420==0){_41a(_41f);}else{dojo.forEach(_41f,function(item,idx){if(!_41c.isItemLoaded(item)){_41c.loadItem({item:item,onItem:function(item){_41f[idx]=item;if(--_420==0){_41a(_41f);}},onError:_41b});}});}},isItem:function(_421){return this.store.isItem(_421);},fetchItemByIdentity:function(_422){this.store.fetchItemByIdentity(_422);},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,_423,_424){var _425={parent:_423,attribute:this.childrenAttrs[0],insertIndex:_424};if(this.newItemIdAttr&&args[this.newItemIdAttr]){this.fetchItemByIdentity({identity:args[this.newItemIdAttr],scope:this,onItem:function(item){if(item){this.pasteItem(item,null,_423,true,_424);}else{this.store.newItem(args,_425);}}});}else{this.store.newItem(args,_425);}},pasteItem:function(_426,_427,_428,_429,_42a){var _42b=this.store,_42c=this.childrenAttrs[0];if(_427){dojo.forEach(this.childrenAttrs,function(attr){if(_42b.containsValue(_427,attr,_426)){if(!_429){var _42d=dojo.filter(_42b.getValues(_427,attr),function(x){return x!=_426;});_42b.setValues(_427,attr,_42d);}_42c=attr;}});}if(_428){if(typeof _42a=="number"){var _42e=_42b.getValues(_428,_42c).slice();_42e.splice(_42a,0,_426);_42b.setValues(_428,_42c,_42e);}else{_42b.setValues(_428,_42c,_42b.getValues(_428,_42c).concat(_426));}}},onChange:function(item){},onChildrenChange:function(_42f,_430){},onDelete:function(_431,_432){},onNewItem:function(item,_433){if(!_433){return;}this.getChildren(_433.item,dojo.hitch(this,function(_434){this.onChildrenChange(_433.item,_434);}));},onDeleteItem:function(item){this.onDelete(item);},onSetItem:function(item,_435,_436,_437){if(dojo.indexOf(this.childrenAttrs,_435)!=-1){this.getChildren(item,dojo.hitch(this,function(_438){this.onChildrenChange(item,_438);}));}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(_439){this.root={store:this,root:true,id:_439.rootId,label:_439.rootLabel,children:_439.rootChildren};},mayHaveChildren:function(item){return item===this.root||this.inherited(arguments);},getChildren:function(_43a,_43b,_43c){if(_43a===this.root){if(this.root.children){_43b(this.root.children);}else{this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_43d){this.root.children=_43d;_43b(_43d);}),onError:_43c});}}else{this.inherited(arguments);}},isItem:function(_43e){return (_43e===this.root)?true:this.inherited(arguments);},fetchItemByIdentity:function(_43f){if(_43f.identity==this.root.id){var _440=_43f.scope?_43f.scope:dojo.global;if(_43f.onItem){_43f.onItem.call(_440,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,_441,_442){if(_441===this.root){this.onNewRootItem(args);return this.store.newItem(args);}else{return this.inherited(arguments);}},onNewRootItem:function(args){},pasteItem:function(_443,_444,_445,_446,_447){if(_444===this.root){if(!_446){this.onLeaveRoot(_443);}}dijit.tree.TreeStoreModel.prototype.pasteItem.call(this,_443,_444===this.root?null:_444,_445===this.root?null:_445,_446,_447);if(_445===this.root){this.onAddToRoot(_443);}},onAddToRoot:function(item){},onLeaveRoot:function(item){},_requeryTop:function(){var _448=this.root.children||[];this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_449){this.root.children=_449;if(_448.length!=_449.length||dojo.some(_448,function(item,idx){return _449[idx]!=item;})){this.onChildrenChange(this.root,_449);}})});},onNewItem:function(item,_44a){this._requeryTop();this.inherited(arguments);},onDeleteItem:function(item){if(dojo.indexOf(this.root.children,item)!=-1){this._requeryTop();}this.inherited(arguments);}});}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\" waiRole=\"presentation\"\n\t><div dojoAttachPoint=\"rowNode\" class=\"dijitTreeRow\" waiRole=\"presentation\" dojoAttachEvent=\"onmouseenter:_onMouseEnter, onmouseleave:_onMouseLeave, onclick:_onClick, ondblclick:_onDblClick\"\n\t\t><img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"expandoNode\" class=\"dijitTreeExpando\" waiRole=\"presentation\"\n\t\t/><span dojoAttachPoint=\"expandoNodeText\" class=\"dijitExpandoText\" waiRole=\"presentation\"\n\t\t></span\n\t\t><span dojoAttachPoint=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" waiRole=\"presentation\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"iconNode\" class=\"dijitIcon dijitTreeIcon\" waiRole=\"presentation\"\n\t\t\t/><span dojoAttachPoint=\"labelNode\" class=\"dijitTreeLabel\" wairole=\"treeitem\" tabindex=\"-1\" waiState=\"selected-false\" dojoAttachEvent=\"onfocus:_onLabelFocus\"></span>\n\t\t</span\n\t></div>\n\t<div dojoAttachPoint=\"containerNode\" class=\"dijitTreeContainer\" waiRole=\"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"}}),postCreate:function(){this.inherited(arguments);this._setExpando();this._updateItemClasses(this.item);if(this.isExpandable){dijit.setWaiState(this.labelNode,"expanded",this.isExpanded);}},_setIndentAttr:function(_44b){this.indent=_44b;var _44c=(Math.max(_44b,0)*this.tree._nodePixelIndent)+"px";dojo.style(this.domNode,"backgroundPosition",_44c+" 0px");dojo.style(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_44c);dojo.forEach(this.getChildren(),function(_44d){_44d.set("indent",_44b+1);});},markProcessing:function(){this.state="LOADING";this._setExpando(true);},unmarkProcessing:function(){this._setExpando(false);},_updateItemClasses:function(item){var tree=this.tree,_44e=tree.model;if(tree._v10Compat&&item===_44e.root){item=null;}this._applyClassAndStyle(item,"icon","Icon");this._applyClassAndStyle(item,"label","Label");this._applyClassAndStyle(item,"row","Row");},_applyClassAndStyle:function(item,_44f,_450){var _451="_"+_44f+"Class";var _452=_44f+"Node";if(this[_451]){dojo.removeClass(this[_452],this[_451]);}this[_451]=this.tree["get"+_450+"Class"](item,this.isExpanded);if(this[_451]){dojo.addClass(this[_452],this[_451]);}dojo.style(this[_452],this.tree["get"+_450+"Style"](item,this.isExpanded)||{});},_updateLayout:function(){var _453=this.getParent();if(!_453||_453.rowNode.style.display=="none"){dojo.addClass(this.domNode,"dijitTreeIsRoot");}else{dojo.toggleClass(this.domNode,"dijitTreeIsLast",!this.getNextSibling());}},_setExpando:function(_454){var _455=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_456=["*","-","+","*"],idx=_454?0:(this.isExpandable?(this.isExpanded?1:2):3);dojo.removeClass(this.expandoNode,_455);dojo.addClass(this.expandoNode,_455[idx]);this.expandoNodeText.innerHTML=_456[idx];},expand:function(){if(this._expandDeferred){return this._expandDeferred;}this._wipeOut&&this._wipeOut.stop();this.isExpanded=true;dijit.setWaiState(this.labelNode,"expanded","true");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,_457=dojo.fx.wipeIn({node:this.containerNode,duration:dijit.defaultDuration,onEnd:function(){def.callback(true);}});def=(this._expandDeferred=new dojo.Deferred(function(){_457.stop();}));_457.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(_458){var tree=this.tree,_459=tree.model,defs=[];dojo.forEach(this.getChildren(),function(_45a){dijit._Container.prototype.removeChild.call(this,_45a);},this);this.state="LOADED";if(_458&&_458.length>0){this.isExpandable=true;dojo.forEach(_458,function(item){var id=_459.getIdentity(item),_45b=tree._itemNodesMap[id],node;if(_45b){for(var i=0;i<_45b.length;i++){if(_45b[i]&&!_45b[i].getParent()){node=_45b[i];node.set("indent",this.indent+1);break;}}}if(!node){node=this.tree._createTreeNode({item:item,tree:tree,isExpandable:_459.mayHaveChildren(item),label:tree.getLabel(item),tooltip:tree.getTooltip(item),dir:tree.dir,lang:tree.lang,indent:this.indent+1});if(_45b){_45b.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(_45c,idx){_45c._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);},removeChild:function(node){this.inherited(arguments);var _45d=this.getChildren();if(_45d.length==0){this.isExpandable=false;this.collapse();}dojo.forEach(_45d,function(_45e){_45e._updateLayout();});},makeExpandable:function(){this.isExpandable=true;this._setExpando(false);},_onLabelFocus:function(evt){this.tree._onNodeFocus(this);},setSelected:function(_45f){dijit.setWaiState(this.labelNode,"selected",_45f);dojo.toggleClass(this.rowNode,"dijitTreeRowSelected",_45f);},setFocusable:function(_460){this.labelNode.setAttribute("tabIndex",_460?"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"],path:[],selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:dojo.cache("dijit","templates/Tree.html","<div class=\"dijitTree dijitTreeContainer\" waiRole=\"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:null,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(_461,_462){dojo.publish(this.id,[dojo.mixin({tree:this,event:_461},_462||{})]);},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 _463={};for(var i=0;i<this.dndParams.length;i++){if(this[this.dndParams[i]]){_463[this.dndParams[i]]=this[this.dndParams[i]];}}this.dndController=new this.dndController(this,_463);}},_store2model:function(){this._v10Compat=true;dojo.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");var _464={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};if(this.params.mayHaveChildren){_464.mayHaveChildren=dojo.hitch(this,"mayHaveChildren");}if(this.params.getItemChildren){_464.getChildren=dojo.hitch(this,function(item,_465,_466){this.getItemChildren((this._v10Compat&&item===this.model.root)?null:item,_465,_466);});}this.model=new dijit.tree.ForestStoreModel(_464);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";}this.domNode.appendChild(rn.domNode);var _467=this.model.getIdentity(item);if(this._itemNodesMap[_467]){this._itemNodesMap[_467].push(rn);}else{this._itemNodesMap[_467]=[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 _468=dojo.isString(item)?item:this.model.getIdentity(item);return [].concat(this._itemNodesMap[_468]);},_setSelectedItemAttr:function(item){var _469=this.get("selectedItem");var _46a=(!item||dojo.isString(item))?item:this.model.getIdentity(item);if(_46a==_469?this.model.getIdentity(_469):null){return;}var _46b=this._itemNodesMap[_46a];this._selectNode((_46b&&_46b[0])||null);},_getSelectedItemAttr:function(){return this.selectedNode&&this.selectedNode.item;},_setPathAttr:function(path){var d=new dojo.Deferred();this._selectNode(null);if(!path||!path.length){d.resolve(true);return d;}this._loadDeferred.addCallback(dojo.hitch(this,function(){if(!this.rootNode){d.reject(new Error("!this.rootNode"));return;}if(path[0]!==this.rootNode.item&&(dojo.isString(path[0])&&path[0]!=this.model.getIdentity(this.rootNode.item))){d.reject(new Error(this.id+":path[0] doesn't match this.rootNode.item.  Maybe you are using the wrong tree."));return;}path.shift();var node=this.rootNode;function _46c(){var item=path.shift(),_46d=dojo.isString(item)?item:this.model.getIdentity(item);dojo.some(this._itemNodesMap[_46d],function(n){if(n.getParent()==node){node=n;return true;}return false;});if(path.length){this._expandNode(node).addCallback(dojo.hitch(this,_46c));}else{this._selectNode(node);d.resolve(true);}};this._expandNode(node).addCallback(dojo.hitch(this,_46c));}));return d;},_getPathAttr:function(){if(!this.selectedNode){return;}var res=[];var _46e=this.selectedNode;while(_46e&&_46e!==this.rootNode){res.unshift(_46e.item);_46e=_46e.getParent();}res.unshift(this.rootNode.item);return res;},mayHaveChildren:function(item){},getItemChildren:function(_46f,_470){},getLabel:function(item){return this.model.getLabel(item);},getIconClass:function(item,_471){return (!item||this.model.mayHaveChildren(item))?(_471?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";},getLabelClass:function(item,_472){},getRowClass:function(item,_473){},getIconStyle:function(item,_474){},getLabelStyle:function(item,_475){},getRowStyle:function(item,_476){},getTooltip:function(item){return "";},_onKeyPress:function(e){if(e.altKey){return;}var dk=dojo.keys;var _477=dijit.getEnclosingWidget(e.target);if(!_477){return;}var key=e.charOrCode;if(typeof key=="string"){if(!e.altKey&&!e.ctrlKey&&!e.shiftKey&&!e.metaKey){this._onLetterKeyNav({node:_477,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[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:_477,item:_477.item,evt:e});dojo.stopEvent(e);}}},_onEnterKey:function(_478,evt){this._publish("execute",{item:_478.item,node:_478.node});this._selectNode(_478.node);this.onClick(_478.item,_478.node,evt);},_onDownArrow:function(_479){var node=this._getNextNode(_479.node);if(node&&node.isTreeNode){this.focusNode(node);}},_onUpArrow:function(_47a){var node=_47a.node;var _47b=node.getPreviousSibling();if(_47b){node=_47b;while(node.isExpandable&&node.isExpanded&&node.hasChildren()){var _47c=node.getChildren();node=_47c[_47c.length-1];}}else{var _47d=node.getParent();if(!(!this.showRoot&&_47d===this.rootNode)){node=_47d;}}if(node&&node.isTreeNode){this.focusNode(node);}},_onRightArrow:function(_47e){var node=_47e.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(_47f){var node=_47f.node;if(node.isExpandable&&node.isExpanded){this._collapseNode(node);}else{var _480=node.getParent();if(_480&&_480.isTreeNode&&!(!this.showRoot&&_480===this.rootNode)){this.focusNode(_480);}}},_onHomeKey:function(){var node=this._getRootOrFirstNode();if(node){this.focusNode(node);}},_onEndKey:function(_481){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(_482){var cs=this._curSearch;if(cs){cs.pattern=cs.pattern+_482.key;clearTimeout(cs.timer);}else{cs=this._curSearch={pattern:_482.key,startNode:_482.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);}}},_onClick:function(_483,e){var _484=e.target,_485=(_484==_483.expandoNode||_484==_483.expandoNodeText);if((this.openOnClick&&_483.isExpandable)||_485){if(_483.isExpandable){this._onExpandoClick({node:_483});}}else{this._publish("execute",{item:_483.item,node:_483,evt:e});this.onClick(_483.item,_483,e);this.focusNode(_483);}if(!_485){this._selectNode(_483);}dojo.stopEvent(e);},_onDblClick:function(_486,e){var _487=e.target,_488=(_487==_486.expandoNode||_487==_486.expandoNodeText);if((this.openOnDblClick&&_486.isExpandable)||_488){if(_486.isExpandable){this._onExpandoClick({node:_486});}}else{this._publish("execute",{item:_486.item,node:_486,evt:e});this.onDblClick(_486.item,_486,e);this.focusNode(_486);}if(!_488){this._selectNode(_486);}dojo.stopEvent(e);},_onExpandoClick:function(_489){var node=_489.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 _48a=node.getNextSibling();if(_48a){return _48a;}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,_48b){if(node._expandNodeDeferred&&!_48b){return node._expandNodeDeferred;}var _48c=this.model,item=node.item,_48d=this;switch(node.state){case "UNCHECKED":node.markProcessing();var def=(node._expandNodeDeferred=new dojo.Deferred());_48c.getChildren(item,function(_48e){node.unmarkProcessing();var scid=node.setChildItems(_48e);var ed=_48d._expandNode(node,true);scid.addCallback(function(){ed.addCallback(function(){def.callback();});});},function(err){console.error(_48d,": 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);},_selectNode:function(node){if(this.selectedNode&&!this.selectedNode._destroyed){this.selectedNode.setSelected(false);}if(node){node.setSelected(true);}this.selectedNode=node;},_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 _48f=this.model,_490=_48f.getIdentity(item),_491=this._itemNodesMap[_490];if(_491){var _492=this.getLabel(item),_493=this.getTooltip(item);dojo.forEach(_491,function(node){node.set({item:item,label:_492,tooltip:_493});node._updateItemClasses(item);});}},_onItemChildrenChange:function(_494,_495){var _496=this.model,_497=_496.getIdentity(_494),_498=this._itemNodesMap[_497];if(_498){dojo.forEach(_498,function(_499){_499.setChildItems(_495);});}},_onItemDelete:function(item){var _49a=this.model,_49b=_49a.getIdentity(item),_49c=this._itemNodesMap[_49b];if(_49c){dojo.forEach(_49c,function(node){var _49d=node.getParent();if(_49d){_49d.removeChild(node);}node.destroyRecursive();});delete this._itemNodesMap[_49b];}},_initState:function(){if(this.persist){var _49e=dojo.cookie(this.cookieName);this._openedItemIds={};if(_49e){dojo.forEach(_49e.split(","),function(item){this._openedItemIds[item]=true;},this);}}},_state:function(item,_49f){if(!this.persist){return false;}var id=this.model.getIdentity(item);if(arguments.length===1){return this._openedItemIds[id];}if(_49f){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(_4a0){if(_4a0){dojo.marginBox(this.domNode,_4a0);dojo.style(this.domNode,"overflow","auto");}this._nodePixelIndent=dojo.marginBox(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["dijit.InlineEditBox"]){dojo._hasResource["dijit.InlineEditBox"]=true;dojo.provide("dijit.InlineEditBox");dojo.declare("dijit.InlineEditBox",dijit._Widget,{editing:false,autoSave:true,buttonSave:"",buttonCancel:"",renderAsHtml:false,editor:"dijit.form.TextBox",editorWrapper:"dijit._InlineEditor",editorParams:{},onChange:function(_4a1){},onCancel:function(){},width:"100%",value:"",noValueIndicator:dojo.isIE<=6?"<span style='font-family: wingdings; text-decoration: underline;'>&nbsp;&nbsp;&nbsp;&nbsp;&#x270d;&nbsp;&nbsp;&nbsp;&nbsp;</span>":"<span style='text-decoration: underline;'>&nbsp;&nbsp;&nbsp;&nbsp;&#x270d;&nbsp;&nbsp;&nbsp;&nbsp;</span>",constructor:function(){this.editorParams={};},postMixInProperties:function(){this.inherited(arguments);this.displayNode=this.srcNodeRef;var _4a2={ondijitclick:"_onClick",onmouseover:"_onMouseOver",onmouseout:"_onMouseOut",onfocus:"_onMouseOver",onblur:"_onMouseOut"};for(var name in _4a2){this.connect(this.displayNode,name,_4a2[name]);}dijit.setWaiRole(this.displayNode,"button");if(!this.displayNode.getAttribute("tabIndex")){this.displayNode.setAttribute("tabIndex",0);}if(!this.value&&!("value" in this.params)){this.value=dojo.trim(this.renderAsHtml?this.displayNode.innerHTML:(this.displayNode.innerText||this.displayNode.textContent||""));}if(!this.value){this.displayNode.innerHTML=this.noValueIndicator;}dojo.addClass(this.displayNode,"dijitInlineEditBoxDisplayMode");},setDisabled:function(_4a3){dojo.deprecated("dijit.InlineEditBox.setDisabled() is deprecated.  Use set('disabled', bool) instead.","","2.0");this.set("disabled",_4a3);},_setDisabledAttr:function(_4a4){this.disabled=_4a4;dijit.setWaiState(this.domNode,"disabled",_4a4);if(_4a4){this.displayNode.removeAttribute("tabIndex");}else{this.displayNode.setAttribute("tabIndex",0);}dojo.toggleClass(this.displayNode,"dijitInlineEditBoxDisplayModeDisabled",_4a4);},_onMouseOver:function(){if(!this.disabled){dojo.addClass(this.displayNode,"dijitInlineEditBoxDisplayModeHover");}},_onMouseOut:function(){dojo.removeClass(this.displayNode,"dijitInlineEditBoxDisplayModeHover");},_onClick:function(e){if(this.disabled){return;}if(e){dojo.stopEvent(e);}this._onMouseOut();setTimeout(dojo.hitch(this,"edit"),0);},edit:function(){if(this.disabled||this.editing){return;}this.editing=true;this._savedPosition=dojo.style(this.displayNode,"position")||"static";this._savedOpacity=dojo.style(this.displayNode,"opacity")||"1";this._savedTabIndex=dojo.attr(this.displayNode,"tabIndex")||"0";if(this.wrapperWidget){var ew=this.wrapperWidget.editWidget;ew.set("displayedValue" in ew?"displayedValue":"value",this.value);}else{var _4a5=dojo.create("span",null,this.domNode,"before");var ewc=dojo.getObject(this.editorWrapper);this.wrapperWidget=new ewc({value:this.value,buttonSave:this.buttonSave,buttonCancel:this.buttonCancel,dir:this.dir,lang:this.lang,tabIndex:this._savedTabIndex,editor:this.editor,inlineEditBox:this,sourceStyle:dojo.getComputedStyle(this.displayNode),save:dojo.hitch(this,"save"),cancel:dojo.hitch(this,"cancel")},_4a5);}var ww=this.wrapperWidget;if(dojo.isIE){dijit.focus(dijit.getFocus());}dojo.style(this.displayNode,{position:"absolute",opacity:"0",display:"none"});dojo.style(ww.domNode,{position:this._savedPosition,visibility:"visible",opacity:"1"});dojo.attr(this.displayNode,"tabIndex","-1");setTimeout(dojo.hitch(this,function(){ww.focus();ww._resetValue=ww.getValue();}),0);},_onBlur:function(){this.inherited(arguments);if(!this.editing){}},destroy:function(){if(this.wrapperWidget){this.wrapperWidget.destroy();delete this.wrapperWidget;}this.inherited(arguments);},_showText:function(_4a6){var ww=this.wrapperWidget;dojo.style(ww.domNode,{position:"absolute",visibility:"hidden",opacity:"0"});dojo.style(this.displayNode,{position:this._savedPosition,opacity:this._savedOpacity,display:""});dojo.attr(this.displayNode,"tabIndex",this._savedTabIndex);if(_4a6){dijit.focus(this.displayNode);}},save:function(_4a7){if(this.disabled||!this.editing){return;}this.editing=false;var ww=this.wrapperWidget;var _4a8=ww.getValue();this.set("value",_4a8);setTimeout(dojo.hitch(this,"onChange",_4a8),0);this._showText(_4a7);},setValue:function(val){dojo.deprecated("dijit.InlineEditBox.setValue() is deprecated.  Use set('value', ...) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(val){this.value=val=dojo.trim(val);if(!this.renderAsHtml){val=val.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;").replace(/\n/g,"<br>");}this.displayNode.innerHTML=val||this.noValueIndicator;},getValue:function(){dojo.deprecated("dijit.InlineEditBox.getValue() is deprecated.  Use get('value') instead.","","2.0");return this.get("value");},cancel:function(_4a9){if(this.disabled||!this.editing){return;}this.editing=false;setTimeout(dojo.hitch(this,"onCancel"),0);this._showText(_4a9);}});dojo.declare("dijit._InlineEditor",[dijit._Widget,dijit._Templated],{templateString:dojo.cache("dijit","templates/InlineEditBox.html","<span dojoAttachPoint=\"editNode\" waiRole=\"presentation\" style=\"position: absolute; visibility:hidden\" class=\"dijitReset dijitInline\"\n\tdojoAttachEvent=\"onkeypress: _onKeyPress\"\n\t><span dojoAttachPoint=\"editorPlaceholder\"></span\n\t><span dojoAttachPoint=\"buttonContainer\"\n\t\t><button class='saveButton' dojoAttachPoint=\"saveButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:save\" label=\"${buttonSave}\"></button\n\t\t><button class='cancelButton' dojoAttachPoint=\"cancelButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:cancel\" label=\"${buttonCancel}\"></button\n\t></span\n></span>\n"),widgetsInTemplate:true,postMixInProperties:function(){this.inherited(arguments);this.messages=dojo.i18n.getLocalization("dijit","common",this.lang);dojo.forEach(["buttonSave","buttonCancel"],function(prop){if(!this[prop]){this[prop]=this.messages[prop];}},this);},postCreate:function(){var cls=dojo.getObject(this.editor);var _4aa=this.sourceStyle,_4ab="line-height:"+_4aa.lineHeight+";",_4ac=dojo.getComputedStyle(this.domNode);dojo.forEach(["Weight","Family","Size","Style"],function(prop){var _4ad=_4aa["font"+prop],_4ae=_4ac["font"+prop];if(_4ae!=_4ad){_4ab+="font-"+prop+":"+_4aa["font"+prop]+";";}},this);dojo.forEach(["marginTop","marginBottom","marginLeft","marginRight"],function(prop){this.domNode.style[prop]=_4aa[prop];},this);var _4af=this.inlineEditBox.width;if(_4af=="100%"){_4ab+="width:100%;";this.domNode.style.display="block";}else{_4ab+="width:"+(_4af+(Number(_4af)==_4af?"px":""))+";";}var _4b0=dojo.delegate(this.inlineEditBox.editorParams,{style:_4ab,dir:this.dir,lang:this.lang});_4b0["displayedValue" in cls.prototype?"displayedValue":"value"]=this.value;var ew=(this.editWidget=new cls(_4b0,this.editorPlaceholder));if(this.inlineEditBox.autoSave){dojo.destroy(this.buttonContainer);this.connect(ew,"onChange","_onChange");this.connect(ew,"onKeyPress","_onKeyPress");}else{if("intermediateChanges" in cls.prototype){ew.set("intermediateChanges",true);this.connect(ew,"onChange","_onIntermediateChange");this.saveButton.set("disabled",true);}}},_onIntermediateChange:function(val){this.saveButton.set("disabled",(this.getValue()==this._resetValue)||!this.enableSave());},destroy:function(){this.editWidget.destroy(true);this.inherited(arguments);},getValue:function(){var ew=this.editWidget;return String(ew.get("displayedValue" in ew?"displayedValue":"value"));},_onKeyPress:function(e){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(e.altKey||e.ctrlKey){return;}if(e.charOrCode==dojo.keys.ESCAPE){dojo.stopEvent(e);this.cancel(true);}else{if(e.charOrCode==dojo.keys.ENTER&&e.target.tagName=="INPUT"){dojo.stopEvent(e);this._onChange();}}}},_onBlur:function(){this.inherited(arguments);if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(this.getValue()==this._resetValue){this.cancel(false);}else{if(this.enableSave()){this.save(false);}}}},_onChange:function(){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing&&this.enableSave()){dojo.style(this.inlineEditBox.displayNode,{display:""});dijit.focus(this.inlineEditBox.displayNode);}},enableSave:function(){return (this.editWidget.isValid?this.editWidget.isValid():true);},focus:function(){this.editWidget.focus();setTimeout(dojo.hitch(this,function(){if(this.editWidget.focusNode&&this.editWidget.focusNode.tagName=="INPUT"){dijit.selectInputText(this.editWidget.focusNode);}}),0);}});}if(!dojo._hasResource["dijit.form.Form"]){dojo._hasResource["dijit.form.Form"]=true;dojo.provide("dijit.form.Form");dojo.declare("dijit.form.Form",[dijit._Widget,dijit._Templated,dijit.form._FormMixin],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form dojoAttachPoint='containerNode' dojoAttachEvent='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{action:"",method:"",encType:"","accept-charset":"",accept:"",target:""}),postMixInProperties:function(){this.nameAttrSetting=this.name?("name='"+this.name+"'"):"";this.inherited(arguments);},execute:function(_4b1){},onExecute:function(){},_setEncTypeAttr:function(_4b2){this.encType=_4b2;dojo.attr(this.domNode,"encType",_4b2);if(dojo.isIE){this.domNode.encoding=_4b2;}},postCreate:function(){if(dojo.isIE&&this.srcNodeRef&&this.srcNodeRef.attributes){var item=this.srcNodeRef.attributes.getNamedItem("encType");if(item&&!item.specified&&(typeof item.value=="string")){this.set("encType",item.value);}}this.inherited(arguments);},reset:function(e){var faux={returnValue:true,preventDefault:function(){this.returnValue=false;},stopPropagation:function(){},currentTarget:e?e.target:this.domNode,target:e?e.target:this.domNode};if(!(this.onReset(faux)===false)&&faux.returnValue){this.inherited(arguments,[]);}},onReset:function(e){return true;},_onReset:function(e){this.reset(e);dojo.stopEvent(e);return false;},_onSubmit:function(e){var fp=dijit.form.Form.prototype;if(this.execute!=fp.execute||this.onExecute!=fp.onExecute){dojo.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.","","2.0");this.onExecute();this.execute(this.getValues());}if(this.onSubmit(e)===false){dojo.stopEvent(e);}},onSubmit:function(e){return this.isValid();},submit:function(){if(!(this.onSubmit()===false)){this.containerNode.submit();}}});}if(!dojo._hasResource["dijit.form.DropDownButton"]){dojo._hasResource["dijit.form.DropDownButton"]=true;dojo.provide("dijit.form.DropDownButton");}if(!dojo._hasResource["dijit.form.ComboButton"]){dojo._hasResource["dijit.form.ComboButton"]=true;dojo.provide("dijit.form.ComboButton");}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\" waiRole=\"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(_4b3){this.readOnly=_4b3;dojo.attr(this.focusNode,"readOnly",_4b3);dijit.setWaiState(this.focusNode,"readonly",_4b3);},_setValueAttr:function(_4b4,_4b5){if(typeof _4b4=="string"){this.value=_4b4;dojo.attr(this.focusNode,"value",_4b4);_4b4=true;}if(this._created){this.set("checked",_4b4,_4b5);}},_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(_4b6){},reset:function(){this._hasBeenBlurred=false;this.set("checked",this.params.checked||false);this.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){return false;}return this.inherited(arguments);}});dojo.declare("dijit.form.RadioButton",dijit.form.CheckBox,{type:"radio",baseClass:"dijitRadio",_setCheckedAttr:function(_4b7){this.inherited(arguments);if(!this._created){return;}if(_4b7){var _4b8=this;dojo.query("INPUT[type=radio]",this.focusNode.form||dojo.doc).forEach(function(_4b9){if(_4b9.name==_4b8.name&&_4b9!=_4b8.focusNode&&_4b9.form==_4b8.focusNode.form){var _4ba=dijit.getEnclosingWidget(_4b9);if(_4ba&&_4ba.checked){_4ba.set("checked",false);}}});}},_clicked:function(e){if(!this.checked){this.set("checked",true);}}});}if(!dojo._hasResource["dijit.form.RadioButton"]){dojo._hasResource["dijit.form.RadioButton"]=true;dojo.provide("dijit.form.RadioButton");}if(!dojo._hasResource["dojo.cldr.monetary"]){dojo._hasResource["dojo.cldr.monetary"]=true;dojo.provide("dojo.cldr.monetary");dojo.cldr.monetary.getData=function(code){var _4bb={ADP:0,AFN:0,ALL:0,AMD:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,COP:0,CRC:0,DJF:0,ESP:0,GNF:0,GYD:0,HUF:0,IDR:0,IQD:0,IRR:3,ISK:0,ITL:0,JOD:3,JPY:0,KMF:0,KPW:0,KRW:0,KWD:3,LAK:0,LBP:0,LUF:0,LYD:3,MGA:0,MGF:0,MMK:0,MNT:0,MRO:0,MUR:0,OMR:3,PKR:0,PYG:0,RSD:0,RWF:0,SLL:0,SOS:0,STD:0,SYP:0,TMM:0,TND:3,TRL:0,TZS:0,UGX:0,UZS:0,VND:0,VUV:0,XAF:0,XOF:0,XPF:0,YER:0,ZMK:0,ZWD:0};var _4bc={CHF:5};var _4bd=_4bb[code],_4be=_4bc[code];if(typeof _4bd=="undefined"){_4bd=2;}if(typeof _4be=="undefined"){_4be=0;}return {places:_4bd,round:_4be};};}if(!dojo._hasResource["dojo.currency"]){dojo._hasResource["dojo.currency"]=true;dojo.provide("dojo.currency");dojo.currency._mixInDefaults=function(_4bf){_4bf=_4bf||{};_4bf.type="currency";var _4c0=dojo.i18n.getLocalization("dojo.cldr","currency",_4bf.locale)||{};var iso=_4bf.currency;var data=dojo.cldr.monetary.getData(iso);dojo.forEach(["displayName","symbol","group","decimal"],function(prop){data[prop]=_4c0[iso+"_"+prop];});data.fractional=[true,false];return dojo.mixin(data,_4bf);};dojo.currency.format=function(_4c1,_4c2){return dojo.number.format(_4c1,dojo.currency._mixInDefaults(_4c2));};dojo.currency.regexp=function(_4c3){return dojo.number.regexp(dojo.currency._mixInDefaults(_4c3));};dojo.currency.parse=function(_4c4,_4c5){return dojo.number.parse(_4c4,dojo.currency._mixInDefaults(_4c5));};}if(!dojo._hasResource["dijit.form.NumberTextBox"]){dojo._hasResource["dijit.form.NumberTextBox"]=true;dojo.provide("dijit.form.NumberTextBox");dojo.declare("dijit.form.NumberTextBoxMixin",null,{regExpGen:dojo.number.regexp,value:NaN,editOptions:{pattern:"#.######"},_formatter:dojo.number.format,_setConstraintsAttr:function(_4c6){var _4c7=typeof _4c6.places=="number"?_4c6.places:0;if(_4c7){_4c7++;}if(typeof _4c6.max!="number"){_4c6.max=9*Math.pow(10,15-_4c7);}if(typeof _4c6.min!="number"){_4c6.min=-9*Math.pow(10,15-_4c7);}this.inherited(arguments,[_4c6]);if(this.focusNode&&this.focusNode.value&&!isNaN(this.value)){this.set("value",this.value);}},_onFocus:function(){if(this.disabled){return;}var val=this.get("value");if(typeof val=="number"&&!isNaN(val)){var _4c8=this.format(val,this.constraints);if(_4c8!==undefined){this.textbox.value=_4c8;}}this.inherited(arguments);},format:function(_4c9,_4ca){var _4cb=String(_4c9);if(typeof _4c9!="number"){return _4cb;}if(isNaN(_4c9)){return "";}if(!("rangeCheck" in this&&this.rangeCheck(_4c9,_4ca))&&_4ca.exponent!==false&&/\de[-+]?\d/i.test(_4cb)){return _4cb;}if(this.editOptions&&this._focused){_4ca=dojo.mixin({},_4ca,this.editOptions);}return this._formatter(_4c9,_4ca);},parse:dojo.number.parse,_getDisplayedValueAttr:function(){var v=this.inherited(arguments);return isNaN(v)?this.textbox.value:v;},filter:function(_4cc){return (_4cc===null||_4cc===""||_4cc===undefined)?NaN:this.inherited(arguments);},serialize:function(_4cd,_4ce){return (typeof _4cd!="number"||isNaN(_4cd))?"":this.inherited(arguments);},_setValueAttr:function(_4cf,_4d0,_4d1){if(_4cf!==undefined&&_4d1===undefined){_4d1=String(_4cf);if(typeof _4cf=="number"){if(isNaN(_4cf)){_4d1="";}else{if(("rangeCheck" in this&&this.rangeCheck(_4cf,this.constraints))||this.constraints.exponent===false||!/\de[-+]?\d/i.test(_4d1)){_4d1=undefined;}}}else{if(!_4cf){_4d1="";_4cf=NaN;}else{_4cf=undefined;}}}this.inherited(arguments,[_4cf,_4d0,_4d1]);},_getValueAttr:function(){var v=this.inherited(arguments);if(isNaN(v)&&this.textbox.value!==""){if(this.constraints.exponent!==false&&/\de[-+]?\d/i.test(this.textbox.value)&&(new RegExp("^"+dojo.number._realNumberRegexp(dojo.mixin({},this.constraints))+"$").test(this.textbox.value))){var n=Number(this.textbox.value);return isNaN(n)?undefined:n;}else{return undefined;}}else{return v;}},isValid:function(_4d2){if(!this._focused||this._isEmpty(this.textbox.value)){return this.inherited(arguments);}else{var v=this.get("value");if(!isNaN(v)&&this.rangeCheck(v,this.constraints)){if(this.constraints.exponent!==false&&/\de[-+]?\d/i.test(this.textbox.value)){return true;}else{return this.inherited(arguments);}}else{return false;}}}});dojo.declare("dijit.form.NumberTextBox",[dijit.form.RangeBoundTextBox,dijit.form.NumberTextBoxMixin],{});}if(!dojo._hasResource["dijit.form.CurrencyTextBox"]){dojo._hasResource["dijit.form.CurrencyTextBox"]=true;dojo.provide("dijit.form.CurrencyTextBox");dojo.declare("dijit.form.CurrencyTextBox",dijit.form.NumberTextBox,{currency:"",baseClass:"dijitTextBox dijitCurrencyTextBox",regExpGen:function(_4d3){return "("+(this._focused?this.inherited(arguments,[dojo.mixin({},_4d3,this.editOptions)])+"|":"")+dojo.currency.regexp(_4d3)+")";},_formatter:dojo.currency.format,parse:function(_4d4,_4d5){var v=dojo.currency.parse(_4d4,_4d5);if(isNaN(v)&&/\d+/.test(_4d4)){return this.inherited(arguments,[_4d4,dojo.mixin({},_4d5,this.editOptions)]);}return v;},_setConstraintsAttr:function(_4d6){if(!_4d6.currency&&this.currency){_4d6.currency=this.currency;}this.inherited(arguments,[dojo.currency._mixInDefaults(dojo.mixin(_4d6,{exponent:false}))]);}});}if(!dojo._hasResource["dojo.cldr.supplemental"]){dojo._hasResource["dojo.cldr.supplemental"]=true;dojo.provide("dojo.cldr.supplemental");dojo.cldr.supplemental.getFirstDayOfWeek=function(_4d7){var _4d8={mv:5,af:6,bh:6,dj:6,dz:6,eg:6,er:6,et:6,iq:6,ir:6,jo:6,ke:6,kw:6,ly:6,ma:6,om:6,qa:6,sa:6,sd:6,so:6,tn:6,ye:6,ar:0,as:0,az:0,bw:0,ca:0,cn:0,fo:0,ge:0,gl:0,gu:0,hk:0,ie:0,il:0,"in":0,is:0,jm:0,jp:0,kg:0,kr:0,la:0,mh:0,mn:0,mo:0,mp:0,mt:0,nz:0,ph:0,pk:0,sg:0,sy:0,th:0,tt:0,tw:0,um:0,us:0,uz:0,vi:0,zw:0};var _4d9=dojo.cldr.supplemental._region(_4d7);var dow=_4d8[_4d9];return (dow===undefined)?1:dow;};dojo.cldr.supplemental._region=function(_4da){_4da=dojo.i18n.normalizeLocale(_4da);var tags=_4da.split("-");var _4db=tags[1];if(!_4db){_4db={de:"de",en:"us",es:"es",fi:"fi",fr:"fr",he:"il",hu:"hu",it:"it",ja:"jp",ko:"kr",nl:"nl",pt:"br",sv:"se",zh:"cn"}[tags[0]];}else{if(_4db.length==4){_4db=tags[2];}}return _4db;};dojo.cldr.supplemental.getWeekend=function(_4dc){var _4dd={"in":0,af:4,dz:4,ir:4,om:4,sa:4,ye:4,ae:5,bh:5,eg:5,il:5,iq:5,jo:5,kw:5,ly:5,ma:5,qa:5,sd:5,sy:5,tn:5};var _4de={af:5,dz:5,ir:5,om:5,sa:5,ye:5,ae:6,bh:5,eg:6,il:6,iq:6,jo:6,kw:6,ly:6,ma:6,qa:6,sd:6,sy:6,tn:6};var _4df=dojo.cldr.supplemental._region(_4dc);var _4e0=_4dd[_4df];var end=_4de[_4df];if(_4e0===undefined){_4e0=6;}if(end===undefined){end=0;}return {start:_4e0,end:end};};}if(!dojo._hasResource["dojo.date"]){dojo._hasResource["dojo.date"]=true;dojo.provide("dojo.date");dojo.date.getDaysInMonth=function(_4e1){var _4e2=_4e1.getMonth();var days=[31,28,31,30,31,30,31,31,30,31,30,31];if(_4e2==1&&dojo.date.isLeapYear(_4e1)){return 29;}return days[_4e2];};dojo.date.isLeapYear=function(_4e3){var year=_4e3.getFullYear();return !(year%400)||(!(year%4)&&!!(year%100));};dojo.date.getTimezoneName=function(_4e4){var str=_4e4.toString();var tz="";var _4e5;var pos=str.indexOf("(");if(pos>-1){tz=str.substring(++pos,str.indexOf(")"));}else{var pat=/([A-Z\/]+) \d{4}$/;if((_4e5=str.match(pat))){tz=_4e5[1];}else{str=_4e4.toLocaleString();pat=/ ([A-Z\/]+)$/;if((_4e5=str.match(pat))){tz=_4e5[1];}}}return (tz=="AM"||tz=="PM")?"":tz;};dojo.date.compare=function(_4e6,_4e7,_4e8){_4e6=new Date(+_4e6);_4e7=new Date(+(_4e7||new Date()));if(_4e8=="date"){_4e6.setHours(0,0,0,0);_4e7.setHours(0,0,0,0);}else{if(_4e8=="time"){_4e6.setFullYear(0,0,0);_4e7.setFullYear(0,0,0);}}if(_4e6>_4e7){return 1;}if(_4e6<_4e7){return -1;}return 0;};dojo.date.add=function(date,_4e9,_4ea){var sum=new Date(+date);var _4eb=false;var _4ec="Date";switch(_4e9){case "day":break;case "weekday":var days,_4ed;var mod=_4ea%5;if(!mod){days=(_4ea>0)?5:-5;_4ed=(_4ea>0)?((_4ea-5)/5):((_4ea+5)/5);}else{days=mod;_4ed=parseInt(_4ea/5);}var strt=date.getDay();var adj=0;if(strt==6&&_4ea>0){adj=1;}else{if(strt==0&&_4ea<0){adj=-1;}}var trgt=strt+days;if(trgt==0||trgt==6){adj=(_4ea>0)?2:-2;}_4ea=(7*_4ed)+days+adj;break;case "year":_4ec="FullYear";_4eb=true;break;case "week":_4ea*=7;break;case "quarter":_4ea*=3;case "month":_4eb=true;_4ec="Month";break;default:_4ec="UTC"+_4e9.charAt(0).toUpperCase()+_4e9.substring(1)+"s";}if(_4ec){sum["set"+_4ec](sum["get"+_4ec]()+_4ea);}if(_4eb&&(sum.getDate()<date.getDate())){sum.setDate(0);}return sum;};dojo.date.difference=function(_4ee,_4ef,_4f0){_4ef=_4ef||new Date();_4f0=_4f0||"day";var _4f1=_4ef.getFullYear()-_4ee.getFullYear();var _4f2=1;switch(_4f0){case "quarter":var m1=_4ee.getMonth();var m2=_4ef.getMonth();var q1=Math.floor(m1/3)+1;var q2=Math.floor(m2/3)+1;q2+=(_4f1*4);_4f2=q2-q1;break;case "weekday":var days=Math.round(dojo.date.difference(_4ee,_4ef,"day"));var _4f3=parseInt(dojo.date.difference(_4ee,_4ef,"week"));var mod=days%7;if(mod==0){days=_4f3*5;}else{var adj=0;var aDay=_4ee.getDay();var bDay=_4ef.getDay();_4f3=parseInt(days/7);mod=days%7;var _4f4=new Date(_4ee);_4f4.setDate(_4f4.getDate()+(_4f3*7));var _4f5=_4f4.getDay();if(days>0){switch(true){case aDay==6:adj=-1;break;case aDay==0:adj=0;break;case bDay==6:adj=-1;break;case bDay==0:adj=-2;break;case (_4f5+mod)>5:adj=-2;}}else{if(days<0){switch(true){case aDay==6:adj=0;break;case aDay==0:adj=1;break;case bDay==6:adj=2;break;case bDay==0:adj=1;break;case (_4f5+mod)<0:adj=2;}}}days+=adj;days-=(_4f3*2);}_4f2=days;break;case "year":_4f2=_4f1;break;case "month":_4f2=(_4ef.getMonth()-_4ee.getMonth())+(_4f1*12);break;case "week":_4f2=parseInt(dojo.date.difference(_4ee,_4ef,"day")/7);break;case "day":_4f2/=24;case "hour":_4f2/=60;case "minute":_4f2/=60;case "second":_4f2/=1000;case "millisecond":_4f2*=_4ef.getTime()-_4ee.getTime();}return Math.round(_4f2);};}if(!dojo._hasResource["dojo.date.locale"]){dojo._hasResource["dojo.date.locale"]=true;dojo.provide("dojo.date.locale");(function(){function _4f6(_4f7,_4f8,_4f9,_4fa){return _4fa.replace(/([a-z])\1*/ig,function(_4fb){var s,pad,c=_4fb.charAt(0),l=_4fb.length,_4fc=["abbr","wide","narrow"];switch(c){case "G":s=_4f8[(l<4)?"eraAbbr":"eraNames"][_4f7.getFullYear()<0?0:1];break;case "y":s=_4f7.getFullYear();switch(l){case 1:break;case 2:if(!_4f9.fullYear){s=String(s);s=s.substr(s.length-2);break;}default:pad=true;}break;case "Q":case "q":s=Math.ceil((_4f7.getMonth()+1)/3);pad=true;break;case "M":var m=_4f7.getMonth();if(l<3){s=m+1;pad=true;}else{var _4fd=["months","format",_4fc[l-3]].join("-");s=_4f8[_4fd][m];}break;case "w":var _4fe=0;s=dojo.date.locale._getWeekOfYear(_4f7,_4fe);pad=true;break;case "d":s=_4f7.getDate();pad=true;break;case "D":s=dojo.date.locale._getDayOfYear(_4f7);pad=true;break;case "E":var d=_4f7.getDay();if(l<3){s=d+1;pad=true;}else{var _4ff=["days","format",_4fc[l-3]].join("-");s=_4f8[_4ff][d];}break;case "a":var _500=(_4f7.getHours()<12)?"am":"pm";s=_4f8["dayPeriods-format-wide-"+_500];break;case "h":case "H":case "K":case "k":var h=_4f7.getHours();switch(c){case "h":s=(h%12)||12;break;case "H":s=h;break;case "K":s=(h%12);break;case "k":s=h||24;break;}pad=true;break;case "m":s=_4f7.getMinutes();pad=true;break;case "s":s=_4f7.getSeconds();pad=true;break;case "S":s=Math.round(_4f7.getMilliseconds()*Math.pow(10,l-3));pad=true;break;case "v":case "z":s=dojo.date.locale._getZone(_4f7,true,_4f9);if(s){break;}l=4;case "Z":var _501=dojo.date.locale._getZone(_4f7,false,_4f9);var tz=[(_501<=0?"+":"-"),dojo.string.pad(Math.floor(Math.abs(_501)/60),2),dojo.string.pad(Math.abs(_501)%60,2)];if(l==4){tz.splice(0,0,"GMT");tz.splice(3,0,":");}s=tz.join("");break;default:throw new Error("dojo.date.locale.format: invalid pattern char: "+_4fa);}if(pad){s=dojo.string.pad(s,l);}return s;});};dojo.date.locale._getZone=function(_502,_503,_504){if(_503){return dojo.date.getTimezoneName(_502);}else{return _502.getTimezoneOffset();}};dojo.date.locale.format=function(_505,_506){_506=_506||{};var _507=dojo.i18n.normalizeLocale(_506.locale),_508=_506.formatLength||"short",_509=dojo.date.locale._getGregorianBundle(_507),str=[],_50a=dojo.hitch(this,_4f6,_505,_509,_506);if(_506.selector=="year"){return _50b(_509["dateFormatItem-yyyy"]||"yyyy",_50a);}var _50c;if(_506.selector!="date"){_50c=_506.timePattern||_509["timeFormat-"+_508];if(_50c){str.push(_50b(_50c,_50a));}}if(_506.selector!="time"){_50c=_506.datePattern||_509["dateFormat-"+_508];if(_50c){str.push(_50b(_50c,_50a));}}return str.length==1?str[0]:_509["dateTimeFormat-"+_508].replace(/\{(\d+)\}/g,function(_50d,key){return str[key];});};dojo.date.locale.regexp=function(_50e){return dojo.date.locale._parseInfo(_50e).regexp;};dojo.date.locale._parseInfo=function(_50f){_50f=_50f||{};var _510=dojo.i18n.normalizeLocale(_50f.locale),_511=dojo.date.locale._getGregorianBundle(_510),_512=_50f.formatLength||"short",_513=_50f.datePattern||_511["dateFormat-"+_512],_514=_50f.timePattern||_511["timeFormat-"+_512],_515;if(_50f.selector=="date"){_515=_513;}else{if(_50f.selector=="time"){_515=_514;}else{_515=_511["dateTimeFormat-"+_512].replace(/\{(\d+)\}/g,function(_516,key){return [_514,_513][key];});}}var _517=[],re=_50b(_515,dojo.hitch(this,_518,_517,_511,_50f));return {regexp:re,tokens:_517,bundle:_511};};dojo.date.locale.parse=function(_519,_51a){var info=dojo.date.locale._parseInfo(_51a),_51b=info.tokens,_51c=info.bundle,re=new RegExp("^"+info.regexp+"$",info.strict?"":"i"),_51d=re.exec(_519);if(!_51d){return null;}var _51e=["abbr","wide","narrow"],_51f=[1970,0,1,0,0,0,0],amPm="",_520=dojo.every(_51d,function(v,i){if(!i){return true;}var _521=_51b[i-1];var l=_521.length;switch(_521.charAt(0)){case "y":if(l!=2&&_51a.strict){_51f[0]=v;}else{if(v<100){v=Number(v);var year=""+new Date().getFullYear(),_522=year.substring(0,2)*100,_523=Math.min(Number(year.substring(2,4))+20,99),num=(v<_523)?_522+v:_522-100+v;_51f[0]=num;}else{if(_51a.strict){return false;}_51f[0]=v;}}break;case "M":if(l>2){var _524=_51c["months-format-"+_51e[l-3]].concat();if(!_51a.strict){v=v.replace(".","").toLowerCase();_524=dojo.map(_524,function(s){return s.replace(".","").toLowerCase();});}v=dojo.indexOf(_524,v);if(v==-1){return false;}}else{v--;}_51f[1]=v;break;case "E":case "e":var days=_51c["days-format-"+_51e[l-3]].concat();if(!_51a.strict){v=v.toLowerCase();days=dojo.map(days,function(d){return d.toLowerCase();});}v=dojo.indexOf(days,v);if(v==-1){return false;}break;case "D":_51f[1]=0;case "d":_51f[2]=v;break;case "a":var am=_51a.am||_51c["dayPeriods-format-wide-am"],pm=_51a.pm||_51c["dayPeriods-format-wide-pm"];if(!_51a.strict){var _525=/\./g;v=v.replace(_525,"").toLowerCase();am=am.replace(_525,"").toLowerCase();pm=pm.replace(_525,"").toLowerCase();}if(_51a.strict&&v!=am&&v!=pm){return false;}amPm=(v==pm)?"p":(v==am)?"a":"";break;case "K":if(v==24){v=0;}case "h":case "H":case "k":if(v>23){return false;}_51f[3]=v;break;case "m":_51f[4]=v;break;case "s":_51f[5]=v;break;case "S":_51f[6]=v;}return true;});var _526=+_51f[3];if(amPm==="p"&&_526<12){_51f[3]=_526+12;}else{if(amPm==="a"&&_526==12){_51f[3]=0;}}var _527=new Date(_51f[0],_51f[1],_51f[2],_51f[3],_51f[4],_51f[5],_51f[6]);if(_51a.strict){_527.setFullYear(_51f[0]);}var _528=_51b.join(""),_529=_528.indexOf("d")!=-1,_52a=_528.indexOf("M")!=-1;if(!_520||(_52a&&_527.getMonth()>_51f[1])||(_529&&_527.getDate()>_51f[2])){return null;}if((_52a&&_527.getMonth()<_51f[1])||(_529&&_527.getDate()<_51f[2])){_527=dojo.date.add(_527,"hour",1);}return _527;};function _50b(_52b,_52c,_52d,_52e){var _52f=function(x){return x;};_52c=_52c||_52f;_52d=_52d||_52f;_52e=_52e||_52f;var _530=_52b.match(/(''|[^'])+/g),_531=_52b.charAt(0)=="'";dojo.forEach(_530,function(_532,i){if(!_532){_530[i]="";}else{_530[i]=(_531?_52d:_52c)(_532.replace(/''/g,"'"));_531=!_531;}});return _52e(_530.join(""));};function _518(_533,_534,_535,_536){_536=dojo.regexp.escapeString(_536);if(!_535.strict){_536=_536.replace(" a"," ?a");}return _536.replace(/([a-z])\1*/ig,function(_537){var s,c=_537.charAt(0),l=_537.length,p2="",p3="";if(_535.strict){if(l>1){p2="0"+"{"+(l-1)+"}";}if(l>2){p3="0"+"{"+(l-2)+"}";}}else{p2="0?";p3="0{0,2}";}switch(c){case "y":s="\\d{2,4}";break;case "M":s=(l>2)?"\\S+?":p2+"[1-9]|1[0-2]";break;case "D":s=p2+"[1-9]|"+p3+"[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6]";break;case "d":s="3[01]|[12]\\d|"+p2+"[1-9]";break;case "w":s=p2+"[1-9]|[1-4][0-9]|5[0-3]";break;case "E":s="\\S+";break;case "h":s=p2+"[1-9]|1[0-2]";break;case "k":s=p2+"\\d|1[01]";break;case "H":s=p2+"\\d|1\\d|2[0-3]";break;case "K":s=p2+"[1-9]|1\\d|2[0-4]";break;case "m":case "s":s="[0-5]\\d";break;case "S":s="\\d{"+l+"}";break;case "a":var am=_535.am||_534["dayPeriods-format-wide-am"],pm=_535.pm||_534["dayPeriods-format-wide-pm"];if(_535.strict){s=am+"|"+pm;}else{s=am+"|"+pm;if(am!=am.toLowerCase()){s+="|"+am.toLowerCase();}if(pm!=pm.toLowerCase()){s+="|"+pm.toLowerCase();}if(s.indexOf(".")!=-1){s+="|"+s.replace(/\./g,"");}}s=s.replace(/\./g,"\\.");break;default:s=".*";}if(_533){_533.push(_537);}return "("+s+")";}).replace(/[\xa0 ]/g,"[\\s\\xa0]");};})();(function(){var _538=[];dojo.date.locale.addCustomFormats=function(_539,_53a){_538.push({pkg:_539,name:_53a});};dojo.date.locale._getGregorianBundle=function(_53b){var _53c={};dojo.forEach(_538,function(desc){var _53d=dojo.i18n.getLocalization(desc.pkg,desc.name,_53b);_53c=dojo.mixin(_53c,_53d);},this);return _53c;};})();dojo.date.locale.addCustomFormats("dojo.cldr","gregorian");dojo.date.locale.getNames=function(item,type,_53e,_53f){var _540,_541=dojo.date.locale._getGregorianBundle(_53f),_542=[item,_53e,type];if(_53e=="standAlone"){var key=_542.join("-");_540=_541[key];if(_540[0]==1){_540=undefined;}}_542[1]="format";return (_540||_541[_542.join("-")]).concat();};dojo.date.locale.isWeekend=function(_543,_544){var _545=dojo.cldr.supplemental.getWeekend(_544),day=(_543||new Date()).getDay();if(_545.end<_545.start){_545.end+=7;if(day<_545.start){day+=7;}}return day>=_545.start&&day<=_545.end;};dojo.date.locale._getDayOfYear=function(_546){return dojo.date.difference(new Date(_546.getFullYear(),0,1,_546.getHours()),_546)+1;};dojo.date.locale._getWeekOfYear=function(_547,_548){if(arguments.length==1){_548=0;}var _549=new Date(_547.getFullYear(),0,1).getDay(),adj=(_549-_548+7)%7,week=Math.floor((dojo.date.locale._getDayOfYear(_547)+adj-1)/7);if(_549==_548){week++;}return week;};}if(!dojo._hasResource["dijit.Calendar"]){dojo._hasResource["dijit.Calendar"]=true;dojo.provide("dijit.Calendar");dojo.declare("dijit.Calendar",[dijit._Widget,dijit._Templated,dijit._CssStateMixin],{templateString:dojo.cache("dijit","templates/Calendar.html","<table cellspacing=\"0\" cellpadding=\"0\" class=\"dijitCalendarContainer\" role=\"grid\" dojoAttachEvent=\"onkeypress: _onKeyPress\">\n\t<thead>\n\t\t<tr class=\"dijitReset dijitCalendarMonthContainer\" valign=\"top\">\n\t\t\t<th class='dijitReset dijitCalendarArrow' dojoAttachPoint=\"decrementMonth\">\n\t\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitCalendarIncrementControl dijitCalendarDecrease\" waiRole=\"presentation\"/>\n\t\t\t\t<span dojoAttachPoint=\"decreaseArrowNode\" class=\"dijitA11ySideArrow\">-</span>\n\t\t\t</th>\n\t\t\t<th class='dijitReset' colspan=\"5\">\n\t\t\t\t<div class=\"dijitVisible\">\n\t\t\t\t\t<div class=\"dijitPopup dijitMenu dijitMenuPassive dijitHidden\" dojoAttachPoint=\"monthDropDown\" dojoAttachEvent=\"onmouseup: _onMonthSelect, onmouseover: _onMenuHover, onmouseout: _onMenuHover\">\n\t\t\t\t\t\t<div class=\"dijitCalendarMonthLabelTemplate dijitCalendarMonthLabel\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div dojoAttachPoint=\"monthLabelSpacer\" class=\"dijitSpacer\"></div>\n\t\t\t\t<div dojoAttachPoint=\"monthLabelNode\" class=\"dijitCalendarMonthLabel dijitInline dijitVisible\" dojoAttachEvent=\"onmousedown: _onMonthToggle\"></div>\n\t\t\t</th>\n\t\t\t<th class='dijitReset dijitCalendarArrow' dojoAttachPoint=\"incrementMonth\">\n\t\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitCalendarIncrementControl dijitCalendarIncrease\" waiRole=\"presentation\"/>\n\t\t\t\t<span dojoAttachPoint=\"increaseArrowNode\" class=\"dijitA11ySideArrow\">+</span>\n\t\t\t</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<th class=\"dijitReset dijitCalendarDayLabelTemplate\" role=\"columnheader\"><span class=\"dijitCalendarDayLabel\"></span></th>\n\t\t</tr>\n\t</thead>\n\t<tbody dojoAttachEvent=\"onclick: _onDayClick, onmouseover: _onDayMouseOver, onmouseout: _onDayMouseOut, onmousedown: _onDayMouseDown, onmouseup: _onDayMouseUp\" class=\"dijitReset dijitCalendarBodyContainer\">\n\t\t<tr class=\"dijitReset dijitCalendarWeekTemplate\" role=\"row\">\n\t\t\t<td class=\"dijitReset dijitCalendarDateTemplate\" role=\"gridcell\"><span class=\"dijitCalendarDateLabel\"></span></td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot class=\"dijitReset dijitCalendarYearContainer\">\n\t\t<tr>\n\t\t\t<td class='dijitReset' valign=\"top\" colspan=\"7\">\n\t\t\t\t<h3 class=\"dijitCalendarYearLabel\">\n\t\t\t\t\t<span dojoAttachPoint=\"previousYearLabelNode\" class=\"dijitInline dijitCalendarPreviousYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"currentYearLabelNode\" class=\"dijitInline dijitCalendarSelectedYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"nextYearLabelNode\" class=\"dijitInline dijitCalendarNextYear\"></span>\n\t\t\t\t</h3>\n\t\t\t</td>\n\t\t</tr>\n\t</tfoot>\n</table>\n"),value:new Date(),datePackage:"dojo.date",dayWidth:"narrow",tabIndex:"0",baseClass:"dijitCalendar",cssStateNodes:{"decrementMonth":"dijitCalendarArrow","incrementMonth":"dijitCalendarArrow","previousYearLabelNode":"dijitCalendarPreviousYear","nextYearLabelNode":"dijitCalendarNextYear"},attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{tabIndex:"domNode"}),setValue:function(_54a){dojo.deprecated("dijit.Calendar:setValue() is deprecated.  Use set('value', ...) instead.","","2.0");this.set("value",_54a);},_getValueAttr:function(){var _54b=new this.dateClassObj(this.value);_54b.setHours(0,0,0,0);if(_54b.getDate()<this.value.getDate()){_54b=this.dateFuncObj.add(_54b,"hour",1);}return _54b;},_setValueAttr:function(_54c){if(!this.value||this.dateFuncObj.compare(_54c,this.value)){_54c=new this.dateClassObj(_54c);_54c.setHours(1);this.displayMonth=new this.dateClassObj(_54c);if(!this.isDisabledDate(_54c,this.lang)){this.value=_54c;this.onChange(this.get("value"));}dojo.attr(this.domNode,"aria-label",this.dateLocaleModule.format(_54c,{selector:"date",formatLength:"full"}));this._populateGrid();}},_setText:function(node,text){while(node.firstChild){node.removeChild(node.firstChild);}node.appendChild(dojo.doc.createTextNode(text));},_populateGrid:function(){var _54d=this.displayMonth;_54d.setDate(1);var _54e=_54d.getDay(),_54f=this.dateFuncObj.getDaysInMonth(_54d),_550=this.dateFuncObj.getDaysInMonth(this.dateFuncObj.add(_54d,"month",-1)),_551=new this.dateClassObj(),_552=dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);if(_552>_54e){_552-=7;}dojo.query(".dijitCalendarDateTemplate",this.domNode).forEach(function(_553,i){i+=_552;var date=new this.dateClassObj(_54d),_554,_555="dijitCalendar",adj=0;if(i<_54e){_554=_550-_54e+i+1;adj=-1;_555+="Previous";}else{if(i>=(_54e+_54f)){_554=i-_54e-_54f+1;adj=1;_555+="Next";}else{_554=i-_54e+1;_555+="Current";}}if(adj){date=this.dateFuncObj.add(date,"month",adj);}date.setDate(_554);if(!this.dateFuncObj.compare(date,_551,"date")){_555="dijitCalendarCurrentDate "+_555;}if(this._isSelectedDate(date,this.lang)){_555="dijitCalendarSelectedDate "+_555;}if(this.isDisabledDate(date,this.lang)){_555="dijitCalendarDisabledDate "+_555;}var _556=this.getClassForDate(date,this.lang);if(_556){_555=_556+" "+_555;}_553.className=_555+"Month dijitCalendarDateTemplate";_553.dijitDateValue=date.valueOf();var _557=dojo.query(".dijitCalendarDateLabel",_553)[0],text=date.getDateLocalized?date.getDateLocalized(this.lang):date.getDate();this._setText(_557,text);},this);var _558=this.dateLocaleModule.getNames("months","wide","standAlone",this.lang,_54d);this._setText(this.monthLabelNode,_558[_54d.getMonth()]);dojo.query(".dijitCalendarMonthLabelTemplate",this.domNode).forEach(function(node,i){dojo.toggleClass(node,"dijitHidden",!(i in _558));this._setText(node,_558[i]);},this);var y=_54d.getFullYear()-1;var d=new this.dateClassObj();dojo.forEach(["previous","current","next"],function(name){d.setFullYear(y++);this._setText(this[name+"YearLabelNode"],this.dateLocaleModule.format(d,{selector:"year",locale:this.lang}));},this);var _559=this;var _55a=function(_55b,_55c,adj){_559._connects.push(dijit.typematic.addMouseListener(_559[_55b],_559,function(_55d){if(_55d>=0){_559._adjustDisplay(_55c,adj);}},0.8,500));};_55a("incrementMonth","month",1);_55a("decrementMonth","month",-1);_55a("nextYearLabelNode","year",1);_55a("previousYearLabelNode","year",-1);},goToToday:function(){this.set("value",new this.dateClassObj());},constructor:function(args){var _55e=(args.datePackage&&(args.datePackage!="dojo.date"))?args.datePackage+".Date":"Date";this.dateClassObj=dojo.getObject(_55e,false);this.datePackage=args.datePackage||this.datePackage;this.dateFuncObj=dojo.getObject(this.datePackage,false);this.dateLocaleModule=dojo.getObject(this.datePackage+".locale",false);},postMixInProperties:function(){if(isNaN(this.value)){delete this.value;}this.inherited(arguments);},postCreate:function(){this.inherited(arguments);dojo.setSelectable(this.domNode,false);var _55f=dojo.hitch(this,function(_560,n){var _561=dojo.query(_560,this.domNode)[0];for(var i=0;i<n;i++){_561.parentNode.appendChild(_561.cloneNode(true));}});_55f(".dijitCalendarDayLabelTemplate",6);_55f(".dijitCalendarDateTemplate",6);_55f(".dijitCalendarWeekTemplate",5);var _562=this.dateLocaleModule.getNames("days",this.dayWidth,"standAlone",this.lang);var _563=dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);dojo.query(".dijitCalendarDayLabel",this.domNode).forEach(function(_564,i){this._setText(_564,_562[(i+_563)%7]);},this);var _565=new this.dateClassObj(this.value);var _566=this.dateLocaleModule.getNames("months","wide","standAlone",this.lang,_565);_55f(".dijitCalendarMonthLabelTemplate",_566.length-1);dojo.query(".dijitCalendarMonthLabelTemplate",this.domNode).forEach(function(node,i){dojo.attr(node,"month",i);if(i in _566){this._setText(node,_566[i]);}dojo.place(node.cloneNode(true),this.monthLabelSpacer);},this);this.value=null;this.set("value",_565);},_onMenuHover:function(e){dojo.stopEvent(e);dojo.toggleClass(e.target,"dijitMenuItemHover");},_adjustDisplay:function(part,_567){this.displayMonth=this.dateFuncObj.add(this.displayMonth,part,_567);this._populateGrid();},_onMonthToggle:function(evt){dojo.stopEvent(evt);if(evt.type=="mousedown"){var _568=dojo.position(this.monthLabelNode);var dim={width:_568.w+"px",top:-this.displayMonth.getMonth()*_568.h+"px"};if((dojo.isIE&&dojo.isQuirks)||dojo.isIE<7){dim.left=-_568.w/2+"px";}dojo.style(this.monthDropDown,dim);this._popupHandler=this.connect(document,"onmouseup","_onMonthToggle");}else{this.disconnect(this._popupHandler);delete this._popupHandler;}dojo.toggleClass(this.monthDropDown,"dijitHidden");dojo.toggleClass(this.monthLabelNode,"dijitVisible");},_onMonthSelect:function(evt){this._onMonthToggle(evt);this.displayMonth.setMonth(dojo.attr(evt.target,"month"));this._populateGrid();},_onDayClick:function(evt){dojo.stopEvent(evt);for(var node=evt.target;node&&!node.dijitDateValue;node=node.parentNode){}if(node&&!dojo.hasClass(node,"dijitCalendarDisabledDate")){this.set("value",node.dijitDateValue);this.onValueSelected(this.get("value"));}},_onDayMouseOver:function(evt){var node=dojo.hasClass(evt.target,"dijitCalendarDateLabel")?evt.target.parentNode:evt.target;if(node&&(node.dijitDateValue||node==this.previousYearLabelNode||node==this.nextYearLabelNode)){dojo.addClass(node,"dijitCalendarHoveredDate");this._currentNode=node;}},_onDayMouseOut:function(evt){if(!this._currentNode){return;}if(evt.relatedTarget&&evt.relatedTarget.parentNode==this._currentNode){return;}dojo.removeClass(this._currentNode,"dijitCalendarHoveredDate");if(dojo.hasClass(this._currentNode,"dijitCalendarActiveDate")){dojo.removeClass(this._currentNode,"dijitCalendarActiveDate");}this._currentNode=null;},_onDayMouseDown:function(evt){var node=evt.target.parentNode;if(node&&node.dijitDateValue){dojo.addClass(node,"dijitCalendarActiveDate");this._currentNode=node;}},_onDayMouseUp:function(evt){var node=evt.target.parentNode;if(node&&node.dijitDateValue){dojo.removeClass(node,"dijitCalendarActiveDate");}},_onKeyPress:function(evt){var dk=dojo.keys,_569=-1,_56a,_56b=this.value;switch(evt.keyCode){case dk.RIGHT_ARROW:_569=1;case dk.LEFT_ARROW:_56a="day";if(!this.isLeftToRight()){_569*=-1;}break;case dk.DOWN_ARROW:_569=1;case dk.UP_ARROW:_56a="week";break;case dk.PAGE_DOWN:_569=1;case dk.PAGE_UP:_56a=evt.ctrlKey?"year":"month";break;case dk.END:_56b=this.dateFuncObj.add(_56b,"month",1);_56a="day";case dk.HOME:_56b=new Date(_56b).setDate(1);break;case dk.ENTER:this.onValueSelected(this.get("value"));break;case dk.ESCAPE:default:return;}dojo.stopEvent(evt);if(_56a){_56b=this.dateFuncObj.add(_56b,_56a,_569);}this.set("value",_56b);},onValueSelected:function(date){},onChange:function(date){},_isSelectedDate:function(_56c,_56d){return !this.dateFuncObj.compare(_56c,this.value,"date");},isDisabledDate:function(_56e,_56f){},getClassForDate:function(_570,_571){}});}if(!dojo._hasResource["dijit.form._DateTimeTextBox"]){dojo._hasResource["dijit.form._DateTimeTextBox"]=true;dojo.provide("dijit.form._DateTimeTextBox");new Date("X");dojo.declare("dijit.form._DateTimeTextBox",dijit.form.RangeBoundTextBox,{regExpGen:dojo.date.locale.regexp,datePackage:"dojo.date",compare:dojo.date.compare,format:function(_572,_573){if(!_572){return "";}return this.dateLocaleModule.format(_572,_573);},parse:function(_574,_575){return this.dateLocaleModule.parse(_574,_575)||(this._isEmpty(_574)?null:undefined);},serialize:function(val,_576){if(val.toGregorian){val=val.toGregorian();}return dojo.date.stamp.toISOString(val,_576);},value:new Date(""),_blankValue:null,popupClass:"",_selector:"",constructor:function(args){var _577=args.datePackage?args.datePackage+".Date":"Date";this.dateClassObj=dojo.getObject(_577,false);this.value=new this.dateClassObj("");this.datePackage=args.datePackage||this.datePackage;this.dateLocaleModule=dojo.getObject(this.datePackage+".locale",false);this.regExpGen=this.dateLocaleModule.regexp;},_setConstraintsAttr:function(_578){_578.selector=this._selector;_578.fullYear=true;var _579=dojo.date.stamp.fromISOString;if(typeof _578.min=="string"){_578.min=_579(_578.min);}if(typeof _578.max=="string"){_578.max=_579(_578.max);}this.inherited(arguments,[_578]);},_onFocus:function(evt){this._open();this.inherited(arguments);},_setValueAttr:function(_57a,_57b,_57c){if(_57a!==undefined){if(!_57a||_57a.toString()==dijit.form._DateTimeTextBox.prototype.value.toString()){_57a=null;}if(_57a instanceof Date&&!(this.dateClassObj instanceof Date)){_57a=new this.dateClassObj(_57a);}}this.inherited(arguments,[_57a,_57b,_57c]);if(this._picker){if(!_57a){_57a=new this.dateClassObj();}this._picker.set("value",_57a);}},_open:function(){if(this.disabled||this.readOnly||!this.popupClass){return;}var _57d=this;if(!this._picker){var _57e=dojo.getObject(this.popupClass,false);this._picker=new _57e({onValueSelected:function(_57f){if(_57d._tabbingAway){delete _57d._tabbingAway;}else{_57d.focus();}setTimeout(dojo.hitch(_57d,"_close"),1);dijit.form._DateTimeTextBox.superclass._setValueAttr.call(_57d,_57f,true);},id:this.id+"_popup",dir:_57d.dir,lang:_57d.lang,value:this.get("value")||new this.dateClassObj(),constraints:_57d.constraints,datePackage:_57d.datePackage,isDisabledDate:function(date){var _580=dojo.date.compare;var _581=_57d.constraints;return _581&&((_581.min&&_580(_581.min,date,_57d._selector)>0)||(_581.max&&_580(_581.max,date,_57d._selector)<0));}});}if(!this._opened){dijit.popup.open({parent:this,popup:this._picker,orient:{"BL":"TL","TL":"BL"},around:this.domNode,onCancel:dojo.hitch(this,this._close),onClose:function(){_57d._opened=false;}});this._opened=true;}dojo.marginBox(this._picker.domNode,{w:this.domNode.offsetWidth});},_close:function(){if(this._opened){dijit.popup.close(this._picker);this._opened=false;}},_onBlur:function(){this._close();if(this._picker){this._picker.destroy();delete this._picker;}this.inherited(arguments);},_getDisplayedValueAttr:function(){return this.textbox.value;},_setDisplayedValueAttr:function(_582,_583){this._setValueAttr(this.parse(_582,this.constraints),_583,_582);},destroy:function(){if(this._picker){this._picker.destroy();delete this._picker;}this.inherited(arguments);},postCreate:function(){this.inherited(arguments);this.connect(this.focusNode,"onkeypress",this._onKeyPress);this.connect(this.focusNode,"onclick",this._open);},_onKeyPress:function(e){var p=this._picker,dk=dojo.keys;if(p&&this._opened&&p.handleKey){if(p.handleKey(e)===false){return;}}if(this._opened&&e.charOrCode==dk.ESCAPE&&!(e.shiftKey||e.ctrlKey||e.altKey||e.metaKey)){this._close();dojo.stopEvent(e);}else{if(!this._opened&&e.charOrCode==dk.DOWN_ARROW){this._open();dojo.stopEvent(e);}else{if(e.charOrCode===dk.TAB){this._tabbingAway=true;}else{if(this._opened&&(e.keyChar||e.charOrCode===dk.BACKSPACE||e.charOrCode==dk.DELETE)){setTimeout(dojo.hitch(this,function(){if(this._picker&&this._opened){dijit.placeOnScreenAroundElement(p.domNode.parentNode,this.domNode,{"BL":"TL","TL":"BL"},p.orient?dojo.hitch(p,"orient"):null);}}),1);}}}}}});}if(!dojo._hasResource["dijit.form.DateTextBox"]){dojo._hasResource["dijit.form.DateTextBox"]=true;dojo.provide("dijit.form.DateTextBox");dojo.declare("dijit.form.DateTextBox",dijit.form._DateTimeTextBox,{baseClass:"dijitTextBox dijitDateTextBox",popupClass:"dijit.Calendar",_selector:"date",value:new Date("")});}if(!dojo._hasResource["dijit.form._Spinner"]){dojo._hasResource["dijit.form._Spinner"]=true;dojo.provide("dijit.form._Spinner");dojo.declare("dijit.form._Spinner",dijit.form.RangeBoundTextBox,{defaultTimeout:500,minimumTimeout:10,timeoutChangeRate:0.9,smallDelta:1,largeDelta:10,templateString:dojo.cache("dijit.form","templates/Spinner.html","<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\" waiRole=\"presentation\"\n\t><div class=\"dijitReset dijitButtonNode dijitSpinnerButtonContainer\"\n\t\t><input class=\"dijitReset dijitInputField dijitSpinnerButtonInner\" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t\t/><div class=\"dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitUpArrowButton\"\n\t\t\tdojoAttachPoint=\"upArrowNode\"\n\t\t\t><div class=\"dijitArrowButtonInner\"\n\t\t\t\t><input class=\"dijitReset dijitInputField\" value=\"&#9650;\" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t\t\t\t\t${_buttonInputDisabled}\n\t\t\t/></div\n\t\t></div\n\t\t><div class=\"dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitDownArrowButton\"\n\t\t\tdojoAttachPoint=\"downArrowNode\"\n\t\t\t><div class=\"dijitArrowButtonInner\"\n\t\t\t\t><input class=\"dijitReset dijitInputField\" value=\"&#9660;\" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t\t\t\t\t${_buttonInputDisabled}\n\t\t\t/></div\n\t\t></div\n\t></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&Chi; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' dojoAttachPoint=\"textbox,focusNode\" type=\"${type}\" dojoAttachEvent=\"onkeypress:_onKeyPress\"\n\t\t\twaiRole=\"spinbutton\" autocomplete=\"off\" ${!nameAttrSetting}\n\t/></div\n></div>\n"),baseClass:"dijitTextBox dijitSpinner",cssStateNodes:{"upArrowNode":"dijitUpArrowButton","downArrowNode":"dijitDownArrowButton"},adjust:function(val,_584){return val;},_arrowPressed:function(_585,_586,_587){if(this.disabled||this.readOnly){return;}this._setValueAttr(this.adjust(this.get("value"),_586*_587),false);dijit.selectInputText(this.textbox,this.textbox.value.length);},_arrowReleased:function(node){this._wheelTimer=null;if(this.disabled||this.readOnly){return;}},_typematicCallback:function(_588,node,evt){var inc=this.smallDelta;if(node==this.textbox){var k=dojo.keys;var key=evt.charOrCode;inc=(key==k.PAGE_UP||key==k.PAGE_DOWN)?this.largeDelta:this.smallDelta;node=(key==k.UP_ARROW||key==k.PAGE_UP)?this.upArrowNode:this.downArrowNode;}if(_588==-1){this._arrowReleased(node);}else{this._arrowPressed(node,(node==this.upArrowNode)?1:-1,inc);}},_wheelTimer:null,_mouseWheeled:function(evt){dojo.stopEvent(evt);var _589=evt.detail?(evt.detail*-1):(evt.wheelDelta/120);if(_589!==0){var node=this[(_589>0?"upArrowNode":"downArrowNode")];this._arrowPressed(node,_589,this.smallDelta);if(!this._wheelTimer){clearTimeout(this._wheelTimer);}this._wheelTimer=setTimeout(dojo.hitch(this,"_arrowReleased",node),50);}},postCreate:function(){this.inherited(arguments);this.connect(this.domNode,!dojo.isMozilla?"onmousewheel":"DOMMouseScroll","_mouseWheeled");this._connects.push(dijit.typematic.addListener(this.upArrowNode,this.textbox,{charOrCode:dojo.keys.UP_ARROW,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout));this._connects.push(dijit.typematic.addListener(this.downArrowNode,this.textbox,{charOrCode:dojo.keys.DOWN_ARROW,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout));this._connects.push(dijit.typematic.addListener(this.upArrowNode,this.textbox,{charOrCode:dojo.keys.PAGE_UP,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout));this._connects.push(dijit.typematic.addListener(this.downArrowNode,this.textbox,{charOrCode:dojo.keys.PAGE_DOWN,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout));}});}if(!dojo._hasResource["dijit.form.NumberSpinner"]){dojo._hasResource["dijit.form.NumberSpinner"]=true;dojo.provide("dijit.form.NumberSpinner");dojo.declare("dijit.form.NumberSpinner",[dijit.form._Spinner,dijit.form.NumberTextBoxMixin],{adjust:function(val,_58a){var tc=this.constraints,v=isNaN(val),_58b=!isNaN(tc.max),_58c=!isNaN(tc.min);if(v&&_58a!=0){val=(_58a>0)?_58c?tc.min:_58b?tc.max:0:_58b?this.constraints.max:_58c?tc.min:0;}var _58d=val+_58a;if(v||isNaN(_58d)){return val;}if(_58b&&(_58d>tc.max)){_58d=tc.max;}if(_58c&&(_58d<tc.min)){_58d=tc.min;}return _58d;},_onKeyPress:function(e){if((e.charOrCode==dojo.keys.HOME||e.charOrCode==dojo.keys.END)&&!(e.ctrlKey||e.altKey||e.metaKey)&&typeof this.get("value")!="undefined"){var _58e=this.constraints[(e.charOrCode==dojo.keys.HOME?"min":"max")];if(typeof _58e=="number"){this._setValueAttr(_58e,false);}dojo.stopEvent(e);}}});}if(!dojo._hasResource["dijit.form.MultiSelect"]){dojo._hasResource["dijit.form.MultiSelect"]=true;dojo.provide("dijit.form.MultiSelect");dojo.declare("dijit.form.MultiSelect",dijit.form._FormValueWidget,{size:7,templateString:"<select multiple='true' ${!nameAttrSetting} dojoAttachPoint='containerNode,focusNode' dojoAttachEvent='onchange: _onChange'></select>",attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{size:"focusNode"}),reset:function(){this._hasBeenBlurred=false;this._setValueAttr(this._resetValue,true);},addSelected:function(_58f){_58f.getSelected().forEach(function(n){this.containerNode.appendChild(n);this.domNode.scrollTop=this.domNode.offsetHeight;var _590=_58f.domNode.scrollTop;_58f.domNode.scrollTop=0;_58f.domNode.scrollTop=_590;},this);},getSelected:function(){return dojo.query("option",this.containerNode).filter(function(n){return n.selected;});},_getValueAttr:function(){return this.getSelected().map(function(n){return n.value;});},multiple:true,_setValueAttr:function(_591){dojo.query("option",this.containerNode).forEach(function(n){n.selected=(dojo.indexOf(_591,n.value)!=-1);});},invertSelection:function(_592){dojo.query("option",this.containerNode).forEach(function(n){n.selected=!n.selected;});this._handleOnChange(this.get("value"),_592==true);},_onChange:function(e){this._handleOnChange(this.get("value"),true);},resize:function(size){if(size){dojo.marginBox(this.domNode,size);}},postCreate:function(){this._onChange();}});}if(!dojo._hasResource["dijit.form.HorizontalSlider"]){dojo._hasResource["dijit.form.HorizontalSlider"]=true;dojo.provide("dijit.form.HorizontalSlider");dojo.declare("dijit.form.HorizontalSlider",[dijit.form._FormValueWidget,dijit._Container],{templateString:dojo.cache("dijit.form","templates/HorizontalSlider.html","<table class=\"dijit dijitReset dijitSlider dijitSliderH\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\" dojoAttachEvent=\"onkeypress:_onKeyPress,onkeyup:_onKeyUp\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"topDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationT dijitSliderDecorationH\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n\t\t\t><div class=\"dijitSliderDecrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderLeftBumper\" dojoAttachEvent=\"onmousedown:_onClkDecBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" ${!nameAttrSetting}\n\t\t\t/><div class=\"dijitReset dijitSliderBarContainerH\" waiRole=\"presentation\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH\" dojoAttachEvent=\"onmousedown:_onBarClick\"\n\t\t\t\t\t><div class=\"dijitSliderMoveable dijitSliderMoveableH\"\n\t\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderImageHandle dijitSliderImageHandleH\" dojoAttachEvent=\"onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH\" dojoAttachEvent=\"onmousedown:_onBarClick\"></div\n\t\t\t></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderRightBumper\" dojoAttachEvent=\"onmousedown:_onClkIncBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n\t\t\t><div class=\"dijitSliderIncrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"containerNode,bottomDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationB dijitSliderDecorationH\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n></table>\n"),value:0,showButtons:true,minimum:0,maximum:100,discreteValues:Infinity,pageIncrement:2,clickSelect:true,slideDuration:dijit.defaultDuration,widgetsInTemplate:true,attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{id:""}),baseClass:"dijitSlider",cssStateNodes:{incrementButton:"dijitSliderIncrementButton",decrementButton:"dijitSliderDecrementButton",focusNode:"dijitSliderThumb"},_mousePixelCoord:"pageX",_pixelCount:"w",_startingPixelCoord:"x",_startingPixelCount:"l",_handleOffsetCoord:"left",_progressPixelSize:"width",_onKeyUp:function(e){if(this.disabled||this.readOnly||e.altKey||e.ctrlKey||e.metaKey){return;}this._setValueAttr(this.value,true);},_onKeyPress:function(e){if(this.disabled||this.readOnly||e.altKey||e.ctrlKey||e.metaKey){return;}switch(e.charOrCode){case dojo.keys.HOME:this._setValueAttr(this.minimum,false);break;case dojo.keys.END:this._setValueAttr(this.maximum,false);break;case ((this._descending||this.isLeftToRight())?dojo.keys.RIGHT_ARROW:dojo.keys.LEFT_ARROW):case (this._descending===false?dojo.keys.DOWN_ARROW:dojo.keys.UP_ARROW):case (this._descending===false?dojo.keys.PAGE_DOWN:dojo.keys.PAGE_UP):this.increment(e);break;case ((this._descending||this.isLeftToRight())?dojo.keys.LEFT_ARROW:dojo.keys.RIGHT_ARROW):case (this._descending===false?dojo.keys.UP_ARROW:dojo.keys.DOWN_ARROW):case (this._descending===false?dojo.keys.PAGE_UP:dojo.keys.PAGE_DOWN):this.decrement(e);break;default:return;}dojo.stopEvent(e);},_onHandleClick:function(e){if(this.disabled||this.readOnly){return;}if(!dojo.isIE){dijit.focus(this.sliderHandle);}dojo.stopEvent(e);},_isReversed:function(){return !this.isLeftToRight();},_onBarClick:function(e){if(this.disabled||this.readOnly||!this.clickSelect){return;}dijit.focus(this.sliderHandle);dojo.stopEvent(e);var _593=dojo.position(this.sliderBarContainer,true);var _594=e[this._mousePixelCoord]-_593[this._startingPixelCoord];this._setPixelValue(this._isReversed()?(_593[this._pixelCount]-_594):_594,_593[this._pixelCount],true);this._movable.onMouseDown(e);},_setPixelValue:function(_595,_596,_597){if(this.disabled||this.readOnly){return;}_595=_595<0?0:_596<_595?_596:_595;var _598=this.discreteValues;if(_598<=1||_598==Infinity){_598=_596;}_598--;var _599=_596/_598;var _59a=Math.round(_595/_599);this._setValueAttr((this.maximum-this.minimum)*_59a/_598+this.minimum,_597);},_setValueAttr:function(_59b,_59c){this.valueNode.value=this.value=_59b;dijit.setWaiState(this.focusNode,"valuenow",_59b);this.inherited(arguments);var _59d=(_59b-this.minimum)/(this.maximum-this.minimum);var _59e=(this._descending===false)?this.remainingBar:this.progressBar;var _59f=(this._descending===false)?this.progressBar:this.remainingBar;if(this._inProgressAnim&&this._inProgressAnim.status!="stopped"){this._inProgressAnim.stop(true);}if(_59c&&this.slideDuration>0&&_59e.style[this._progressPixelSize]){var _5a0=this;var _5a1={};var _5a2=parseFloat(_59e.style[this._progressPixelSize]);var _5a3=this.slideDuration*(_59d-_5a2/100);if(_5a3==0){return;}if(_5a3<0){_5a3=0-_5a3;}_5a1[this._progressPixelSize]={start:_5a2,end:_59d*100,units:"%"};this._inProgressAnim=dojo.animateProperty({node:_59e,duration:_5a3,onAnimate:function(v){_59f.style[_5a0._progressPixelSize]=(100-parseFloat(v[_5a0._progressPixelSize]))+"%";},onEnd:function(){delete _5a0._inProgressAnim;},properties:_5a1});this._inProgressAnim.play();}else{_59e.style[this._progressPixelSize]=(_59d*100)+"%";_59f.style[this._progressPixelSize]=((1-_59d)*100)+"%";}},_bumpValue:function(_5a4,_5a5){if(this.disabled||this.readOnly){return;}var s=dojo.getComputedStyle(this.sliderBarContainer);var c=dojo._getContentBox(this.sliderBarContainer,s);var _5a6=this.discreteValues;if(_5a6<=1||_5a6==Infinity){_5a6=c[this._pixelCount];}_5a6--;var _5a7=(this.value-this.minimum)*_5a6/(this.maximum-this.minimum)+_5a4;if(_5a7<0){_5a7=0;}if(_5a7>_5a6){_5a7=_5a6;}_5a7=_5a7*(this.maximum-this.minimum)/_5a6+this.minimum;this._setValueAttr(_5a7,_5a5);},_onClkBumper:function(val){if(this.disabled||this.readOnly||!this.clickSelect){return;}this._setValueAttr(val,true);},_onClkIncBumper:function(){this._onClkBumper(this._descending===false?this.minimum:this.maximum);},_onClkDecBumper:function(){this._onClkBumper(this._descending===false?this.maximum:this.minimum);},decrement:function(e){this._bumpValue(e.charOrCode==dojo.keys.PAGE_DOWN?-this.pageIncrement:-1);},increment:function(e){this._bumpValue(e.charOrCode==dojo.keys.PAGE_UP?this.pageIncrement:1);},_mouseWheeled:function(evt){dojo.stopEvent(evt);var _5a8=!dojo.isMozilla;var _5a9=evt[(_5a8?"wheelDelta":"detail")]*(_5a8?1:-1);this._bumpValue(_5a9<0?-1:1,true);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_5aa){if(this[_5aa.container]!=this.containerNode){this[_5aa.container].appendChild(_5aa.domNode);}},this);this.inherited(arguments);},_typematicCallback:function(_5ab,_5ac,e){if(_5ab==-1){this._setValueAttr(this.value,true);}else{this[(_5ac==(this._descending?this.incrementButton:this.decrementButton))?"decrement":"increment"](e);}},postCreate:function(){if(this.showButtons){this.incrementButton.style.display="";this.decrementButton.style.display="";this._connects.push(dijit.typematic.addMouseListener(this.decrementButton,this,"_typematicCallback",25,500));this._connects.push(dijit.typematic.addMouseListener(this.incrementButton,this,"_typematicCallback",25,500));}this.connect(this.domNode,!dojo.isMozilla?"onmousewheel":"DOMMouseScroll","_mouseWheeled");var _5ad=dojo.declare(dijit.form._SliderMover,{widget:this});this._movable=new dojo.dnd.Moveable(this.sliderHandle,{mover:_5ad});var _5ae=dojo.query("label[for=\""+this.id+"\"]");if(_5ae.length){_5ae[0].id=(this.id+"_label");dijit.setWaiState(this.focusNode,"labelledby",_5ae[0].id);}dijit.setWaiState(this.focusNode,"valuemin",this.minimum);dijit.setWaiState(this.focusNode,"valuemax",this.maximum);this.inherited(arguments);this._layoutHackIE7();},destroy:function(){this._movable.destroy();if(this._inProgressAnim&&this._inProgressAnim.status!="stopped"){this._inProgressAnim.stop(true);}this._supportingWidgets=dijit.findWidgets(this.domNode);this.inherited(arguments);}});dojo.declare("dijit.form._SliderMover",dojo.dnd.Mover,{onMouseMove:function(e){var _5af=this.widget;var _5b0=_5af._abspos;if(!_5b0){_5b0=_5af._abspos=dojo.position(_5af.sliderBarContainer,true);_5af._setPixelValue_=dojo.hitch(_5af,"_setPixelValue");_5af._isReversed_=_5af._isReversed();}var _5b1=e[_5af._mousePixelCoord]-_5b0[_5af._startingPixelCoord];_5af._setPixelValue_(_5af._isReversed_?(_5b0[_5af._pixelCount]-_5b1):_5b1,_5b0[_5af._pixelCount],false);},destroy:function(e){dojo.dnd.Mover.prototype.destroy.apply(this,arguments);var _5b2=this.widget;_5b2._abspos=null;_5b2._setValueAttr(_5b2.value,true);}});}if(!dojo._hasResource["dijit.form.VerticalSlider"]){dojo._hasResource["dijit.form.VerticalSlider"]=true;dojo.provide("dijit.form.VerticalSlider");dojo.declare("dijit.form.VerticalSlider",dijit.form.HorizontalSlider,{templateString:dojo.cache("dijit.form","templates/VerticalSlider.html","<table class=\"dijit dijitReset dijitSlider dijitSliderV\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\" dojoAttachEvent=\"onkeypress:_onKeyPress,onkeyup:_onKeyUp\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderIncrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderTopBumper\" dojoAttachEvent=\"onmousedown:_onClkIncBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td dojoAttachPoint=\"leftDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationL dijitSliderDecorationV\"></td\n\t\t><td class=\"dijitReset\" style=\"height:100%;\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" ${!nameAttrSetting}\n\t\t\t/><center class=\"dijitReset dijitSliderBarContainerV\" waiRole=\"presentation\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderRemainingBar dijitSliderRemainingBarV\" dojoAttachEvent=\"onmousedown:_onBarClick\"><!--#5629--></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderProgressBar dijitSliderProgressBarV\" dojoAttachEvent=\"onmousedown:_onBarClick\"\n\t\t\t\t\t><div class=\"dijitSliderMoveable dijitSliderMoveableV\" style=\"vertical-align:top;\"\n\t\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderImageHandle dijitSliderImageHandleV\" dojoAttachEvent=\"onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t></center\n\t\t></td\n\t\t><td dojoAttachPoint=\"containerNode,rightDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationR dijitSliderDecorationV\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderBottomBumper\" dojoAttachEvent=\"onmousedown:_onClkDecBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderDecrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n></table>\n"),_mousePixelCoord:"pageY",_pixelCount:"h",_startingPixelCoord:"y",_startingPixelCount:"t",_handleOffsetCoord:"top",_progressPixelSize:"height",_descending:true,_isReversed:function(){return this._descending;}});}if(!dojo._hasResource["dijit.form.HorizontalRule"]){dojo._hasResource["dijit.form.HorizontalRule"]=true;dojo.provide("dijit.form.HorizontalRule");dojo.declare("dijit.form.HorizontalRule",[dijit._Widget,dijit._Templated],{templateString:"<div class=\"dijitRuleContainer dijitRuleContainerH\"></div>",count:3,container:"containerNode",ruleStyle:"",_positionPrefix:"<div class=\"dijitRuleMark dijitRuleMarkH\" style=\"left:",_positionSuffix:"%;",_suffix:"\"></div>",_genHTML:function(pos,ndx){return this._positionPrefix+pos+this._positionSuffix+this.ruleStyle+this._suffix;},_isHorizontal:true,postCreate:function(){var _5b3;if(this.count==1){_5b3=this._genHTML(50,0);}else{var i;var _5b4=100/(this.count-1);if(!this._isHorizontal||this.isLeftToRight()){_5b3=this._genHTML(0,0);for(i=1;i<this.count-1;i++){_5b3+=this._genHTML(_5b4*i,i);}_5b3+=this._genHTML(100,this.count-1);}else{_5b3=this._genHTML(100,0);for(i=1;i<this.count-1;i++){_5b3+=this._genHTML(100-_5b4*i,i);}_5b3+=this._genHTML(0,this.count-1);}}this.domNode.innerHTML=_5b3;}});}if(!dojo._hasResource["dijit.form.VerticalRule"]){dojo._hasResource["dijit.form.VerticalRule"]=true;dojo.provide("dijit.form.VerticalRule");dojo.declare("dijit.form.VerticalRule",dijit.form.HorizontalRule,{templateString:"<div class=\"dijitRuleContainer dijitRuleContainerV\"></div>",_positionPrefix:"<div class=\"dijitRuleMark dijitRuleMarkV\" style=\"top:",_isHorizontal:false});}if(!dojo._hasResource["dijit.form.HorizontalRuleLabels"]){dojo._hasResource["dijit.form.HorizontalRuleLabels"]=true;dojo.provide("dijit.form.HorizontalRuleLabels");dojo.declare("dijit.form.HorizontalRuleLabels",dijit.form.HorizontalRule,{templateString:"<div class=\"dijitRuleContainer dijitRuleContainerH dijitRuleLabelsContainer dijitRuleLabelsContainerH\"></div>",labelStyle:"",labels:[],numericMargin:0,minimum:0,maximum:1,constraints:{pattern:"#%"},_positionPrefix:"<div class=\"dijitRuleLabelContainer dijitRuleLabelContainerH\" style=\"left:",_labelPrefix:"\"><div class=\"dijitRuleLabel dijitRuleLabelH\">",_suffix:"</div></div>",_calcPosition:function(pos){return pos;},_genHTML:function(pos,ndx){return this._positionPrefix+this._calcPosition(pos)+this._positionSuffix+this.labelStyle+this._labelPrefix+this.labels[ndx]+this._suffix;},getLabels:function(){var _5b5=this.labels;if(!_5b5.length){_5b5=dojo.query("> li",this.srcNodeRef).map(function(node){return String(node.innerHTML);});}this.srcNodeRef.innerHTML="";if(!_5b5.length&&this.count>1){var _5b6=this.minimum;var inc=(this.maximum-_5b6)/(this.count-1);for(var i=0;i<this.count;i++){_5b5.push((i<this.numericMargin||i>=(this.count-this.numericMargin))?"":dojo.number.format(_5b6,this.constraints));_5b6+=inc;}}return _5b5;},postMixInProperties:function(){this.inherited(arguments);this.labels=this.getLabels();this.count=this.labels.length;}});}if(!dojo._hasResource["dijit.form.VerticalRuleLabels"]){dojo._hasResource["dijit.form.VerticalRuleLabels"]=true;dojo.provide("dijit.form.VerticalRuleLabels");dojo.declare("dijit.form.VerticalRuleLabels",dijit.form.HorizontalRuleLabels,{templateString:"<div class=\"dijitRuleContainer dijitRuleContainerV dijitRuleLabelsContainer dijitRuleLabelsContainerV\"></div>",_positionPrefix:"<div class=\"dijitRuleLabelContainer dijitRuleLabelContainerV\" style=\"top:",_labelPrefix:"\"><span class=\"dijitRuleLabel dijitRuleLabelV\">",_calcPosition:function(pos){return 100-pos;},_isHorizontal:false});}if(!dojo._hasResource["dijit.form.SimpleTextarea"]){dojo._hasResource["dijit.form.SimpleTextarea"]=true;dojo.provide("dijit.form.SimpleTextarea");dojo.declare("dijit.form.SimpleTextarea",dijit.form.TextBox,{baseClass:"dijitTextBox dijitTextArea",attributeMap:dojo.delegate(dijit.form._FormValueWidget.prototype.attributeMap,{rows:"textbox",cols:"textbox"}),rows:"3",cols:"20",templateString:"<textarea ${!nameAttrSetting} dojoAttachPoint='focusNode,containerNode,textbox' autocomplete='off'></textarea>",postMixInProperties:function(){if(!this.value&&this.srcNodeRef){this.value=this.srcNodeRef.value;}this.inherited(arguments);},filter:function(_5b7){if(_5b7){_5b7=_5b7.replace(/\r/g,"");}return this.inherited(arguments);},postCreate:function(){this.inherited(arguments);if(dojo.isIE&&this.cols){dojo.addClass(this.textbox,"dijitTextAreaCols");}},_previousValue:"",_onInput:function(e){if(this.maxLength){var _5b8=parseInt(this.maxLength);var _5b9=this.textbox.value.replace(/\r/g,"");var _5ba=_5b9.length-_5b8;if(_5ba>0){if(e){dojo.stopEvent(e);}var _5bb=this.textbox;if(_5bb.selectionStart){var pos=_5bb.selectionStart;var cr=0;if(dojo.isOpera){cr=(this.textbox.value.substring(0,pos).match(/\r/g)||[]).length;}this.textbox.value=_5b9.substring(0,pos-_5ba-cr)+_5b9.substring(pos-cr);_5bb.setSelectionRange(pos-_5ba,pos-_5ba);}else{if(dojo.doc.selection){_5bb.focus();var _5bc=dojo.doc.selection.createRange();_5bc.moveStart("character",-_5ba);_5bc.text="";_5bc.select();}}}this._previousValue=this.textbox.value;}this.inherited(arguments);}});}if(!dojo._hasResource["dijit.form.Textarea"]){dojo._hasResource["dijit.form.Textarea"]=true;dojo.provide("dijit.form.Textarea");dojo.declare("dijit.form.Textarea",dijit.form.SimpleTextarea,{cols:"",_previousNewlines:0,_strictMode:(dojo.doc.compatMode!="BackCompat"),_getHeight:function(_5bd){var newH=_5bd.scrollHeight;if(dojo.isIE){newH+=_5bd.offsetHeight-_5bd.clientHeight-((dojo.isIE<8&&this._strictMode)?dojo._getPadBorderExtents(_5bd).h:0);}else{if(dojo.isMoz){newH+=_5bd.offsetHeight-_5bd.clientHeight;}else{if(dojo.isWebKit&&!(dojo.isSafari<4)){newH+=dojo._getBorderExtents(_5bd).h;}else{newH+=dojo._getPadBorderExtents(_5bd).h;}}}return newH;},_estimateHeight:function(_5be){_5be.style.maxHeight="";_5be.style.height="auto";_5be.rows=(_5be.value.match(/\n/g)||[]).length+1;},_needsHelpShrinking:dojo.isMoz||dojo.isWebKit,_onInput:function(){this.inherited(arguments);if(this._busyResizing){return;}this._busyResizing=true;var _5bf=this.textbox;if(_5bf.scrollHeight&&_5bf.offsetHeight&&_5bf.clientHeight){var newH=this._getHeight(_5bf)+"px";if(_5bf.style.height!=newH){_5bf.style.maxHeight=_5bf.style.height=newH;}if(this._needsHelpShrinking){if(this._setTimeoutHandle){clearTimeout(this._setTimeoutHandle);}this._setTimeoutHandle=setTimeout(dojo.hitch(this,"_shrink"),0);}}else{this._estimateHeight(_5bf);}this._busyResizing=false;},_busyResizing:false,_shrink:function(){this._setTimeoutHandle=null;if(this._needsHelpShrinking&&!this._busyResizing){this._busyResizing=true;var _5c0=this.textbox;var _5c1=false;if(_5c0.value==""){_5c0.value=" ";_5c1=true;}var _5c2=_5c0.scrollHeight;if(!_5c2){this._estimateHeight(_5c0);}else{var _5c3=_5c0.style.paddingBottom;var _5c4=dojo._getPadExtents(_5c0);_5c4=_5c4.h-_5c4.t;_5c0.style.paddingBottom=_5c4+1+"px";var newH=this._getHeight(_5c0)-1+"px";if(_5c0.style.maxHeight!=newH){_5c0.style.paddingBottom=_5c4+_5c2+"px";_5c0.scrollTop=0;_5c0.style.maxHeight=this._getHeight(_5c0)-_5c2+"px";}_5c0.style.paddingBottom=_5c3;}if(_5c1){_5c0.value="";}this._busyResizing=false;}},resize:function(){this._onInput();},_setValueAttr:function(){this.inherited(arguments);this.resize();},postCreate:function(){this.inherited(arguments);dojo.style(this.textbox,{overflowY:"hidden",overflowX:"auto",boxSizing:"border-box",MsBoxSizing:"border-box",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box"});this.connect(this.textbox,"onscroll",this._onInput);this.connect(this.textbox,"onresize",this._onInput);this.connect(this.textbox,"onfocus",this._onInput);this._setTimeoutHandle=setTimeout(dojo.hitch(this,"resize"),0);},uninitialize:function(){if(this._setTimeoutHandle){clearTimeout(this._setTimeoutHandle);}this.inherited(arguments);}});}if(!dojo._hasResource["dijit.layout.StackController"]){dojo._hasResource["dijit.layout.StackController"]=true;dojo.provide("dijit.layout.StackController");dojo.declare("dijit.layout.StackController",[dijit._Widget,dijit._Templated,dijit._Container],{templateString:"<span wairole='tablist' dojoAttachEvent='onkeypress' class='dijitStackController'></span>",containerId:"",buttonWidget:"dijit.layout._StackButton",postCreate:function(){dijit.setWaiRole(this.domNode,"tablist");this.pane2button={};this.pane2handles={};this.subscribe(this.containerId+"-startup","onStartup");this.subscribe(this.containerId+"-addChild","onAddChild");this.subscribe(this.containerId+"-removeChild","onRemoveChild");this.subscribe(this.containerId+"-selectChild","onSelectChild");this.subscribe(this.containerId+"-containerKeyPress","onContainerKeyPress");},onStartup:function(info){dojo.forEach(info.children,this.onAddChild,this);if(info.selected){this.onSelectChild(info.selected);}},destroy:function(){for(var pane in this.pane2button){this.onRemoveChild(dijit.byId(pane));}this.inherited(arguments);},onAddChild:function(page,_5c5){var cls=dojo.getObject(this.buttonWidget);var _5c6=new cls({id:this.id+"_"+page.id,label:page.title,dir:page.dir,lang:page.lang,showLabel:page.showTitle,iconClass:page.iconClass,closeButton:page.closable,title:page.tooltip});dijit.setWaiState(_5c6.focusNode,"selected","false");this.pane2handles[page.id]=[this.connect(page,"set",function(name,_5c7){var _5c8={title:"label",showTitle:"showLabel",iconClass:"iconClass",closable:"closeButton",tooltip:"title"}[name];if(_5c8){_5c6.set(_5c8,_5c7);}}),this.connect(_5c6,"onClick",dojo.hitch(this,"onButtonClick",page)),this.connect(_5c6,"onClickCloseButton",dojo.hitch(this,"onCloseButtonClick",page))];this.addChild(_5c6,_5c5);this.pane2button[page.id]=_5c6;page.controlButton=_5c6;if(!this._currentChild){_5c6.focusNode.setAttribute("tabIndex","0");dijit.setWaiState(_5c6.focusNode,"selected","true");this._currentChild=page;}if(!this.isLeftToRight()&&dojo.isIE&&this._rectifyRtlTabList){this._rectifyRtlTabList();}},onRemoveChild:function(page){if(this._currentChild===page){this._currentChild=null;}dojo.forEach(this.pane2handles[page.id],this.disconnect,this);delete this.pane2handles[page.id];var _5c9=this.pane2button[page.id];if(_5c9){this.removeChild(_5c9);delete this.pane2button[page.id];_5c9.destroy();}delete page.controlButton;},onSelectChild:function(page){if(!page){return;}if(this._currentChild){var _5ca=this.pane2button[this._currentChild.id];_5ca.set("checked",false);dijit.setWaiState(_5ca.focusNode,"selected","false");_5ca.focusNode.setAttribute("tabIndex","-1");}var _5cb=this.pane2button[page.id];_5cb.set("checked",true);dijit.setWaiState(_5cb.focusNode,"selected","true");this._currentChild=page;_5cb.focusNode.setAttribute("tabIndex","0");var _5cc=dijit.byId(this.containerId);dijit.setWaiState(_5cc.containerNode,"labelledby",_5cb.id);},onButtonClick:function(page){var _5cd=dijit.byId(this.containerId);_5cd.selectChild(page);},onCloseButtonClick:function(page){var _5ce=dijit.byId(this.containerId);_5ce.closeChild(page);if(this._currentChild){var b=this.pane2button[this._currentChild.id];if(b){dijit.focus(b.focusNode||b.domNode);}}},adjacent:function(_5cf){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition))){_5cf=!_5cf;}var _5d0=this.getChildren();var _5d1=dojo.indexOf(_5d0,this.pane2button[this._currentChild.id]);var _5d2=_5cf?1:_5d0.length-1;return _5d0[(_5d1+_5d2)%_5d0.length];},onkeypress:function(e){if(this.disabled||e.altKey){return;}var _5d3=null;if(e.ctrlKey||!e._djpage){var k=dojo.keys;switch(e.charOrCode){case k.LEFT_ARROW:case k.UP_ARROW:if(!e._djpage){_5d3=false;}break;case k.PAGE_UP:if(e.ctrlKey){_5d3=false;}break;case k.RIGHT_ARROW:case k.DOWN_ARROW:if(!e._djpage){_5d3=true;}break;case k.PAGE_DOWN:if(e.ctrlKey){_5d3=true;}break;case k.DELETE:if(this._currentChild.closable){this.onCloseButtonClick(this._currentChild);}dojo.stopEvent(e);break;default:if(e.ctrlKey){if(e.charOrCode===k.TAB){this.adjacent(!e.shiftKey).onClick();dojo.stopEvent(e);}else{if(e.charOrCode=="w"){if(this._currentChild.closable){this.onCloseButtonClick(this._currentChild);}dojo.stopEvent(e);}}}}if(_5d3!==null){this.adjacent(_5d3).onClick();dojo.stopEvent(e);}}},onContainerKeyPress:function(info){info.e._djpage=info.page;this.onkeypress(info.e);}});dojo.declare("dijit.layout._StackButton",dijit.form.ToggleButton,{tabIndex:"-1",postCreate:function(evt){dijit.setWaiRole((this.focusNode||this.domNode),"tab");this.inherited(arguments);},onClick:function(evt){dijit.focus(this.focusNode);},onClickCloseButton:function(evt){evt.stopPropagation();}});}if(!dojo._hasResource["dijit.layout.StackContainer"]){dojo._hasResource["dijit.layout.StackContainer"]=true;dojo.provide("dijit.layout.StackContainer");dojo.declare("dijit.layout.StackContainer",dijit.layout._LayoutWidget,{doLayout:true,persist:false,baseClass:"dijitStackContainer",postCreate:function(){this.inherited(arguments);dojo.addClass(this.domNode,"dijitLayoutContainer");dijit.setWaiRole(this.containerNode,"tabpanel");this.connect(this.domNode,"onkeypress",this._onKeyPress);},startup:function(){if(this._started){return;}var _5d4=this.getChildren();dojo.forEach(_5d4,this._setupChild,this);if(this.persist){this.selectedChildWidget=dijit.byId(dojo.cookie(this.id+"_selectedChild"));}else{dojo.some(_5d4,function(_5d5){if(_5d5.selected){this.selectedChildWidget=_5d5;}return _5d5.selected;},this);}var _5d6=this.selectedChildWidget;if(!_5d6&&_5d4[0]){_5d6=this.selectedChildWidget=_5d4[0];_5d6.selected=true;}dojo.publish(this.id+"-startup",[{children:_5d4,selected:_5d6}]);this.inherited(arguments);},resize:function(){var _5d7=this.selectedChildWidget;if(_5d7&&!this._hasBeenShown){this._hasBeenShown=true;this._showChild(_5d7);}this.inherited(arguments);},_setupChild:function(_5d8){this.inherited(arguments);dojo.removeClass(_5d8.domNode,"dijitVisible");dojo.addClass(_5d8.domNode,"dijitHidden");_5d8.domNode.title="";},addChild:function(_5d9,_5da){this.inherited(arguments);if(this._started){dojo.publish(this.id+"-addChild",[_5d9,_5da]);this.layout();if(!this.selectedChildWidget){this.selectChild(_5d9);}}},removeChild:function(page){this.inherited(arguments);if(this._started){dojo.publish(this.id+"-removeChild",[page]);}if(this._beingDestroyed){return;}if(this.selectedChildWidget===page){this.selectedChildWidget=undefined;if(this._started){var _5db=this.getChildren();if(_5db.length){this.selectChild(_5db[0]);}}}if(this._started){this.layout();}},selectChild:function(page,_5dc){page=dijit.byId(page);if(this.selectedChildWidget!=page){this._transition(page,this.selectedChildWidget,_5dc);this.selectedChildWidget=page;dojo.publish(this.id+"-selectChild",[page]);if(this.persist){dojo.cookie(this.id+"_selectedChild",this.selectedChildWidget.id);}}},_transition:function(_5dd,_5de){if(_5de){this._hideChild(_5de);}this._showChild(_5dd);if(_5dd.resize){if(this.doLayout){_5dd.resize(this._containerContentBox||this._contentBox);}else{_5dd.resize();}}},_adjacent:function(_5df){var _5e0=this.getChildren();var _5e1=dojo.indexOf(_5e0,this.selectedChildWidget);_5e1+=_5df?1:_5e0.length-1;return _5e0[_5e1%_5e0.length];},forward:function(){this.selectChild(this._adjacent(true),true);},back:function(){this.selectChild(this._adjacent(false),true);},_onKeyPress:function(e){dojo.publish(this.id+"-containerKeyPress",[{e:e,page:this}]);},layout:function(){if(this.doLayout&&this.selectedChildWidget&&this.selectedChildWidget.resize){this.selectedChildWidget.resize(this._containerContentBox||this._contentBox);}},_showChild:function(page){var _5e2=this.getChildren();page.isFirstChild=(page==_5e2[0]);page.isLastChild=(page==_5e2[_5e2.length-1]);page.selected=true;dojo.removeClass(page.domNode,"dijitHidden");dojo.addClass(page.domNode,"dijitVisible");page._onShow();},_hideChild:function(page){page.selected=false;dojo.removeClass(page.domNode,"dijitVisible");dojo.addClass(page.domNode,"dijitHidden");page.onHide();},closeChild:function(page){var _5e3=page.onClose(this,page);if(_5e3){this.removeChild(page);page.destroyRecursive();}},destroyDescendants:function(_5e4){dojo.forEach(this.getChildren(),function(_5e5){this.removeChild(_5e5);_5e5.destroyRecursive(_5e4);},this);}});dojo.extend(dijit._Widget,{selected:false,closable:false,iconClass:"",showTitle:true});}if(!dojo._hasResource["dijit.layout.AccordionPane"]){dojo._hasResource["dijit.layout.AccordionPane"]=true;dojo.provide("dijit.layout.AccordionPane");dojo.declare("dijit.layout.AccordionPane",dijit.layout.ContentPane,{constructor:function(){dojo.deprecated("dijit.layout.AccordionPane deprecated, use ContentPane instead","","2.0");},onSelected:function(){}});}if(!dojo._hasResource["dijit.layout.AccordionContainer"]){dojo._hasResource["dijit.layout.AccordionContainer"]=true;dojo.provide("dijit.layout.AccordionContainer");dojo.declare("dijit.layout.AccordionContainer",dijit.layout.StackContainer,{duration:dijit.defaultDuration,buttonWidget:"dijit.layout._AccordionButton",_verticalSpace:0,baseClass:"dijitAccordionContainer",postCreate:function(){this.domNode.style.overflow="hidden";this.inherited(arguments);dijit.setWaiRole(this.domNode,"tablist");},startup:function(){if(this._started){return;}this.inherited(arguments);if(this.selectedChildWidget){var _5e6=this.selectedChildWidget.containerNode.style;_5e6.display="";_5e6.overflow="auto";this.selectedChildWidget._wrapperWidget.set("selected",true);}},_getTargetHeight:function(node){var cs=dojo.getComputedStyle(node);return Math.max(this._verticalSpace-dojo._getPadBorderExtents(node,cs).h-dojo._getMarginExtents(node,cs).h,0);},layout:function(){var _5e7=this.selectedChildWidget;if(!_5e7){return;}var _5e8=_5e7._wrapperWidget.domNode,_5e9=dojo._getMarginExtents(_5e8),_5ea=dojo._getPadBorderExtents(_5e8),_5eb=this._contentBox;var _5ec=0;dojo.forEach(this.getChildren(),function(_5ed){if(_5ed!=_5e7){_5ec+=dojo.marginBox(_5ed._wrapperWidget.domNode).h;}});this._verticalSpace=_5eb.h-_5ec-_5e9.h-_5ea.h-_5e7._buttonWidget.getTitleHeight();this._containerContentBox={h:this._verticalSpace,w:this._contentBox.w-_5e9.w-_5ea.w};if(_5e7){_5e7.resize(this._containerContentBox);}},_setupChild:function(_5ee){_5ee._wrapperWidget=new dijit.layout._AccordionInnerContainer({contentWidget:_5ee,buttonWidget:this.buttonWidget,id:_5ee.id+"_wrapper",dir:_5ee.dir,lang:_5ee.lang,parent:this});this.inherited(arguments);},addChild:function(_5ef,_5f0){if(this._started){dojo.place(_5ef.domNode,this.containerNode,_5f0);if(!_5ef._started){_5ef.startup();}this._setupChild(_5ef);dojo.publish(this.id+"-addChild",[_5ef,_5f0]);this.layout();if(!this.selectedChildWidget){this.selectChild(_5ef);}}else{this.inherited(arguments);}},removeChild:function(_5f1){_5f1._wrapperWidget.destroy();delete _5f1._wrapperWidget;dojo.removeClass(_5f1.domNode,"dijitHidden");this.inherited(arguments);},getChildren:function(){return dojo.map(this.inherited(arguments),function(_5f2){return _5f2.declaredClass=="dijit.layout._AccordionInnerContainer"?_5f2.contentWidget:_5f2;},this);},destroy:function(){dojo.forEach(this.getChildren(),function(_5f3){_5f3._wrapperWidget.destroy();});this.inherited(arguments);},_transition:function(_5f4,_5f5,_5f6){if(this._inTransition){return;}var _5f7=[];var _5f8=this._verticalSpace;if(_5f4){_5f4._wrapperWidget.set("selected",true);this._showChild(_5f4);if(this.doLayout&&_5f4.resize){_5f4.resize(this._containerContentBox);}var _5f9=_5f4.domNode;dojo.addClass(_5f9,"dijitVisible");dojo.removeClass(_5f9,"dijitHidden");if(_5f6){var _5fa=_5f9.style.overflow;_5f9.style.overflow="hidden";_5f7.push(dojo.animateProperty({node:_5f9,duration:this.duration,properties:{height:{start:1,end:this._getTargetHeight(_5f9)}},onEnd:function(){_5f9.style.overflow=_5fa;if(dojo.isIE){setTimeout(function(){dojo.removeClass(_5f9.parentNode,"dijitAccordionInnerContainerFocused");setTimeout(function(){dojo.addClass(_5f9.parentNode,"dijitAccordionInnerContainerFocused");},0);},0);}}}));}}if(_5f5){_5f5._wrapperWidget.set("selected",false);var _5fb=_5f5.domNode;if(_5f6){var _5fc=_5fb.style.overflow;_5fb.style.overflow="hidden";_5f7.push(dojo.animateProperty({node:_5fb,duration:this.duration,properties:{height:{start:this._getTargetHeight(_5fb),end:1}},onEnd:function(){dojo.addClass(_5fb,"dijitHidden");dojo.removeClass(_5fb,"dijitVisible");_5fb.style.overflow=_5fc;if(_5f5.onHide){_5f5.onHide();}}}));}else{dojo.addClass(_5fb,"dijitHidden");dojo.removeClass(_5fb,"dijitVisible");if(_5f5.onHide){_5f5.onHide();}}}if(_5f6){this._inTransition=true;var _5fd=dojo.fx.combine(_5f7);_5fd.onEnd=dojo.hitch(this,function(){delete this._inTransition;});_5fd.play();}},_onKeyPress:function(e,_5fe){if(this._inTransition||this.disabled||e.altKey||!(_5fe||e.ctrlKey)){if(this._inTransition){dojo.stopEvent(e);}return;}var k=dojo.keys,c=e.charOrCode;if((_5fe&&(c==k.LEFT_ARROW||c==k.UP_ARROW))||(e.ctrlKey&&c==k.PAGE_UP)){this._adjacent(false)._buttonWidget._onTitleClick();dojo.stopEvent(e);}else{if((_5fe&&(c==k.RIGHT_ARROW||c==k.DOWN_ARROW))||(e.ctrlKey&&(c==k.PAGE_DOWN||c==k.TAB))){this._adjacent(true)._buttonWidget._onTitleClick();dojo.stopEvent(e);}}}});dojo.declare("dijit.layout._AccordionInnerContainer",[dijit._Widget,dijit._CssStateMixin],{baseClass:"dijitAccordionInnerContainer",isContainer:true,isLayoutContainer:true,buildRendering:function(){this.domNode=dojo.place("<div class='"+this.baseClass+"'>",this.contentWidget.domNode,"after");var _5ff=this.contentWidget,cls=dojo.getObject(this.buttonWidget);this.button=_5ff._buttonWidget=(new cls({contentWidget:_5ff,label:_5ff.title,title:_5ff.tooltip,dir:_5ff.dir,lang:_5ff.lang,iconClass:_5ff.iconClass,id:_5ff.id+"_button",parent:this.parent})).placeAt(this.domNode);dojo.place(this.contentWidget.domNode,this.domNode);},postCreate:function(){this.inherited(arguments);this.connect(this.contentWidget,"set",function(name,_600){var _601={title:"label",tooltip:"title",iconClass:"iconClass"}[name];if(_601){this.button.set(_601,_600);}},this);},_setSelectedAttr:function(_602){this.selected=_602;this.button.set("selected",_602);if(_602){var cw=this.contentWidget;if(cw.onSelected){cw.onSelected();}}},startup:function(){this.contentWidget.startup();},destroy:function(){this.button.destroyRecursive();delete this.contentWidget._buttonWidget;delete this.contentWidget._wrapperWidget;this.inherited(arguments);},destroyDescendants:function(){this.contentWidget.destroyRecursive();}});dojo.declare("dijit.layout._AccordionButton",[dijit._Widget,dijit._Templated,dijit._CssStateMixin],{templateString:dojo.cache("dijit.layout","templates/AccordionButton.html","<div dojoAttachEvent='onclick:_onTitleClick' class='dijitAccordionTitle'>\n\t<div dojoAttachPoint='titleNode,focusNode' dojoAttachEvent='onkeypress:_onTitleKeyPress'\n\t\t\tclass='dijitAccordionTitleFocus' wairole=\"tab\" waiState=\"expanded-false\"\n\t\t><span class='dijitInline dijitAccordionArrow' waiRole=\"presentation\"></span\n\t\t><span class='arrowTextUp' waiRole=\"presentation\">+</span\n\t\t><span class='arrowTextDown' waiRole=\"presentation\">-</span\n\t\t><img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon\" dojoAttachPoint='iconNode' style=\"vertical-align: middle\" waiRole=\"presentation\"/>\n\t\t<span waiRole=\"presentation\" dojoAttachPoint='titleTextNode' class='dijitAccordionText'></span>\n\t</div>\n</div>\n"),attributeMap:dojo.mixin(dojo.clone(dijit.layout.ContentPane.prototype.attributeMap),{label:{node:"titleTextNode",type:"innerHTML"},title:{node:"titleTextNode",type:"attribute",attribute:"title"},iconClass:{node:"iconNode",type:"class"}}),baseClass:"dijitAccordionTitle",getParent:function(){return this.parent;},postCreate:function(){this.inherited(arguments);dojo.setSelectable(this.domNode,false);var _603=dojo.attr(this.domNode,"id").replace(" ","_");dojo.attr(this.titleTextNode,"id",_603+"_title");dijit.setWaiState(this.focusNode,"labelledby",dojo.attr(this.titleTextNode,"id"));},getTitleHeight:function(){return dojo.marginBox(this.domNode).h;},_onTitleClick:function(){var _604=this.getParent();if(!_604._inTransition){_604.selectChild(this.contentWidget,true);dijit.focus(this.focusNode);}},_onTitleKeyPress:function(evt){return this.getParent()._onKeyPress(evt,this.contentWidget);},_setSelectedAttr:function(_605){this.selected=_605;dijit.setWaiState(this.focusNode,"expanded",_605);dijit.setWaiState(this.focusNode,"selected",_605);this.focusNode.setAttribute("tabIndex",_605?"0":"-1");}});}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);},postCreate:function(){this.inherited(arguments);this._splitters={};this._splitterThickness={};},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),this._setupChild,this);this.inherited(arguments);},_setupChild:function(_606){var _607=_606.region;if(_607){this.inherited(arguments);dojo.addClass(_606.domNode,this.baseClass+"Pane");var ltr=this.isLeftToRight();if(_607=="leading"){_607=ltr?"left":"right";}if(_607=="trailing"){_607=ltr?"right":"left";}this["_"+_607]=_606.domNode;this["_"+_607+"Widget"]=_606;if((_606.splitter||this.gutters)&&!this._splitters[_607]){var _608=dojo.getObject(_606.splitter?this._splitterClass:"dijit.layout._Gutter");var _609=new _608({id:_606.id+"_splitter",container:this,child:_606,region:_607,live:this.liveSplitters});_609.isSplitter=true;this._splitters[_607]=_609.domNode;dojo.place(this._splitters[_607],_606.domNode,"after");_609.startup();}_606.region=_607;}},_computeSplitterThickness:function(_60a){this._splitterThickness[_60a]=this._splitterThickness[_60a]||dojo.marginBox(this._splitters[_60a])[(/top|bottom/.test(_60a)?"h":"w")];},layout:function(){for(var _60b in this._splitters){this._computeSplitterThickness(_60b);}this._layoutChildren();},addChild:function(_60c,_60d){this.inherited(arguments);if(this._started){this.layout();}},removeChild:function(_60e){var _60f=_60e.region;var _610=this._splitters[_60f];if(_610){dijit.byNode(_610).destroy();delete this._splitters[_60f];delete this._splitterThickness[_60f];}this.inherited(arguments);delete this["_"+_60f];delete this["_"+_60f+"Widget"];if(this._started){this._layoutChildren();}dojo.removeClass(_60e.domNode,this.baseClass+"Pane");},getChildren:function(){return dojo.filter(this.inherited(arguments),function(_611){return !_611.isSplitter;});},getSplitter:function(_612){var _613=this._splitters[_612];return _613?dijit.byNode(_613):null;},resize:function(_614,_615){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(_616,_617){if(!this._borderBox||!this._borderBox.h){return;}var _618=(this.design=="sidebar");var _619=0,_61a=0,_61b=0,_61c=0;var _61d={},_61e={},_61f={},_620={},_621=(this._center&&this._center.style)||{};var _622=/left|right/.test(_616);var _623=!_616||(!_622&&!_618);var _624=!_616||(_622&&_618);if(this._top){_61d=(_616=="top"||_624)&&this._top.style;_619=_616=="top"?_617:dojo.marginBox(this._top).h;}if(this._left){_61e=(_616=="left"||_623)&&this._left.style;_61b=_616=="left"?_617:dojo.marginBox(this._left).w;}if(this._right){_61f=(_616=="right"||_623)&&this._right.style;_61c=_616=="right"?_617:dojo.marginBox(this._right).w;}if(this._bottom){_620=(_616=="bottom"||_624)&&this._bottom.style;_61a=_616=="bottom"?_617:dojo.marginBox(this._bottom).h;}var _625=this._splitters;var _626=_625.top,_627=_625.bottom,_628=_625.left,_629=_625.right;var _62a=this._splitterThickness;var _62b=_62a.top||0,_62c=_62a.left||0,_62d=_62a.right||0,_62e=_62a.bottom||0;if(_62c>50||_62d>50){setTimeout(dojo.hitch(this,function(){this._splitterThickness={};for(var _62f in this._splitters){this._computeSplitterThickness(_62f);}this._layoutChildren();}),50);return false;}var pe=this.pe;var _630={left:(_618?_61b+_62c:0)+pe.l+"px",right:(_618?_61c+_62d:0)+pe.r+"px"};if(_626){dojo.mixin(_626.style,_630);_626.style.top=_619+pe.t+"px";}if(_627){dojo.mixin(_627.style,_630);_627.style.bottom=_61a+pe.b+"px";}_630={top:(_618?0:_619+_62b)+pe.t+"px",bottom:(_618?0:_61a+_62e)+pe.b+"px"};if(_628){dojo.mixin(_628.style,_630);_628.style.left=_61b+pe.l+"px";}if(_629){dojo.mixin(_629.style,_630);_629.style.right=_61c+pe.r+"px";}dojo.mixin(_621,{top:pe.t+_619+_62b+"px",left:pe.l+_61b+_62c+"px",right:pe.r+_61c+_62d+"px",bottom:pe.b+_61a+_62e+"px"});var _631={top:_618?pe.t+"px":_621.top,bottom:_618?pe.b+"px":_621.bottom};dojo.mixin(_61e,_631);dojo.mixin(_61f,_631);_61e.left=pe.l+"px";_61f.right=pe.r+"px";_61d.top=pe.t+"px";_620.bottom=pe.b+"px";if(_618){_61d.left=_620.left=_61b+_62c+pe.l+"px";_61d.right=_620.right=_61c+_62d+pe.r+"px";}else{_61d.left=_620.left=pe.l+"px";_61d.right=_620.right=pe.r+"px";}var _632=this._borderBox.h-pe.t-pe.b,_633=_632-(_619+_62b+_61a+_62e),_634=_618?_632:_633;var _635=this._borderBox.w-pe.l-pe.r,_636=_635-(_61b+_62c+_61c+_62d),_637=_618?_636:_635;var dim={top:{w:_637,h:_619},bottom:{w:_637,h:_61a},left:{w:_61b,h:_634},right:{w:_61c,h:_634},center:{h:_633,w:_636}};if(_616){var _638=this["_"+_616+"Widget"],mb={};mb[/top|bottom/.test(_616)?"h":"w"]=_617;_638.resize?_638.resize(mb,dim[_638.region]):dojo.marginBox(_638.domNode,mb);}var _639=dojo.isIE<8||(dojo.isIE&&dojo.isQuirks)||dojo.some(this.getChildren(),function(_63a){return _63a.domNode.tagName=="TEXTAREA"||_63a.domNode.tagName=="INPUT";});if(_639){var _63b=function(_63c,_63d,_63e){if(_63c){(_63c.resize?_63c.resize(_63d,_63e):dojo.marginBox(_63c.domNode,_63d));}};if(_628){_628.style.height=_634;}if(_629){_629.style.height=_634;}_63b(this._leftWidget,{h:_634},dim.left);_63b(this._rightWidget,{h:_634},dim.right);if(_626){_626.style.width=_637;}if(_627){_627.style.width=_637;}_63b(this._topWidget,{w:_637},dim.top);_63b(this._bottomWidget,{w:_637},dim.bottom);_63b(this._centerWidget,dim.center);}else{var _63f=!_616||(/top|bottom/.test(_616)&&this.design!="sidebar"),_640=!_616||(/left|right/.test(_616)&&this.design=="sidebar"),_641={center:true,left:_63f,right:_63f,top:_640,bottom:_640};dojo.forEach(this.getChildren(),function(_642){if(_642.resize&&_641[_642.region]){_642.resize(null,dim[_642.region]);}},this);}},destroy:function(){for(var _643 in this._splitters){var _644=this._splitters[_643];dijit.byNode(_644).destroy();dojo.destroy(_644);}delete this._splitters;delete this._splitterThickness;this.inherited(arguments);}});dojo.extend(dijit._Widget,{region:"",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\" waiRole=\"separator\"><div class=\"dijitSplitterThumb\"></div></div>",postCreate:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);dojo.addClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));this._factor=/top|left/.test(this.region)?1:-1;this._cookieName=this.container.id+"_"+this.region;if(this.container.persist){var _645=dojo.cookie(this._cookieName);if(_645){this.child.domNode.style[this.horizontal?"height":"width"]=_645;}}},_computeMaxSize:function(){var dim=this.horizontal?"h":"w",_646=this.container._splitterThickness[this.region];var flip={left:"right",right:"left",top:"bottom",bottom:"top",leading:"trailing",trailing:"leading"},_647=this.container["_"+flip[this.region]];var _648=dojo.contentBox(this.container.domNode)[dim]-(_647?dojo.marginBox(_647)[dim]:0)-20-_646*2;return Math.min(this.child.maxSize,_648);},_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");dojo.addClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Active");if(this.fake){dojo.removeClass(this.fake,"dijitSplitterHover");dojo.removeClass(this.fake,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover");}var _649=this._factor,max=this._computeMaxSize(),min=this.child.minSize||20,_64a=this.horizontal,axis=_64a?"pageY":"pageX",_64b=e[axis],_64c=this.domNode.style,dim=_64a?"h":"w",_64d=dojo.marginBox(this.child.domNode)[dim],_64e=this.region,_64f=parseInt(this.domNode.style[_64e],10),_650=this._resize,_651=this.child.domNode,_652=dojo.hitch(this.container,this.container._layoutChildren),de=dojo.doc;this._handlers=(this._handlers||[]).concat([dojo.connect(de,"onmousemove",this._drag=function(e,_653){var _654=e[axis]-_64b,_655=_649*_654+_64d,_656=Math.max(Math.min(_655,max),min);if(_650||_653){_652(_64e,_656);}_64c[_64e]=_649*_654+_64f+(_656-_655)+"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");dojo.removeClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Active");dojo.removeClass(this.domNode,"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 _657=this.horizontal;var tick=1;var dk=dojo.keys;switch(e.charOrCode){case _657?dk.UP_ARROW:dk.LEFT_ARROW:tick*=-1;case _657?dk.DOWN_ARROW:dk.RIGHT_ARROW:break;default:return;}var _658=dojo.marginBox(this.child.domNode)[_657?"h":"w"]+this._factor*tick;this.container._layoutChildren(this.region,Math.max(Math.min(_658,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\" waiRole=\"presentation\"></div>",postCreate:function(){this.horizontal=/top|bottom/.test(this.region);dojo.addClass(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"));}});}if(!dojo._hasResource["dijit.layout.LayoutContainer"]){dojo._hasResource["dijit.layout.LayoutContainer"]=true;dojo.provide("dijit.layout.LayoutContainer");dojo.declare("dijit.layout.LayoutContainer",dijit.layout._LayoutWidget,{baseClass:"dijitLayoutContainer",constructor:function(){dojo.deprecated("dijit.layout.LayoutContainer is deprecated","use BorderContainer instead",2);},layout:function(){dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());},addChild:function(_659,_65a){this.inherited(arguments);if(this._started){dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());}},removeChild:function(_65b){this.inherited(arguments);if(this._started){dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());}}});dojo.extend(dijit._Widget,{layoutAlign:"none"});}if(!dojo._hasResource["dijit.layout.LinkPane"]){dojo._hasResource["dijit.layout.LinkPane"]=true;dojo.provide("dijit.layout.LinkPane");dojo.declare("dijit.layout.LinkPane",[dijit.layout.ContentPane,dijit._Templated],{templateString:"<div class=\"dijitLinkPane\" dojoAttachPoint=\"containerNode\"></div>",postMixInProperties:function(){if(this.srcNodeRef){this.title+=this.srcNodeRef.innerHTML;}this.inherited(arguments);},_fillContent:function(_65c){}});}if(!dojo._hasResource["dijit.layout.SplitContainer"]){dojo._hasResource["dijit.layout.SplitContainer"]=true;dojo.provide("dijit.layout.SplitContainer");dojo.declare("dijit.layout.SplitContainer",dijit.layout._LayoutWidget,{constructor:function(){dojo.deprecated("dijit.layout.SplitContainer is deprecated","use BorderContainer with splitter instead",2);},activeSizing:false,sizerWidth:7,orientation:"horizontal",persist:true,baseClass:"dijitSplitContainer",postMixInProperties:function(){this.inherited("postMixInProperties",arguments);this.isHorizontal=(this.orientation=="horizontal");},postCreate:function(){this.inherited(arguments);this.sizers=[];if(dojo.isMozilla){this.domNode.style.overflow="-moz-scrollbars-none";}if(typeof this.sizerWidth=="object"){try{this.sizerWidth=parseInt(this.sizerWidth.toString());}catch(e){this.sizerWidth=7;}}var _65d=dojo.doc.createElement("div");this.virtualSizer=_65d;_65d.style.position="relative";_65d.style.zIndex=10;_65d.className=this.isHorizontal?"dijitSplitContainerVirtualSizerH":"dijitSplitContainerVirtualSizerV";this.domNode.appendChild(_65d);dojo.setSelectable(_65d,false);},destroy:function(){delete this.virtualSizer;dojo.forEach(this._ownconnects,dojo.disconnect);this.inherited(arguments);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_65e,i,_65f){this._setupChild(_65e);if(i<_65f.length-1){this._addSizer();}},this);if(this.persist){this._restoreState();}this.inherited(arguments);},_setupChild:function(_660){this.inherited(arguments);_660.domNode.style.position="absolute";dojo.addClass(_660.domNode,"dijitSplitPane");},_onSizerMouseDown:function(e){if(e.target.id){for(var i=0;i<this.sizers.length;i++){if(this.sizers[i].id==e.target.id){break;}}if(i<this.sizers.length){this.beginSizing(e,i);}}},_addSizer:function(_661){_661=_661===undefined?this.sizers.length:_661;var _662=dojo.doc.createElement("div");_662.id=dijit.getUniqueId("dijit_layout_SplitterContainer_Splitter");this.sizers.splice(_661,0,_662);this.domNode.appendChild(_662);_662.className=this.isHorizontal?"dijitSplitContainerSizerH":"dijitSplitContainerSizerV";var _663=dojo.doc.createElement("div");_663.className="thumb";_662.appendChild(_663);this.connect(_662,"onmousedown","_onSizerMouseDown");dojo.setSelectable(_662,false);},removeChild:function(_664){if(this.sizers.length){var i=dojo.indexOf(this.getChildren(),_664);if(i!=-1){if(i==this.sizers.length){i--;}dojo.destroy(this.sizers[i]);this.sizers.splice(i,1);}}this.inherited(arguments);if(this._started){this.layout();}},addChild:function(_665,_666){this.inherited(arguments);if(this._started){var _667=this.getChildren();if(_667.length>1){this._addSizer(_666);}this.layout();}},layout:function(){this.paneWidth=this._contentBox.w;this.paneHeight=this._contentBox.h;var _668=this.getChildren();if(!_668.length){return;}var _669=this.isHorizontal?this.paneWidth:this.paneHeight;if(_668.length>1){_669-=this.sizerWidth*(_668.length-1);}var _66a=0;dojo.forEach(_668,function(_66b){_66a+=_66b.sizeShare;});var _66c=_669/_66a;var _66d=0;dojo.forEach(_668.slice(0,_668.length-1),function(_66e){var size=Math.round(_66c*_66e.sizeShare);_66e.sizeActual=size;_66d+=size;});_668[_668.length-1].sizeActual=_669-_66d;this._checkSizes();var pos=0;var size=_668[0].sizeActual;this._movePanel(_668[0],pos,size);_668[0].position=pos;pos+=size;if(!this.sizers){return;}dojo.some(_668.slice(1),function(_66f,i){if(!this.sizers[i]){return true;}this._moveSlider(this.sizers[i],pos,this.sizerWidth);this.sizers[i].position=pos;pos+=this.sizerWidth;size=_66f.sizeActual;this._movePanel(_66f,pos,size);_66f.position=pos;pos+=size;},this);},_movePanel:function(_670,pos,size){if(this.isHorizontal){_670.domNode.style.left=pos+"px";_670.domNode.style.top=0;var box={w:size,h:this.paneHeight};if(_670.resize){_670.resize(box);}else{dojo.marginBox(_670.domNode,box);}}else{_670.domNode.style.left=0;_670.domNode.style.top=pos+"px";var box={w:this.paneWidth,h:size};if(_670.resize){_670.resize(box);}else{dojo.marginBox(_670.domNode,box);}}},_moveSlider:function(_671,pos,size){if(this.isHorizontal){_671.style.left=pos+"px";_671.style.top=0;dojo.marginBox(_671,{w:size,h:this.paneHeight});}else{_671.style.left=0;_671.style.top=pos+"px";dojo.marginBox(_671,{w:this.paneWidth,h:size});}},_growPane:function(_672,pane){if(_672>0){if(pane.sizeActual>pane.sizeMin){if((pane.sizeActual-pane.sizeMin)>_672){pane.sizeActual=pane.sizeActual-_672;_672=0;}else{_672-=pane.sizeActual-pane.sizeMin;pane.sizeActual=pane.sizeMin;}}}return _672;},_checkSizes:function(){var _673=0;var _674=0;var _675=this.getChildren();dojo.forEach(_675,function(_676){_674+=_676.sizeActual;_673+=_676.sizeMin;});if(_673<=_674){var _677=0;dojo.forEach(_675,function(_678){if(_678.sizeActual<_678.sizeMin){_677+=_678.sizeMin-_678.sizeActual;_678.sizeActual=_678.sizeMin;}});if(_677>0){var list=this.isDraggingLeft?_675.reverse():_675;dojo.forEach(list,function(_679){_677=this._growPane(_677,_679);},this);}}else{dojo.forEach(_675,function(_67a){_67a.sizeActual=Math.round(_674*(_67a.sizeMin/_673));});}},beginSizing:function(e,i){var _67b=this.getChildren();this.paneBefore=_67b[i];this.paneAfter=_67b[i+1];this.isSizing=true;this.sizingSplitter=this.sizers[i];if(!this.cover){this.cover=dojo.create("div",{style:{position:"absolute",zIndex:5,top:0,left:0,width:"100%",height:"100%"}},this.domNode);}else{this.cover.style.zIndex=5;}this.sizingSplitter.style.zIndex=6;this.originPos=dojo.position(_67b[0].domNode,true);if(this.isHorizontal){var _67c=e.layerX||e.offsetX||0;var _67d=e.pageX;this.originPos=this.originPos.x;}else{var _67c=e.layerY||e.offsetY||0;var _67d=e.pageY;this.originPos=this.originPos.y;}this.startPoint=this.lastPoint=_67d;this.screenToClientOffset=_67d-_67c;this.dragOffset=this.lastPoint-this.paneBefore.sizeActual-this.originPos-this.paneBefore.position;if(!this.activeSizing){this._showSizingLine();}this._ownconnects=[];this._ownconnects.push(dojo.connect(dojo.doc.documentElement,"onmousemove",this,"changeSizing"));this._ownconnects.push(dojo.connect(dojo.doc.documentElement,"onmouseup",this,"endSizing"));dojo.stopEvent(e);},changeSizing:function(e){if(!this.isSizing){return;}this.lastPoint=this.isHorizontal?e.pageX:e.pageY;this.movePoint();if(this.activeSizing){this._updateSize();}else{this._moveSizingLine();}dojo.stopEvent(e);},endSizing:function(e){if(!this.isSizing){return;}if(this.cover){this.cover.style.zIndex=-1;}if(!this.activeSizing){this._hideSizingLine();}this._updateSize();this.isSizing=false;if(this.persist){this._saveState(this);}dojo.forEach(this._ownconnects,dojo.disconnect);},movePoint:function(){var p=this.lastPoint-this.screenToClientOffset;var a=p-this.dragOffset;a=this.legaliseSplitPoint(a);p=a+this.dragOffset;this.lastPoint=p+this.screenToClientOffset;},legaliseSplitPoint:function(a){a+=this.sizingSplitter.position;this.isDraggingLeft=!!(a>0);if(!this.activeSizing){var min=this.paneBefore.position+this.paneBefore.sizeMin;if(a<min){a=min;}var max=this.paneAfter.position+(this.paneAfter.sizeActual-(this.sizerWidth+this.paneAfter.sizeMin));if(a>max){a=max;}}a-=this.sizingSplitter.position;this._checkSizes();return a;},_updateSize:function(){var pos=this.lastPoint-this.dragOffset-this.originPos;var _67e=this.paneBefore.position;var _67f=this.paneAfter.position+this.paneAfter.sizeActual;this.paneBefore.sizeActual=pos-_67e;this.paneAfter.position=pos+this.sizerWidth;this.paneAfter.sizeActual=_67f-this.paneAfter.position;dojo.forEach(this.getChildren(),function(_680){_680.sizeShare=_680.sizeActual;});if(this._started){this.layout();}},_showSizingLine:function(){this._moveSizingLine();dojo.marginBox(this.virtualSizer,this.isHorizontal?{w:this.sizerWidth,h:this.paneHeight}:{w:this.paneWidth,h:this.sizerWidth});this.virtualSizer.style.display="block";},_hideSizingLine:function(){this.virtualSizer.style.display="none";},_moveSizingLine:function(){var pos=(this.lastPoint-this.startPoint)+this.sizingSplitter.position;dojo.style(this.virtualSizer,(this.isHorizontal?"left":"top"),pos+"px");},_getCookieName:function(i){return this.id+"_"+i;},_restoreState:function(){dojo.forEach(this.getChildren(),function(_681,i){var _682=this._getCookieName(i);var _683=dojo.cookie(_682);if(_683){var pos=parseInt(_683);if(typeof pos=="number"){_681.sizeShare=pos;}}},this);},_saveState:function(){if(!this.persist){return;}dojo.forEach(this.getChildren(),function(_684,i){dojo.cookie(this._getCookieName(i),_684.sizeShare,{expires:365});},this);}});dojo.extend(dijit._Widget,{sizeMin:10,sizeShare:10});}if(!dojo._hasResource["dijit.layout._TabContainerBase"]){dojo._hasResource["dijit.layout._TabContainerBase"]=true;dojo.provide("dijit.layout._TabContainerBase");dojo.declare("dijit.layout._TabContainerBase",[dijit.layout.StackContainer,dijit._Templated],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:false,nested:false,templateString:dojo.cache("dijit.layout","templates/TabContainer.html","<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" dojoAttachPoint=\"tablistNode\"></div>\n\t<div dojoAttachPoint=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" dojoAttachPoint=\"containerNode\"></div>\n</div>\n"),postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.srcNodeRef&&dojo.style(this.srcNodeRef,"visibility","hidden");this.inherited(arguments);},postCreate:function(){this.inherited(arguments);this.tablist=this._makeController(this.tablistNode);if(!this.doLayout){dojo.addClass(this.domNode,"dijitTabContainerNoLayout");}if(this.nested){dojo.addClass(this.domNode,"dijitTabContainerNested");dojo.addClass(this.tablist.containerNode,"dijitTabContainerTabListNested");dojo.addClass(this.tablistSpacer,"dijitTabContainerSpacerNested");dojo.addClass(this.containerNode,"dijitTabPaneWrapperNested");}else{dojo.addClass(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"));}},_setupChild:function(tab){dojo.addClass(tab.domNode,"dijitTabPane");this.inherited(arguments);},startup:function(){if(this._started){return;}this.tablist.startup();this.inherited(arguments);},layout:function(){if(!this._contentBox||typeof (this._contentBox.l)=="undefined"){return;}var sc=this.selectedChildWidget;if(this.doLayout){var _685=this.tabPosition.replace(/-h/,"");this.tablist.layoutAlign=_685;var _686=[this.tablist,{domNode:this.tablistSpacer,layoutAlign:_685},{domNode:this.containerNode,layoutAlign:"client"}];dijit.layout.layoutChildren(this.domNode,this._contentBox,_686);this._containerContentBox=dijit.layout.marginBox2contentBox(this.containerNode,_686[2]);if(sc&&sc.resize){sc.resize(this._containerContentBox);}}else{if(this.tablist.resize){this.tablist.resize({w:dojo.contentBox(this.domNode).w});}if(sc&&sc.resize){sc.resize();}}},destroy:function(){if(this.tablist){this.tablist.destroy();}this.inherited(arguments);}});}if(!dojo._hasResource["dijit.layout.TabController"]){dojo._hasResource["dijit.layout.TabController"]=true;dojo.provide("dijit.layout.TabController");dojo.declare("dijit.layout.TabController",dijit.layout.StackController,{templateString:"<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'></div>",tabPosition:"top",buttonWidget:"dijit.layout._TabButton",_rectifyRtlTabList:function(){if(0>=this.tabPosition.indexOf("-h")){return;}if(!this.pane2button){return;}var _687=0;for(var pane in this.pane2button){var ow=this.pane2button[pane].innerDiv.scrollWidth;_687=Math.max(_687,ow);}for(pane in this.pane2button){this.pane2button[pane].innerDiv.style.width=_687+"px";}}});dojo.declare("dijit.layout._TabButton",dijit.layout._StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:dojo.cache("dijit.layout","templates/_TabButton.html","<div waiRole=\"presentation\" dojoAttachPoint=\"titleNode\" dojoAttachEvent='onclick:onClick'>\n    <div waiRole=\"presentation\" class='dijitTabInnerDiv' dojoAttachPoint='innerDiv'>\n        <div waiRole=\"presentation\" class='dijitTabContent' dojoAttachPoint='tabContent'>\n        \t<div waiRole=\"presentation\" dojoAttachPoint='focusNode'>\n\t\t        <img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon\" dojoAttachPoint='iconNode' />\n\t\t        <span dojoAttachPoint='containerNode' class='tabLabel'></span>\n\t\t        <span class=\"dijitInline dijitTabCloseButton dijitTabCloseIcon\" dojoAttachPoint='closeNode'\n\t\t        \t\tdojoAttachEvent='onclick: onClickCloseButton' waiRole=\"presentation\">\n\t\t            <span dojoAttachPoint='closeText' class='dijitTabCloseText'>x</span\n\t\t        ></span>\n\t\t\t</div>\n        </div>\n    </div>\n</div>\n"),scrollOnFocus:false,postMixInProperties:function(){if(!this.iconClass){this.iconClass="dijitTabButtonIcon";}},postCreate:function(){this.inherited(arguments);dojo.setSelectable(this.containerNode,false);if(this.iconNode.className=="dijitTabButtonIcon"){dojo.style(this.iconNode,"width","1px");}},startup:function(){this.inherited(arguments);var n=this.domNode;setTimeout(function(){n.className=n.className;},1);},_setCloseButtonAttr:function(disp){this.closeButton=disp;dojo.toggleClass(this.innerDiv,"dijitClosable",disp);this.closeNode.style.display=disp?"":"none";if(disp){var _688=dojo.i18n.getLocalization("dijit","common");if(this.closeNode){dojo.attr(this.closeNode,"title",_688.itemClose);}var _688=dojo.i18n.getLocalization("dijit","common");this._closeMenu=new dijit.Menu({id:this.id+"_Menu",dir:this.dir,lang:this.lang,targetNodeIds:[this.domNode]});this._closeMenu.addChild(new dijit.MenuItem({label:_688.itemClose,dir:this.dir,lang:this.lang,onClick:dojo.hitch(this,"onClickCloseButton")}));}else{if(this._closeMenu){this._closeMenu.destroyRecursive();delete this._closeMenu;}}},_setLabelAttr:function(_689){this.inherited(arguments);if(this.showLabel==false&&!this.params.title){this.iconNode.alt=dojo.trim(this.containerNode.innerText||this.containerNode.textContent||"");}},destroy:function(){if(this._closeMenu){this._closeMenu.destroyRecursive();delete this._closeMenu;}this.inherited(arguments);}});}if(!dojo._hasResource["dijit.layout.ScrollingTabController"]){dojo._hasResource["dijit.layout.ScrollingTabController"]=true;dojo.provide("dijit.layout.ScrollingTabController");dojo.declare("dijit.layout.ScrollingTabController",dijit.layout.TabController,{templateString:dojo.cache("dijit.layout","templates/ScrollingTabController.html","<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_menuBtn\" iconClass=\"dijitTabStripMenuIcon\"\n\t\t\tdojoAttachPoint=\"_menuBtn\" showLabel=false>&#9660;</div>\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_leftBtn\" iconClass=\"dijitTabStripSlideLeftIcon\"\n\t\t\tdojoAttachPoint=\"_leftBtn\" dojoAttachEvent=\"onClick: doSlideLeft\" showLabel=false>&#9664;</div>\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_rightBtn\" iconClass=\"dijitTabStripSlideRightIcon\"\n\t\t\tdojoAttachPoint=\"_rightBtn\" dojoAttachEvent=\"onClick: doSlideRight\" showLabel=false>&#9654;</div>\n\t<div class='dijitTabListWrapper' dojoAttachPoint='tablistWrapper'>\n\t\t<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'\n\t\t\t\tdojoAttachPoint='containerNode' class='nowrapTabStrip'></div>\n\t</div>\n</div>\n"),useMenu:true,useSlider:true,tabStripClass:"",widgetsInTemplate:true,_minScroll:5,attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{"class":"containerNode"}),postCreate:function(){this.inherited(arguments);var n=this.domNode;this.scrollNode=this.tablistWrapper;this._initButtons();if(!this.tabStripClass){this.tabStripClass="dijitTabContainer"+this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"")+"None";dojo.addClass(n,"tabStrip-disabled");}dojo.addClass(this.tablistWrapper,this.tabStripClass);},onStartup:function(){this.inherited(arguments);dojo.style(this.domNode,"visibility","visible");this._postStartup=true;},onAddChild:function(page,_68a){this.inherited(arguments);var _68b;if(this.useMenu){var _68c=this.containerId;_68b=new dijit.MenuItem({id:page.id+"_stcMi",label:page.title,dir:page.dir,lang:page.lang,onClick:dojo.hitch(this,function(){var _68d=dijit.byId(_68c);_68d.selectChild(page);})});this._menuChildren[page.id]=_68b;this._menu.addChild(_68b,_68a);}this.pane2handles[page.id].push(this.connect(this.pane2button[page.id],"set",function(name,_68e){if(this._postStartup){if(name=="label"){if(_68b){_68b.set(name,_68e);}if(this._dim){this.resize(this._dim);}}}}));dojo.style(this.containerNode,"width",(dojo.style(this.containerNode,"width")+200)+"px");},onRemoveChild:function(page,_68f){var _690=this.pane2button[page.id];if(this._selectedTab===_690.domNode){this._selectedTab=null;}if(this.useMenu&&page&&page.id&&this._menuChildren[page.id]){this._menu.removeChild(this._menuChildren[page.id]);this._menuChildren[page.id].destroy();delete this._menuChildren[page.id];}this.inherited(arguments);},_initButtons:function(){this._menuChildren={};this._btnWidth=0;this._buttons=dojo.query("> .tabStripButton",this.domNode).filter(function(btn){if((this.useMenu&&btn==this._menuBtn.domNode)||(this.useSlider&&(btn==this._rightBtn.domNode||btn==this._leftBtn.domNode))){this._btnWidth+=dojo.marginBox(btn).w;return true;}else{dojo.style(btn,"display","none");return false;}},this);if(this.useMenu){this._menu=new dijit.Menu({id:this.id+"_menu",dir:this.dir,lang:this.lang,targetNodeIds:[this._menuBtn.domNode],leftClickToOpen:true,refocus:false});this._supportingWidgets.push(this._menu);}},_getTabsWidth:function(){var _691=this.getChildren();if(_691.length){var _692=_691[this.isLeftToRight()?0:_691.length-1].domNode,_693=_691[this.isLeftToRight()?_691.length-1:0].domNode;return _693.offsetLeft+dojo.style(_693,"width")-_692.offsetLeft;}else{return 0;}},_enableBtn:function(_694){var _695=this._getTabsWidth();_694=_694||dojo.style(this.scrollNode,"width");return _695>0&&_694<_695;},resize:function(dim){if(this.domNode.offsetWidth==0){return;}this._dim=dim;this.scrollNode.style.height="auto";this._contentBox=dijit.layout.marginBox2contentBox(this.domNode,{h:0,w:dim.w});this._contentBox.h=this.scrollNode.offsetHeight;dojo.contentBox(this.domNode,this._contentBox);var _696=this._enableBtn(this._contentBox.w);this._buttons.style("display",_696?"":"none");this._leftBtn.layoutAlign="left";this._rightBtn.layoutAlign="right";this._menuBtn.layoutAlign=this.isLeftToRight()?"right":"left";dijit.layout.layoutChildren(this.domNode,this._contentBox,[this._menuBtn,this._leftBtn,this._rightBtn,{domNode:this.scrollNode,layoutAlign:"client"}]);if(this._selectedTab){if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}var w=this.scrollNode,sl=this._convertToScrollLeft(this._getScrollForSelectedTab());w.scrollLeft=sl;}this._setButtonClass(this._getScroll());this._postResize=true;},_getScroll:function(){var sl=(this.isLeftToRight()||dojo.isIE<8||(dojo.isIE&&dojo.isQuirks)||dojo.isWebKit)?this.scrollNode.scrollLeft:dojo.style(this.containerNode,"width")-dojo.style(this.scrollNode,"width")+(dojo.isIE==8?-1:1)*this.scrollNode.scrollLeft;return sl;},_convertToScrollLeft:function(val){if(this.isLeftToRight()||dojo.isIE<8||(dojo.isIE&&dojo.isQuirks)||dojo.isWebKit){return val;}else{var _697=dojo.style(this.containerNode,"width")-dojo.style(this.scrollNode,"width");return (dojo.isIE==8?-1:1)*(val-_697);}},onSelectChild:function(page){var tab=this.pane2button[page.id];if(!tab||!page){return;}var node=tab.domNode;if(this._postResize&&node!=this._selectedTab){this._selectedTab=node;var sl=this._getScroll();if(sl>node.offsetLeft||sl+dojo.style(this.scrollNode,"width")<node.offsetLeft+dojo.style(node,"width")){this.createSmoothScroll().play();}}this.inherited(arguments);},_getScrollBounds:function(){var _698=this.getChildren(),_699=dojo.style(this.scrollNode,"width"),_69a=dojo.style(this.containerNode,"width"),_69b=_69a-_699,_69c=this._getTabsWidth();if(_698.length&&_69c>_699){return {min:this.isLeftToRight()?0:_698[_698.length-1].domNode.offsetLeft,max:this.isLeftToRight()?(_698[_698.length-1].domNode.offsetLeft+dojo.style(_698[_698.length-1].domNode,"width"))-_699:_69b};}else{var _69d=this.isLeftToRight()?0:_69b;return {min:_69d,max:_69d};}},_getScrollForSelectedTab:function(){var w=this.scrollNode,n=this._selectedTab,_69e=dojo.style(this.scrollNode,"width"),_69f=this._getScrollBounds();var pos=(n.offsetLeft+dojo.style(n,"width")/2)-_69e/2;pos=Math.min(Math.max(pos,_69f.min),_69f.max);return pos;},createSmoothScroll:function(x){if(arguments.length>0){var _6a0=this._getScrollBounds();x=Math.min(Math.max(x,_6a0.min),_6a0.max);}else{x=this._getScrollForSelectedTab();}if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}var self=this,w=this.scrollNode,anim=new dojo._Animation({beforeBegin:function(){if(this.curve){delete this.curve;}var oldS=w.scrollLeft,newS=self._convertToScrollLeft(x);anim.curve=new dojo._Line(oldS,newS);},onAnimate:function(val){w.scrollLeft=val;}});this._anim=anim;this._setButtonClass(x);return anim;},_getBtnNode:function(e){var n=e.target;while(n&&!dojo.hasClass(n,"tabStripButton")){n=n.parentNode;}return n;},doSlideRight:function(e){this.doSlide(1,this._getBtnNode(e));},doSlideLeft:function(e){this.doSlide(-1,this._getBtnNode(e));},doSlide:function(_6a1,node){if(node&&dojo.hasClass(node,"dijitTabDisabled")){return;}var _6a2=dojo.style(this.scrollNode,"width");var d=(_6a2*0.75)*_6a1;var to=this._getScroll()+d;this._setButtonClass(to);this.createSmoothScroll(to).play();},_setButtonClass:function(_6a3){var _6a4=this._getScrollBounds();this._leftBtn.set("disabled",_6a3<=_6a4.min);this._rightBtn.set("disabled",_6a3>=_6a4.max);}});dojo.declare("dijit.layout._ScrollingTabControllerButton",dijit.form.Button,{baseClass:"dijitTab tabStripButton",templateString:dojo.cache("dijit.layout","templates/_ScrollingTabControllerButton.html","<div dojoAttachEvent=\"onclick:_onButtonClick\">\n\t<div waiRole=\"presentation\" class=\"dijitTabInnerDiv\" dojoattachpoint=\"innerDiv,focusNode\">\n\t\t<div waiRole=\"presentation\" class=\"dijitTabContent dijitButtonContents\" dojoattachpoint=\"tabContent\">\n\t\t\t<img waiRole=\"presentation\" alt=\"\" src=\"${_blankGif}\" class=\"dijitTabStripIcon\" dojoAttachPoint=\"iconNode\"/>\n\t\t\t<span dojoAttachPoint=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n\t\t</div>\n\t</div>\n</div>\n"),tabIndex:"-1"});}if(!dojo._hasResource["dijit.layout.TabContainer"]){dojo._hasResource["dijit.layout.TabContainer"]=true;dojo.provide("dijit.layout.TabContainer");dojo.declare("dijit.layout.TabContainer",dijit.layout._TabContainerBase,{useMenu:true,useSlider:true,controllerWidget:"",_makeController:function(_6a5){var cls=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout"),_6a6=dojo.getObject(this.controllerWidget);return new _6a6({id:this.id+"_tablist",dir:this.dir,lang:this.lang,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":cls,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},_6a5);},postMixInProperties:function(){this.inherited(arguments);if(!this.controllerWidget){this.controllerWidget=(this.tabPosition=="top"||this.tabPosition=="bottom")&&!this.nested?"dijit.layout.ScrollingTabController":"dijit.layout.TabController";}}});}if(!dojo._hasResource["dijit.dijit-all"]){dojo._hasResource["dijit.dijit-all"]=true;console.warn("dijit-all may include much more code than your application actually requires. We strongly recommend that you investigate a custom build or the web build tool");dojo.provide("dijit.dijit-all");}dojo.i18n._preloadLocalizations("dijit.nls.dijit-all",["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/lib/dijit/dijit-all.js.uncompressed.js b/lib/dijit/dijit-all.js.uncompressed.js
new file mode 100644 (file)
index 0000000..1ce6041
--- /dev/null
@@ -0,0 +1,28580 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+if(!dojo._hasResource["dojo.colors"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.colors"] = true;
+dojo.provide("dojo.colors");
+
+//TODO: this module appears to break naming conventions
+
+/*=====
+dojo.colors = {
+       // summary: Color utilities
+}
+=====*/
+
+(function(){
+       // this is a standard conversion prescribed by the CSS3 Color Module
+       var hue2rgb = function(m1, m2, h){
+               if(h < 0){ ++h; }
+               if(h > 1){ --h; }
+               var h6 = 6 * h;
+               if(h6 < 1){ return m1 + (m2 - m1) * h6; }
+               if(2 * h < 1){ return m2; }
+               if(3 * h < 2){ return m1 + (m2 - m1) * (2 / 3 - h) * 6; }
+               return m1;
+       };
+       
+       dojo.colorFromRgb = function(/*String*/ color, /*dojo.Color?*/ obj){
+               // summary:
+               //              get rgb(a) array from css-style color declarations
+               // description:
+               //              this function can handle all 4 CSS3 Color Module formats: rgb,
+               //              rgba, hsl, hsla, including rgb(a) with percentage values.
+               var m = color.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);
+               if(m){
+                       var c = m[2].split(/\s*,\s*/), l = c.length, t = m[1], a;
+                       if((t == "rgb" && l == 3) || (t == "rgba" && l == 4)){
+                               var r = c[0];
+                               if(r.charAt(r.length - 1) == "%"){
+                                       // 3 rgb percentage values
+                                       a = dojo.map(c, function(x){
+                                               return parseFloat(x) * 2.56;
+                                       });
+                                       if(l == 4){ a[3] = c[3]; }
+                                       return dojo.colorFromArray(a, obj);     // dojo.Color
+                               }
+                               return dojo.colorFromArray(c, obj);     // dojo.Color
+                       }
+                       if((t == "hsl" && l == 3) || (t == "hsla" && l == 4)){
+                               // normalize hsl values
+                               var H = ((parseFloat(c[0]) % 360) + 360) % 360 / 360,
+                                       S = parseFloat(c[1]) / 100,
+                                       L = parseFloat(c[2]) / 100,
+                                       // calculate rgb according to the algorithm 
+                                       // recommended by the CSS3 Color Module 
+                                       m2 = L <= 0.5 ? L * (S + 1) : L + S - L * S, 
+                                       m1 = 2 * L - m2;
+                               a = [
+                                       hue2rgb(m1, m2, H + 1 / 3) * 256,
+                                       hue2rgb(m1, m2, H) * 256,
+                                       hue2rgb(m1, m2, H - 1 / 3) * 256,
+                                       1
+                               ];
+                               if(l == 4){ a[3] = c[3]; }
+                               return dojo.colorFromArray(a, obj);     // dojo.Color
+                       }
+               }
+               return null;    // dojo.Color
+       };
+       
+       var confine = function(c, low, high){
+               // summary:
+               //              sanitize a color component by making sure it is a number,
+               //              and clamping it to valid values
+               c = Number(c);
+               return isNaN(c) ? high : c < low ? low : c > high ? high : c;   // Number
+       };
+       
+       dojo.Color.prototype.sanitize = function(){
+               // summary: makes sure that the object has correct attributes
+               var t = this;
+               t.r = Math.round(confine(t.r, 0, 255));
+               t.g = Math.round(confine(t.g, 0, 255));
+               t.b = Math.round(confine(t.b, 0, 255));
+               t.a = confine(t.a, 0, 1);
+               return this;    // dojo.Color
+       };
+})();
+
+
+dojo.colors.makeGrey = function(/*Number*/ g, /*Number?*/ a){
+       // summary: creates a greyscale color with an optional alpha
+       return dojo.colorFromArray([g, g, g, a]);
+};
+
+// mixin all CSS3 named colors not already in _base, along with SVG 1.0 variant spellings
+dojo.mixin(dojo.Color.named, {
+       aliceblue:      [240,248,255],
+       antiquewhite:   [250,235,215],
+       aquamarine:     [127,255,212],
+       azure:  [240,255,255],
+       beige:  [245,245,220],
+       bisque: [255,228,196],
+       blanchedalmond: [255,235,205],
+       blueviolet:     [138,43,226],
+       brown:  [165,42,42],
+       burlywood:      [222,184,135],
+       cadetblue:      [95,158,160],
+       chartreuse:     [127,255,0],
+       chocolate:      [210,105,30],
+       coral:  [255,127,80],
+       cornflowerblue: [100,149,237],
+       cornsilk:       [255,248,220],
+       crimson:        [220,20,60],
+       cyan:   [0,255,255],
+       darkblue:       [0,0,139],
+       darkcyan:       [0,139,139],
+       darkgoldenrod:  [184,134,11],
+       darkgray:       [169,169,169],
+       darkgreen:      [0,100,0],
+       darkgrey:       [169,169,169],
+       darkkhaki:      [189,183,107],
+       darkmagenta:    [139,0,139],
+       darkolivegreen: [85,107,47],
+       darkorange:     [255,140,0],
+       darkorchid:     [153,50,204],
+       darkred:        [139,0,0],
+       darksalmon:     [233,150,122],
+       darkseagreen:   [143,188,143],
+       darkslateblue:  [72,61,139],
+       darkslategray:  [47,79,79],
+       darkslategrey:  [47,79,79],
+       darkturquoise:  [0,206,209],
+       darkviolet:     [148,0,211],
+       deeppink:       [255,20,147],
+       deepskyblue:    [0,191,255],
+       dimgray:        [105,105,105],
+       dimgrey:        [105,105,105],
+       dodgerblue:     [30,144,255],
+       firebrick:      [178,34,34],
+       floralwhite:    [255,250,240],
+       forestgreen:    [34,139,34],
+       gainsboro:      [220,220,220],
+       ghostwhite:     [248,248,255],
+       gold:   [255,215,0],
+       goldenrod:      [218,165,32],
+       greenyellow:    [173,255,47],
+       grey:   [128,128,128],
+       honeydew:       [240,255,240],
+       hotpink:        [255,105,180],
+       indianred:      [205,92,92],
+       indigo: [75,0,130],
+       ivory:  [255,255,240],
+       khaki:  [240,230,140],
+       lavender:       [230,230,250],
+       lavenderblush:  [255,240,245],
+       lawngreen:      [124,252,0],
+       lemonchiffon:   [255,250,205],
+       lightblue:      [173,216,230],
+       lightcoral:     [240,128,128],
+       lightcyan:      [224,255,255],
+       lightgoldenrodyellow:   [250,250,210],
+       lightgray:      [211,211,211],
+       lightgreen:     [144,238,144],
+       lightgrey:      [211,211,211],
+       lightpink:      [255,182,193],
+       lightsalmon:    [255,160,122],
+       lightseagreen:  [32,178,170],
+       lightskyblue:   [135,206,250],
+       lightslategray: [119,136,153],
+       lightslategrey: [119,136,153],
+       lightsteelblue: [176,196,222],
+       lightyellow:    [255,255,224],
+       limegreen:      [50,205,50],
+       linen:  [250,240,230],
+       magenta:        [255,0,255],
+       mediumaquamarine:       [102,205,170],
+       mediumblue:     [0,0,205],
+       mediumorchid:   [186,85,211],
+       mediumpurple:   [147,112,219],
+       mediumseagreen: [60,179,113],
+       mediumslateblue:        [123,104,238],
+       mediumspringgreen:      [0,250,154],
+       mediumturquoise:        [72,209,204],
+       mediumvioletred:        [199,21,133],
+       midnightblue:   [25,25,112],
+       mintcream:      [245,255,250],
+       mistyrose:      [255,228,225],
+       moccasin:       [255,228,181],
+       navajowhite:    [255,222,173],
+       oldlace:        [253,245,230],
+       olivedrab:      [107,142,35],
+       orange: [255,165,0],
+       orangered:      [255,69,0],
+       orchid: [218,112,214],
+       palegoldenrod:  [238,232,170],
+       palegreen:      [152,251,152],
+       paleturquoise:  [175,238,238],
+       palevioletred:  [219,112,147],
+       papayawhip:     [255,239,213],
+       peachpuff:      [255,218,185],
+       peru:   [205,133,63],
+       pink:   [255,192,203],
+       plum:   [221,160,221],
+       powderblue:     [176,224,230],
+       rosybrown:      [188,143,143],
+       royalblue:      [65,105,225],
+       saddlebrown:    [139,69,19],
+       salmon: [250,128,114],
+       sandybrown:     [244,164,96],
+       seagreen:       [46,139,87],
+       seashell:       [255,245,238],
+       sienna: [160,82,45],
+       skyblue:        [135,206,235],
+       slateblue:      [106,90,205],
+       slategray:      [112,128,144],
+       slategrey:      [112,128,144],
+       snow:   [255,250,250],
+       springgreen:    [0,255,127],
+       steelblue:      [70,130,180],
+       tan:    [210,180,140],
+       thistle:        [216,191,216],
+       tomato: [255,99,71],
+       transparent: [0, 0, 0, 0],
+       turquoise:      [64,224,208],
+       violet: [238,130,238],
+       wheat:  [245,222,179],
+       whitesmoke:     [245,245,245],
+       yellowgreen:    [154,205,50]
+});
+
+}
+
+if(!dojo._hasResource["dojo.i18n"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.i18n"] = true;
+dojo.provide("dojo.i18n");
+
+/*=====
+dojo.i18n = {
+       // summary: Utility classes to enable loading of resources for internationalization (i18n)
+};
+=====*/
+
+dojo.i18n.getLocalization = function(/*String*/packageName, /*String*/bundleName, /*String?*/locale){
+       //      summary:
+       //              Returns an Object containing the localization for a given resource
+       //              bundle in a package, matching the specified locale.
+       //      description:
+       //              Returns a hash containing name/value pairs in its prototypesuch
+       //              that values can be easily overridden.  Throws an exception if the
+       //              bundle is not found.  Bundle must have already been loaded by
+       //              `dojo.requireLocalization()` or by a build optimization step.  NOTE:
+       //              try not to call this method as part of an object property
+       //              definition (`var foo = { bar: dojo.i18n.getLocalization() }`).  In
+       //              some loading situations, the bundle may not be available in time
+       //              for the object definition.  Instead, call this method inside a
+       //              function that is run after all modules load or the page loads (like
+       //              in `dojo.addOnLoad()`), or in a widget lifecycle method.
+       //      packageName:
+       //              package which is associated with this resource
+       //      bundleName:
+       //              the base filename of the resource bundle (without the ".js" suffix)
+       //      locale:
+       //              the variant to load (optional).  By default, the locale defined by
+       //              the host environment: dojo.locale
+
+       locale = dojo.i18n.normalizeLocale(locale);
+
+       // look for nearest locale match
+       var elements = locale.split('-');
+       var module = [packageName,"nls",bundleName].join('.');
+       var bundle = dojo._loadedModules[module];
+       if(bundle){
+               var localization;
+               for(var i = elements.length; i > 0; i--){
+                       var loc = elements.slice(0, i).join('_');
+                       if(bundle[loc]){
+                               localization = bundle[loc];
+                               break;
+                       }
+               }
+               if(!localization){
+                       localization = bundle.ROOT;
+               }
+
+               // make a singleton prototype so that the caller won't accidentally change the values globally
+               if(localization){
+                       var clazz = function(){};
+                       clazz.prototype = localization;
+                       return new clazz(); // Object
+               }
+       }
+
+       throw new Error("Bundle not found: " + bundleName + " in " + packageName+" , locale=" + locale);
+};
+
+dojo.i18n.normalizeLocale = function(/*String?*/locale){
+       //      summary:
+       //              Returns canonical form of locale, as used by Dojo.
+       //
+       //  description:
+       //              All variants are case-insensitive and are separated by '-' as specified in [RFC 3066](http://www.ietf.org/rfc/rfc3066.txt).
+       //              If no locale is specified, the dojo.locale is returned.  dojo.locale is defined by
+       //              the user agent's locale unless overridden by djConfig.
+
+       var result = locale ? locale.toLowerCase() : dojo.locale;
+       if(result == "root"){
+               result = "ROOT";
+       }
+       return result; // String
+};
+
+dojo.i18n._requireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*String?*/availableFlatLocales){
+       //      summary:
+       //              See dojo.requireLocalization()
+       //      description:
+       //              Called by the bootstrap, but factored out so that it is only
+       //              included in the build when needed.
+
+       var targetLocale = dojo.i18n.normalizeLocale(locale);
+       var bundlePackage = [moduleName, "nls", bundleName].join(".");
+       // NOTE: 
+       //              When loading these resources, the packaging does not match what is
+       //              on disk.  This is an implementation detail, as this is just a
+       //              private data structure to hold the loaded resources.  e.g.
+       //              `tests/hello/nls/en-us/salutations.js` is loaded as the object
+       //              `tests.hello.nls.salutations.en_us={...}` The structure on disk is
+       //              intended to be most convenient for developers and translators, but
+       //              in memory it is more logical and efficient to store in a different
+       //              order.  Locales cannot use dashes, since the resulting path will
+       //              not evaluate as valid JS, so we translate them to underscores.
+       
+       //Find the best-match locale to load if we have available flat locales.
+       var bestLocale = "";
+       if(availableFlatLocales){
+               var flatLocales = availableFlatLocales.split(",");
+               for(var i = 0; i < flatLocales.length; i++){
+                       //Locale must match from start of string.
+                       //Using ["indexOf"] so customBase builds do not see
+                       //this as a dojo._base.array dependency.
+                       if(targetLocale["indexOf"](flatLocales[i]) == 0){
+                               if(flatLocales[i].length > bestLocale.length){
+                                       bestLocale = flatLocales[i];
+                               }
+                       }
+               }
+               if(!bestLocale){
+                       bestLocale = "ROOT";
+               }               
+       }
+
+       //See if the desired locale is already loaded.
+       var tempLocale = availableFlatLocales ? bestLocale : targetLocale;
+       var bundle = dojo._loadedModules[bundlePackage];
+       var localizedBundle = null;
+       if(bundle){
+               if(dojo.config.localizationComplete && bundle._built){return;}
+               var jsLoc = tempLocale.replace(/-/g, '_');
+               var translationPackage = bundlePackage+"."+jsLoc;
+               localizedBundle = dojo._loadedModules[translationPackage];
+       }
+
+       if(!localizedBundle){
+               bundle = dojo["provide"](bundlePackage);
+               var syms = dojo._getModuleSymbols(moduleName);
+               var modpath = syms.concat("nls").join("/");
+               var parent;
+
+               dojo.i18n._searchLocalePath(tempLocale, availableFlatLocales, function(loc){
+                       var jsLoc = loc.replace(/-/g, '_');
+                       var translationPackage = bundlePackage + "." + jsLoc;
+                       var loaded = false;
+                       if(!dojo._loadedModules[translationPackage]){
+                               // Mark loaded whether it's found or not, so that further load attempts will not be made
+                               dojo["provide"](translationPackage);
+                               var module = [modpath];
+                               if(loc != "ROOT"){module.push(loc);}
+                               module.push(bundleName);
+                               var filespec = module.join("/") + '.js';
+                               loaded = dojo._loadPath(filespec, null, function(hash){
+                                       // Use singleton with prototype to point to parent bundle, then mix-in result from loadPath
+                                       var clazz = function(){};
+                                       clazz.prototype = parent;
+                                       bundle[jsLoc] = new clazz();
+                                       for(var j in hash){ bundle[jsLoc][j] = hash[j]; }
+                               });
+                       }else{
+                               loaded = true;
+                       }
+                       if(loaded && bundle[jsLoc]){
+                               parent = bundle[jsLoc];
+                       }else{
+                               bundle[jsLoc] = parent;
+                       }
+                       
+                       if(availableFlatLocales){
+                               //Stop the locale path searching if we know the availableFlatLocales, since
+                               //the first call to this function will load the only bundle that is needed.
+                               return true;
+                       }
+               });
+       }
+
+       //Save the best locale bundle as the target locale bundle when we know the
+       //the available bundles.
+       if(availableFlatLocales && targetLocale != bestLocale){
+               bundle[targetLocale.replace(/-/g, '_')] = bundle[bestLocale.replace(/-/g, '_')];
+       }
+};
+
+(function(){
+       // If other locales are used, dojo.requireLocalization should load them as
+       // well, by default. 
+       // 
+       // Override dojo.requireLocalization to do load the default bundle, then
+       // iterate through the extraLocale list and load those translations as
+       // well, unless a particular locale was requested.
+
+       var extra = dojo.config.extraLocale;
+       if(extra){
+               if(!extra instanceof Array){
+                       extra = [extra];
+               }
+
+               var req = dojo.i18n._requireLocalization;
+               dojo.i18n._requireLocalization = function(m, b, locale, availableFlatLocales){
+                       req(m,b,locale, availableFlatLocales);
+                       if(locale){return;}
+                       for(var i=0; i<extra.length; i++){
+                               req(m,b,extra[i], availableFlatLocales);
+                       }
+               };
+       }
+})();
+
+dojo.i18n._searchLocalePath = function(/*String*/locale, /*Boolean*/down, /*Function*/searchFunc){
+       //      summary:
+       //              A helper method to assist in searching for locale-based resources.
+       //              Will iterate through the variants of a particular locale, either up
+       //              or down, executing a callback function.  For example, "en-us" and
+       //              true will try "en-us" followed by "en" and finally "ROOT".
+
+       locale = dojo.i18n.normalizeLocale(locale);
+
+       var elements = locale.split('-');
+       var searchlist = [];
+       for(var i = elements.length; i > 0; i--){
+               searchlist.push(elements.slice(0, i).join('-'));
+       }
+       searchlist.push(false);
+       if(down){searchlist.reverse();}
+
+       for(var j = searchlist.length - 1; j >= 0; j--){
+               var loc = searchlist[j] || "ROOT";
+               var stop = searchFunc(loc);
+               if(stop){ break; }
+       }
+};
+
+dojo.i18n._preloadLocalizations = function(/*String*/bundlePrefix, /*Array*/localesGenerated){
+       //      summary:
+       //              Load built, flattened resource bundles, if available for all
+       //              locales used in the page. Only called by built layer files.
+
+       function preload(locale){
+               locale = dojo.i18n.normalizeLocale(locale);
+               dojo.i18n._searchLocalePath(locale, true, function(loc){
+                       for(var i=0; i<localesGenerated.length;i++){
+                               if(localesGenerated[i] == loc){
+                                       dojo["require"](bundlePrefix+"_"+loc);
+                                       return true; // Boolean
+                               }
+                       }
+                       return false; // Boolean
+               });
+       }
+       preload();
+       var extra = dojo.config.extraLocale||[];
+       for(var i=0; i<extra.length; i++){
+               preload(extra[i]);
+       }
+};
+
+}
+
+if(!dojo._hasResource["dijit._PaletteMixin"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._PaletteMixin"] = true;
+dojo.provide("dijit._PaletteMixin");
+
+
+dojo.declare("dijit._PaletteMixin",
+       [dijit._CssStateMixin],
+       {
+       // summary:
+       //              A keyboard accessible palette, for picking a color/emoticon/etc.
+       // description:
+       //              A mixin for a grid showing various entities, so the user can pick a certain entity.
+
+       // defaultTimeout: Number
+       //              Number of milliseconds before a held key or button becomes typematic
+       defaultTimeout: 500,
+
+       // timeoutChangeRate: Number
+       //              Fraction of time used to change the typematic timer between events
+       //              1.0 means that each typematic event fires at defaultTimeout intervals
+       //              < 1.0 means that each typematic event fires at an increasing faster rate
+       timeoutChangeRate: 0.90,
+
+       // value: String
+       //              Currently selected color/emoticon/etc.
+       value: null,
+       
+       // _selectedCell: [private] Integer
+       //              Index of the currently selected cell. Initially, none selected
+       _selectedCell: -1,
+
+       // _currentFocus: [private] DomNode
+       //              The currently focused cell (if the palette itself has focus), or otherwise
+       //              the cell to be focused when the palette itself gets focus.
+       //              Different from value, which represents the selected (i.e. clicked) cell.
+/*=====
+       _currentFocus: null,
+=====*/
+
+       // _xDim: [protected] Integer
+       //              This is the number of cells horizontally across.
+/*=====
+       _xDim: null,
+=====*/
+
+       // _yDim: [protected] Integer
+       //              This is the number of cells vertically down.
+/*=====
+       _yDim: null,
+=====*/
+
+       // tabIndex: String
+       //              Widget tab index.
+       tabIndex: "0",
+
+       // cellClass: [protected] String
+       //              CSS class applied to each cell in the palette
+       cellClass: "dijitPaletteCell",
+
+       // dyeClass: [protected] String
+       //       Name of javascript class for Object created for each cell of the palette.
+       //       dyeClass should implements dijit.Dye interface
+       dyeClass: '',
+
+       _preparePalette: function(choices, titles) {
+               // summary:
+               //              Subclass must call _preparePalette() from postCreate(), passing in the tooltip
+               //              for each cell
+               // choices: String[][]
+               //              id's for each cell of the palette, used to create Dye JS object for each cell
+               // titles: String[]
+               //              Localized tooltip for each cell
+
+               this._cells = [];
+               var url = this._blankGif;
+               
+               var dyeClassObj = dojo.getObject(this.dyeClass);
+
+               for(var row=0; row < choices.length; row++){
+                       var rowNode = dojo.create("tr", {tabIndex: "-1"}, this.gridNode);
+                       for(var col=0; col < choices[row].length; col++){
+                               var value = choices[row][col];
+                               if(value){
+                                       var cellObject = new dyeClassObj(value);
+                                       
+                                       var cellNode = dojo.create("td", {
+                                               "class": this.cellClass,
+                                               tabIndex: "-1",
+                                               title: titles[value]
+                                       });
+
+                                       // prepare cell inner structure
+                                       cellObject.fillCell(cellNode, url);
+
+                                       this.connect(cellNode, "ondijitclick", "_onCellClick");
+                                       this._trackMouseState(cellNode, this.cellClass);
+
+                                       dojo.place(cellNode, rowNode);
+
+                                       cellNode.index = this._cells.length;
+
+                                       // save cell info into _cells
+                                       this._cells.push({node:cellNode, dye:cellObject});
+                               }
+                       }
+               }
+               this._xDim = choices[0].length;
+               this._yDim = choices.length;
+
+               // Now set all events
+               // The palette itself is navigated to with the tab key on the keyboard
+               // Keyboard navigation within the Palette is with the arrow keys
+               // Spacebar selects the cell.
+               // For the up key the index is changed by negative the x dimension.
+
+               var keyIncrementMap = {
+                       UP_ARROW: -this._xDim,
+                       // The down key the index is increase by the x dimension.
+                       DOWN_ARROW: this._xDim,
+                       // Right and left move the index by 1.
+                       RIGHT_ARROW: this.isLeftToRight() ? 1 : -1,
+                       LEFT_ARROW: this.isLeftToRight() ? -1 : 1
+               };
+               for(var key in keyIncrementMap){
+                       this._connects.push(
+                               dijit.typematic.addKeyListener(
+                                       this.domNode,
+                                       {charOrCode:dojo.keys[key], ctrlKey:false, altKey:false, shiftKey:false},
+                                       this,
+                                       function(){
+                                               var increment = keyIncrementMap[key];
+                                               return function(count){ this._navigateByKey(increment, count); };
+                                       }(),
+                                       this.timeoutChangeRate,
+                                       this.defaultTimeout
+                               )
+                       );
+               }
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+
+               // Set initial navigable node.
+               this._setCurrent(this._cells[0].node);
+       },
+
+       focus: function(){
+               // summary:
+               //              Focus this widget.  Puts focus on the most recently focused cell.
+
+               // The cell already has tabIndex set, just need to set CSS and focus it
+               dijit.focus(this._currentFocus);
+       },
+
+       _onCellClick: function(/*Event*/ evt){
+               // summary:
+               //              Handler for click, enter key & space key. Selects the cell.
+               // evt:
+               //              The event.
+               // tags:
+               //              private
+
+               var target = evt.currentTarget, 
+                       value = this._getDye(target).getValue();
+
+               // First focus the clicked cell, and then send onChange() notification.
+               // onChange() (via _setValueAttr) must be after the focus call, because
+               // it may trigger a refocus to somewhere else (like the Editor content area), and that
+               // second focus should win.
+               // Use setTimeout because IE doesn't like changing focus inside of an event handler.
+               this._setCurrent(target);
+               setTimeout(dojo.hitch(this, function(){
+                       dijit.focus(target);            
+                       this._setValueAttr(value, true);                
+               }));
+
+               // workaround bug where hover class is not removed on popup because the popup is
+               // closed and then there's no onblur event on the cell
+               dojo.removeClass(target, "dijitPaletteCellHover");
+
+               dojo.stopEvent(evt);
+       },
+
+       _setCurrent: function(/*DomNode*/ node){
+               // summary:
+               //              Sets which node is the focused cell.
+               // description:
+               //              At any point in time there's exactly one
+               //              cell with tabIndex != -1.   If focus is inside the palette then
+               //              focus is on that cell.
+               //
+               //              After calling this method, arrow key handlers and mouse click handlers
+               //              should focus the cell in a setTimeout().
+               // tags:
+               //              protected
+               if("_currentFocus" in this){
+                       // Remove tabIndex on old cell
+                       dojo.attr(this._currentFocus, "tabIndex", "-1");
+               }
+
+               // Set tabIndex of new cell
+               this._currentFocus = node;
+               if(node){
+                       dojo.attr(node, "tabIndex", this.tabIndex);
+               }
+       },
+
+       _setValueAttr: function(value, priorityChange){
+               // summary:
+               //              This selects a cell. It triggers the onChange event.
+               // value: String value of the cell to select
+               // tags:
+               //              protected
+               // priorityChange:
+               //              Optional parameter used to tell the select whether or not to fire
+               //              onChange event.
+               
+               // clear old value and selected cell
+               this.value = null;
+               if(this._selectedCell >= 0){
+                       dojo.removeClass(this._cells[this._selectedCell].node, "dijitPaletteCellSelected");
+               }
+               this._selectedCell = -1;
+
+               // search for cell matching specified value
+               if(value){
+                       for(var i = 0; i < this._cells.length; i++){
+                               if(value == this._cells[i].dye.getValue()){
+                                       this._selectedCell = i;
+                                       this.value = value;
+
+                                       dojo.addClass(this._cells[i].node, "dijitPaletteCellSelected");
+
+                                       if(priorityChange || priorityChange === undefined){
+                                               this.onChange(value);
+                                       }
+
+                                       break;
+                               }
+                       }
+               }
+       },
+
+       onChange: function(value){
+               // summary:
+               //              Callback when a cell is selected.
+               // value: String
+               //              Value corresponding to cell.
+       },
+
+       _navigateByKey: function(increment, typeCount){
+               // summary:
+               //              This is the callback for typematic.
+               //              It changes the focus and the highlighed cell.
+               // increment:
+               //              How much the key is navigated.
+               // typeCount:
+               //              How many times typematic has fired.
+               // tags:
+               //              private
+
+               // typecount == -1 means the key is released.
+               if(typeCount == -1){ return; }
+
+               var newFocusIndex = this._currentFocus.index + increment;
+               if(newFocusIndex < this._cells.length && newFocusIndex > -1){
+                       var focusNode = this._cells[newFocusIndex].node;
+                       this._setCurrent(focusNode);
+
+                       // Actually focus the node, for the benefit of screen readers.
+                       // Use setTimeout because IE doesn't like changing focus inside of an event handler
+                       setTimeout(dojo.hitch(dijit, "focus", focusNode), 0);
+               }
+       },
+
+       _getDye: function(/*DomNode*/ cell){
+               // summary:
+               //              Get JS object for given cell DOMNode
+
+               return this._cells[cell.index].dye;
+       }
+});
+
+/*=====
+dojo.declare("dijit.Dye",
+       null,
+       {
+               // summary:
+               //              Interface for the JS Object associated with a palette cell (i.e. DOMNode)
+
+               constructor: function(alias){
+                       // summary:
+                       //              Initialize according to value or alias like "white"
+                       // alias: String
+               },
+
+               getValue: function(){
+                       // summary:
+                       //              Return "value" of cell; meaning of "value" varies by subclass.
+                       // description:
+                       //              For example color hex value, emoticon ascii value etc, entity hex value.
+               },
+
+               fillCell: function(cell, blankGif){
+                       // summary:
+                       //              Add cell DOMNode inner structure
+                       //      cell: DomNode
+                       //              The surrounding cell
+                       //      blankGif: String
+                       //              URL for blank cell image
+               }
+       }
+);
+=====*/
+
+}
+
+if(!dojo._hasResource["dijit.ColorPalette"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.ColorPalette"] = true;
+dojo.provide("dijit.ColorPalette");
+
+
+
+
+
+
+
+
+
+
+dojo.declare("dijit.ColorPalette",
+       [dijit._Widget, dijit._Templated, dijit._PaletteMixin],
+       {
+       // summary:
+       //              A keyboard accessible color-picking widget
+       // description:
+       //              Grid showing various colors, so the user can pick a certain color.
+       //              Can be used standalone, or as a popup.
+       //
+       // example:
+       // |    <div dojoType="dijit.ColorPalette"></div>
+       //
+       // example:
+       // |    var picker = new dijit.ColorPalette({ },srcNode);
+       // |    picker.startup();
+
+
+       // palette: String
+       //              Size of grid, either "7x10" or "3x4".
+       palette: "7x10",
+
+       // _palettes: [protected] Map
+       //              This represents the value of the colors.
+       //              The first level is a hashmap of the different palettes available.
+       //              The next two dimensions represent the columns and rows of colors.
+       _palettes: {
+               "7x10": [["white", "seashell", "cornsilk", "lemonchiffon","lightyellow", "palegreen", "paleturquoise", "lightcyan",     "lavender", "plum"],
+                               ["lightgray", "pink", "bisque", "moccasin", "khaki", "lightgreen", "lightseagreen", "lightskyblue", "cornflowerblue", "violet"],
+                               ["silver", "lightcoral", "sandybrown", "orange", "palegoldenrod", "chartreuse", "mediumturquoise",      "skyblue", "mediumslateblue","orchid"],
+                               ["gray", "red", "orangered", "darkorange", "yellow", "limegreen",       "darkseagreen", "royalblue", "slateblue", "mediumorchid"],
+                               ["dimgray", "crimson",  "chocolate", "coral", "gold", "forestgreen", "seagreen", "blue", "blueviolet", "darkorchid"],
+                               ["darkslategray","firebrick","saddlebrown", "sienna", "olive", "green", "darkcyan", "mediumblue","darkslateblue", "darkmagenta" ],
+                               ["black", "darkred", "maroon", "brown", "darkolivegreen", "darkgreen", "midnightblue", "navy", "indigo",        "purple"]],
+
+               "3x4": [["white", "lime", "green", "blue"],
+                       ["silver", "yellow", "fuchsia", "navy"],
+                       ["gray", "red", "purple", "black"]]
+       },
+
+       // _imagePaths: [protected] Map
+       //              This is stores the path to the palette images
+       _imagePaths: {
+               "7x10": dojo.moduleUrl("dijit.themes", "a11y/colors7x10.png"),
+               "3x4": dojo.moduleUrl("dijit.themes", "a11y/colors3x4.png"),
+               "7x10-rtl": dojo.moduleUrl("dijit.themes", "a11y/colors7x10-rtl.png"),
+               "3x4-rtl": dojo.moduleUrl("dijit.themes", "a11y/colors3x4-rtl.png")
+       },
+
+       // templateString: String
+       //              The template of this widget.
+       templateString: dojo.cache("dijit", "templates/ColorPalette.html", "<div class=\"dijitInline dijitColorPalette\">\n\t<img class=\"dijitColorPaletteUnder\" dojoAttachPoint=\"imageNode\" waiRole=\"presentation\" alt=\"\"/>\n\t<table class=\"dijitPaletteTable\" cellSpacing=\"0\" cellPadding=\"0\">\n\t\t<tbody dojoAttachPoint=\"gridNode\"></tbody>\n\t</table>\n</div>\n"),
+
+       baseClass: "dijitColorPalette",
+
+       dyeClass: 'dijit._Color',
+
+       buildRendering: function(){
+               // Instantiate the template, which makes a skeleton into which we'll insert a bunch of
+               // <img> nodes
+
+               this.inherited(arguments);
+
+               this.imageNode.setAttribute("src", this._imagePaths[this.palette + (this.isLeftToRight() ? "" : "-rtl")].toString());
+
+               var i18nColorNames = dojo.i18n.getLocalization("dojo", "colors", this.lang);
+               this._preparePalette(
+                       this._palettes[this.palette],
+                       i18nColorNames
+               );
+       }
+});
+
+dojo.declare("dijit._Color", dojo.Color,
+       // summary:
+       //              Object associated with each cell in a ColorPalette palette.
+       //              Implements dijit.Dye.
+       {
+               constructor: function(/*String*/alias){
+                       this._alias = alias;
+                       this.setColor(dojo.Color.named[alias]);
+               },
+
+               getValue: function(){
+                       // summary:
+                       //              Note that although dijit._Color is initialized with a value like "white" getValue() always
+                       //              returns a hex value
+                       return this.toHex();
+               },
+
+               fillCell: function(/*DOMNode*/ cell, /*String*/ blankGif){
+                       dojo.create("img", {
+                               src: blankGif,
+                               "class": "dijitPaletteImg",
+                               alt: this._alias
+                       }, cell);
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.Declaration"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.Declaration"] = true;
+dojo.provide("dijit.Declaration");
+
+
+
+dojo.declare(
+       "dijit.Declaration",
+       dijit._Widget,
+       {
+               // summary:
+               //              The Declaration widget allows a developer to declare new widget
+               //              classes directly from a snippet of markup.
+
+               // _noScript: [private] Boolean
+               //              Flag to parser to leave alone the script tags contained inside of me
+               _noScript: true,
+
+               // widgetClass: String
+               //              Name of class being declared, ex: "acme.myWidget"
+               widgetClass: "",
+
+               // propList: Object
+               //              Set of attributes for this widget along with default values, ex:
+               //              {delay: 100, title: "hello world"}
+               defaults: null,
+
+               // mixins: String[]
+               //              List containing the prototype for this widget, and also any mixins,
+               //              ex: ["dijit._Widget", "dijit._Container"]
+               mixins: [],
+
+               buildRendering: function(){
+                       var src = this.srcNodeRef.parentNode.removeChild(this.srcNodeRef),
+                               methods = dojo.query("> script[type^='dojo/method'][event]", src).orphan(),
+                               postscriptConnects = dojo.query("> script[type^='dojo/method']", src).orphan(),
+                               regularConnects = dojo.query("> script[type^='dojo/connect']", src).orphan(),
+                               srcType = src.nodeName;
+
+                       var propList = this.defaults || {};
+
+                       // For all methods defined like <script type="dojo/method" event="foo">,
+                       // add that method to prototype
+                       dojo.forEach(methods, function(s){
+                               var evt = s.getAttribute("event"),
+                                       func = dojo.parser._functionFromScript(s);
+                               propList[evt] = func;
+                       });
+
+                       // map array of strings like [ "dijit.form.Button" ] to array of mixin objects
+                       // (note that dojo.map(this.mixins, dojo.getObject) doesn't work because it passes
+                       // a bogus third argument to getObject(), confusing it)
+                       this.mixins = this.mixins.length ?
+                               dojo.map(this.mixins, function(name){ return dojo.getObject(name); } ) :
+                               [ dijit._Widget, dijit._Templated ];
+
+                       propList.widgetsInTemplate = true;
+                       propList._skipNodeCache = true;
+                       propList.templateString = "<"+srcType+" class='"+src.className+"' dojoAttachPoint='"+(src.getAttribute("dojoAttachPoint") || '')+"' dojoAttachEvent='"+(src.getAttribute("dojoAttachEvent") || '')+"' >"+src.innerHTML.replace(/\%7B/g,"{").replace(/\%7D/g,"}")+"</"+srcType+">";
+
+                       // strip things so we don't create stuff under us in the initial setup phase
+                       dojo.query("[dojoType]", src).forEach(function(node){
+                               node.removeAttribute("dojoType");
+                       });
+
+                       // create the new widget class
+                       var wc = dojo.declare(
+                               this.widgetClass,
+                               this.mixins,
+                               propList
+                       );
+
+                       // Handle <script> blocks of form:
+                       //              <script type="dojo/connect" event="foo">
+                       // and
+                       //              <script type="dojo/method">
+                       // (Note that the second one is just shorthand for a dojo/connect to postscript)
+                       // Since this is a connect in the declaration, we are actually connection to the method
+                       // in the _prototype_.
+                       var connects = regularConnects.concat(postscriptConnects);
+                       dojo.forEach(connects, function(s){
+                               var evt = s.getAttribute("event") || "postscript",
+                                       func = dojo.parser._functionFromScript(s);
+                               dojo.connect(wc.prototype, evt, func);
+                       });
+               }
+       }
+);
+
+}
+
+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.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.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.dnd.getViewport = function(){
+       // summary:
+       //              Returns a viewport size (visible part of the window)
+
+       // TODO: remove this when getViewport() moved to dojo core, see #7028
+
+       // FIXME: need more docs!!
+       var d = dojo.doc, dd = d.documentElement, w = window, b = dojo.body();
+       if(dojo.isMozilla){
+               return {w: dd.clientWidth, h: w.innerHeight};   // Object
+       }else if(!dojo.isOpera && w.innerWidth){
+               return {w: w.innerWidth, h: w.innerHeight};             // Object
+       }else if (!dojo.isOpera && dd && dd.clientWidth){
+               return {w: dd.clientWidth, h: dd.clientHeight}; // Object
+       }else if (b.clientWidth){
+               return {w: b.clientWidth, h: b.clientHeight};   // Object
+       }
+       return null;    // Object
+};
+
+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.dnd.getViewport(), 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. 
+               //              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);
+               this.marginBox = {l: e.pageX, t: e.pageY};
+               this.mouseButton = e.button;
+               var h = this.host = host, d = node.ownerDocument, 
+                       firstEvent = dojo.connect(d, "onmousemove", this, "onFirstMove");
+               this.events = [
+                       dojo.connect(d, "onmousemove", this, "onMouseMove"),
+                       dojo.connect(d, "onmouseup",   this, "onMouseUp"),
+                       // cancel text selection and text dragging
+                       dojo.connect(d, "ondragstart",   dojo.stopEvent),
+                       dojo.connect(d.body, "onselectstart", dojo.stopEvent),
+                       firstEvent
+               ];
+               // notify that the move has started
+               if(h && h.onMoveStart){
+                       h.onMoveStart(this);
+               }
+       },
+       // mouse event processors
+       onMouseMove: function(e){
+               // summary:
+               //              event processor for onmousemove
+               // e: Event
+               //              mouse event
+               dojo.dnd.autoScroll(e);
+               var m = this.marginBox;
+               this.host.onMove(this, {l: m.l + e.pageX, t: m.t + e.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);
+       },
+       // 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);
+               }
+               dojo.disconnect(this.events.pop());
+       },
+       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"),
+                       // 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, creates a Mover for the node
+               // e: Event
+               //              mouse 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, "onmouseup", this, "onMouseUp")
+                       );
+                       this._lastX = e.pageX;
+                       this._lastY = e.pageY;
+               }else{
+                       this.onDragDetected(e);
+               }
+               dojo.stopEvent(e);
+       },
+       onMouseMove: function(e){
+               // summary:
+               //              event processor for onmousemove, used only for delayed drags
+               // e: Event
+               //              mouse event
+               if(Math.abs(e.pageX - this._lastX) > this.delay || Math.abs(e.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.marginBox(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;
+               s.left = (leftTop.l < c.l ? c.l : c.r < leftTop.l ? c.r : leftTop.l) + "px";
+               s.top  = (leftTop.t < c.t ? c.t : c.b < leftTop.t ? c.b : leftTop.t) + "px";
+       }
+});
+
+/*=====
+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
+               };
+       }
+});
+
+// WARNING: below are obsolete objects, instead of custom movers use custom moveables (above)
+
+dojo.dnd.move.constrainedMover = function(fun, within){
+       // summary:
+       //              returns a constrained version of dojo.dnd.Mover
+       // description:
+       //              this function produces n object, which will put a constraint on 
+       //              the margin box of dragged object in absolute coordinates
+       // fun: Function
+       //              called on drag, and returns a constraint box
+       // within: Boolean
+       //              if true, constraints the whole dragged object withtin the rectangle, 
+       //              otherwise the constraint is applied to the left-top corner
+
+       dojo.deprecated("dojo.dnd.move.constrainedMover, use dojo.dnd.move.constrainedMoveable instead");
+       var mover = function(node, e, notifier){
+               dojo.dnd.Mover.call(this, node, e, notifier);
+       };
+       dojo.extend(mover, dojo.dnd.Mover.prototype);
+       dojo.extend(mover, {
+               onMouseMove: function(e){
+                       // summary: event processor for onmousemove
+                       // e: Event: mouse event
+                       dojo.dnd.autoScroll(e);
+                       var m = this.marginBox, c = this.constraintBox,
+                               l = m.l + e.pageX, t = m.t + e.pageY;
+                       l = l < c.l ? c.l : c.r < l ? c.r : l;
+                       t = t < c.t ? c.t : c.b < t ? c.b : t;
+                       this.host.onMove(this, {l: l, t: t});
+               },
+               onFirstMove: function(){
+                       // summary: called once to initialize things; it is meant to be called only once
+                       dojo.dnd.Mover.prototype.onFirstMove.call(this);
+                       var c = this.constraintBox = fun.call(this);
+                       c.r = c.l + c.w;
+                       c.b = c.t + c.h;
+                       if(within){
+                               var mb = dojo.marginBox(this.node);
+                               c.r -= mb.w;
+                               c.b -= mb.h;
+                       }
+               }
+       });
+       return mover;   // Object
+};
+
+dojo.dnd.move.boxConstrainedMover = function(box, within){
+       // summary:
+       //              a specialization of dojo.dnd.constrainedMover, which constrains to the specified box
+       // box: Object
+       //              a constraint box (l, t, w, h)
+       // within: Boolean
+       //              if true, constraints the whole dragged object withtin the rectangle, 
+       //              otherwise the constraint is applied to the left-top corner
+
+       dojo.deprecated("dojo.dnd.move.boxConstrainedMover, use dojo.dnd.move.boxConstrainedMoveable instead");
+       return dojo.dnd.move.constrainedMover(function(){ return box; }, within);       // Object
+};
+
+dojo.dnd.move.parentConstrainedMover = function(area, within){
+       // summary:
+       //              a specialization of dojo.dnd.constrainedMover, which constrains to the parent node
+       // area: String
+       //              "margin" to constrain within the parent's margin box, "border" for the border box,
+       //              "padding" for the padding box, and "content" for the content box; "content" is the default value.
+       // within: Boolean
+       //              if true, constraints the whole dragged object within the rectangle, 
+       //              otherwise the constraint is applied to the left-top corner
+
+       dojo.deprecated("dojo.dnd.move.parentConstrainedMover, use dojo.dnd.move.parentConstrainedMoveable instead");
+       var fun = 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
+       };
+       return dojo.dnd.move.constrainedMover(fun, within);     // 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");
+ // FIXME: remove this back-compat require in 2.0 
+/*=====
+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.form._FormMixin"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form._FormMixin"] = true;
+dojo.provide("dijit.form._FormMixin");
+
+
+
+dojo.declare("dijit.form._FormMixin", null,
+       {
+       // summary:
+       //              Mixin for containers of form widgets (i.e. widgets that represent a single value
+       //              and can be children of a <form> node or dijit.form.Form widget)
+       // description:
+       //              Can extract all the form widgets
+       //              values and combine them into a single javascript object, or alternately
+       //              take such an object and set the values for all the contained
+       //              form widgets
+
+/*=====
+    // value: Object
+       //              Name/value hash for each child widget with a name and value.
+       //              Child widgets without names are not part of the hash.
+       // 
+       //              If there are multiple child widgets w/the same name, value is an array,
+       //              unless they are radio buttons in which case value is a scalar (since only
+       //              one radio button can be checked at a time).
+       //
+       //              If a child widget's name is a dot separated list (like a.b.c.d), it's a nested structure.
+       //
+       //              Example:
+       //      |       { name: "John Smith", interests: ["sports", "movies"] }
+=====*/
+
+       //      TODO:
+       //      * Repeater
+       //      * better handling for arrays.  Often form elements have names with [] like
+       //      * people[3].sex (for a list of people [{name: Bill, sex: M}, ...])
+       //
+       //
+
+               reset: function(){
+                       dojo.forEach(this.getDescendants(), function(widget){
+                               if(widget.reset){
+                                       widget.reset();
+                               }
+                       });
+               },
+
+               validate: function(){
+                       // summary:
+                       //              returns if the form is valid - same as isValid - but
+                       //                      provides a few additional (ui-specific) features.
+                       //                      1 - it will highlight any sub-widgets that are not
+                       //                              valid
+                       //                      2 - it will call focus() on the first invalid
+                       //                              sub-widget
+                       var didFocus = false;
+                       return dojo.every(dojo.map(this.getDescendants(), function(widget){
+                               // Need to set this so that "required" widgets get their
+                               // state set.
+                               widget._hasBeenBlurred = true;
+                               var valid = widget.disabled || !widget.validate || widget.validate();
+                               if(!valid && !didFocus){
+                                       // Set focus of the first non-valid widget
+                                       dojo.window.scrollIntoView(widget.containerNode || widget.domNode);
+                                       widget.focus();
+                                       didFocus = true;
+                               }
+                               return valid;
+                       }), 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(/*object*/obj){
+                       // summary:
+                       //              Fill in form values from according to an Object (in the format returned by attr('value'))
+
+                       // generate map from name --> [list of widgets with that name]
+                       var map = { };
+                       dojo.forEach(this.getDescendants(), function(widget){
+                               if(!widget.name){ return; }
+                               var entry = map[widget.name] || (map[widget.name] = [] );
+                               entry.push(widget);
+                       });
+
+                       for(var name in map){
+                               if(!map.hasOwnProperty(name)){
+                                       continue;
+                               }
+                               var widgets = map[name],                                                // array of widgets w/this name
+                                       values = dojo.getObject(name, false, obj);      // list of values for those widgets
+
+                               if(values === undefined){
+                                       continue;
+                               }
+                               if(!dojo.isArray(values)){
+                                       values = [ values ];
+                               }
+                               if(typeof widgets[0].checked == 'boolean'){
+                                       // for checkbox/radio, values is a list of which widgets should be checked
+                                       dojo.forEach(widgets, function(w, i){
+                                               w.set('value', dojo.indexOf(values, w.value) != -1);
+                                       });
+                               }else if(widgets[0].multiple){
+                                       // it takes an array (e.g. multi-select)
+                                       widgets[0].set('value', values);
+                               }else{
+                                       // otherwise, values is a list of values to be assigned sequentially to each widget
+                                       dojo.forEach(widgets, function(w, i){
+                                               w.set('value', values[i]);
+                                       });
+                               }
+                       }
+
+                       /***
+                        *      TODO: code for plain input boxes (this shouldn't run for inputs that are part of widgets)
+
+                       dojo.forEach(this.containerNode.elements, function(element){
+                               if(element.name == ''){return}; // like "continue"
+                               var namePath = element.name.split(".");
+                               var myObj=obj;
+                               var name=namePath[namePath.length-1];
+                               for(var j=1,len2=namePath.length;j<len2;++j){
+                                       var p=namePath[j - 1];
+                                       // repeater support block
+                                       var nameA=p.split("[");
+                                       if(nameA.length > 1){
+                                               if(typeof(myObj[nameA[0]]) == "undefined"){
+                                                       myObj[nameA[0]]=[ ];
+                                               } // if
+
+                                               nameIndex=parseInt(nameA[1]);
+                                               if(typeof(myObj[nameA[0]][nameIndex]) == "undefined"){
+                                                       myObj[nameA[0]][nameIndex] = { };
+                                               }
+                                               myObj=myObj[nameA[0]][nameIndex];
+                                               continue;
+                                       } // repeater support ends
+
+                                       if(typeof(myObj[p]) == "undefined"){
+                                               myObj=undefined;
+                                               break;
+                                       };
+                                       myObj=myObj[p];
+                               }
+
+                               if(typeof(myObj) == "undefined"){
+                                       return;         // like "continue"
+                               }
+                               if(typeof(myObj[name]) == "undefined" && this.ignoreNullValues){
+                                       return;         // like "continue"
+                               }
+
+                               // TODO: widget values (just call attr('value', ...) on the widget)
+
+                               // TODO: maybe should call dojo.getNodeProp() instead
+                               switch(element.type){
+                                       case "checkbox":
+                                               element.checked = (name in myObj) &&
+                                                       dojo.some(myObj[name], function(val){ return val == element.value; });
+                                               break;
+                                       case "radio":
+                                               element.checked = (name in myObj) && myObj[name] == element.value;
+                                               break;
+                                       case "select-multiple":
+                                               element.selectedIndex=-1;
+                                               dojo.forEach(element.options, function(option){
+                                                       option.selected = dojo.some(myObj[name], function(val){ return option.value == val; });
+                                               });
+                                               break;
+                                       case "select-one":
+                                               element.selectedIndex="0";
+                                               dojo.forEach(element.options, function(option){
+                                                       option.selected = option.value == myObj[name];
+                                               });
+                                               break;
+                                       case "hidden":
+                                       case "text":
+                                       case "textarea":
+                                       case "password":
+                                               element.value = myObj[name] || "";
+                                               break;
+                               }
+                       });
+                       */
+               },
+
+               getValues: function(){
+                       dojo.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.", "", "2.0");
+                       return this.get('value');
+               },
+               _getValueAttr: function(){
+                       // summary:
+                       //              Returns Object representing form values.
+                       // description:
+                       //              Returns name/value hash for each form element.
+                       //              If there are multiple elements w/the same name, value is an array,
+                       //              unless they are radio buttons in which case value is a scalar since only
+                       //              one can be checked at a time.
+                       //
+                       //              If the name is a dot separated list (like a.b.c.d), creates a nested structure.
+                       //              Only works on widget form elements.
+                       // example:
+                       //              | { name: "John Smith", interests: ["sports", "movies"] }
+
+                       // get widget values
+                       var obj = { };
+                       dojo.forEach(this.getDescendants(), function(widget){
+                               var name = widget.name;
+                               if(!name || widget.disabled){ return; }
+
+                               // Single value widget (checkbox, radio, or plain <input> type widget
+                               var value = widget.get('value');
+
+                               // Store widget's value(s) as a scalar, except for checkboxes which are automatically arrays
+                               if(typeof widget.checked == 'boolean'){
+                                       if(/Radio/.test(widget.declaredClass)){
+                                               // radio button
+                                               if(value !== false){
+                                                       dojo.setObject(name, value, obj);
+                                               }else{
+                                                       // give radio widgets a default of null
+                                                       value = dojo.getObject(name, false, obj);
+                                                       if(value === undefined){
+                                                               dojo.setObject(name, null, obj);
+                                                       }
+                                               }
+                                       }else{
+                                               // checkbox/toggle button
+                                               var ary=dojo.getObject(name, false, obj);
+                                               if(!ary){
+                                                       ary=[];
+                                                       dojo.setObject(name, ary, obj);
+                                               }
+                                               if(value !== false){
+                                                       ary.push(value);
+                                               }
+                                       }
+                               }else{
+                                       var prev=dojo.getObject(name, false, obj);
+                                       if(typeof prev != "undefined"){
+                                               if(dojo.isArray(prev)){
+                                                       prev.push(value);
+                                               }else{
+                                                       dojo.setObject(name, [prev, value], obj);
+                                               }
+                                       }else{
+                                               // unique name
+                                               dojo.setObject(name, value, obj);
+                                       }
+                               }
+                       });
+
+                       /***
+                        * code for plain input boxes (see also dojo.formToObject, can we use that instead of this code?
+                        * but it doesn't understand [] notation, presumably)
+                       var obj = { };
+                       dojo.forEach(this.containerNode.elements, function(elm){
+                               if(!elm.name)   {
+                                       return;         // like "continue"
+                               }
+                               var namePath = elm.name.split(".");
+                               var myObj=obj;
+                               var name=namePath[namePath.length-1];
+                               for(var j=1,len2=namePath.length;j<len2;++j){
+                                       var nameIndex = null;
+                                       var p=namePath[j - 1];
+                                       var nameA=p.split("[");
+                                       if(nameA.length > 1){
+                                               if(typeof(myObj[nameA[0]]) == "undefined"){
+                                                       myObj[nameA[0]]=[ ];
+                                               } // if
+                                               nameIndex=parseInt(nameA[1]);
+                                               if(typeof(myObj[nameA[0]][nameIndex]) == "undefined"){
+                                                       myObj[nameA[0]][nameIndex] = { };
+                                               }
+                                       } else if(typeof(myObj[nameA[0]]) == "undefined"){
+                                               myObj[nameA[0]] = { }
+                                       } // if
+
+                                       if(nameA.length == 1){
+                                               myObj=myObj[nameA[0]];
+                                       } else{
+                                               myObj=myObj[nameA[0]][nameIndex];
+                                       } // if
+                               } // for
+
+                               if((elm.type != "select-multiple" && elm.type != "checkbox" && elm.type != "radio") || (elm.type == "radio" && elm.checked)){
+                                       if(name == name.split("[")[0]){
+                                               myObj[name]=elm.value;
+                                       } else{
+                                               // can not set value when there is no name
+                                       }
+                               } else if(elm.type == "checkbox" && elm.checked){
+                                       if(typeof(myObj[name]) == 'undefined'){
+                                               myObj[name]=[ ];
+                                       }
+                                       myObj[name].push(elm.value);
+                               } else if(elm.type == "select-multiple"){
+                                       if(typeof(myObj[name]) == 'undefined'){
+                                               myObj[name]=[ ];
+                                       }
+                                       for(var jdx=0,len3=elm.options.length; jdx<len3; ++jdx){
+                                               if(elm.options[jdx].selected){
+                                                       myObj[name].push(elm.options[jdx].value);
+                                               }
+                                       }
+                               } // if
+                               name=undefined;
+                       }); // forEach
+                       ***/
+                       return obj;
+               },
+
+               // TODO: ComboBox might need time to process a recently input value.  This should be async?
+               isValid: function(){
+                       // summary:
+                       //              Returns true if all of the widgets are valid
+
+                       // This also populate this._invalidWidgets[] array with list of invalid widgets...
+                       // TODO: put that into separate function?   It's confusing to have that as a side effect
+                       // of a method named isValid().
+
+                       this._invalidWidgets = dojo.filter(this.getDescendants(), function(widget){
+                               return !widget.disabled && widget.isValid && !widget.isValid();
+                       });
+                       return !this._invalidWidgets.length;
+               },
+
+
+               onValidStateChange: function(isValid){
+                       // summary:
+                       //              Stub function to connect to if you want to do something
+                       //              (like disable/enable a submit button) when the valid
+                       //              state changes on the form as a whole.
+               },
+
+               _widgetChange: function(widget){
+                       // summary:
+                       //              Connected to a widget's onChange function - update our
+                       //              valid state, if needed.
+                       var isValid = this._lastValidState;
+                       if(!widget || this._lastValidState === undefined){
+                               // We have passed a null widget, or we haven't been validated
+                               // yet - let's re-check all our children
+                               // This happens when we connect (or reconnect) our children
+                               isValid = this.isValid();
+                               if(this._lastValidState === undefined){
+                                       // Set this so that we don't fire an onValidStateChange
+                                       // the first time
+                                       this._lastValidState = isValid;
+                               }
+                       }else if(widget.isValid){
+                               this._invalidWidgets = dojo.filter(this._invalidWidgets || [], function(w){
+                                       return (w != widget);
+                               }, this);
+                               if(!widget.isValid() && !widget.get("disabled")){
+                                       this._invalidWidgets.push(widget);
+                               }
+                               isValid = (this._invalidWidgets.length === 0);
+                       }
+                       if(isValid !== this._lastValidState){
+                               this._lastValidState = isValid;
+                               this.onValidStateChange(isValid);
+                       }
+               },
+
+               connectChildren: function(){
+                       // summary:
+                       //              Connects to the onChange function of all children to
+                       //              track valid state changes.  You can call this function
+                       //              directly, ex. in the event that you programmatically
+                       //              add a widget to the form *after* the form has been
+                       //              initialized.
+                       dojo.forEach(this._changeConnections, dojo.hitch(this, "disconnect"));
+                       var _this = this;
+
+                       // we connect to validate - so that it better reflects the states
+                       // of the widgets - also, we only connect if it has a validate
+                       // function (to avoid too many unneeded connections)
+                       var conns = (this._changeConnections = []);
+                       dojo.forEach(dojo.filter(this.getDescendants(),
+                               function(item){ return item.validate; }
+                       ),
+                       function(widget){
+                               // We are interested in whenever the widget is validated - or
+                               // whenever the disabled attribute on that widget is changed
+                               conns.push(_this.connect(widget, "validate",
+                                                                       dojo.hitch(_this, "_widgetChange", widget)));
+                               conns.push(_this.connect(widget, "_setDisabledAttr",
+                                                                       dojo.hitch(_this, "_widgetChange", widget)));
+                       });
+
+                       // Call the widget change function to update the valid state, in
+                       // case something is different now.
+                       this._widgetChange(null);
+               },
+
+               startup: function(){
+                       this.inherited(arguments);
+                       // Initialize our valid state tracking.  Needs to be done in startup
+                       // because it's not guaranteed that our children are initialized
+                       // yet.
+                       this._changeConnections = [];
+                       this.connectChildren();
+               }
+       });
+
+}
+
+if(!dojo._hasResource["dijit._DialogMixin"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._DialogMixin"] = true;
+dojo.provide("dijit._DialogMixin");
+
+
+
+dojo.declare("dijit._DialogMixin", null,
+       {
+               // summary:
+               //              This provides functions useful to Dialog and TooltipDialog
+
+               attributeMap: dijit._Widget.prototype.attributeMap,
+
+               execute: function(/*Object*/ formContents){
+                       // summary:
+                       //              Callback when the user hits the submit button.
+                       //              Override this method to handle Dialog execution.
+                       // description:
+                       //              After the user has pressed the submit button, the Dialog
+                       //              first calls onExecute() to notify the container to hide the
+                       //              dialog and restore focus to wherever it used to be.
+                       //
+                       //              *Then* this method is called.
+                       // type:
+                       //              callback
+               },
+
+               onCancel: function(){
+                       // summary:
+                       //          Called when user has pressed the Dialog's cancel button, to notify container.
+                       // description:
+                       //          Developer shouldn't override or connect to this method;
+                       //              it's a private communication device between the TooltipDialog
+                       //              and the thing that opened it (ex: `dijit.form.DropDownButton`)
+                       // type:
+                       //              protected
+               },
+
+               onExecute: function(){
+                       // summary:
+                       //          Called when user has pressed the dialog's OK button, to notify container.
+                       // description:
+                       //          Developer shouldn't override or connect to this method;
+                       //              it's a private communication device between the TooltipDialog
+                       //              and the thing that opened it (ex: `dijit.form.DropDownButton`)
+                       // type:
+                       //              protected
+               },
+
+               _onSubmit: function(){
+                       // summary:
+                       //              Callback when user hits submit button
+                       // type:
+                       //              protected
+                       this.onExecute();       // notify container that we are about to execute
+                       this.execute(this.get('value'));
+               },
+
+               _getFocusItems: function(/*Node*/ dialogNode){
+                       // summary:
+                       //              Find focusable Items each time a dialog is opened,
+                       //              setting _firstFocusItem and _lastFocusItem
+                       // tags:
+                       //              protected
+
+                       var elems = dijit._getTabNavigable(dojo.byId(dialogNode));
+                       this._firstFocusItem = elems.lowest || elems.first || dialogNode;
+                       this._lastFocusItem = elems.last || elems.highest || this._firstFocusItem;
+                       if(dojo.isMoz && this._firstFocusItem.tagName.toLowerCase() == "input" &&
+                                       dojo.getNodeProp(this._firstFocusItem, "type").toLowerCase() == "file"){
+                               // FF doesn't behave well when first element is input type=file, set first focusable to dialog container
+                               dojo.attr(dialogNode, "tabIndex", "0");
+                               this._firstFocusItem = dialogNode;
+                       }
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.DialogUnderlay"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.DialogUnderlay"] = true;
+dojo.provide("dijit.DialogUnderlay");
+
+
+
+
+
+
+dojo.declare(
+       "dijit.DialogUnderlay",
+       [dijit._Widget, dijit._Templated],
+       {
+               // summary:
+               //              The component that blocks the screen behind a `dijit.Dialog`
+               //
+               // description:
+               //              A component used to block input behind a `dijit.Dialog`. Only a single
+               //              instance of this widget is created by `dijit.Dialog`, and saved as
+               //              a reference to be shared between all Dialogs as `dijit._underlay`
+               //
+               //              The underlay itself can be styled based on and id:
+               //      |       #myDialog_underlay { background-color:red; }
+               //
+               //              In the case of `dijit.Dialog`, this id is based on the id of the Dialog,
+               //              suffixed with _underlay.
+
+               // Template has two divs; outer div is used for fade-in/fade-out, and also to hold background iframe.
+               // Inner div has opacity specified in CSS file.
+               templateString: "<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' dojoAttachPoint='node'></div></div>",
+
+               // Parameters on creation or updatable later
+
+               // dialogId: String
+               //              Id of the dialog.... DialogUnderlay's id is based on this id
+               dialogId: "",
+
+               // class: String
+               //              This class name is used on the DialogUnderlay node, in addition to dijitDialogUnderlay
+               "class": "",
+
+               attributeMap: { id: "domNode" },
+
+               _setDialogIdAttr: function(id){
+                       dojo.attr(this.node, "id", id + "_underlay");
+               },
+
+               _setClassAttr: function(clazz){
+                       this.node.className = "dijitDialogUnderlay " + clazz;
+               },
+
+               postCreate: function(){
+                       // summary:
+                       //              Append the underlay to the body
+                       dojo.body().appendChild(this.domNode);
+               },
+
+               layout: function(){
+                       // summary:
+                       //              Sets the background to the size of the viewport
+                       //
+                       // description:
+                       //              Sets the background to the size of the viewport (rather than the size
+                       //              of the document) since we need to cover the whole browser window, even
+                       //              if the document is only a few lines long.
+                       // tags:
+                       //              private
+
+                       var is = this.node.style,
+                               os = this.domNode.style;
+
+                       // hide the background temporarily, so that the background itself isn't
+                       // causing scrollbars to appear (might happen when user shrinks browser
+                       // window and then we are called to resize)
+                       os.display = "none";
+
+                       // then resize and show
+                       var viewport = dojo.window.getBox();
+                       os.top = viewport.t + "px";
+                       os.left = viewport.l + "px";
+                       is.width = viewport.w + "px";
+                       is.height = viewport.h + "px";
+                       os.display = "block";
+               },
+
+               show: function(){
+                       // summary:
+                       //              Show the dialog underlay
+                       this.domNode.style.display = "block";
+                       this.layout();
+                       this.bgIframe = new dijit.BackgroundIframe(this.domNode);
+               },
+
+               hide: function(){
+                       // summary:
+                       //              Hides the dialog underlay
+                       this.bgIframe.destroy();
+                       this.domNode.style.display = "none";
+               },
+
+               uninitialize: function(){
+                       if(this.bgIframe){
+                               this.bgIframe.destroy();
+                       }
+                       this.inherited(arguments);
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dojo.html"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.html"] = true;
+dojo.provide("dojo.html");
+
+// the parser might be needed..
+
+(function(){ // private scope, sort of a namespace
+
+       // idCounter is incremented with each instantiation to allow asignment of a unique id for tracking, logging purposes
+       var idCounter = 0, 
+               d = dojo;
+       
+       dojo.html._secureForInnerHtml = function(/*String*/ cont){
+               // summary:
+               //              removes !DOCTYPE and title elements from the html string.
+               // 
+               //              khtml is picky about dom faults, you can't attach a style or <title> node as child of body
+               //              must go into head, so we need to cut out those tags
+               //      cont:
+               //              An html string for insertion into the dom
+               //      
+               return cont.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig, ""); // String
+       };
+
+/*====
+       dojo.html._emptyNode = function(node){
+               // summary:
+               //              removes all child nodes from the given node
+               //      node: DOMNode
+               //              the parent element
+       };
+=====*/
+       dojo.html._emptyNode = dojo.empty;
+
+       dojo.html._setNodeContent = function(/* DomNode */ node, /* String|DomNode|NodeList */ cont){
+               // summary:
+               //              inserts the given content into the given node
+               //      node:
+               //              the parent element
+               //      content:
+               //              the content to be set on the parent element. 
+               //              This can be an html string, a node reference or a NodeList, dojo.NodeList, Array or other enumerable list of nodes
+               
+               // always empty
+               d.empty(node);
+
+               if(cont) {
+                       if(typeof cont == "string") {
+                               cont = d._toDom(cont, node.ownerDocument);
+                       }
+                       if(!cont.nodeType && d.isArrayLike(cont)) {
+                               // handle as enumerable, but it may shrink as we enumerate it
+                               for(var startlen=cont.length, i=0; i<cont.length; i=startlen==cont.length ? i+1 : 0) {
+                                       d.place( cont[i], node, "last");
+                               }
+                       } else {
+                               // pass nodes, documentFragments and unknowns through to dojo.place
+                               d.place(cont, node, "last");
+                       }
+               }
+
+               // return DomNode
+               return node;
+       };
+
+       // we wrap up the content-setting operation in a object
+       dojo.declare("dojo.html._ContentSetter", null, 
+               {
+                       // node: DomNode|String
+                       //              An node which will be the parent element that we set content into
+                       node: "",
+
+                       // content: String|DomNode|DomNode[]
+                       //              The content to be placed in the node. Can be an HTML string, a node reference, or a enumerable list of nodes
+                       content: "",
+                       
+                       // id: String?
+                       //              Usually only used internally, and auto-generated with each instance 
+                       id: "",
+
+                       // cleanContent: Boolean
+                       //              Should the content be treated as a full html document, 
+                       //              and the real content stripped of <html>, <body> wrapper before injection
+                       cleanContent: false,
+                       
+                       // extractContent: Boolean
+                       //              Should the content be treated as a full html document, and the real content stripped of <html>, <body> wrapper before injection
+                       extractContent: false,
+
+                       // parseContent: Boolean
+                       //              Should the node by passed to the parser after the new content is set
+                       parseContent: false,
+                       
+                       // lifecyle methods
+                       constructor: function(/* Object */params, /* String|DomNode */node){
+                               //      summary:
+                               //              Provides a configurable, extensible object to wrap the setting on content on a node
+                               //              call the set() method to actually set the content..
+                               // the original params are mixed directly into the instance "this"
+                               dojo.mixin(this, params || {});
+
+                               // give precedence to params.node vs. the node argument
+                               // and ensure its a node, not an id string
+                               node = this.node = dojo.byId( this.node || node );
+       
+                               if(!this.id){
+                                       this.id = [
+                                               "Setter",
+                                               (node) ? node.id || node.tagName : "", 
+                                               idCounter++
+                                       ].join("_");
+                               }
+                       },
+                       set: function(/* String|DomNode|NodeList? */ cont, /* Object? */ params){
+                               // summary:
+                               //              front-end to the set-content sequence 
+                               //      cont:
+                               //              An html string, node or enumerable list of nodes for insertion into the dom
+                               //              If not provided, the object's content property will be used
+                               if(undefined !== cont){
+                                       this.content = cont;
+                               }
+                               // in the re-use scenario, set needs to be able to mixin new configuration
+                               if(params){
+                                       this._mixin(params);
+                               }
+
+                               this.onBegin();
+                               this.setContent();
+                               this.onEnd();
+
+                               return this.node;
+                       },
+                       setContent: function(){
+                               // summary:
+                               //              sets the content on the node 
+
+                               var node = this.node; 
+                               if(!node) {
+                                   // can't proceed
+                                       throw new Error(this.declaredClass + ": setContent given no node");
+                               }
+                               try{
+                                       node = dojo.html._setNodeContent(node, this.content);
+                               }catch(e){
+                                       // check if a domfault occurs when we are appending this.errorMessage
+                                       // like for instance if domNode is a UL and we try append a DIV
+       
+                                       // FIXME: need to allow the user to provide a content error message string
+                                       var errMess = this.onContentError(e); 
+                                       try{
+                                               node.innerHTML = errMess;
+                                       }catch(e){
+                                               console.error('Fatal ' + this.declaredClass + '.setContent could not change content due to '+e.message, e);
+                                       }
+                               }
+                               // always put back the node for the next method
+                               this.node = node; // DomNode
+                       },
+                       
+                       empty: function() {
+                               // summary
+                               //      cleanly empty out existing content
+
+                               // destroy any widgets from a previous run
+                               // NOTE: if you dont want this you'll need to empty 
+                               // the parseResults array property yourself to avoid bad things happenning
+                               if(this.parseResults && this.parseResults.length) {
+                                       dojo.forEach(this.parseResults, function(w) {
+                                               if(w.destroy){
+                                                       w.destroy();
+                                               }
+                                       });
+                                       delete this.parseResults;
+                               }
+                               // this is fast, but if you know its already empty or safe, you could 
+                               // override empty to skip this step
+                               dojo.html._emptyNode(this.node);
+                       },
+       
+                       onBegin: function(){
+                               // summary
+                               //              Called after instantiation, but before set(); 
+                               //              It allows modification of any of the object properties 
+                               //              - including the node and content provided - before the set operation actually takes place
+                               //              This default implementation checks for cleanContent and extractContent flags to 
+                               //              optionally pre-process html string content
+                               var cont = this.content;
+       
+                               if(dojo.isString(cont)){
+                                       if(this.cleanContent){
+                                               cont = dojo.html._secureForInnerHtml(cont);
+                                       }
+  
+                                       if(this.extractContent){
+                                               var match = cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+                                               if(match){ cont = match[1]; }
+                                       }
+                               }
+
+                               // clean out the node and any cruft associated with it - like widgets
+                               this.empty();
+                               
+                               this.content = cont;
+                               return this.node; /* DomNode */
+                       },
+       
+                       onEnd: function(){
+                               // summary
+                               //              Called after set(), when the new content has been pushed into the node
+                               //              It provides an opportunity for post-processing before handing back the node to the caller
+                               //              This default implementation checks a parseContent flag to optionally run the dojo parser over the new content
+                               if(this.parseContent){
+                                       // populates this.parseResults if you need those..
+                                       this._parse();
+                               }
+                               return this.node; /* DomNode */
+                       },
+       
+                       tearDown: function(){
+                               // summary
+                               //              manually reset the Setter instance if its being re-used for example for another set()
+                               // description
+                               //              tearDown() is not called automatically. 
+                               //              In normal use, the Setter instance properties are simply allowed to fall out of scope
+                               //              but the tearDown method can be called to explicitly reset this instance.
+                               delete this.parseResults; 
+                               delete this.node; 
+                               delete this.content; 
+                       },
+  
+                       onContentError: function(err){
+                               return "Error occured setting content: " + err; 
+                       },
+                       
+                       _mixin: function(params){
+                               // mix properties/methods into the instance
+                               // TODO: the intention with tearDown is to put the Setter's state 
+                               // back to that of the original constructor (vs. deleting/resetting everything regardless of ctor params)
+                               // so we could do something here to move the original properties aside for later restoration
+                               var empty = {}, key;
+                               for(key in params){
+                                       if(key in empty){ continue; }
+                                       // TODO: here's our opportunity to mask the properties we dont consider configurable/overridable
+                                       // .. but history shows we'll almost always guess wrong
+                                       this[key] = params[key]; 
+                               }
+                       },
+                       _parse: function(){
+                               // summary: 
+                               //              runs the dojo parser over the node contents, storing any results in this.parseResults
+                               //              Any errors resulting from parsing are passed to _onError for handling
+
+                               var rootNode = this.node;
+                               try{
+                                       // store the results (widgets, whatever) for potential retrieval
+                                       this.parseResults = dojo.parser.parse({
+                                               rootNode: rootNode,
+                                               dir: this.dir,
+                                               lang: this.lang
+                                       });
+                               }catch(e){
+                                       this._onError('Content', e, "Error parsing in _ContentSetter#"+this.id);
+                               }
+                       },
+  
+                       _onError: function(type, err, consoleText){
+                               // summary:
+                               //              shows user the string that is returned by on[type]Error
+                               //              overide/implement on[type]Error and return your own string to customize
+                               var errText = this['on' + type + 'Error'].call(this, err);
+                               if(consoleText){
+                                       console.error(consoleText, err);
+                               }else if(errText){ // a empty string won't change current content
+                                       dojo.html._setNodeContent(this.node, errText, true);
+                               }
+                       }
+       }); // end dojo.declare()
+
+       dojo.html.set = function(/* DomNode */ node, /* String|DomNode|NodeList */ cont, /* Object? */ params){
+                       // summary:
+                       //              inserts (replaces) the given content into the given node. dojo.place(cont, node, "only")
+                       //              may be a better choice for simple HTML insertion.
+                       // description:
+                       //              Unless you need to use the params capabilities of this method, you should use
+                       //              dojo.place(cont, node, "only"). dojo.place() has more robust support for injecting
+                       //              an HTML string into the DOM, but it only handles inserting an HTML string as DOM
+                       //              elements, or inserting a DOM node. dojo.place does not handle NodeList insertions
+                       //              or the other capabilities as defined by the params object for this method.
+                       //      node:
+                       //              the parent element that will receive the content
+                       //      cont:
+                       //              the content to be set on the parent element. 
+                       //              This can be an html string, a node reference or a NodeList, dojo.NodeList, Array or other enumerable list of nodes
+                       //      params: 
+                       //              Optional flags/properties to configure the content-setting. See dojo.html._ContentSetter
+                       //      example:
+                       //              A safe string/node/nodelist content replacement/injection with hooks for extension
+                       //              Example Usage: 
+                       //              dojo.html.set(node, "some string"); 
+                       //              dojo.html.set(node, contentNode, {options}); 
+                       //              dojo.html.set(node, myNode.childNodes, {options}); 
+               if(undefined == cont){
+                       console.warn("dojo.html.set: no cont argument provided, using empty string");
+                       cont = "";
+               }       
+               if(!params){
+                       // simple and fast
+                       return dojo.html._setNodeContent(node, cont, true);
+               }else{ 
+                       // more options but slower
+                       // note the arguments are reversed in order, to match the convention for instantiation via the parser
+                       var op = new dojo.html._ContentSetter(dojo.mixin( 
+                                       params, 
+                                       { content: cont, node: node } 
+                       ));
+                       return op.set();
+               }
+       };
+})();
+
+}
+
+if(!dojo._hasResource["dijit.layout.ContentPane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.ContentPane"] = true;
+dojo.provide("dijit.layout.ContentPane");
+
+
+
+       // for dijit.layout.marginBox2contentBox()
+
+
+
+
+
+
+dojo.declare(
+       "dijit.layout.ContentPane", dijit._Widget,
+{
+       // summary:
+       //              A widget that acts as a container for mixed HTML and widgets, and includes an Ajax interface
+       // description:
+       //              A widget that can be used as a stand alone widget
+       //              or as a base class for other widgets.
+       //
+       //              Handles replacement of document fragment using either external uri or javascript
+       //              generated markup or DOM content, instantiating widgets within that content.
+       //              Don't confuse it with an iframe, it only needs/wants document fragments.
+       //              It's useful as a child of LayoutContainer, SplitContainer, or TabContainer.
+       //              But note that those classes can contain any widget as a child.
+       // example:
+       //              Some quick samples:
+       //              To change the innerHTML use .set('content', '<b>new content</b>')
+       //
+       //              Or you can send it a NodeList, .set('content', dojo.query('div [class=selected]', userSelection))
+       //              please note that the nodes in NodeList will copied, not moved
+       //
+       //              To do a ajax update use .set('href', url)
+
+       // href: String
+       //              The href of the content that displays now.
+       //              Set this at construction if you want to load data externally when the
+       //              pane is shown.  (Set preload=true to load it immediately.)
+       //              Changing href after creation doesn't have any effect; Use set('href', ...);
+       href: "",
+
+/*=====
+       // content: String || DomNode || NodeList || dijit._Widget
+       //              The innerHTML of the ContentPane.
+       //              Note that the initialization parameter / argument to attr("content", ...)
+       //              can be a String, DomNode, Nodelist, or _Widget.
+       content: "",
+=====*/
+
+       // extractContent: Boolean
+       //              Extract visible content from inside of <body> .... </body>.
+       //              I.e., strip <html> and <head> (and it's contents) from the href
+       extractContent: false,
+
+       // parseOnLoad: Boolean
+       //              Parse content and create the widgets, if any.
+       parseOnLoad: true,
+
+       // preventCache: Boolean
+       //              Prevent caching of data from href's by appending a timestamp to the href.
+       preventCache: false,
+
+       // preload: Boolean
+       //              Force load of data on initialization even if pane is hidden.
+       preload: false,
+
+       // refreshOnShow: Boolean
+       //              Refresh (re-download) content when pane goes from hidden to shown
+       refreshOnShow: false,
+
+       // loadingMessage: String
+       //              Message that shows while downloading
+       loadingMessage: "<span class='dijitContentPaneLoading'>${loadingState}</span>",
+
+       // errorMessage: String
+       //              Message that shows if an error occurs
+       errorMessage: "<span class='dijitContentPaneError'>${errorState}</span>",
+
+       // isLoaded: [readonly] Boolean
+       //              True if the ContentPane has data in it, either specified
+       //              during initialization (via href or inline content), or set
+       //              via attr('content', ...) / attr('href', ...)
+       //
+       //              False if it doesn't have any content, or if ContentPane is
+       //              still in the process of downloading href.
+       isLoaded: false,
+
+       baseClass: "dijitContentPane",
+
+       // doLayout: Boolean
+       //              - false - don't adjust size of children
+       //              - true - if there is a single visible child widget, set it's size to
+       //                              however big the ContentPane is
+       doLayout: true,
+
+       // ioArgs: Object
+       //              Parameters to pass to xhrGet() request, for example:
+       // |    <div dojoType="dijit.layout.ContentPane" href="./bar" ioArgs="{timeout: 500}">
+       ioArgs: {},
+
+       // isContainer: [protected] Boolean
+       //              Indicates that this widget acts as a "parent" to the descendant widgets.
+       //              When the parent is started it will call startup() on the child widgets.
+       //              See also `isLayoutContainer`.
+       isContainer: true,
+
+       // isLayoutContainer: [protected] Boolean
+       //              Indicates that this widget will call resize() on it's child widgets
+       //              when they become visible.
+       isLayoutContainer: true,
+
+       // onLoadDeferred: [readonly] dojo.Deferred
+       //              This is the `dojo.Deferred` returned by attr('href', ...) and refresh().
+       //              Calling onLoadDeferred.addCallback() or addErrback() registers your
+       //              callback to be called only once, when the prior attr('href', ...) call or
+       //              the initial href parameter to the constructor finishes loading.
+       //
+       //              This is different than an onLoad() handler which gets called any time any href is loaded.
+       onLoadDeferred: null,
+
+       // Override _Widget's attributeMap because we don't want the title attribute (used to specify
+       // tab labels) to be copied to ContentPane.domNode... otherwise a tooltip shows up over the
+       // entire pane.
+       attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
+               title: []
+       }),
+
+       postMixInProperties: function(){
+               this.inherited(arguments);
+               var messages = dojo.i18n.getLocalization("dijit", "loading", this.lang);
+               this.loadingMessage = dojo.string.substitute(this.loadingMessage, messages);
+               this.errorMessage = dojo.string.substitute(this.errorMessage, messages);
+
+               // Detect if we were initialized with data
+               if(!this.href && this.srcNodeRef && this.srcNodeRef.innerHTML){
+                       this.isLoaded = true;
+               }
+       },
+
+       buildRendering: function(){
+               // Overrides Widget.buildRendering().
+               // Since we have no template we need to set this.containerNode ourselves.
+               // For subclasses of ContentPane do have a template, does nothing.
+               this.inherited(arguments);
+               if(!this.containerNode){
+                       // make getDescendants() work
+                       this.containerNode = this.domNode;
+               }
+       },
+
+       postCreate: function(){
+               // remove the title attribute so it doesn't show up when hovering
+               // over a node
+               this.domNode.title = "";
+
+               if(!dojo.attr(this.domNode,"role")){
+                       dijit.setWaiRole(this.domNode, "group");
+               }
+
+               dojo.addClass(this.domNode, this.baseClass);
+       },
+
+       startup: function(){
+               // summary:
+               //              See `dijit.layout._LayoutWidget.startup` for description.
+               //              Although ContentPane doesn't extend _LayoutWidget, it does implement
+               //              the same API.
+               if(this._started){ return; }
+
+               var parent = dijit._Contained.prototype.getParent.call(this);
+               this._childOfLayoutWidget = parent && parent.isLayoutContainer;
+
+               // I need to call resize() on my child/children (when I become visible), unless
+               // I'm the child of a layout widget in which case my parent will call resize() on me and I'll do it then.
+               this._needLayout = !this._childOfLayoutWidget;
+
+               if(this.isLoaded){
+                       dojo.forEach(this.getChildren(), function(child){
+                               child.startup();
+                       });
+               }
+
+               if(this._isShown() || this.preload){
+                       this._onShow();
+               }
+
+               this.inherited(arguments);
+       },
+
+       _checkIfSingleChild: function(){
+               // summary:
+               //              Test if we have exactly one visible widget as a child,
+               //              and if so assume that we are a container for that widget,
+               //              and should propogate startup() and resize() calls to it.
+               //              Skips over things like data stores since they aren't visible.
+
+               var childNodes = dojo.query("> *", this.containerNode).filter(function(node){
+                               return node.tagName !== "SCRIPT"; // or a regexp for hidden elements like script|area|map|etc..
+                       }),
+                       childWidgetNodes = childNodes.filter(function(node){
+                               return dojo.hasAttr(node, "dojoType") || dojo.hasAttr(node, "widgetId");
+                       }),
+                       candidateWidgets = dojo.filter(childWidgetNodes.map(dijit.byNode), function(widget){
+                               return widget && widget.domNode && widget.resize;
+                       });
+
+               if(
+                       // all child nodes are widgets
+                       childNodes.length == childWidgetNodes.length &&
+
+                       // all but one are invisible (like dojo.data)
+                       candidateWidgets.length == 1
+               ){
+                       this._singleChild = candidateWidgets[0];
+               }else{
+                       delete this._singleChild;
+               }
+
+               // So we can set overflow: hidden to avoid a safari bug w/scrollbars showing up (#9449)
+               dojo.toggleClass(this.containerNode, this.baseClass + "SingleChild", !!this._singleChild);
+       },
+
+       setHref: function(/*String|Uri*/ href){
+               // summary:
+               //              Deprecated.   Use set('href', ...) instead.
+               dojo.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.", "", "2.0");
+               return this.set("href", href);
+       },
+       _setHrefAttr: function(/*String|Uri*/ href){
+               // summary:
+               //              Hook so attr("href", ...) works.
+               // description:
+               //              Reset the (external defined) content of this pane and replace with new url
+               //              Note: It delays the download until widget is shown if preload is false.
+               //      href:
+               //              url to the page you want to get, must be within the same domain as your mainpage
+
+               // Cancel any in-flight requests (an attr('href') will cancel any in-flight attr('href', ...))
+               this.cancel();
+
+               this.onLoadDeferred = new dojo.Deferred(dojo.hitch(this, "cancel"));
+
+               this.href = href;
+
+               // _setHrefAttr() is called during creation and by the user, after creation.
+               // only in the second case do we actually load the URL; otherwise it's done in startup()
+               if(this._created && (this.preload || this._isShown())){
+                       this._load();
+               }else{
+                       // Set flag to indicate that href needs to be loaded the next time the
+                       // ContentPane is made visible
+                       this._hrefChanged = true;
+               }
+
+               return this.onLoadDeferred;             // dojo.Deferred
+       },
+
+       setContent: function(/*String|DomNode|Nodelist*/data){
+               // summary:
+               //              Deprecated.   Use set('content', ...) instead.
+               dojo.deprecated("dijit.layout.ContentPane.setContent() is deprecated.  Use set('content', ...) instead.", "", "2.0");
+               this.set("content", data);
+       },
+       _setContentAttr: function(/*String|DomNode|Nodelist*/data){
+               // summary:
+               //              Hook to make attr("content", ...) work.
+               //              Replaces old content with data content, include style classes from old content
+               //      data:
+               //              the new Content may be String, DomNode or NodeList
+               //
+               //              if data is a NodeList (or an array of nodes) nodes are copied
+               //              so you can import nodes from another document implicitly
+
+               // clear href so we can't run refresh and clear content
+               // refresh should only work if we downloaded the content
+               this.href = "";
+
+               // Cancel any in-flight requests (an attr('content') will cancel any in-flight attr('href', ...))
+               this.cancel();
+
+               // Even though user is just setting content directly, still need to define an onLoadDeferred
+               // because the _onLoadHandler() handler is still getting called from setContent()
+               this.onLoadDeferred = new dojo.Deferred(dojo.hitch(this, "cancel"));
+
+               this._setContent(data || "");
+
+               this._isDownloaded = false; // mark that content is from a attr('content') not an attr('href')
+
+               return this.onLoadDeferred;     // dojo.Deferred
+       },
+       _getContentAttr: function(){
+               // summary:
+               //              Hook to make attr("content") work
+               return this.containerNode.innerHTML;
+       },
+
+       cancel: function(){
+               // summary:
+               //              Cancels an in-flight download of content
+               if(this._xhrDfd && (this._xhrDfd.fired == -1)){
+                       this._xhrDfd.cancel();
+               }
+               delete this._xhrDfd; // garbage collect
+
+               this.onLoadDeferred = null;
+       },
+
+       uninitialize: function(){
+               if(this._beingDestroyed){
+                       this.cancel();
+               }
+               this.inherited(arguments);
+       },
+
+       destroyRecursive: function(/*Boolean*/ preserveDom){
+               // summary:
+               //              Destroy the ContentPane and its contents
+
+               // if we have multiple controllers destroying us, bail after the first
+               if(this._beingDestroyed){
+                       return;
+               }
+               this.inherited(arguments);
+       },
+
+       resize: function(changeSize, resultSize){
+               // summary:
+               //              See `dijit.layout._LayoutWidget.resize` for description.
+               //              Although ContentPane doesn't extend _LayoutWidget, it does implement
+               //              the same API.
+
+               // For the TabContainer --> BorderContainer --> ContentPane case, _onShow() is
+               // never called, so resize() is our trigger to do the initial href download.
+               if(!this._wasShown){
+                       this._onShow();
+               }
+
+               this._resizeCalled = true;
+
+               // Set margin box size, unless it wasn't specified, in which case use current size.
+               if(changeSize){
+                       dojo.marginBox(this.domNode, changeSize);
+               }
+
+               // Compute content box size of containerNode in case we [later] need to size our single child.
+               var cn = this.containerNode;
+               if(cn === this.domNode){
+                       // If changeSize or resultSize was passed to this method and this.containerNode ==
+                       // this.domNode then we can compute the content-box size without querying the node,
+                       // which is more reliable (similar to LayoutWidget.resize) (see for example #9449).
+                       var mb = resultSize || {};
+                       dojo.mixin(mb, changeSize || {}); // changeSize overrides resultSize
+                       if(!("h" in mb) || !("w" in mb)){
+                               mb = dojo.mixin(dojo.marginBox(cn), mb); // just use dojo.marginBox() to fill in missing values
+                       }
+                       this._contentBox = dijit.layout.marginBox2contentBox(cn, mb);
+               }else{
+                       this._contentBox = dojo.contentBox(cn);
+               }
+
+               // Make my children layout, or size my single child widget
+               this._layoutChildren();
+       },
+
+       _isShown: function(){
+               // summary:
+               //              Returns true if the content is currently shown.
+               // description:
+               //              If I am a child of a layout widget then it actually returns true if I've ever been visible,
+               //              not whether I'm currently visible, since that's much faster than tracing up the DOM/widget
+               //              tree every call, and at least solves the performance problem on page load by deferring loading
+               //              hidden ContentPanes until they are first shown
+
+               if(this._childOfLayoutWidget){
+                       // If we are TitlePane, etc - we return that only *IF* we've been resized
+                       if(this._resizeCalled && "open" in this){
+                               return this.open;
+                       }
+                       return this._resizeCalled;
+               }else if("open" in this){
+                       return this.open;               // for TitlePane, etc.
+               }else{
+                       // TODO: with _childOfLayoutWidget check maybe this branch no longer necessary?
+                       var node = this.domNode;
+                       return (node.style.display != 'none') && (node.style.visibility != 'hidden') && !dojo.hasClass(node, "dijitHidden");
+               }
+       },
+
+       _onShow: function(){
+               // summary:
+               //              Called when the ContentPane is made visible
+               // description:
+               //              For a plain ContentPane, this is called on initialization, from startup().
+               //              If the ContentPane is a hidden pane of a TabContainer etc., then it's
+               //              called whenever the pane is made visible.
+               //
+               //              Does necessary processing, including href download and layout/resize of
+               //              child widget(s)
+
+               if(this.href){
+                       if(!this._xhrDfd && // if there's an href that isn't already being loaded
+                               (!this.isLoaded || this._hrefChanged || this.refreshOnShow)
+                       ){
+                               this.refresh();
+                       }
+               }else{
+                       // If we are the child of a layout widget then the layout widget will call resize() on
+                       // us, and then we will size our child/children.   Otherwise, we need to do it now.
+                       if(!this._childOfLayoutWidget && this._needLayout){
+                               // If a layout has been scheduled for when we become visible, do it now
+                               this._layoutChildren();
+                       }
+               }
+
+               this.inherited(arguments);
+
+               // Need to keep track of whether ContentPane has been shown (which is different than
+               // whether or not it's currently visible).
+               this._wasShown = true;
+       },
+
+       refresh: function(){
+               // summary:
+               //              [Re]download contents of href and display
+               // description:
+               //              1. cancels any currently in-flight requests
+               //              2. posts "loading..." message
+               //              3. sends XHR to download new data
+
+               // Cancel possible prior in-flight request
+               this.cancel();
+
+               this.onLoadDeferred = new dojo.Deferred(dojo.hitch(this, "cancel"));
+               this._load();
+               return this.onLoadDeferred;
+       },
+
+       _load: function(){
+               // summary:
+               //              Load/reload the href specified in this.href
+
+               // display loading message
+               this._setContent(this.onDownloadStart(), true);
+
+               var self = this;
+               var getArgs = {
+                       preventCache: (this.preventCache || this.refreshOnShow),
+                       url: this.href,
+                       handleAs: "text"
+               };
+               if(dojo.isObject(this.ioArgs)){
+                       dojo.mixin(getArgs, this.ioArgs);
+               }
+
+               var hand = (this._xhrDfd = (this.ioMethod || dojo.xhrGet)(getArgs));
+
+               hand.addCallback(function(html){
+                       try{
+                               self._isDownloaded = true;
+                               self._setContent(html, false);
+                               self.onDownloadEnd();
+                       }catch(err){
+                               self._onError('Content', err); // onContentError
+                       }
+                       delete self._xhrDfd;
+                       return html;
+               });
+
+               hand.addErrback(function(err){
+                       if(!hand.canceled){
+                               // show error message in the pane
+                               self._onError('Download', err); // onDownloadError
+                       }
+                       delete self._xhrDfd;
+                       return err;
+               });
+
+               // Remove flag saying that a load is needed
+               delete this._hrefChanged;
+       },
+
+       _onLoadHandler: function(data){
+               // summary:
+               //              This is called whenever new content is being loaded
+               this.isLoaded = true;
+               try{
+                       this.onLoadDeferred.callback(data);
+                       this.onLoad(data);
+               }catch(e){
+                       console.error('Error '+this.widgetId+' running custom onLoad code: ' + e.message);
+               }
+       },
+
+       _onUnloadHandler: function(){
+               // summary:
+               //              This is called whenever the content is being unloaded
+               this.isLoaded = false;
+               try{
+                       this.onUnload();
+               }catch(e){
+                       console.error('Error '+this.widgetId+' running custom onUnload code: ' + e.message);
+               }
+       },
+
+       destroyDescendants: function(){
+               // summary:
+               //              Destroy all the widgets inside the ContentPane and empty containerNode
+
+               // Make sure we call onUnload (but only when the ContentPane has real content)
+               if(this.isLoaded){
+                       this._onUnloadHandler();
+               }
+
+               // Even if this.isLoaded == false there might still be a "Loading..." message
+               // to erase, so continue...
+
+               // For historical reasons we need to delete all widgets under this.containerNode,
+               // even ones that the user has created manually.
+               var setter = this._contentSetter;
+               dojo.forEach(this.getChildren(), function(widget){
+                       if(widget.destroyRecursive){
+                               widget.destroyRecursive();
+                       }
+               });
+               if(setter){
+                       // Most of the widgets in setter.parseResults have already been destroyed, but
+                       // things like Menu that have been moved to <body> haven't yet
+                       dojo.forEach(setter.parseResults, function(widget){
+                               if(widget.destroyRecursive && widget.domNode && widget.domNode.parentNode == dojo.body()){
+                                       widget.destroyRecursive();
+                               }
+                       });
+                       delete setter.parseResults;
+               }
+
+               // And then clear away all the DOM nodes
+               dojo.html._emptyNode(this.containerNode);
+
+               // Delete any state information we have about current contents
+               delete this._singleChild;
+       },
+
+       _setContent: function(cont, isFakeContent){
+               // summary:
+               //              Insert the content into the container node
+
+               // first get rid of child widgets
+               this.destroyDescendants();
+
+               // dojo.html.set will take care of the rest of the details
+               // we provide an override for the error handling to ensure the widget gets the errors
+               // configure the setter instance with only the relevant widget instance properties
+               // NOTE: unless we hook into attr, or provide property setters for each property,
+               // we need to re-configure the ContentSetter with each use
+               var setter = this._contentSetter;
+               if(! (setter && setter instanceof dojo.html._ContentSetter)){
+                       setter = this._contentSetter = new dojo.html._ContentSetter({
+                               node: this.containerNode,
+                               _onError: dojo.hitch(this, this._onError),
+                               onContentError: dojo.hitch(this, function(e){
+                                       // fires if a domfault occurs when we are appending this.errorMessage
+                                       // like for instance if domNode is a UL and we try append a DIV
+                                       var errMess = this.onContentError(e);
+                                       try{
+                                               this.containerNode.innerHTML = errMess;
+                                       }catch(e){
+                                               console.error('Fatal '+this.id+' could not change content due to '+e.message, e);
+                                       }
+                               })/*,
+                               _onError */
+                       });
+               };
+
+               var setterParams = dojo.mixin({
+                       cleanContent: this.cleanContent,
+                       extractContent: this.extractContent,
+                       parseContent: this.parseOnLoad,
+                       dir: this.dir,
+                       lang: this.lang
+               }, this._contentSetterParams || {});
+
+               dojo.mixin(setter, setterParams);
+
+               setter.set( (dojo.isObject(cont) && cont.domNode) ? cont.domNode : cont );
+
+               // setter params must be pulled afresh from the ContentPane each time
+               delete this._contentSetterParams;
+
+               if(!isFakeContent){
+                       // Startup each top level child widget (and they will start their children, recursively)
+                       dojo.forEach(this.getChildren(), function(child){
+                               // The parser has already called startup on all widgets *without* a getParent() method
+                               if(!this.parseOnLoad || child.getParent){
+                                       child.startup();
+                               }
+                       }, this);
+
+                       // Call resize() on each of my child layout widgets,
+                       // or resize() on my single child layout widget...
+                       // either now (if I'm currently visible)
+                       // or when I become visible
+                       this._scheduleLayout();
+
+                       this._onLoadHandler(cont);
+               }
+       },
+
+       _onError: function(type, err, consoleText){
+               this.onLoadDeferred.errback(err);
+
+               // shows user the string that is returned by on[type]Error
+               // overide on[type]Error and return your own string to customize
+               var errText = this['on' + type + 'Error'].call(this, err);
+               if(consoleText){
+                       console.error(consoleText, err);
+               }else if(errText){// a empty string won't change current content
+                       this._setContent(errText, true);
+               }
+       },
+
+       _scheduleLayout: function(){
+               // summary:
+               //              Call resize() on each of my child layout widgets, either now
+               //              (if I'm currently visible) or when I become visible
+               if(this._isShown()){
+                       this._layoutChildren();
+               }else{
+                       this._needLayout = true;
+               }
+       },
+
+       _layoutChildren: function(){
+               // summary:
+               //              Since I am a Container widget, each of my children expects me to
+               //              call resize() or layout() on them.
+               // description:
+               //              Should be called on initialization and also whenever we get new content
+               //              (from an href, or from attr('content', ...))... but deferred until
+               //              the ContentPane is visible
+
+               if(this.doLayout){
+                       this._checkIfSingleChild();
+               }
+
+               if(this._singleChild && this._singleChild.resize){
+                       var cb = this._contentBox || dojo.contentBox(this.containerNode);
+
+                       // note: if widget has padding this._contentBox will have l and t set,
+                       // but don't pass them to resize() or it will doubly-offset the child
+                       this._singleChild.resize({w: cb.w, h: cb.h});
+               }else{
+                       // All my child widgets are independently sized (rather than matching my size),
+                       // but I still need to call resize() on each child to make it layout.
+                       dojo.forEach(this.getChildren(), function(widget){
+                               if(widget.resize){
+                                       widget.resize();
+                               }
+                       });
+               }
+               delete this._needLayout;
+       },
+
+       // EVENT's, should be overide-able
+       onLoad: function(data){
+               // summary:
+               //              Event hook, is called after everything is loaded and widgetified
+               // tags:
+               //              callback
+       },
+
+       onUnload: function(){
+               // summary:
+               //              Event hook, is called before old content is cleared
+               // tags:
+               //              callback
+       },
+
+       onDownloadStart: function(){
+               // summary:
+               //              Called before download starts.
+               // description:
+               //              The string returned by this function will be the html
+               //              that tells the user we are loading something.
+               //              Override with your own function if you want to change text.
+               // tags:
+               //              extension
+               return this.loadingMessage;
+       },
+
+       onContentError: function(/*Error*/ error){
+               // summary:
+               //              Called on DOM faults, require faults etc. in content.
+               //
+               //              In order to display an error message in the pane, return
+               //              the error message from this method, as an HTML string.
+               //
+               //              By default (if this method is not overriden), it returns
+               //              nothing, so the error message is just printed to the console.
+               // tags:
+               //              extension
+       },
+
+       onDownloadError: function(/*Error*/ error){
+               // summary:
+               //              Called when download error occurs.
+               //
+               //              In order to display an error message in the pane, return
+               //              the error message from this method, as an HTML string.
+               //
+               //              Default behavior (if this method is not overriden) is to display
+               //              the error message inside the pane.
+               // tags:
+               //              extension
+               return this.errorMessage;
+       },
+
+       onDownloadEnd: function(){
+               // summary:
+               //              Called when download is finished.
+               // tags:
+               //              callback
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.TooltipDialog"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.TooltipDialog"] = true;
+dojo.provide("dijit.TooltipDialog");
+
+
+
+
+
+
+dojo.declare(
+               "dijit.TooltipDialog",
+               [dijit.layout.ContentPane, dijit._Templated, dijit.form._FormMixin, dijit._DialogMixin],
+               {
+                       // summary:
+                       //              Pops up a dialog that appears like a Tooltip
+
+                       // title: String
+                       //              Description of tooltip dialog (required for a11y)
+                       title: "",
+
+                       // doLayout: [protected] Boolean
+                       //              Don't change this parameter from the default value.
+                       //              This ContentPane parameter doesn't make sense for TooltipDialog, since TooltipDialog
+                       //              is never a child of a layout container, nor can you specify the size of
+                       //              TooltipDialog in order to control the size of an inner widget.
+                       doLayout: false,
+
+                       // autofocus: Boolean
+                       //              A Toggle to modify the default focus behavior of a Dialog, which
+                       //              is to focus on the first dialog element after opening the dialog.
+                       //              False will disable autofocusing. Default: true
+                       autofocus: true,
+
+                       // baseClass: [protected] String
+                       //              The root className to use for the various states of this widget
+                       baseClass: "dijitTooltipDialog",
+
+                       // _firstFocusItem: [private] [readonly] DomNode
+                       //              The pointer to the first focusable node in the dialog.
+                       //              Set by `dijit._DialogMixin._getFocusItems`.
+                       _firstFocusItem: null,
+
+                       // _lastFocusItem: [private] [readonly] DomNode
+                       //              The pointer to which node has focus prior to our dialog.
+                       //              Set by `dijit._DialogMixin._getFocusItems`.
+                       _lastFocusItem: null,
+
+                       templateString: dojo.cache("dijit", "templates/TooltipDialog.html", "<div waiRole=\"presentation\">\n\t<div class=\"dijitTooltipContainer\" waiRole=\"presentation\">\n\t\t<div class =\"dijitTooltipContents dijitTooltipFocusNode\" dojoAttachPoint=\"containerNode\" tabindex=\"-1\" waiRole=\"dialog\"></div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" waiRole=\"presentation\"></div>\n</div>\n"),
+
+                       postCreate: function(){
+                               this.inherited(arguments);
+                               this.connect(this.containerNode, "onkeypress", "_onKey");
+                               this.containerNode.title = this.title;
+                       },
+
+                       orient: function(/*DomNode*/ node, /*String*/ aroundCorner, /*String*/ corner){
+                               // summary:
+                               //              Configure widget to be displayed in given position relative to the button.
+                               //              This is called from the dijit.popup code, and should not be called
+                               //              directly.
+                               // tags:
+                               //              protected
+                               var c = this._currentOrientClass;
+                               if(c){
+                                       dojo.removeClass(this.domNode, c);
+                               }
+                               c = "dijitTooltipAB"+(corner.charAt(1) == 'L'?"Left":"Right")+" dijitTooltip"+(corner.charAt(0) == 'T' ? "Below" : "Above");
+                               dojo.addClass(this.domNode, c);
+                               this._currentOrientClass = c;
+                       },
+
+                       onOpen: function(/*Object*/ pos){
+                               // summary:
+                               //              Called when dialog is displayed.
+                               //              This is called from the dijit.popup code, and should not be called directly.
+                               // tags:
+                               //              protected
+
+                               this.orient(this.domNode,pos.aroundCorner, pos.corner);
+                               this._onShow(); // lazy load trigger
+
+                               if(this.autofocus){
+                                       this._getFocusItems(this.containerNode);
+                                       dijit.focus(this._firstFocusItem);
+                               }
+                       },
+
+                       onClose: function(){
+                               // summary:
+                               //              Called when dialog is hidden.
+                               //              This is called from the dijit.popup code, and should not be called directly.
+                               // tags:
+                               //              protected
+                               this.onHide();
+                       },
+
+                       _onKey: function(/*Event*/ evt){
+                               // summary:
+                               //              Handler for keyboard events
+                               // description:
+                               //              Keep keyboard focus in dialog; close dialog on escape key
+                               // tags:
+                               //              private
+
+                               var node = evt.target;
+                               var dk = dojo.keys;
+                               if(evt.charOrCode === dk.TAB){
+                                       this._getFocusItems(this.containerNode);
+                               }
+                               var singleFocusItem = (this._firstFocusItem == this._lastFocusItem);
+                               if(evt.charOrCode == dk.ESCAPE){
+                                       // Use setTimeout to avoid crash on IE, see #10396.
+                                       setTimeout(dojo.hitch(this, "onCancel"), 0);
+                                       dojo.stopEvent(evt);
+                               }else if(node == this._firstFocusItem && evt.shiftKey && evt.charOrCode === dk.TAB){
+                                       if(!singleFocusItem){
+                                               dijit.focus(this._lastFocusItem); // send focus to last item in dialog
+                                       }
+                                       dojo.stopEvent(evt);
+                               }else if(node == this._lastFocusItem && evt.charOrCode === dk.TAB && !evt.shiftKey){
+                                       if(!singleFocusItem){
+                                               dijit.focus(this._firstFocusItem); // send focus to first item in dialog
+                                       }
+                                       dojo.stopEvent(evt);
+                               }else if(evt.charOrCode === dk.TAB){
+                                       // we want the browser's default tab handling to move focus
+                                       // but we don't want the tab to propagate upwards
+                                       evt.stopPropagation();
+                               }
+                       }
+               }
+       );
+
+}
+
+if(!dojo._hasResource["dijit.Dialog"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.Dialog"] = true;
+dojo.provide("dijit.Dialog");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*=====
+dijit._underlay = function(kwArgs){
+       // summary:
+       //              A shared instance of a `dijit.DialogUnderlay`
+       //
+       // description:
+       //              A shared instance of a `dijit.DialogUnderlay` created and
+       //              used by `dijit.Dialog`, though never created until some Dialog
+       //              or subclass thereof is shown.
+};
+=====*/
+
+dojo.declare(
+       "dijit._DialogBase",
+       [dijit._Templated, dijit.form._FormMixin, dijit._DialogMixin, dijit._CssStateMixin],
+       {
+               // summary:
+               //              A modal dialog Widget
+               //
+               // description:
+               //              Pops up a modal dialog window, blocking access to the screen
+               //              and also graying out the screen Dialog is extended from
+               //              ContentPane so it supports all the same parameters (href, etc.)
+               //
+               // example:
+               // |    <div dojoType="dijit.Dialog" href="test.html"></div>
+               //
+               // example:
+               // |    var foo = new dijit.Dialog({ title: "test dialog", content: "test content" };
+               // |    dojo.body().appendChild(foo.domNode);
+               // |    foo.startup();
+
+               templateString: dojo.cache("dijit", "templates/Dialog.html", "<div class=\"dijitDialog\" tabindex=\"-1\" waiRole=\"dialog\" waiState=\"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=\"onclick: onCancel\" title=\"${buttonCancel}\">\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: Boolean
+               //              True if Dialog is currently displayed on screen.
+               open: false,
+
+               // duration: Integer
+               //              The time in milliseconds it takes the dialog to fade in and out
+               duration: dijit.defaultDuration,
+
+               // refocus: Boolean
+               //              A Toggle to modify the default focus behavior of a Dialog, which
+               //              is to re-focus the element which had focus before being opened.
+               //              False will disable refocusing. Default: true
+               refocus: true,
+
+               // autofocus: Boolean
+               //              A Toggle to modify the default focus behavior of a Dialog, which
+               //              is to focus on the first dialog element after opening the dialog.
+               //              False will disable autofocusing. Default: true
+               autofocus: true,
+
+               // _firstFocusItem: [private] [readonly] DomNode
+               //              The pointer to the first focusable node in the dialog.
+               //              Set by `dijit._DialogMixin._getFocusItems`.
+               _firstFocusItem: null,
+
+               // _lastFocusItem: [private] [readonly] DomNode
+               //              The pointer to which node has focus prior to our dialog.
+               //              Set by `dijit._DialogMixin._getFocusItems`.
+               _lastFocusItem: null,
+
+               // doLayout: [protected] Boolean
+               //              Don't change this parameter from the default value.
+               //              This ContentPane parameter doesn't make sense for Dialog, since Dialog
+               //              is never a child of a layout container, nor can you specify the size of
+               //              Dialog in order to control the size of an inner widget.
+               doLayout: false,
+
+               // draggable: Boolean
+               //              Toggles the moveable aspect of the Dialog. If true, Dialog
+               //              can be dragged by it's title. If false it will remain centered
+               //              in the viewport.
+               draggable: true,
+
+               //aria-describedby: String
+               //              Allows the user to add an aria-describedby attribute onto the dialog.   The value should
+               //              be the id of the container element of text that describes the dialog purpose (usually
+               //              the first text in the dialog).
+               //              <div dojoType="dijit.Dialog" aria-describedby="intro" .....>
+               //                      <div id="intro">Introductory text</div>
+               //                      <div>rest of dialog contents</div>
+               //              </div>
+               "aria-describedby":"",
+
+               postMixInProperties: function(){
+                       var _nlsResources = dojo.i18n.getLocalization("dijit", "common");
+                       dojo.mixin(this, _nlsResources);
+                       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(){
+                       // summary:
+                       //              Called when data has been loaded from an href.
+                       //              Unlike most other callbacks, this function can be connected to (via `dojo.connect`)
+                       //              but should *not* be overriden.
+                       // tags:
+                       //              callback
+
+                       // when href is specified we need to reposition the dialog after the data is loaded
+                       // and find the focusable elements
+                       this._position();
+                       if(this.autofocus){
+                               this._getFocusItems(this.domNode);
+                               dijit.focus(this._firstFocusItem);
+                       }
+                       this.inherited(arguments);
+               },
+
+               _endDrag: function(e){
+                       // summary:
+                       //              Called after dragging the Dialog. Saves the position of the dialog in the viewport.
+                       // tags:
+                       //              private
+                       if(e && e.node && e.node === this.domNode){
+                               this._relativePosition = dojo.position(e.node);
+                       }
+               },
+
+               _setup: function(){
+                       // summary:
+                       //              Stuff we need to do before showing the Dialog for the first
+                       //              time (but we defer it until right beforehand, for
+                       //              performance reasons).
+                       // tags:
+                       //              private
+
+                       var node = this.domNode;
+
+                       if(this.titleBar && this.draggable){
+                               this._moveable = (dojo.isIE == 6) ?
+                                       new dojo.dnd.TimedMoveable(node, { handle: this.titleBar }) :   // prevent overload, see #5285
+                                       new dojo.dnd.Moveable(node, { handle: this.titleBar, timeout: 0 });
+                               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(" ")
+                       };
+
+                       this._fadeIn = dojo.fadeIn({
+                               node: node,
+                               duration: this.duration,
+                               beforeBegin: dojo.hitch(this, function(){
+                                       var underlay = dijit._underlay;
+                                       if(!underlay){
+                                               underlay = dijit._underlay = new dijit.DialogUnderlay(this.underlayAttrs);
+                                       }else{
+                                               underlay.set(this.underlayAttrs);
+                                       }
+
+                                       var ds = dijit._dialogStack,
+                                               zIndex = 948 + ds.length*2;
+                                       if(ds.length == 1){     // first dialog
+                                               underlay.show();
+                                       }
+                                       dojo.style(dijit._underlay.domNode, 'zIndex', zIndex);
+                                       dojo.style(this.domNode, 'zIndex', zIndex + 1);
+                               }),
+                               onEnd: dojo.hitch(this, function(){
+                                       if(this.autofocus){
+                                               // find focusable Items each time dialog is shown since if dialog contains a widget the
+                                               // first focusable items can change
+                                               this._getFocusItems(this.domNode);
+                                               dijit.focus(this._firstFocusItem);
+                                       }
+                               })
+                        });
+
+                       this._fadeOut = dojo.fadeOut({
+                               node: node,
+                               duration: this.duration,
+                               onEnd: dojo.hitch(this, function(){
+                                       node.style.display = "none";
+
+                                       // Restore the previous dialog in the stack, or if this is the only dialog
+                                       // then restore to original page
+                                       var ds = dijit._dialogStack;
+                                       if(ds.length == 0){
+                                               dijit._underlay.hide();
+                                       }else{
+                                               dojo.style(dijit._underlay.domNode, 'zIndex', 948 + ds.length*2);
+                                               dijit._underlay.set(ds[ds.length-1].underlayAttrs);
+                                       }
+
+                                       // Restore focus to wherever it was before this dialog was displayed
+                                       if(this.refocus){
+                                               var focus = this._savedFocus;
+
+                                               // If we are returning control to a previous dialog but for some reason
+                                               // that dialog didn't have a focused field, set focus to first focusable item.
+                                               // This situation could happen if two dialogs appeared at nearly the same time,
+                                               // since a dialog doesn't set it's focus until the fade-in is finished.
+                                               if(ds.length > 0){
+                                                       var pd = ds[ds.length-1];
+                                                       if(!dojo.isDescendant(focus.node, pd.domNode)){
+                                                               pd._getFocusItems(pd.domNode);
+                                                               focus = pd._firstFocusItem;
+                                                       }
+                                               }
+
+                                               dijit.focus(focus);
+                                       }
+                               })
+                        });
+               },
+
+               uninitialize: function(){
+                       var wasPlaying = false;
+                       if(this._fadeIn && this._fadeIn.status() == "playing"){
+                               wasPlaying = true;
+                               this._fadeIn.stop();
+                       }
+                       if(this._fadeOut && this._fadeOut.status() == "playing"){
+                               wasPlaying = true;
+                               this._fadeOut.stop();
+                       }
+                       
+                       // Hide the underlay, unless the underlay widget has already been destroyed
+                       // because we are being called during page unload (when all widgets are destroyed)
+                       if((this.open || wasPlaying) && !dijit._underlay._destroyed){
+                               dijit._underlay.hide();
+                       }
+
+                       if(this._moveable){
+                               this._moveable.destroy();
+                       }
+                       this.inherited(arguments);
+               },
+
+               _size: function(){
+                       // summary:
+                       //              If necessary, shrink dialog contents so dialog fits in viewport
+                       // tags:
+                       //              private
+
+                       this._checkIfSingleChild();
+
+                       // If we resized the dialog contents earlier, reset them back to original size, so
+                       // that if the user later increases the viewport size, the dialog can display w/out a scrollbar.
+                       // Need to do this before the dojo.marginBox(this.domNode) call below.
+                       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.marginBox(this.domNode);
+                       var viewport = dojo.window.getBox();
+                       if(mb.w >= viewport.w || mb.h >= viewport.h){
+                               // Reduce size of dialog contents so that dialog fits in viewport
+
+                               var w = Math.min(mb.w, Math.floor(viewport.w * 0.75)),
+                                       h = Math.min(mb.h, Math.floor(viewport.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"    // workaround IE bug moving scrollbar or dragging dialog
+                                       });
+                               }
+                       }else{
+                               if(this._singleChild && this._singleChild.resize){
+                                       this._singleChild.resize();
+                               }
+                       }
+               },
+
+               _position: function(){
+                       // summary:
+                       //              Position modal dialog in the viewport. If no relative offset
+                       //              in the viewport has been determined (by dragging, for instance),
+                       //              center the node. Otherwise, use the Dialog's stored relative offset,
+                       //              and position the node to top: left: values based on the viewport.
+                       // tags:
+                       //              private
+                       if(!dojo.hasClass(dojo.body(),"dojoMove")){
+                               var node = this.domNode,
+                                       viewport = dojo.window.getBox(),
+                                       p = this._relativePosition,
+                                       bb = p ? null : dojo._getBorderBox(node),
+                                       l = Math.floor(viewport.l + (p ? p.x : (viewport.w - bb.w) / 2)),
+                                       t = Math.floor(viewport.t + (p ? p.y : (viewport.h - bb.h) / 2))
+                               ;
+                               dojo.style(node,{
+                                       left: l + "px",
+                                       top: t + "px"
+                               });
+                       }
+               },
+
+               _onKey: function(/*Event*/ evt){
+                       // summary:
+                       //              Handles the keyboard events for accessibility reasons
+                       // tags:
+                       //              private
+
+                       var ds = dijit._dialogStack;
+                       if(ds[ds.length-1] != this){
+                               // console.debug(this.id + ': skipping because', this, 'is not the active dialog');
+                               return;
+                       }
+
+                       if(evt.charOrCode){
+                               var dk = dojo.keys;
+                               var node = evt.target;
+                               if(evt.charOrCode === dk.TAB){
+                                       this._getFocusItems(this.domNode);
+                               }
+                               var singleFocusItem = (this._firstFocusItem == this._lastFocusItem);
+                               // see if we are shift-tabbing from first focusable item on dialog
+                               if(node == this._firstFocusItem && evt.shiftKey && evt.charOrCode === dk.TAB){
+                                       if(!singleFocusItem){
+                                               dijit.focus(this._lastFocusItem); // send focus to last item in dialog
+                                       }
+                                       dojo.stopEvent(evt);
+                               }else if(node == this._lastFocusItem && evt.charOrCode === dk.TAB && !evt.shiftKey){
+                                       if(!singleFocusItem){
+                                               dijit.focus(this._firstFocusItem); // send focus to first item in dialog
+                                       }
+                                       dojo.stopEvent(evt);
+                               }else{
+                                       // see if the key is for the dialog
+                                       while(node){
+                                               if(node == this.domNode || dojo.hasClass(node, "dijitPopup")){
+                                                       if(evt.charOrCode == dk.ESCAPE){
+                                                               this.onCancel();
+                                                       }else{
+                                                               return; // just let it go
+                                                       }
+                                               }
+                                               node = node.parentNode;
+                                       }
+                                       // this key is for the disabled document window
+                                       if(evt.charOrCode !== dk.TAB){ // allow tabbing into the dialog for a11y
+                                               dojo.stopEvent(evt);
+                                       // opera won't tab to a div
+                                       }else if(!dojo.isOpera){
+                                               try{
+                                                       this._firstFocusItem.focus();
+                                               }catch(e){ /*squelch*/ }
+                                       }
+                               }
+                       }
+               },
+
+               show: function(){
+                       // summary:
+                       //              Display the dialog
+                       if(this.open){ return; }
+
+                       // first time we show the dialog, there's some initialization stuff to do
+                       if(!this._alreadyInitialized){
+                               this._setup();
+                               this._alreadyInitialized=true;
+                       }
+
+                       if(this._fadeOut.status() == "playing"){
+                               this._fadeOut.stop();
+                       }
+
+                       this._modalconnects.push(dojo.connect(window, "onscroll", this, "layout"));
+                       this._modalconnects.push(dojo.connect(window, "onresize", this, function(){
+                               // IE gives spurious resize events and can actually get stuck
+                               // in an infinite loop if we don't ignore them
+                               var viewport = dojo.window.getBox();
+                               if(!this._oldViewport ||
+                                               viewport.h != this._oldViewport.h ||
+                                               viewport.w != this._oldViewport.w){
+                                       this.layout();
+                                       this._oldViewport = viewport;
+                               }
+                       }));
+                       this._modalconnects.push(dojo.connect(dojo.doc.documentElement, "onkeypress", this, "_onKey"));
+
+                       dojo.style(this.domNode, {
+                               opacity:0,
+                               display:""
+                       });
+
+                       this.open = true;
+                       this._onShow(); // lazy load trigger
+
+                       this._size();
+                       this._position();
+                       dijit._dialogStack.push(this);
+                       this._fadeIn.play();
+
+                       this._savedFocus = dijit.getFocus(this);
+               },
+
+               hide: function(){
+                       // summary:
+                       //              Hide the dialog
+
+                       // if we haven't been initialized yet then we aren't showing and we can just return
+                       // or if we aren't the active dialog, don't allow us to close yet
+                       var ds = dijit._dialogStack;
+                       if(!this._alreadyInitialized || this != ds[ds.length-1]){
+                               return;
+                       }
+
+                       if(this._fadeIn.status() == "playing"){
+                               this._fadeIn.stop();
+                       }
+
+                       // throw away current active dialog from stack -- making the previous dialog or the node on the original page active
+                       ds.pop();
+
+                       this._fadeOut.play();
+
+                       if(this._scrollConnected){
+                               this._scrollConnected = false;
+                       }
+                       dojo.forEach(this._modalconnects, dojo.disconnect);
+                       this._modalconnects = [];
+
+                       if(this._relativePosition){
+                               delete this._relativePosition;
+                       }
+                       this.open = false;
+
+                       this.onHide();
+               },
+
+               layout: function(){
+                       // summary:
+                       //              Position the Dialog and the underlay
+                       // tags:
+                       //              private
+                       if(this.domNode.style.display != "none"){
+                               if(dijit._underlay){    // avoid race condition during show()
+                                       dijit._underlay.layout();
+                               }
+                               this._position();
+                       }
+               },
+
+               destroy: function(){
+                       dojo.forEach(this._modalconnects, dojo.disconnect);
+                       if(this.refocus && this.open){
+                               setTimeout(dojo.hitch(dijit,"focus",this._savedFocus), 25);
+                       }
+                       this.inherited(arguments);
+               }
+       }
+);
+
+dojo.declare(
+       "dijit.Dialog",
+       [dijit.layout.ContentPane, dijit._DialogBase],
+       {}
+);
+
+// Stack of currenctly displayed dialogs, layered on top of each other
+dijit._dialogStack = [];
+
+// For back-compat.  TODO: remove in 2.0
+
+
+}
+
+if(!dojo._hasResource["dijit._editor.selection"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._editor.selection"] = true;
+dojo.provide("dijit._editor.selection");
+
+// FIXME:
+//             all of these methods branch internally for IE. This is probably
+//             sub-optimal in terms of runtime performance. We should investigate the
+//             size difference for differentiating at definition time.
+
+dojo.mixin(dijit._editor.selection, {
+       getType: function(){
+               // summary:
+               //              Get the selection type (like dojo.doc.select.type in IE).
+               if(dojo.isIE){
+                       return dojo.doc.selection.type.toLowerCase();
+               }else{
+                       var stype = "text";
+
+                       // Check if the actual selection is a CONTROL (IMG, TABLE, HR, etc...).
+                       var oSel;
+                       try{
+                               oSel = dojo.global.getSelection();
+                       }catch(e){ /*squelch*/ }
+
+                       if(oSel && oSel.rangeCount == 1){
+                               var oRange = oSel.getRangeAt(0);
+                               if(     (oRange.startContainer == oRange.endContainer) &&
+                                       ((oRange.endOffset - oRange.startOffset) == 1) &&
+                                       (oRange.startContainer.nodeType != 3 /* text node*/)
+                               ){
+                                       stype = "control";
+                               }
+                       }
+                       return stype; //String
+               }
+       },
+
+       getSelectedText: function(){
+               // summary:
+               //              Return the text (no html tags) included in the current selection or null if no text is selected
+               if(dojo.isIE){
+                       if(dijit._editor.selection.getType() == 'control'){
+                               return null;
+                       }
+                       return dojo.doc.selection.createRange().text;
+               }else{
+                       var selection = dojo.global.getSelection();
+                       if(selection){
+                               return selection.toString(); //String
+                       }
+               }
+               return '';
+       },
+
+       getSelectedHtml: function(){
+               // summary:
+               //              Return the html text of the current selection or null if unavailable
+               if(dojo.isIE){
+                       if(dijit._editor.selection.getType() == 'control'){
+                               return null;
+                       }
+                       return dojo.doc.selection.createRange().htmlText;
+               }else{
+                       var selection = dojo.global.getSelection();
+                       if(selection && selection.rangeCount){
+                               var i;
+                               var html = "";
+                               for(i = 0; i < selection.rangeCount; i++){
+                                       //Handle selections spanning ranges, such as Opera
+                                       var frag = selection.getRangeAt(i).cloneContents();
+                                       var div = dojo.doc.createElement("div");
+                                       div.appendChild(frag);
+                                       html += div.innerHTML;
+                               }
+                               return html; //String
+                       }
+                       return null;
+               }
+       },
+
+       getSelectedElement: function(){
+               // summary:
+               //              Retrieves the selected element (if any), just in the case that
+               //              a single element (object like and image or a table) is
+               //              selected.
+               if(dijit._editor.selection.getType() == "control"){
+                       if(dojo.isIE){
+                               var range = dojo.doc.selection.createRange();
+                               if(range && range.item){
+                                       return dojo.doc.selection.createRange().item(0);
+                               }
+                       }else{
+                               var selection = dojo.global.getSelection();
+                               return selection.anchorNode.childNodes[ selection.anchorOffset ];
+                       }
+               }
+               return null;
+       },
+
+       getParentElement: function(){
+               // summary:
+               //              Get the parent element of the current selection
+               if(dijit._editor.selection.getType() == "control"){
+                       var p = this.getSelectedElement();
+                       if(p){ return p.parentNode; }
+               }else{
+                       if(dojo.isIE){
+                               var r = dojo.doc.selection.createRange();
+                               r.collapse(true);
+                               return r.parentElement();
+                       }else{
+                               var selection = dojo.global.getSelection();
+                               if(selection){
+                                       var node = selection.anchorNode;
+                                       while(node && (node.nodeType != 1)){ // not an element
+                                               node = node.parentNode;
+                                       }
+                                       return node;
+                               }
+                       }
+               }
+               return null;
+       },
+
+       hasAncestorElement: function(/*String*/tagName /* ... */){
+               // summary:
+               //              Check whether current selection has a  parent element which is
+               //              of type tagName (or one of the other specified tagName)
+               // tagName: String
+               //              The tag name to determine if it has an ancestor of.
+               return this.getAncestorElement.apply(this, arguments) != null; //Boolean
+       },
+
+       getAncestorElement: function(/*String*/tagName /* ... */){
+               // summary:
+               //              Return the parent element of the current selection which is of
+               //              type tagName (or one of the other specified tagName)
+               // tagName: String
+               //              The tag name to determine if it has an ancestor of.
+               var node = this.getSelectedElement() || this.getParentElement();
+               return this.getParentOfType(node, arguments); //DOMNode
+       },
+
+       isTag: function(/*DomNode*/ node, /*String[]*/ tags){
+               // summary:
+               //              Function to determine if a node is one of an array of tags.
+               // node:
+               //              The node to inspect.
+               // tags:
+               //              An array of tag name strings to check to see if the node matches.
+               if(node && node.tagName){
+                       var _nlc = node.tagName.toLowerCase();
+                       for(var i=0; i<tags.length; i++){
+                               var _tlc = String(tags[i]).toLowerCase();
+                               if(_nlc == _tlc){
+                                       return _tlc; // String
+                               }
+                       }
+               }
+               return "";
+       },
+
+       getParentOfType: function(/*DomNode*/ node, /*String[]*/ tags){
+               // summary:
+               //              Function to locate a parent node that matches one of a set of tags
+               // node:
+               //              The node to inspect.
+               // tags:
+               //              An array of tag name strings to check to see if the node matches.
+               while(node){
+                       if(this.isTag(node, tags).length){
+                               return node; // DOMNode
+                       }
+                       node = node.parentNode;
+               }
+               return null;
+       },
+
+       collapse: function(/*Boolean*/beginning){
+               // summary:
+               //              Function to collapse (clear), the current selection
+               // beginning: Boolean
+               //              Boolean to indicate whether to collapse the cursor to the beginning of the selection or end.
+               if(window.getSelection){
+                       var selection = dojo.global.getSelection();
+                       if(selection.removeAllRanges){ // Mozilla
+                               if(beginning){
+                                       selection.collapseToStart();
+                               }else{
+                                       selection.collapseToEnd();
+                               }
+                       }else{ // Safari
+                               // pulled from WebCore/ecma/kjs_window.cpp, line 2536
+                               selection.collapse(beginning);
+                       }
+               }else if(dojo.isIE){ // IE
+                       var range = dojo.doc.selection.createRange();
+                       range.collapse(beginning);
+                       range.select();
+               }
+       },
+
+       remove: function(){
+               // summary:
+               //              Function to delete the currently selected content from the document.
+               var sel = dojo.doc.selection;
+               if(dojo.isIE){
+                       if(sel.type.toLowerCase() != "none"){
+                               sel.clear();
+                       }
+                       return sel; //Selection
+               }else{
+                       sel = dojo.global.getSelection();
+                       sel.deleteFromDocument();
+                       return sel; //Selection
+               }
+       },
+
+       selectElementChildren: function(/*DomNode*/element,/*Boolean?*/nochangefocus){
+               // summary:
+               //              clear previous selection and select the content of the node
+               //              (excluding the node itself)
+               // element: DOMNode
+               //              The element you wish to select the children content of.
+               // nochangefocus: Boolean
+               //              Boolean to indicate if the foxus should change or not.
+               var win = dojo.global;
+               var doc = dojo.doc;
+               var range;
+               element = dojo.byId(element);
+               if(doc.selection && dojo.isIE && dojo.body().createTextRange){ // IE
+                       range = element.ownerDocument.body.createTextRange();
+                       range.moveToElementText(element);
+                       if(!nochangefocus){
+                               try{
+                                       range.select(); // IE throws an exception here if the widget is hidden.  See #5439
+                               }catch(e){ /* squelch */}
+                       }
+               }else if(win.getSelection){
+                       var selection = dojo.global.getSelection();
+                       if(dojo.isOpera){
+                               //Opera's selectAllChildren doesn't seem to work right
+                               //against <body> nodes and possibly others ... so
+                               //we use the W3C range API
+                               if(selection.rangeCount){
+                                       range = selection.getRangeAt(0);
+                               }else{
+                                       range = doc.createRange();
+                               }
+                               range.setStart(element, 0);
+                               range.setEnd(element,(element.nodeType == 3)?element.length:element.childNodes.length);
+                               selection.addRange(range);
+                       }else{
+                               selection.selectAllChildren(element);
+                       }
+               }
+       },
+
+       selectElement: function(/*DomNode*/element,/*Boolean?*/nochangefocus){
+               // summary:
+               //              clear previous selection and select element (including all its children)
+               // element:  DOMNode
+               //              The element to select.
+               // nochangefocus: Boolean
+               //              Boolean indicating if the focus should be changed.  IE only.
+               var range;
+               var doc = dojo.doc;
+               var win = dojo.global;
+               element = dojo.byId(element);
+               if(dojo.isIE && dojo.body().createTextRange){
+                       try{
+                               range = dojo.body().createControlRange();
+                               range.addElement(element);
+                               if(!nochangefocus){
+                                       range.select();
+                               }
+                       }catch(e){
+                               this.selectElementChildren(element,nochangefocus);
+                       }
+               }else if(dojo.global.getSelection){
+                       var selection = win.getSelection();
+                       range = doc.createRange();
+                       if(selection.removeAllRanges){ // Mozilla
+                               // FIXME: does this work on Safari?
+                               if(dojo.isOpera){
+                                       //Opera works if you use the current range on
+                                       //the selection if present.
+                                       if(selection.getRangeAt(0)){
+                                               range = selection.getRangeAt(0);
+                                       }
+                               }
+                               range.selectNode(element);
+                               selection.removeAllRanges();
+                               selection.addRange(range);
+                       }
+               }
+       },
+
+       inSelection: function(node){
+               // summary:
+               //              This function determines if 'node' is
+               //              in the current selection.
+               // tags:
+               //              public
+               if(node){
+                       var newRange;
+                       var doc = dojo.doc;
+                       var range;
+
+                       if(dojo.global.getSelection){
+                               //WC3
+                               var sel = dojo.global.getSelection();
+                               if(sel && sel.rangeCount > 0){
+                                       range = sel.getRangeAt(0);
+                               }
+                               if(range && range.compareBoundaryPoints && doc.createRange){
+                                       try{
+                                               newRange = doc.createRange();
+                                               newRange.setStart(node, 0);
+                                               if(range.compareBoundaryPoints(range.START_TO_END, newRange) === 1){
+                                                       return true;
+                                               }
+                                       }catch(e){ /* squelch */}
+                               }
+                       }else if(doc.selection){
+                               // Probably IE, so we can't use the range object as the pseudo
+                               // range doesn't implement the boundry checking, we have to 
+                               // use IE specific crud.
+                               range = doc.selection.createRange();
+                               try{
+                                       newRange = node.ownerDocument.body.createControlRange();
+                                       if(newRange){
+                                               newRange.addElement(node);
+                                       }
+                               }catch(e1){
+                                       try{
+                                               newRange = node.ownerDocument.body.createTextRange();
+                                               newRange.moveToElementText(node);
+                                       }catch(e2){/* squelch */}
+                               }
+                               if(range && newRange){
+                                       // We can finally compare similar to W3C
+                                       if(range.compareEndPoints("EndToStart", newRange) === 1){
+                                               return true;
+                                       }
+                               }
+                       }
+               }
+               return false; // boolean
+       }
+
+});
+
+}
+
+if(!dojo._hasResource["dijit._editor.range"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._editor.range"] = true;
+dojo.provide("dijit._editor.range");
+
+dijit.range={};
+
+dijit.range.getIndex=function(/*DomNode*/node, /*DomNode*/parent){
+//     dojo.profile.start("dijit.range.getIndex");
+       var ret=[], retR=[];
+       var stop = parent;
+       var onode = node;
+
+       var pnode, n;
+       while(node != stop){
+               var i = 0;
+               pnode = node.parentNode;
+               while((n=pnode.childNodes[i++])){
+                       if(n === node){
+                               --i;
+                               break;
+                       }
+               }
+               //if(i>=pnode.childNodes.length){
+                       //dojo.debug("Error finding index of a node in dijit.range.getIndex");
+               //}
+               ret.unshift(i);
+               retR.unshift(i-pnode.childNodes.length);
+               node = pnode;
+       }
+
+       //normalized() can not be called so often to prevent
+       //invalidating selection/range, so we have to detect
+       //here that any text nodes in a row
+       if(ret.length > 0 && onode.nodeType == 3){
+               n = onode.previousSibling;
+               while(n && n.nodeType == 3){
+                       ret[ret.length-1]--;
+                       n = n.previousSibling;
+               }
+               n = onode.nextSibling;
+               while(n && n.nodeType == 3){
+                       retR[retR.length-1]++;
+                       n = n.nextSibling;
+               }
+       }
+//     dojo.profile.end("dijit.range.getIndex");
+       return {o: ret, r:retR};
+}
+
+dijit.range.getNode = function(/*Array*/index, /*DomNode*/parent){
+       if(!dojo.isArray(index) || index.length == 0){
+               return parent;
+       }
+       var node = parent;
+//     if(!node)debugger
+       dojo.every(index, function(i){
+               if(i >= 0 && i < node.childNodes.length){
+                       node = node.childNodes[i];
+               }else{
+                       node = null;
+                       //console.debug('Error: can not find node with index',index,'under parent node',parent );
+                       return false; //terminate dojo.every
+               }
+               return true; //carry on the every loop
+       });
+
+       return node;
+}
+
+dijit.range.getCommonAncestor = function(n1,n2,root){
+       root = root||n1.ownerDocument.body;
+       var getAncestors = function(n){
+               var as=[];
+               while(n){
+                       as.unshift(n);
+                       if(n !== root){
+                               n = n.parentNode;
+                       }else{
+                               break;
+                       }
+               }
+               return as;
+       };
+       var n1as = getAncestors(n1);
+       var n2as = getAncestors(n2);
+
+       var m = Math.min(n1as.length,n2as.length);
+       var com = n1as[0]; //at least, one element should be in the array: the root (BODY by default)
+       for(var i=1;i<m;i++){
+               if(n1as[i] === n2as[i]){
+                       com = n1as[i]
+               }else{
+                       break;
+               }
+       }
+       return com;
+}
+
+dijit.range.getAncestor = function(/*DomNode*/node, /*RegEx?*/regex, /*DomNode?*/root){
+       root = root || node.ownerDocument.body;
+       while(node && node !== root){
+               var name = node.nodeName.toUpperCase() ;
+               if(regex.test(name)){
+                       return node;
+               }
+
+               node = node.parentNode;
+       }
+       return null;
+}
+
+dijit.range.BlockTagNames = /^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/;
+dijit.range.getBlockAncestor = function(/*DomNode*/node, /*RegEx?*/regex, /*DomNode?*/root){
+       root = root || node.ownerDocument.body;
+       regex = regex || dijit.range.BlockTagNames;
+       var block=null, blockContainer;
+       while(node && node !== root){
+               var name = node.nodeName.toUpperCase() ;
+               if(!block && regex.test(name)){
+                       block = node;
+               }
+               if(!blockContainer && (/^(?:BODY|TD|TH|CAPTION)$/).test(name)){
+                       blockContainer = node;
+               }
+
+               node = node.parentNode;
+       }
+       return {blockNode:block, blockContainer:blockContainer || node.ownerDocument.body};
+}
+
+dijit.range.atBeginningOfContainer = function(/*DomNode*/container, /*DomNode*/node, /*Int*/offset){
+       var atBeginning = false;
+       var offsetAtBeginning = (offset == 0);
+       if(!offsetAtBeginning && node.nodeType == 3){ //if this is a text node, check whether the left part is all space
+               if(/^[\s\xA0]+$/.test(node.nodeValue.substr(0,offset))){
+                       offsetAtBeginning = true;
+               }
+       }
+       if(offsetAtBeginning){
+               var cnode = node;
+               atBeginning = true;
+               while(cnode && cnode !== container){
+                       if(cnode.previousSibling){
+                               atBeginning = false;
+                               break;
+                       }
+                       cnode = cnode.parentNode;
+               }
+       }
+       return atBeginning;
+}
+
+dijit.range.atEndOfContainer = function(/*DomNode*/container, /*DomNode*/node, /*Int*/offset){
+       var atEnd = false;
+       var offsetAtEnd = (offset == (node.length || node.childNodes.length));
+       if(!offsetAtEnd && node.nodeType == 3){ //if this is a text node, check whether the right part is all space
+               if(/^[\s\xA0]+$/.test(node.nodeValue.substr(offset))){
+                       offsetAtEnd = true;
+               }
+       }
+       if(offsetAtEnd){
+               var cnode = node;
+               atEnd = true;
+               while(cnode && cnode !== container){
+                       if(cnode.nextSibling){
+                               atEnd = false;
+                               break;
+                       }
+                       cnode = cnode.parentNode;
+               }
+       }
+       return atEnd;
+}
+
+dijit.range.adjacentNoneTextNode=function(startnode, next){
+       var node = startnode;
+       var len = (0-startnode.length) || 0;
+       var prop = next?'nextSibling':'previousSibling';
+       while(node){
+               if(node.nodeType!=3){
+                       break;
+               }
+               len += node.length
+               node = node[prop];
+       }
+       return [node,len];
+}
+
+dijit.range._w3c = Boolean(window['getSelection']);
+dijit.range.create = function(/*Window?*/win){
+       if(dijit.range._w3c){
+               return (win || dojo.global).document.createRange();
+       }else{//IE
+               return new dijit.range.W3CRange;
+       }
+}
+
+dijit.range.getSelection = function(/*Window*/win, /*Boolean?*/ignoreUpdate){
+       if(dijit.range._w3c){
+               return win.getSelection();
+       }else{//IE
+               var s = new dijit.range.ie.selection(win);
+               if(!ignoreUpdate){
+                       s._getCurrentSelection();
+               }
+               return s;
+       }
+}
+
+if(!dijit.range._w3c){
+       dijit.range.ie={
+               cachedSelection: {},
+               selection: function(win){
+                       this._ranges = [];
+                       this.addRange = function(r, /*boolean*/internal){
+                               this._ranges.push(r);
+                               if(!internal){
+                                       r._select();
+                               }
+                               this.rangeCount = this._ranges.length;
+                       };
+                       this.removeAllRanges = function(){
+                               //don't detach, the range may be used later
+//                             for(var i=0;i<this._ranges.length;i++){
+//                                     this._ranges[i].detach();
+//                             }
+                               this._ranges = [];
+                               this.rangeCount = 0;
+                       };
+                       var _initCurrentRange = function(){
+                               var r = win.document.selection.createRange();
+                               var type=win.document.selection.type.toUpperCase();
+                               if(type == "CONTROL"){
+                                       //TODO: multiple range selection(?)
+                                       return new dijit.range.W3CRange(dijit.range.ie.decomposeControlRange(r));
+                               }else{
+                                       return new dijit.range.W3CRange(dijit.range.ie.decomposeTextRange(r));
+                               }
+                       };
+                       this.getRangeAt = function(i){
+                               return this._ranges[i];
+                       };
+                       this._getCurrentSelection = function(){
+                               this.removeAllRanges();
+                               var r=_initCurrentRange();
+                               if(r){
+                                       this.addRange(r, true);
+                               }
+                       };
+               },
+               decomposeControlRange: function(range){
+                       var firstnode = range.item(0), lastnode = range.item(range.length-1);
+                       var startContainer = firstnode.parentNode, endContainer = lastnode.parentNode;
+                       var startOffset = dijit.range.getIndex(firstnode, startContainer).o;
+                       var endOffset = dijit.range.getIndex(lastnode, endContainer).o+1;
+                       return [startContainer, startOffset,endContainer, endOffset];
+               },
+               getEndPoint: function(range, end){
+                       var atmrange = range.duplicate();
+                       atmrange.collapse(!end);
+                       var cmpstr = 'EndTo' + (end?'End':'Start');
+                       var parentNode = atmrange.parentElement();
+
+                       var startnode, startOffset, lastNode;
+                       if(parentNode.childNodes.length>0){
+                               dojo.every(parentNode.childNodes, function(node,i){
+                                       var calOffset;
+                                       if(node.nodeType != 3){
+                                               atmrange.moveToElementText(node);
+
+                                               if(atmrange.compareEndPoints(cmpstr,range) > 0){
+                                                       //startnode = node.previousSibling;
+                                                       if(lastNode && lastNode.nodeType == 3){
+                                                               //where shall we put the start? in the text node or after?
+                                                               startnode = lastNode;
+                                                               calOffset = true;
+                                                       }else{
+                                                               startnode = parentNode;
+                                                               startOffset = i;
+                                                               return false;
+                                                       }
+                                               }else{
+                                                       if(i == parentNode.childNodes.length-1){
+                                                               startnode = parentNode;
+                                                               startOffset = parentNode.childNodes.length;
+                                                               return false;
+                                                       }
+                                               }
+                                       }else{
+                                               if(i == parentNode.childNodes.length-1){//at the end of this node
+                                                       startnode = node;
+                                                       calOffset = true;
+                                               }
+                                       }
+               //                      try{
+                                               if(calOffset && startnode){
+                                                       var prevnode = dijit.range.adjacentNoneTextNode(startnode)[0];
+                                                       if(prevnode){
+                                                               startnode = prevnode.nextSibling;
+                                                       }else{
+                                                               startnode = parentNode.firstChild; //firstChild must be a text node
+                                                       }
+                                                       var prevnodeobj = dijit.range.adjacentNoneTextNode(startnode);
+                                                       prevnode = prevnodeobj[0];
+                                                       var lenoffset = prevnodeobj[1];
+                                                       if(prevnode){
+                                                               atmrange.moveToElementText(prevnode);
+                                                               atmrange.collapse(false);
+                                                       }else{
+                                                               atmrange.moveToElementText(parentNode);
+                                                       }
+                                                       atmrange.setEndPoint(cmpstr, range);
+                                                       startOffset = atmrange.text.length-lenoffset;
+
+                                                       return false;
+                                               }
+               //                      }catch(e){ debugger }
+                                       lastNode = node;
+                                       return true;
+                               });
+                       }else{
+                               startnode = parentNode;
+                               startOffset = 0;
+                       }
+
+                       //if at the end of startnode and we are dealing with start container, then
+                       //move the startnode to nextSibling if it is a text node
+                       //TODO: do this for end container?
+                       if(!end && startnode.nodeType == 1 && startOffset == startnode.childNodes.length){
+                               var nextnode=startnode.nextSibling;
+                               if(nextnode && nextnode.nodeType == 3){
+                                       startnode = nextnode;
+                                       startOffset = 0;
+                               }
+                       }
+                       return [startnode, startOffset];
+               },
+               setEndPoint: function(range, container, offset){
+                       //text node
+                       var atmrange = range.duplicate(), node, len;
+                       if(container.nodeType!=3){ //normal node
+                               if(offset > 0){
+                                       node = container.childNodes[offset-1];
+                                       if(node){
+                                               if(node.nodeType == 3){
+                                                       container = node;
+                                                       offset = node.length;
+                                                       //pass through
+                                               }else{
+                                                       if(node.nextSibling && node.nextSibling.nodeType == 3){
+                                                               container=node.nextSibling;
+                                                               offset=0;
+                                                               //pass through
+                                                       }else{
+                                                               atmrange.moveToElementText(node.nextSibling?node:container);
+                                                               var parent = node.parentNode;
+                                                               var tempNode = parent.insertBefore(node.ownerDocument.createTextNode(' '), node.nextSibling);
+                                                               atmrange.collapse(false);
+                                                               parent.removeChild(tempNode);
+                                                       }
+                                               }
+                                       }
+                               }else{
+                                       atmrange.moveToElementText(container);
+                                       atmrange.collapse(true);
+                               }
+                       }
+                       if(container.nodeType == 3){
+                               var prevnodeobj = dijit.range.adjacentNoneTextNode(container);
+                               var prevnode = prevnodeobj[0];
+                               len = prevnodeobj[1];
+                               if(prevnode){
+                                       atmrange.moveToElementText(prevnode);
+                                       atmrange.collapse(false);
+                                       //if contentEditable is not inherit, the above collapse won't make the end point
+                                       //in the correctly position: it always has a -1 offset, so compensate it
+                                       if(prevnode.contentEditable!='inherit'){
+                                               len++;
+                                       }
+                               }else{
+                                       atmrange.moveToElementText(container.parentNode);
+                                       atmrange.collapse(true);
+                               }
+
+                               offset += len;
+                               if(offset>0){
+                                       if(atmrange.move('character',offset) != offset){
+                                               console.error('Error when moving!');
+                                       }
+                               }
+                       }
+
+                       return atmrange;
+               },
+               decomposeTextRange: function(range){
+                       var tmpary = dijit.range.ie.getEndPoint(range);
+                       var startContainer = tmpary[0], startOffset = tmpary[1];
+                       var endContainer = tmpary[0], endOffset = tmpary[1];
+
+                       if(range.htmlText.length){
+                               if(range.htmlText == range.text){ //in the same text node
+                                       endOffset = startOffset+range.text.length;
+                               }else{
+                                       tmpary = dijit.range.ie.getEndPoint(range,true);
+                                       endContainer = tmpary[0], endOffset = tmpary[1];
+//                                     if(startContainer.tagName == "BODY"){
+//                                             startContainer = startContainer.firstChild;
+//                                     }
+                               }
+                       }
+                       return [startContainer, startOffset, endContainer, endOffset];
+               },
+               setRange: function(range, startContainer,
+                       startOffset, endContainer, endOffset, collapsed){
+                       var start=dijit.range.ie.setEndPoint(range, startContainer, startOffset);
+
+                       range.setEndPoint('StartToStart',start);
+                       if(!collapsed){
+                               var end=dijit.range.ie.setEndPoint(range, endContainer, endOffset);
+                       }
+                       range.setEndPoint('EndToEnd',end || start);
+
+                       return range;
+               }
+       }
+
+dojo.declare("dijit.range.W3CRange",null, {
+       constructor: function(){
+               if(arguments.length>0){
+                       this.setStart(arguments[0][0],arguments[0][1]);
+                       this.setEnd(arguments[0][2],arguments[0][3]);
+               }else{
+                       this.commonAncestorContainer = null;
+                       this.startContainer = null;
+                       this.startOffset = 0;
+                       this.endContainer = null;
+                       this.endOffset = 0;
+                       this.collapsed = true;
+               }
+       },
+       _updateInternal: function(){
+               if(this.startContainer !== this.endContainer){
+                       this.commonAncestorContainer = dijit.range.getCommonAncestor(this.startContainer, this.endContainer);
+               }else{
+                       this.commonAncestorContainer = this.startContainer;
+               }
+               this.collapsed = (this.startContainer === this.endContainer) && (this.startOffset == this.endOffset);
+       },
+       setStart: function(node, offset){
+               offset=parseInt(offset);
+               if(this.startContainer === node && this.startOffset == offset){
+                       return;
+               }
+               delete this._cachedBookmark;
+
+               this.startContainer = node;
+               this.startOffset = offset;
+               if(!this.endContainer){
+                       this.setEnd(node, offset);
+               }else{
+                       this._updateInternal();
+               }
+       },
+       setEnd: function(node, offset){
+               offset=parseInt(offset);
+               if(this.endContainer === node && this.endOffset == offset){
+                       return;
+               }
+               delete this._cachedBookmark;
+
+               this.endContainer = node;
+               this.endOffset = offset;
+               if(!this.startContainer){
+                       this.setStart(node, offset);
+               }else{
+                       this._updateInternal();
+               }
+       },
+       setStartAfter: function(node, offset){
+               this._setPoint('setStart', node, offset, 1);
+       },
+       setStartBefore: function(node, offset){
+               this._setPoint('setStart', node, offset, 0);
+       },
+       setEndAfter: function(node, offset){
+               this._setPoint('setEnd', node, offset, 1);
+       },
+       setEndBefore: function(node, offset){
+               this._setPoint('setEnd', node, offset, 0);
+       },
+       _setPoint: function(what, node, offset, ext){
+               var index = dijit.range.getIndex(node, node.parentNode).o;
+               this[what](node.parentNode, index.pop()+ext);
+       },
+       _getIERange: function(){
+               var r = (this._body || this.endContainer.ownerDocument.body).createTextRange();
+               dijit.range.ie.setRange(r, this.startContainer, this.startOffset, this.endContainer, this.endOffset, this.collapsed);
+               return r;
+       },
+       getBookmark: function(body){
+               this._getIERange();
+               return this._cachedBookmark;
+       },
+       _select: function(){
+               var r = this._getIERange();
+               r.select();
+       },
+       deleteContents: function(){
+               var r = this._getIERange();
+               r.pasteHTML('');
+               this.endContainer = this.startContainer;
+               this.endOffset = this.startOffset;
+               this.collapsed = true;
+       },
+       cloneRange: function(){
+               var r = new dijit.range.W3CRange([this.startContainer,this.startOffset,
+                       this.endContainer,this.endOffset]);
+               r._body = this._body;
+               return r;
+       },
+       detach: function(){
+               this._body = null;
+               this.commonAncestorContainer = null;
+               this.startContainer = null;
+               this.startOffset = 0;
+               this.endContainer = null;
+               this.endOffset = 0;
+               this.collapsed = true;
+}
+});
+} //if(!dijit.range._w3c)
+
+}
+
+if(!dojo._hasResource["dijit._editor.html"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._editor.html"] = true;
+dojo.provide("dijit._editor.html");
+
+dijit._editor.escapeXml=function(/*String*/str, /*Boolean?*/noSingleQuotes){
+       // summary:
+       //              Adds escape sequences for special characters in XML: &<>"'
+       //              Optionally skips escapes for single quotes
+       str = str.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;").replace(/"/gm, "&quot;");
+       if(!noSingleQuotes){
+               str = str.replace(/'/gm, "&#39;");
+       }
+       return str; // string
+};
+
+dijit._editor.getNodeHtml=function(/* DomNode */node){
+       var output;
+       switch(node.nodeType){
+               case 1: //element node
+                       var lName = node.nodeName.toLowerCase();
+                       if(!lName || lName.charAt(0) == "/"){
+                               // IE does some strange things with malformed HTML input, like
+                               // treating a close tag </span> without an open tag <span>, as
+                               // a new tag with tagName of /span.  Corrupts output HTML, remove
+                               // them.  Other browsers don't prefix tags that way, so will
+                               // never show up.
+                               return "";
+                       }
+                       output = '<' + lName;
+
+                       //store the list of attributes and sort it to have the
+                       //attributes appear in the dictionary order
+                       var attrarray = [];
+                       var attr;
+                       if(dojo.isIE && node.outerHTML){
+                               var s = node.outerHTML;
+                               s = s.substr(0, s.indexOf('>'))
+                                       .replace(/(['"])[^"']*\1/g, ''); //to make the following regexp safe
+                               var reg = /(\b\w+)\s?=/g;
+                               var m, key;
+                               while((m = reg.exec(s))){
+                                       key = m[1];
+                                       if(key.substr(0,3) != '_dj'){
+                                               if(key == 'src' || key == 'href'){
+                                                       if(node.getAttribute('_djrealurl')){
+                                                               attrarray.push([key,node.getAttribute('_djrealurl')]);
+                                                               continue;
+                                                       }
+                                               }
+                                               var val, match;
+                                               switch(key){
+                                                       case 'style':
+                                                               val = node.style.cssText.toLowerCase();
+                                                               break;
+                                                       case 'class':
+                                                               val = node.className;
+                                                               break;
+                                                       case 'width':
+                                                               if(lName === "img"){
+                                                                       // This somehow gets lost on IE for IMG tags and the like
+                                                                       // and we have to find it in outerHTML, known IE oddity.
+                                                                       match=/width=(\S+)/i.exec(s);
+                                                                       if(match){
+                                                                               val = match[1];
+                                                                       }
+                                                                       break;
+                                                               }
+                                                       case 'height':
+                                                               if(lName === "img"){
+                                                                       // This somehow gets lost on IE for IMG tags and the like
+                                                                       // and we have to find it in outerHTML, known IE oddity.
+                                                                       match=/height=(\S+)/i.exec(s);
+                                                                       if(match){
+                                                                               val = match[1];
+                                                                       }
+                                                                       break;
+                                                               }
+                                                       default:
+                                                               val = node.getAttribute(key);
+                                               }
+                                               if(val != null){
+                                                       attrarray.push([key, val.toString()]);
+                                               }
+                                       }
+                               }
+                       }else{
+                               var i = 0;
+                               while((attr = node.attributes[i++])){
+                                       //ignore all attributes starting with _dj which are
+                                       //internal temporary attributes used by the editor
+                                       var n = attr.name;
+                                       if(n.substr(0,3) != '_dj' /*&&
+                                               (attr.specified == undefined || attr.specified)*/){
+                                               var v = attr.value;
+                                               if(n == 'src' || n == 'href'){
+                                                       if(node.getAttribute('_djrealurl')){
+                                                               v = node.getAttribute('_djrealurl');
+                                                       }
+                                               }
+                                               attrarray.push([n,v]);
+                                       }
+                               }
+                       }
+                       attrarray.sort(function(a,b){
+                               return a[0] < b[0] ? -1 : (a[0] == b[0] ? 0 : 1);
+                       });
+                       var j = 0;
+                       while((attr = attrarray[j++])){
+                               output += ' ' + attr[0] + '="' +
+                                       (dojo.isString(attr[1]) ? dijit._editor.escapeXml(attr[1], true) : attr[1]) + '"';
+                       }
+                       if(lName === "script"){
+                               // Browsers handle script tags differently in how you get content,
+                               // but innerHTML always seems to work, so insert its content that way
+                               // Yes, it's bad to allow script tags in the editor code, but some people
+                               // seem to want to do it, so we need to at least return them right.
+                               // other plugins/filters can strip them.
+                               output += '>' + node.innerHTML +'</' + lName + '>';
+                       }else{
+                               if(node.childNodes.length){
+                                       output += '>' + dijit._editor.getChildrenHtml(node)+'</' + lName +'>';
+                               }else{
+                                       switch(lName){
+                                               case 'br':
+                                               case 'hr':
+                                               case 'img':
+                                               case 'input':
+                                               case 'base':
+                                               case 'meta':
+                                               case 'area':
+                                               case 'basefont':
+                                                       // These should all be singly closed
+                                                       output += ' />';
+                                                       break;
+                                               default:
+                                                       // Assume XML style separate closure for everything else.
+                                                       output += '></' + lName + '>';
+                                       }
+                               }
+                       }
+                       break;
+               case 4: // cdata
+               case 3: // text
+                       // FIXME:
+                       output = dijit._editor.escapeXml(node.nodeValue, true);
+                       break;
+               case 8: //comment
+                       // FIXME:
+                       output = '<!--' + dijit._editor.escapeXml(node.nodeValue, true) + '-->';
+                       break;
+               default:
+                       output = "<!-- Element not recognized - Type: " + node.nodeType + " Name: " + node.nodeName + "-->";
+       }
+       return output;
+};
+
+dijit._editor.getChildrenHtml = function(/* DomNode */dom){
+       // summary:
+       //              Returns the html content of a DomNode and children
+       var out = "";
+       if(!dom){ return out; }
+       var nodes = dom["childNodes"] || dom;
+
+       //IE issue.
+       //If we have an actual node we can check parent relationships on for IE,
+       //We should check, as IE sometimes builds invalid DOMS.  If no parent, we can't check
+       //And should just process it and hope for the best.
+       var checkParent = !dojo.isIE || nodes !== dom;
+
+       var node, i = 0;
+       while((node = nodes[i++])){
+               //IE is broken.  DOMs are supposed to be a tree.  But in the case of malformed HTML, IE generates a graph
+               //meaning one node ends up with multiple references (multiple parents).  This is totally wrong and invalid, but
+               //such is what it is.  We have to keep track and check for this because otherise the source output HTML will have dups.
+               //No other browser generates a graph.  Leave it to IE to break a fundamental DOM rule.  So, we check the parent if we can
+               //If we can't, nothing more we can do other than walk it.
+               if(!checkParent || node.parentNode == dom){
+                       out += dijit._editor.getNodeHtml(node);
+               }
+       }
+       return out; // String
+};
+
+}
+
+if(!dojo._hasResource["dijit._editor.RichText"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._editor.RichText"] = true;
+dojo.provide("dijit._editor.RichText");
+
+
+
+
+
+
+
+// used to restore content when user leaves this page then comes back
+// but do not try doing dojo.doc.write if we are using xd loading.
+// dojo.doc.write will only work if RichText.js is included in the dojo.js
+// file. If it is included in dojo.js and you want to allow rich text saving
+// for back/forward actions, then set dojo.config.allowXdRichTextSave = true.
+if(!dojo.config["useXDomain"] || dojo.config["allowXdRichTextSave"]){
+       if(dojo._postLoad){
+               (function(){
+                       var savetextarea = dojo.doc.createElement('textarea');
+                       savetextarea.id = dijit._scopeName + "._editor.RichText.savedContent";
+                       dojo.style(savetextarea, {
+                               display:'none',
+                               position:'absolute',
+                               top:"-100px",
+                               height:"3px",
+                               width:"3px"
+                       });
+                       dojo.body().appendChild(savetextarea);
+               })();
+       }else{
+               //dojo.body() is not available before onLoad is fired
+               try{
+                       dojo.doc.write('<textarea id="' + dijit._scopeName + '._editor.RichText.savedContent" ' +
+                               'style="display:none;position:absolute;top:-100px;left:-100px;height:3px;width:3px;overflow:hidden;"></textarea>');
+               }catch(e){ }
+       }
+}
+
+dojo.declare("dijit._editor.RichText", [dijit._Widget, dijit._CssStateMixin], {
+       constructor: function(params){
+               // summary:
+               //              dijit._editor.RichText is the core of dijit.Editor, which provides basic
+               //              WYSIWYG editing features.
+               //
+               // description:
+               //              dijit._editor.RichText is the core of dijit.Editor, which provides basic
+               //              WYSIWYG editing features. It also encapsulates the differences
+               //              of different js engines for various browsers.  Do not use this widget
+               //              with an HTML &lt;TEXTAREA&gt; tag, since the browser unescapes XML escape characters,
+               //              like &lt;.  This can have unexpected behavior and lead to security issues
+               //              such as scripting attacks.
+               //
+               // tags:
+               //              private
+
+               // contentPreFilters: Function(String)[]
+               //              Pre content filter function register array.
+               //              these filters will be executed before the actual
+               //              editing area gets the html content.
+               this.contentPreFilters = [];
+
+               // contentPostFilters: Function(String)[]
+               //              post content filter function register array.
+               //              These will be used on the resulting html
+               //              from contentDomPostFilters. The resulting
+               //              content is the final html (returned by getValue()).
+               this.contentPostFilters = [];
+
+               // contentDomPreFilters: Function(DomNode)[]
+               //              Pre content dom filter function register array.
+               //              These filters are applied after the result from
+               //              contentPreFilters are set to the editing area.
+               this.contentDomPreFilters = [];
+
+               // contentDomPostFilters: Function(DomNode)[]
+               //              Post content dom filter function register array.
+               //              These filters are executed on the editing area dom.
+               //              The result from these will be passed to contentPostFilters.
+               this.contentDomPostFilters = [];
+
+               // editingAreaStyleSheets: dojo._URL[]
+               //              array to store all the stylesheets applied to the editing area
+               this.editingAreaStyleSheets = [];
+
+               // Make a copy of this.events before we start writing into it, otherwise we
+               // will modify the prototype which leads to bad things on pages w/multiple editors
+               this.events = [].concat(this.events);
+
+               this._keyHandlers = {};
+               this.contentPreFilters.push(dojo.hitch(this, "_preFixUrlAttributes"));
+               if(dojo.isMoz){
+                       this.contentPreFilters.push(this._normalizeFontStyle);
+                       this.contentPostFilters.push(this._removeMozBogus);
+               }
+               if(dojo.isWebKit){
+                       // Try to clean up WebKit bogus artifacts.  The inserted classes
+                       // made by WebKit sometimes messes things up.
+                       this.contentPreFilters.push(this._removeWebkitBogus);
+                       this.contentPostFilters.push(this._removeWebkitBogus);
+               }
+               if(dojo.isIE){
+                       // IE generates <strong> and <em> but we want to normalize to <b> and <i>
+                       this.contentPostFilters.push(this._normalizeFontStyle);
+               }
+               //this.contentDomPostFilters.push(this._postDomFixUrlAttributes);
+
+               if(params && dojo.isString(params.value)){
+                       this.value = params.value;
+               }
+
+               this.onLoadDeferred = new dojo.Deferred();
+       },
+
+       baseClass: "dijitEditor",
+
+       // inheritWidth: Boolean
+       //              whether to inherit the parent's width or simply use 100%
+       inheritWidth: false,
+
+       // focusOnLoad: [deprecated] Boolean
+       //              Focus into this widget when the page is loaded
+       focusOnLoad: false,
+
+       // name: String?
+       //              Specifies the name of a (hidden) <textarea> node on the page that's used to save
+       //              the editor content on page leave.   Used to restore editor contents after navigating
+       //              to a new page and then hitting the back button.
+       name: "",
+
+       // styleSheets: [const] String
+       //              semicolon (";") separated list of css files for the editing area
+       styleSheets: "",
+
+       // _content: [private] String
+       //              temporary content storage
+       _content: "",
+
+       // height: String
+       //              Set height to fix the editor at a specific height, with scrolling.
+       //              By default, this is 300px.  If you want to have the editor always
+       //              resizes to accommodate the content, use AlwaysShowToolbar plugin
+       //              and set height="".  If this editor is used within a layout widget,
+       //              set height="100%".
+       height: "300px",
+
+       // minHeight: String
+       //              The minimum height that the editor should have.
+       minHeight: "1em",
+
+       // isClosed: [private] Boolean
+       isClosed: true,
+
+       // isLoaded: [private] Boolean
+       isLoaded: false,
+
+       // _SEPARATOR: [private] String
+       //              Used to concat contents from multiple editors into a single string,
+       //              so they can be saved into a single <textarea> node.  See "name" attribute.
+       _SEPARATOR: "@@**%%__RICHTEXTBOUNDRY__%%**@@",
+
+       // onLoadDeferred: [protected] dojo.Deferred
+       //              Deferred which is fired when the editor finishes loading
+       onLoadDeferred: null,
+
+       // isTabIndent: Boolean
+       //              Make tab key and shift-tab indent and outdent rather than navigating.
+       //              Caution: sing this makes web pages inaccessible to users unable to use a mouse.
+       isTabIndent: false,
+
+       // disableSpellCheck: [const] Boolean
+       //              When true, disables the browser's native spell checking, if supported.
+       //              Works only in Firefox.
+       disableSpellCheck: false,
+
+       postCreate: function(){
+               if("textarea" == this.domNode.tagName.toLowerCase()){
+                       console.warn("RichText should not be used with the TEXTAREA tag.  See dijit._editor.RichText docs.");
+               }
+
+               this.inherited(arguments);
+
+               dojo.publish(dijit._scopeName + "._editor.RichText::init", [this]);
+               this.open();
+               this.setupDefaultShortcuts();
+       },
+
+       setupDefaultShortcuts: function(){
+               // summary:
+               //              Add some default key handlers
+               // description:
+               //              Overwrite this to setup your own handlers. The default
+               //              implementation does not use Editor commands, but directly
+               //              executes the builtin commands within the underlying browser
+               //              support.
+               // tags:
+               //              protected
+               var exec = dojo.hitch(this, function(cmd, arg){
+                       return function(){
+                               return !this.execCommand(cmd,arg);
+                       };
+               });
+
+               var ctrlKeyHandlers = {
+                       b: exec("bold"),
+                       i: exec("italic"),
+                       u: exec("underline"),
+                       a: exec("selectall"),
+                       s: function(){ this.save(true); },
+                       m: function(){ this.isTabIndent = !this.isTabIndent; },
+
+                       "1": exec("formatblock", "h1"),
+                       "2": exec("formatblock", "h2"),
+                       "3": exec("formatblock", "h3"),
+                       "4": exec("formatblock", "h4"),
+
+                       "\\": exec("insertunorderedlist")
+               };
+
+               if(!dojo.isIE){
+                       ctrlKeyHandlers.Z = exec("redo"); //FIXME: undo?
+               }
+
+               for(var key in ctrlKeyHandlers){
+                       this.addKeyHandler(key, true, false, ctrlKeyHandlers[key]);
+               }
+       },
+
+       // events: [private] String[]
+       //               events which should be connected to the underlying editing area
+       events: ["onKeyPress", "onKeyDown", "onKeyUp", "onClick"],
+
+       // captureEvents: [deprecated] String[]
+       //               Events which should be connected to the underlying editing
+       //               area, events in this array will be addListener with
+       //               capture=true.
+       // TODO: looking at the code I don't see any distinction between events and captureEvents,
+       // so get rid of this for 2.0 if not sooner
+       captureEvents: [],
+
+       _editorCommandsLocalized: false,
+       _localizeEditorCommands: function(){
+               // summary:
+               //              When IE is running in a non-English locale, the API actually changes,
+               //              so that we have to say (for example) danraku instead of p (for paragraph).
+               //              Handle that here.
+               // tags:
+               //              private
+               if(this._editorCommandsLocalized){
+                       return;
+               }
+               this._editorCommandsLocalized = true;
+
+               //in IE, names for blockformat is locale dependent, so we cache the values here
+
+               //if the normal way fails, we try the hard way to get the list
+
+               //do not use _cacheLocalBlockFormatNames here, as it will
+               //trigger security warning in IE7
+
+               //put p after div, so if IE returns Normal, we show it as paragraph
+               //We can distinguish p and div if IE returns Normal, however, in order to detect that,
+               //we have to call this.document.selection.createRange().parentElement() or such, which
+               //could slow things down. Leave it as it is for now
+               var formats = ['div', 'p', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ol', 'ul', 'address'];
+               var localhtml = "", format, i=0;
+               while((format=formats[i++])){
+                       //append a <br> after each element to separate the elements more reliably
+                       if(format.charAt(1) != 'l'){
+                               localhtml += "<"+format+"><span>content</span></"+format+"><br/>";
+                       }else{
+                               localhtml += "<"+format+"><li>content</li></"+format+"><br/>";
+                       }
+               }
+               //queryCommandValue returns empty if we hide editNode, so move it out of screen temporary
+               var div = dojo.doc.createElement('div');
+               dojo.style(div, {
+                       position: "absolute",
+                       top: "-2000px"
+               });
+               dojo.doc.body.appendChild(div);
+               div.innerHTML = localhtml;
+               var node = div.firstChild;
+               while(node){
+                       dijit._editor.selection.selectElement(node.firstChild);
+                       dojo.withGlobal(this.window, "selectElement", dijit._editor.selection, [node.firstChild]);
+                       var nativename = node.tagName.toLowerCase();
+                       this._local2NativeFormatNames[nativename] = document.queryCommandValue("formatblock");
+                       //this.queryCommandValue("formatblock");
+                       this._native2LocalFormatNames[this._local2NativeFormatNames[nativename]] = nativename;
+                       node = node.nextSibling.nextSibling;
+               }
+               dojo.body().removeChild(div);
+       },
+
+       open: function(/*DomNode?*/ element){
+               // summary:
+               //              Transforms the node referenced in this.domNode into a rich text editing
+               //              node.
+               // description:
+               //              Sets up the editing area asynchronously. This will result in
+               //              the creation and replacement with an iframe.
+               //
+               //              A dojo.Deferred object is created at this.onLoadDeferred, and
+               //              users may attach to it to be informed when the rich-text area
+               //              initialization is finalized.
+               // tags:
+               //              private
+
+               if(!this.onLoadDeferred || this.onLoadDeferred.fired >= 0){
+                       this.onLoadDeferred = new dojo.Deferred();
+               }
+
+               if(!this.isClosed){ this.close(); }
+               dojo.publish(dijit._scopeName + "._editor.RichText::open", [ this ]);
+
+               this._content = "";
+               if(arguments.length == 1 && element.nodeName){ // else unchanged
+                       this.domNode = element;
+               }
+
+               var dn = this.domNode;
+
+               // "html" will hold the innerHTML of the srcNodeRef and will be used to
+               // initialize the editor.
+               var html;
+
+               if(dojo.isString(this.value)){
+                       // Allow setting the editor content programmatically instead of
+                       // relying on the initial content being contained within the target
+                       // domNode.
+                       html = this.value;
+                       delete this.value;
+                       dn.innerHTML = "";
+               }else if(dn.nodeName && dn.nodeName.toLowerCase() == "textarea"){
+                       // if we were created from a textarea, then we need to create a
+                       // new editing harness node.
+                       var ta = (this.textarea = dn);
+                       this.name = ta.name;
+                       html = ta.value;
+                       dn = this.domNode = dojo.doc.createElement("div");
+                       dn.setAttribute('widgetId', this.id);
+                       ta.removeAttribute('widgetId');
+                       dn.cssText = ta.cssText;
+                       dn.className += " " + ta.className;
+                       dojo.place(dn, ta, "before");
+                       var tmpFunc = dojo.hitch(this, function(){
+                               //some browsers refuse to submit display=none textarea, so
+                               //move the textarea off screen instead
+                               dojo.style(ta, {
+                                       display: "block",
+                                       position: "absolute",
+                                       top: "-1000px"
+                               });
+
+                               if(dojo.isIE){ //nasty IE bug: abnormal formatting if overflow is not hidden
+                                       var s = ta.style;
+                                       this.__overflow = s.overflow;
+                                       s.overflow = "hidden";
+                               }
+                       });
+                       if(dojo.isIE){
+                               setTimeout(tmpFunc, 10);
+                       }else{
+                               tmpFunc();
+                       }
+
+                       if(ta.form){
+                               dojo.connect(ta.form, "onsubmit", this, function(){
+                                       // FIXME: should we be calling close() here instead?
+                                       ta.value = this.getValue();
+                               });
+                       }
+               }else{
+                       html = dijit._editor.getChildrenHtml(dn);
+                       dn.innerHTML = "";
+               }
+
+               var content = dojo.contentBox(dn);
+               this._oldHeight = content.h;
+               this._oldWidth = content.w;
+
+               this.savedContent = html;
+
+               // If we're a list item we have to put in a blank line to force the
+               // bullet to nicely align at the top of text
+               if(dn.nodeName && dn.nodeName == "LI"){
+                       dn.innerHTML = " <br>";
+               }
+       
+               // Construct the editor div structure.
+               this.header = dn.ownerDocument.createElement("div");
+               dn.appendChild(this.header);
+               this.editingArea = dn.ownerDocument.createElement("div");
+               dn.appendChild(this.editingArea);
+               this.footer = dn.ownerDocument.createElement("div");
+               dn.appendChild(this.footer);
+
+               // User has pressed back/forward button so we lost the text in the editor, but it's saved
+               // in a hidden <textarea> (which contains the data for all the editors on this page),
+               // so get editor value from there
+               if(this.name !== "" && (!dojo.config["useXDomain"] || dojo.config["allowXdRichTextSave"])){
+                       var saveTextarea = dojo.byId(dijit._scopeName + "._editor.RichText.savedContent");
+                       if(saveTextarea.value !== ""){
+                               var datas = saveTextarea.value.split(this._SEPARATOR), i=0, dat;
+                               while((dat=datas[i++])){
+                                       var data = dat.split(":");
+                                       if(data[0] == this.name){
+                                               html = data[1];
+                                               datas.splice(i, 1);     // TODO: this has no effect
+                                               break;
+                                       }
+                               }
+                       }
+
+                       // TODO: this is troublesome if this editor has been destroyed, should have global handler.
+                       // TODO: need to clear <textarea> in global handler
+                       dojo.addOnUnload(dojo.hitch(this, "_saveContent"));
+               }
+
+               this.isClosed = false;
+
+               var ifr = (this.editorObject = this.iframe = dojo.doc.createElement('iframe'));
+               ifr.id = this.id+"_iframe";
+               this._iframeSrc = this._getIframeDocTxt();
+               ifr.style.border = "none";
+               ifr.style.width = "100%";
+               if(this._layoutMode){
+                       // iframe should be 100% height, thus getting it's height from surrounding
+                       // <div> (which has the correct height set by Editor)
+                       ifr.style.height = "100%";
+               }else{
+                       if(dojo.isIE >= 7){
+                               if(this.height){
+                                       ifr.style.height = this.height;
+                               }
+                               if(this.minHeight){
+                                       ifr.style.minHeight = this.minHeight;
+                               }
+                       }else{
+                               ifr.style.height = this.height ? this.height : this.minHeight;
+                       }
+               }
+               ifr.frameBorder = 0;
+               ifr._loadFunc = dojo.hitch( this, function(win){
+                       this.window = win;
+                       this.document = this.window.document;
+
+                       if(dojo.isIE){
+                               this._localizeEditorCommands();
+                       }
+                       
+                       // Do final setup and set initial contents of editor
+                       this.onLoad(html);
+               });
+
+               // Set the iframe's initial (blank) content.
+               var s = 'javascript:parent.' + dijit._scopeName + '.byId("'+this.id+'")._iframeSrc';
+               ifr.setAttribute('src', s);
+               this.editingArea.appendChild(ifr);
+
+               // TODO: this is a guess at the default line-height, kinda works
+               if(dn.nodeName == "LI"){
+                       dn.lastChild.style.marginTop = "-1.2em";
+               }
+
+               dojo.addClass(this.domNode, this.baseClass);
+       },
+
+       //static cache variables shared among all instance of this class
+       _local2NativeFormatNames: {},
+       _native2LocalFormatNames: {},
+
+       _getIframeDocTxt: function(){
+               // summary:
+               //              Generates the boilerplate text of the document inside the iframe (ie, <html><head>...</head><body/></html>).
+               //              Editor content (if not blank) should be added afterwards.
+               // tags:
+               //              private
+               var _cs = dojo.getComputedStyle(this.domNode);
+
+               // The contents inside of <body>.  The real contents are set later via a call to setValue().
+               var html = "";
+               var setBodyId = true;
+               if(dojo.isIE || (!this.height && !dojo.isMoz)){
+                       // In auto-expand mode, need a wrapper div for AlwaysShowToolbar plugin to correctly
+                       // expand/contract the editor as the content changes.
+                       html = "<div id='dijitEditorBody'></div>";
+                       setBodyId = false;
+               }else if(dojo.isMoz){
+                       // workaround bug where can't select then delete text (until user types something
+                       // into the editor)... and/or issue where typing doesn't erase selected text
+                       this._cursorToStart = true;
+                       html = "&nbsp;";
+               }
+
+               var font = [ _cs.fontWeight, _cs.fontSize, _cs.fontFamily ].join(" ");
+
+               // line height is tricky - applying a units value will mess things up.
+               // if we can't get a non-units value, bail out.
+               var lineHeight = _cs.lineHeight;
+               if(lineHeight.indexOf("px") >= 0){
+                       lineHeight = parseFloat(lineHeight)/parseFloat(_cs.fontSize);
+                       // console.debug(lineHeight);
+               }else if(lineHeight.indexOf("em")>=0){
+                       lineHeight = parseFloat(lineHeight);
+               }else{
+                       // If we can't get a non-units value, just default
+                       // it to the CSS spec default of 'normal'.  Seems to
+                       // work better, esp on IE, than '1.0'
+                       lineHeight = "normal";
+               }
+               var userStyle = "";
+               var self = this;
+               this.style.replace(/(^|;)\s*(line-|font-?)[^;]+/ig, function(match){ 
+                       match = match.replace(/^;/ig,"") + ';'; 
+                       var s = match.split(":")[0];
+                       if(s){
+                               s = dojo.trim(s);
+                               s = s.toLowerCase();
+                               var i;
+                               var sC = "";
+                               for(i = 0; i < s.length; i++){
+                                       var c = s.charAt(i);
+                                       switch(c){
+                                               case "-":
+                                                       i++;
+                                                       c = s.charAt(i).toUpperCase();
+                                               default:
+                                                       sC += c;
+                                       }
+                               }
+                               dojo.style(self.domNode, sC, "");
+                       }
+                       userStyle += match + ';'; 
+               });
+
+
+               // need to find any associated label element and update iframe document title
+               var label=dojo.query('label[for="'+this.id+'"]');
+
+               return [
+                       this.isLeftToRight() ? "<html>\n<head>\n" : "<html dir='rtl'>\n<head>\n",
+                       (dojo.isMoz && label.length ? "<title>" + label[0].innerHTML + "</title>\n" : ""),
+                       "<meta http-equiv='Content-Type' content='text/html'>\n",
+                       "<style>\n",
+                       "\tbody,html {\n",
+                       "\t\tbackground:transparent;\n",
+                       "\t\tpadding: 1px 0 0 0;\n",
+                       "\t\tmargin: -1px 0 0 0;\n", // remove extraneous vertical scrollbar on safari and firefox
+
+                       // Set the html/body sizing.  Webkit always needs this, other browsers
+                       // only set it when height is defined (not auto-expanding), otherwise 
+                       // scrollers do not appear.
+                       ((dojo.isWebKit)?"\t\twidth: 100%;\n":""),
+                       ((dojo.isWebKit)?"\t\theight: 100%;\n":""),
+                       "\t}\n",
+                       
+                       // TODO: left positioning will cause contents to disappear out of view
+                       //         if it gets too wide for the visible area
+                       "\tbody{\n",
+                       "\t\ttop:0px;\n",
+                       "\t\tleft:0px;\n",
+                       "\t\tright:0px;\n",
+                       "\t\tfont:", font, ";\n",
+                               ((this.height||dojo.isOpera) ? "" : "\t\tposition: fixed;\n"),
+                       // FIXME: IE 6 won't understand min-height?
+                       "\t\tmin-height:", this.minHeight, ";\n",
+                       "\t\tline-height:", lineHeight,";\n",
+                       "\t}\n",
+                       "\tp{ margin: 1em 0; }\n",
+                       
+                       // Determine how scrollers should be applied.  In autoexpand mode (height = "") no scrollers on y at all.
+                       // But in fixed height mode we want both x/y scrollers.  Also, if it's using wrapping div and in auto-expand
+                       // (Mainly IE) we need to kill the y scroller on body and html.
+                       (!setBodyId && !this.height ? "\tbody,html {overflow-y: hidden;}\n" : ""),
+                       "\t#dijitEditorBody{overflow-x: auto; overflow-y:" + (this.height ? "auto;" : "hidden;") + "}\n",
+                       "\tli > ul:-moz-first-node, li > ol:-moz-first-node{ padding-top: 1.2em; }\n",
+                       "\tli{ min-height:1.2em; }\n",
+                       "</style>\n",
+                       this._applyEditingAreaStyleSheets(),"\n",
+                       "</head>\n<body ",
+                       (setBodyId?"id='dijitEditorBody' ":""),
+                       "onload='frameElement._loadFunc(window,document)' style='"+userStyle+"'>", html, "</body>\n</html>"
+               ].join(""); // String
+       },
+
+       _applyEditingAreaStyleSheets: function(){
+               // summary:
+               //              apply the specified css files in styleSheets
+               // tags:
+               //              private
+               var files = [];
+               if(this.styleSheets){
+                       files = this.styleSheets.split(';');
+                       this.styleSheets = '';
+               }
+
+               //empty this.editingAreaStyleSheets here, as it will be filled in addStyleSheet
+               files = files.concat(this.editingAreaStyleSheets);
+               this.editingAreaStyleSheets = [];
+
+               var text='', i=0, url;
+               while((url=files[i++])){
+                       var abstring = (new dojo._Url(dojo.global.location, url)).toString();
+                       this.editingAreaStyleSheets.push(abstring);
+                       text += '<link rel="stylesheet" type="text/css" href="'+abstring+'"/>';
+               }
+               return text;
+       },
+
+       addStyleSheet: function(/*dojo._Url*/ uri){
+               // summary:
+               //              add an external stylesheet for the editing area
+               // uri:
+               //              A dojo.uri.Uri pointing to the url of the external css file
+               var url=uri.toString();
+
+               //if uri is relative, then convert it to absolute so that it can be resolved correctly in iframe
+               if(url.charAt(0) == '.' || (url.charAt(0) != '/' && !uri.host)){
+                       url = (new dojo._Url(dojo.global.location, url)).toString();
+               }
+
+               if(dojo.indexOf(this.editingAreaStyleSheets, url) > -1){
+//                     console.debug("dijit._editor.RichText.addStyleSheet: Style sheet "+url+" is already applied");
+                       return;
+               }
+
+               this.editingAreaStyleSheets.push(url);
+               this.onLoadDeferred.addCallback(dojo.hitch(function(){
+                       if(this.document.createStyleSheet){ //IE
+                               this.document.createStyleSheet(url);
+                       }else{ //other browser
+                               var head = this.document.getElementsByTagName("head")[0];
+                               var stylesheet = this.document.createElement("link");
+                               stylesheet.rel="stylesheet";
+                               stylesheet.type="text/css";
+                               stylesheet.href=url;
+                               head.appendChild(stylesheet);
+                       }
+               }));
+       },
+
+       removeStyleSheet: function(/*dojo._Url*/ uri){
+               // summary:
+               //              remove an external stylesheet for the editing area
+               var url=uri.toString();
+               //if uri is relative, then convert it to absolute so that it can be resolved correctly in iframe
+               if(url.charAt(0) == '.' || (url.charAt(0) != '/' && !uri.host)){
+                       url = (new dojo._Url(dojo.global.location, url)).toString();
+               }
+               var index = dojo.indexOf(this.editingAreaStyleSheets, url);
+               if(index == -1){
+//                     console.debug("dijit._editor.RichText.removeStyleSheet: Style sheet "+url+" has not been applied");
+                       return;
+               }
+               delete this.editingAreaStyleSheets[index];
+               dojo.withGlobal(this.window,'query', dojo, ['link:[href="'+url+'"]']).orphan();
+       },
+
+       // disabled: Boolean
+       //              The editor is disabled; the text cannot be changed.
+       disabled: false,
+
+       _mozSettingProps: {'styleWithCSS':false},
+       _setDisabledAttr: function(/*Boolean*/ value){
+               this.disabled = value;
+               if(!this.isLoaded){ return; } // this method requires init to be complete
+               value = !!value;
+               if(dojo.isIE || dojo.isWebKit || dojo.isOpera){
+                       var preventIEfocus = dojo.isIE && (this.isLoaded || !this.focusOnLoad);
+                       if(preventIEfocus){ this.editNode.unselectable = "on"; }
+                       this.editNode.contentEditable = !value;
+                       if(preventIEfocus){
+                               var _this = this;
+                               setTimeout(function(){ _this.editNode.unselectable = "off"; }, 0);
+                       }
+               }else{ //moz
+                       try{
+                               this.document.designMode=(value?'off':'on');
+                       }catch(e){ return; } // ! _disabledOK
+                       if(!value && this._mozSettingProps){
+                               var ps = this._mozSettingProps;
+                               for(var n in ps){
+                                       if(ps.hasOwnProperty(n)){
+                                               try{
+                                                       this.document.execCommand(n,false,ps[n]);
+                                               }catch(e2){}
+                                       }
+                               }
+                       }
+//                     this.document.execCommand('contentReadOnly', false, value);
+//                             if(value){
+//                                     this.blur(); //to remove the blinking caret
+//                             }
+               }
+               this._disabledOK = true;
+       },
+
+/* Event handlers
+ *****************/
+
+       onLoad: function(/*String*/ html){
+               // summary:
+               //              Handler after the iframe finishes loading.
+               // html: String
+               //              Editor contents should be set to this value
+               // tags:
+               //              protected
+
+               // TODO: rename this to _onLoad, make empty public onLoad() method, deprecate/make protected onLoadDeferred handler?
+
+               if(!this.window.__registeredWindow){
+                       this.window.__registeredWindow = true;
+                       this._iframeRegHandle = dijit.registerIframe(this.iframe);
+               }
+               if(!dojo.isIE && (this.height || dojo.isMoz)){
+                       this.editNode=this.document.body;
+               }else{
+                       // there's a wrapper div around the content, see _getIframeDocTxt().
+                       this.editNode=this.document.body.firstChild;
+                       var _this = this;
+                       if(dojo.isIE){ // #4996 IE wants to focus the BODY tag
+                               var tabStop = (this.tabStop = dojo.doc.createElement('<div tabIndex=-1>'));
+                               this.editingArea.appendChild(tabStop);
+                               this.iframe.onfocus = function(){ _this.editNode.setActive(); };
+                       }
+               }
+               this.focusNode = this.editNode; // for InlineEditBox
+
+
+               var events = this.events.concat(this.captureEvents);
+               var ap = this.iframe ? this.document : this.editNode;
+               dojo.forEach(events, function(item){
+                       this.connect(ap, item.toLowerCase(), item);
+               }, this);
+
+               if(dojo.isIE){ // IE contentEditable
+                       this.connect(this.document, "onmousedown", "_onIEMouseDown"); // #4996 fix focus
+
+                       // give the node Layout on IE
+                       // TODO: this may no longer be needed, since we've reverted IE to using an iframe,
+                       // not contentEditable.   Removing it would also probably remove the need for creating
+                       // the extra <div> in _getIframeDocTxt()
+                       this.editNode.style.zoom = 1.0;
+               }else{
+                       this.connect(this.document, "onmousedown", function(){
+                               // Clear the moveToStart focus, as mouse 
+                               // down will set cursor point.  Required to properly
+                               // work with selection/position driven plugins and clicks in
+                               // the window. refs: #10678
+                               delete this._cursorToStart;
+                       }); 
+               }
+
+               if(dojo.isWebKit){
+                       //WebKit sometimes doesn't fire right on selections, so the toolbar
+                       //doesn't update right.  Therefore, help it out a bit with an additional
+                       //listener.  A mouse up will typically indicate a display change, so fire this
+                       //and get the toolbar to adapt.  Reference: #9532
+                       this._webkitListener = this.connect(this.document, "onmouseup", "onDisplayChanged");
+               }
+
+               if(dojo.isIE){
+                       // Try to make sure 'hidden' elements aren't visible in edit mode (like browsers other than IE
+                       // do).  See #9103
+                       try{
+                               this.document.execCommand('RespectVisibilityInDesign', true, null);
+                       }catch(e){/* squelch */}
+               }
+
+               this.isLoaded = true;
+
+               this.set('disabled', this.disabled); // initialize content to editable (or not)
+
+               // Note that setValue() call will only work after isLoaded is set to true (above)
+
+               // Set up a function to allow delaying the setValue until a callback is fired
+               // This ensures extensions like dijit.Editor have a way to hold the value set 
+               // until plugins load (and do things like register filters.
+               var setContent = dojo.hitch(this, function(){
+                       this.setValue(html);
+                       if(this.onLoadDeferred){
+                               this.onLoadDeferred.callback(true);
+                       }
+                       this.onDisplayChanged();
+                       if(this.focusOnLoad){
+                               // after the document loads, then set focus after updateInterval expires so that
+                               // onNormalizedDisplayChanged has run to avoid input caret issues
+                               dojo.addOnLoad(dojo.hitch(this, function(){ setTimeout(dojo.hitch(this, "focus"), this.updateInterval); }));
+                       }
+                       // Save off the initial content now
+                       this.savedContent = this.getValue(true);
+               });
+               if(this.setValueDeferred){
+                       this.setValueDeferred.addCallback(setContent);
+               }else{
+                       setContent();
+               }
+
+       },
+
+       onKeyDown: function(/* Event */ e){
+               // summary:
+               //              Handler for onkeydown event
+               // tags:
+               //              protected
+
+               // we need this event at the moment to get the events from control keys
+               // such as the backspace. It might be possible to add this to Dojo, so that
+               // keyPress events can be emulated by the keyDown and keyUp detection.
+
+               if(e.keyCode === dojo.keys.TAB && this.isTabIndent ){
+                       dojo.stopEvent(e); //prevent tab from moving focus out of editor
+
+                       // FIXME: this is a poor-man's indent/outdent. It would be
+                       // better if it added 4 "&nbsp;" chars in an undoable way.
+                       // Unfortunately pasteHTML does not prove to be undoable
+                       if(this.queryCommandEnabled((e.shiftKey ? "outdent" : "indent"))){
+                               this.execCommand((e.shiftKey ? "outdent" : "indent"));
+                       }
+               }
+               if(dojo.isIE){
+                       if(e.keyCode == dojo.keys.TAB && !this.isTabIndent){
+                               if(e.shiftKey && !e.ctrlKey && !e.altKey){
+                                       // focus the BODY so the browser will tab away from it instead
+                                       this.iframe.focus();
+                               }else if(!e.shiftKey && !e.ctrlKey && !e.altKey){
+                                       // focus the BODY so the browser will tab away from it instead
+                                       this.tabStop.focus();
+                               }
+                       }else if(e.keyCode === dojo.keys.BACKSPACE && this.document.selection.type === "Control"){
+                               // IE has a bug where if a non-text object is selected in the editor,
+                               // hitting backspace would act as if the browser's back button was
+                               // clicked instead of deleting the object. see #1069
+                               dojo.stopEvent(e);
+                               this.execCommand("delete");
+                       }else if((65 <= e.keyCode && e.keyCode <= 90) ||
+                               (e.keyCode>=37 && e.keyCode<=40) // FIXME: get this from connect() instead!
+                       ){ //arrow keys
+                               e.charCode = e.keyCode;
+                               this.onKeyPress(e);
+                       }
+               }
+               return true;
+       },
+
+       onKeyUp: function(e){
+               // summary:
+               //              Handler for onkeyup event
+               // tags:
+               //      callback
+               return;
+       },
+
+       setDisabled: function(/*Boolean*/ disabled){
+               // summary:
+               //              Deprecated, use set('disabled', ...) instead.
+               // tags:
+               //              deprecated
+               dojo.deprecated('dijit.Editor::setDisabled is deprecated','use dijit.Editor::attr("disabled",boolean) instead', 2.0);
+               this.set('disabled',disabled);
+       },
+       _setValueAttr: function(/*String*/ value){
+               // summary:
+               //      Registers that attr("value", foo) should call setValue(foo)
+               this.setValue(value);
+       },
+       _setDisableSpellCheckAttr: function(/*Boolean*/ disabled){
+               if(this.document){
+                       dojo.attr(this.document.body, "spellcheck", !disabled);
+               }else{
+                       // try again after the editor is finished loading
+                       this.onLoadDeferred.addCallback(dojo.hitch(this, function(){
+                               dojo.attr(this.document.body, "spellcheck", !disabled);
+                       }));
+               }
+               this.disableSpellCheck = disabled;
+       },
+
+       onKeyPress: function(e){
+               // summary:
+               //              Handle the various key events
+               // tags:
+               //              protected
+
+               var c = (e.keyChar && e.keyChar.toLowerCase()) || e.keyCode,
+                       handlers = this._keyHandlers[c],
+                       args = arguments;
+
+               if(handlers && !e.altKey){
+                       dojo.some(handlers, function(h){
+                               // treat meta- same as ctrl-, for benefit of mac users
+                               if(!(h.shift ^ e.shiftKey) && !(h.ctrl ^ (e.ctrlKey||e.metaKey))){
+                                       if(!h.handler.apply(this, args)){
+                                               e.preventDefault();
+                                       }
+                                       return true;
+                               }
+                       }, this);
+               }
+
+               // function call after the character has been inserted
+               if(!this._onKeyHitch){
+                       this._onKeyHitch = dojo.hitch(this, "onKeyPressed");
+               }
+               setTimeout(this._onKeyHitch, 1);
+               return true;
+       },
+
+       addKeyHandler: function(/*String*/ key, /*Boolean*/ ctrl, /*Boolean*/ shift, /*Function*/ handler){
+               // summary:
+               //              Add a handler for a keyboard shortcut
+               // description:
+               //              The key argument should be in lowercase if it is a letter character
+               // tags:
+               //              protected
+               if(!dojo.isArray(this._keyHandlers[key])){
+                       this._keyHandlers[key] = [];
+               }
+               //TODO: would be nice to make this a hash instead of an array for quick lookups
+               this._keyHandlers[key].push({
+                       shift: shift || false,
+                       ctrl: ctrl || false,
+                       handler: handler
+               });
+       },
+
+       onKeyPressed: function(){
+               // summary:
+               //              Handler for after the user has pressed a key, and the display has been updated.
+               //              (Runs on a timer so that it runs after the display is updated)
+               // tags:
+               //              private
+               this.onDisplayChanged(/*e*/); // can't pass in e
+       },
+
+       onClick: function(/*Event*/ e){
+               // summary:
+               //              Handler for when the user clicks.
+               // tags:
+               //              private
+
+               // console.info('onClick',this._tryDesignModeOn);
+               this.onDisplayChanged(e);
+       },
+
+       _onIEMouseDown: function(/*Event*/ e){
+               // summary:
+               //              IE only to prevent 2 clicks to focus
+               // tags:
+               //              protected
+
+               if(!this._focused && !this.disabled){
+                       this.focus();
+               }
+       },
+
+       _onBlur: function(e){
+               // summary:
+               //              Called from focus manager when focus has moved away from this editor
+               // tags:
+               //              protected
+
+               // console.info('_onBlur')
+
+               this.inherited(arguments);
+               var _c=this.getValue(true);
+
+               if(_c!=this.savedContent){
+                       this.onChange(_c);
+                       this.savedContent=_c;
+               }
+       },
+       _onFocus: function(/*Event*/ e){
+               // summary:
+               //              Called from focus manager when focus has moved into this editor
+               // tags:
+               //              protected
+
+               // console.info('_onFocus')
+               if(!this.disabled){
+                       if(!this._disabledOK){
+                               this.set('disabled', false);
+                       }
+                       this.inherited(arguments);
+               }
+       },
+
+       // TODO: why is this needed - should we deprecate this ?
+       blur: function(){
+               // summary:
+               //              Remove focus from this instance.
+               // tags:
+               //              deprecated
+               if(!dojo.isIE && this.window.document.documentElement && this.window.document.documentElement.focus){
+                       this.window.document.documentElement.focus();
+               }else if(dojo.doc.body.focus){
+                       dojo.doc.body.focus();
+               }
+       },
+
+       focus: function(){
+               // summary:
+               //              Move focus to this editor
+               if(!this.isLoaded){
+                       this.focusOnLoad = true;
+                       return;
+               }
+               if(this._cursorToStart){ 
+                       delete this._cursorToStart;
+                       if(this.editNode.childNodes){
+                               this.placeCursorAtStart(); // this calls focus() so return
+                               return;
+                       }
+               }
+               if(!dojo.isIE){
+                       dijit.focus(this.iframe);
+               }else if(this.editNode && this.editNode.focus){
+                       // editNode may be hidden in display:none div, lets just punt in this case
+                       //this.editNode.focus(); -> causes IE to scroll always (strict and quirks mode) to the top the Iframe
+                       // if we fire the event manually and let the browser handle the focusing, the latest
+                       // cursor position is focused like in FF
+                       this.iframe.fireEvent('onfocus', document.createEventObject()); // createEventObject only in IE
+               //      }else{
+               // TODO: should we throw here?
+               // console.debug("Have no idea how to focus into the editor!");
+               }
+       },
+
+       // _lastUpdate: 0,
+       updateInterval: 200,
+       _updateTimer: null,
+       onDisplayChanged: function(/*Event*/ e){
+               // summary:
+               //              This event will be fired everytime the display context
+               //              changes and the result needs to be reflected in the UI.
+               // description:
+               //              If you don't want to have update too often,
+               //              onNormalizedDisplayChanged should be used instead
+               // tags:
+               //              private
+
+               // var _t=new Date();
+               if(this._updateTimer){
+                       clearTimeout(this._updateTimer);
+               }
+               if(!this._updateHandler){
+                       this._updateHandler = dojo.hitch(this,"onNormalizedDisplayChanged");
+               }
+               this._updateTimer = setTimeout(this._updateHandler, this.updateInterval);
+       },
+       onNormalizedDisplayChanged: function(){
+               // summary:
+               //              This event is fired every updateInterval ms or more
+               // description:
+               //              If something needs to happen immediately after a
+               //              user change, please use onDisplayChanged instead.
+               // tags:
+               //              private
+               delete this._updateTimer;
+       },
+       onChange: function(newContent){
+               // summary:
+               //              This is fired if and only if the editor loses focus and
+               //              the content is changed.
+       },
+       _normalizeCommand: function(/*String*/ cmd, /*Anything?*/argument){
+               // summary:
+               //              Used as the advice function by dojo.connect to map our
+               //              normalized set of commands to those supported by the target
+               //              browser.
+               // tags:
+               //              private
+
+               var command = cmd.toLowerCase();
+               if(command == "formatblock"){
+                       if(dojo.isSafari && argument === undefined){ command = "heading"; }
+               }else if(command == "hilitecolor" && !dojo.isMoz){
+                       command = "backcolor";
+               }
+
+               return command;
+       },
+
+       _qcaCache: {},
+       queryCommandAvailable: function(/*String*/ command){
+               // summary:
+               //              Tests whether a command is supported by the host. Clients
+               //              SHOULD check whether a command is supported before attempting
+               //              to use it, behaviour for unsupported commands is undefined.
+               // command:
+               //              The command to test for
+               // tags:
+               //              private
+
+               // memoizing version. See _queryCommandAvailable for computing version
+               var ca = this._qcaCache[command];
+               if(ca !== undefined){ return ca; }
+               return (this._qcaCache[command] = this._queryCommandAvailable(command));
+       },
+
+       _queryCommandAvailable: function(/*String*/ command){
+               // summary:
+               //              See queryCommandAvailable().
+               // tags:
+               //              private
+
+               var ie = 1;
+               var mozilla = 1 << 1;
+               var webkit = 1 << 2;
+               var opera = 1 << 3;
+               var webkit420 = 1 << 4;
+
+               function isSupportedBy(browsers){
+                       return {
+                               ie: Boolean(browsers & ie),
+                               mozilla: Boolean(browsers & mozilla),
+                               webkit: Boolean(browsers & webkit),
+                               webkit420: Boolean(browsers & webkit420),
+                               opera: Boolean(browsers & opera)
+                       };
+               }
+
+               var supportedBy = null;
+
+               switch(command.toLowerCase()){
+                       case "bold": case "italic": case "underline":
+                       case "subscript": case "superscript":
+                       case "fontname": case "fontsize":
+                       case "forecolor": case "hilitecolor":
+                       case "justifycenter": case "justifyfull": case "justifyleft":
+                       case "justifyright": case "delete": case "selectall": case "toggledir":
+                               supportedBy = isSupportedBy(mozilla | ie | webkit | opera);
+                               break;
+
+                       case "createlink": case "unlink": case "removeformat":
+                       case "inserthorizontalrule": case "insertimage":
+                       case "insertorderedlist": case "insertunorderedlist":
+                       case "indent": case "outdent": case "formatblock":
+                       case "inserthtml": case "undo": case "redo": case "strikethrough": case "tabindent":
+                               supportedBy = isSupportedBy(mozilla | ie | opera | webkit420);
+                               break;
+
+                       case "blockdirltr": case "blockdirrtl":
+                       case "dirltr": case "dirrtl":
+                       case "inlinedirltr": case "inlinedirrtl":
+                               supportedBy = isSupportedBy(ie);
+                               break;
+                       case "cut": case "copy": case "paste":
+                               supportedBy = isSupportedBy( ie | mozilla | webkit420);
+                               break;
+
+                       case "inserttable":
+                               supportedBy = isSupportedBy(mozilla | ie);
+                               break;
+
+                       case "insertcell": case "insertcol": case "insertrow":
+                       case "deletecells": case "deletecols": case "deleterows":
+                       case "mergecells": case "splitcell":
+                               supportedBy = isSupportedBy(ie | mozilla);
+                               break;
+
+                       default: return false;
+               }
+
+               return (dojo.isIE && supportedBy.ie) ||
+                       (dojo.isMoz && supportedBy.mozilla) ||
+                       (dojo.isWebKit && supportedBy.webkit) ||
+                       (dojo.isWebKit > 420 && supportedBy.webkit420) ||
+                       (dojo.isOpera && supportedBy.opera);    // Boolean return true if the command is supported, false otherwise
+       },
+
+       execCommand: function(/*String*/ command, argument){
+               // summary:
+               //              Executes a command in the Rich Text area
+               // command:
+               //              The command to execute
+               // argument:
+               //              An optional argument to the command
+               // tags:
+               //              protected
+               var returnValue;
+
+               //focus() is required for IE to work
+               //In addition, focus() makes sure after the execution of
+               //the command, the editor receives the focus as expected
+               this.focus();
+
+               command = this._normalizeCommand(command, argument);
+
+
+               if(argument !== undefined){
+                       if(command == "heading"){
+                               throw new Error("unimplemented");
+                       }else if((command == "formatblock") && dojo.isIE){
+                               argument = '<'+argument+'>';
+                       }
+               }
+
+               //Check to see if we have any over-rides for commands, they will be functions on this
+               //widget of the form _commandImpl.  If we don't, fall through to the basic native
+               //exec command of the browser.
+               var implFunc = "_" + command + "Impl";
+               if(this[implFunc]){
+                       returnValue = this[implFunc](argument);
+               }else{
+                       argument = arguments.length > 1 ? argument : null;
+                       if(argument || command!="createlink"){
+                               returnValue = this.document.execCommand(command, false, argument);
+                       }
+               }
+
+               this.onDisplayChanged();
+               return returnValue;
+       },
+
+       queryCommandEnabled: function(/*String*/ command){
+               // summary:
+               //              Check whether a command is enabled or not.
+               // tags:
+               //              protected
+               if(this.disabled || !this._disabledOK){ return false; }
+               command = this._normalizeCommand(command);
+               if(dojo.isMoz || dojo.isWebKit){
+                       if(command == "unlink"){ // mozilla returns true always
+                               // console.debug(this._sCall("hasAncestorElement", ['a']));
+                               return this._sCall("hasAncestorElement", ["a"]);
+                       }else if(command == "inserttable"){
+                               return true;
+                       }
+               }
+               //see #4109
+               if(dojo.isWebKit){
+                       if(command == "copy"){
+                               command = "cut";
+                       }else if(command == "paste"){
+                               return true;
+                       }
+               }
+
+               var elem = dojo.isIE ? this.document.selection.createRange() : this.document;
+               try{
+                       return elem.queryCommandEnabled(command);
+               }catch(e){
+                       //Squelch, occurs if editor is hidden on FF 3 (and maybe others.)
+                       return false;
+               }
+
+       },
+
+       queryCommandState: function(command){
+               // summary:
+               //              Check the state of a given command and returns true or false.
+               // tags:
+               //              protected
+
+               if(this.disabled || !this._disabledOK){ return false; }
+               command = this._normalizeCommand(command);
+               try{
+                       return this.document.queryCommandState(command);
+               }catch(e){
+                       //Squelch, occurs if editor is hidden on FF 3 (and maybe others.)
+                       return false;
+               }
+       },
+
+       queryCommandValue: function(command){
+               // summary:
+               //              Check the value of a given command. This matters most for
+               //              custom selections and complex values like font value setting.
+               // tags:
+               //              protected
+
+               if(this.disabled || !this._disabledOK){ return false; }
+               var r;
+               command = this._normalizeCommand(command);
+               if(dojo.isIE && command == "formatblock"){
+                       r = this._native2LocalFormatNames[this.document.queryCommandValue(command)];
+               }else if(dojo.isMoz && command === "hilitecolor"){
+                       var oldValue;
+                       try{
+                               oldValue = this.document.queryCommandValue("styleWithCSS");
+                       }catch(e){
+                               oldValue = false;
+                       }
+                       this.document.execCommand("styleWithCSS", false, true);
+                       r = this.document.queryCommandValue(command);
+                       this.document.execCommand("styleWithCSS", false, oldValue);
+               }else{
+                       r = this.document.queryCommandValue(command);
+               }
+               return r;
+       },
+
+       // Misc.
+
+       _sCall: function(name, args){
+               // summary:
+               //              Run the named method of dijit._editor.selection over the
+               //              current editor instance's window, with the passed args.
+               // tags:
+               //              private
+               return dojo.withGlobal(this.window, name, dijit._editor.selection, args);
+       },
+
+       // FIXME: this is a TON of code duplication. Why?
+
+       placeCursorAtStart: function(){
+               // summary:
+               //              Place the cursor at the start of the editing area.
+               // tags:
+               //              private
+
+               this.focus();
+
+               //see comments in placeCursorAtEnd
+               var isvalid=false;
+               if(dojo.isMoz){
+                       // TODO:  Is this branch even necessary?
+                       var first=this.editNode.firstChild;
+                       while(first){
+                               if(first.nodeType == 3){
+                                       if(first.nodeValue.replace(/^\s+|\s+$/g, "").length>0){
+                                               isvalid=true;
+                                               this._sCall("selectElement", [ first ]);
+                                               break;
+                                       }
+                               }else if(first.nodeType == 1){
+                                       isvalid=true;
+                                       var tg = first.tagName ? first.tagName.toLowerCase() : "";
+                                       // Collapse before childless tags.
+                                       if(/br|input|img|base|meta|area|basefont|hr|link/.test(tg)){
+                                               this._sCall("selectElement", [ first ]);
+                                       }else{
+                                               // Collapse inside tags with children.
+                                               this._sCall("selectElementChildren", [ first ]);
+                                       }
+                                       break;
+                               }
+                               first = first.nextSibling;
+                       }
+               }else{
+                       isvalid=true;
+                       this._sCall("selectElementChildren", [ this.editNode ]);
+               }
+               if(isvalid){
+                       this._sCall("collapse", [ true ]);
+               }
+       },
+
+       placeCursorAtEnd: function(){
+               // summary:
+               //              Place the cursor at the end of the editing area.
+               // tags:
+               //              private
+
+               this.focus();
+
+               //In mozilla, if last child is not a text node, we have to use
+               // selectElementChildren on this.editNode.lastChild otherwise the
+               // cursor would be placed at the end of the closing tag of
+               //this.editNode.lastChild
+               var isvalid=false;
+               if(dojo.isMoz){
+                       var last=this.editNode.lastChild;
+                       while(last){
+                               if(last.nodeType == 3){
+                                       if(last.nodeValue.replace(/^\s+|\s+$/g, "").length>0){
+                                               isvalid=true;
+                                               this._sCall("selectElement", [ last ]);
+                                               break;
+                                       }
+                               }else if(last.nodeType == 1){
+                                       isvalid=true;
+                                       if(last.lastChild){
+                                               this._sCall("selectElement", [ last.lastChild ]);
+                                       }else{
+                                               this._sCall("selectElement", [ last ]);
+                                       }
+                                       break;
+                               }
+                               last = last.previousSibling;
+                       }
+               }else{
+                       isvalid=true;
+                       this._sCall("selectElementChildren", [ this.editNode ]);
+               }
+               if(isvalid){
+                       this._sCall("collapse", [ false ]);
+               }
+       },
+
+       getValue: function(/*Boolean?*/ nonDestructive){
+               // summary:
+               //              Return the current content of the editing area (post filters
+               //              are applied).  Users should call attr('value') instead.
+               //      nonDestructive:
+               //              defaults to false. Should the post-filtering be run over a copy
+               //              of the live DOM? Most users should pass "true" here unless they
+               //              *really* know that none of the installed filters are going to
+               //              mess up the editing session.
+               // tags:
+               //              private
+               if(this.textarea){
+                       if(this.isClosed || !this.isLoaded){
+                               return this.textarea.value;
+                       }
+               }
+
+               return this._postFilterContent(null, nonDestructive);
+       },
+       _getValueAttr: function(){
+               // summary:
+               //              Hook to make attr("value") work
+               return this.getValue(true);
+       },
+
+       setValue: function(/*String*/ html){
+               // summary:
+               //              This function sets the content. No undo history is preserved.
+               //              Users should use set('value', ...) instead.
+               // tags:
+               //              deprecated
+
+               // TODO: remove this and getValue() for 2.0, and move code to _setValueAttr()
+
+               if(!this.isLoaded){
+                       // try again after the editor is finished loading
+                       this.onLoadDeferred.addCallback(dojo.hitch(this, function(){
+                               this.setValue(html);
+                       }));
+                       return;
+               }
+               this._cursorToStart = true;
+               if(this.textarea && (this.isClosed || !this.isLoaded)){
+                       this.textarea.value=html;
+               }else{
+                       html = this._preFilterContent(html);
+                       var node = this.isClosed ? this.domNode : this.editNode;
+
+                       // Use &nbsp; to avoid webkit problems where editor is disabled until the user clicks it
+                       if(!html && dojo.isWebKit){
+                               html = "&nbsp;";
+                       }
+                       node.innerHTML = html;
+                       this._preDomFilterContent(node);
+               }
+               this.onDisplayChanged();
+       },
+
+       replaceValue: function(/*String*/ html){
+               // summary:
+               //              This function set the content while trying to maintain the undo stack
+               //              (now only works fine with Moz, this is identical to setValue in all
+               //              other browsers)
+               // tags:
+               //              protected
+
+               if(this.isClosed){
+                       this.setValue(html);
+               }else if(this.window && this.window.getSelection && !dojo.isMoz){ // Safari
+                       // look ma! it's a totally f'd browser!
+                       this.setValue(html);
+               }else if(this.window && this.window.getSelection){ // Moz
+                       html = this._preFilterContent(html);
+                       this.execCommand("selectall");
+                       if(!html){ 
+                               this._cursorToStart = true;
+                               html = "&nbsp;"; 
+                       }
+                       this.execCommand("inserthtml", html);
+                       this._preDomFilterContent(this.editNode);
+               }else if(this.document && this.document.selection){//IE
+                       //In IE, when the first element is not a text node, say
+                       //an <a> tag, when replacing the content of the editing
+                       //area, the <a> tag will be around all the content
+                       //so for now, use setValue for IE too
+                       this.setValue(html);
+               }
+       },
+
+       _preFilterContent: function(/*String*/ html){
+               // summary:
+               //              Filter the input before setting the content of the editing
+               //              area. DOM pre-filtering may happen after this
+               //              string-based filtering takes place but as of 1.2, this is not
+               //              guaranteed for operations such as the inserthtml command.
+               // tags:
+               //              private
+
+               var ec = html;
+               dojo.forEach(this.contentPreFilters, function(ef){ if(ef){ ec = ef(ec); } });
+               return ec;
+       },
+       _preDomFilterContent: function(/*DomNode*/ dom){
+               // summary:
+               //              filter the input's live DOM. All filter operations should be
+               //              considered to be "live" and operating on the DOM that the user
+               //              will be interacting with in their editing session.
+               // tags:
+               //              private
+               dom = dom || this.editNode;
+               dojo.forEach(this.contentDomPreFilters, function(ef){
+                       if(ef && dojo.isFunction(ef)){
+                               ef(dom);
+                       }
+               }, this);
+       },
+
+       _postFilterContent: function(
+               /*DomNode|DomNode[]|String?*/ dom,
+               /*Boolean?*/ nonDestructive){
+               // summary:
+               //              filter the output after getting the content of the editing area
+               //
+               // description:
+               //              post-filtering allows plug-ins and users to specify any number
+               //              of transforms over the editor's content, enabling many common
+               //              use-cases such as transforming absolute to relative URLs (and
+               //              vice-versa), ensuring conformance with a particular DTD, etc.
+               //              The filters are registered in the contentDomPostFilters and
+               //              contentPostFilters arrays. Each item in the
+               //              contentDomPostFilters array is a function which takes a DOM
+               //              Node or array of nodes as its only argument and returns the
+               //              same. It is then passed down the chain for further filtering.
+               //              The contentPostFilters array behaves the same way, except each
+               //              member operates on strings. Together, the DOM and string-based
+               //              filtering allow the full range of post-processing that should
+               //              be necessaray to enable even the most agressive of post-editing
+               //              conversions to take place.
+               //
+               //              If nonDestructive is set to "true", the nodes are cloned before
+               //              filtering proceeds to avoid potentially destructive transforms
+               //              to the content which may still needed to be edited further.
+               //              Once DOM filtering has taken place, the serialized version of
+               //              the DOM which is passed is run through each of the
+               //              contentPostFilters functions.
+               //
+               //      dom:
+               //              a node, set of nodes, which to filter using each of the current
+               //              members of the contentDomPostFilters and contentPostFilters arrays.
+               //
+               //      nonDestructive:
+               //              defaults to "false". If true, ensures that filtering happens on
+               //              a clone of the passed-in content and not the actual node
+               //              itself.
+               //
+               // tags:
+               //              private
+
+               var ec;
+               if(!dojo.isString(dom)){
+                       dom = dom || this.editNode;
+                       if(this.contentDomPostFilters.length){
+                               if(nonDestructive){
+                                       dom = dojo.clone(dom);
+                               }
+                               dojo.forEach(this.contentDomPostFilters, function(ef){
+                                       dom = ef(dom);
+                               });
+                       }
+                       ec = dijit._editor.getChildrenHtml(dom);
+               }else{
+                       ec = dom;
+               }
+
+               if(!dojo.trim(ec.replace(/^\xA0\xA0*/, '').replace(/\xA0\xA0*$/, '')).length){
+                       ec = "";
+               }
+
+               //      if(dojo.isIE){
+               //              //removing appended <P>&nbsp;</P> for IE
+               //              ec = ec.replace(/(?:<p>&nbsp;</p>[\n\r]*)+$/i,"");
+               //      }
+               dojo.forEach(this.contentPostFilters, function(ef){
+                       ec = ef(ec);
+               });
+
+               return ec;
+       },
+
+       _saveContent: function(/*Event*/ e){
+               // summary:
+               //              Saves the content in an onunload event if the editor has not been closed
+               // tags:
+               //              private
+
+               var saveTextarea = dojo.byId(dijit._scopeName + "._editor.RichText.savedContent");
+               if(saveTextarea.value){
+                       saveTextarea.value += this._SEPARATOR;
+               }
+               saveTextarea.value += this.name + ":" + this.getValue(true);
+       },
+
+
+       escapeXml: function(/*String*/ str, /*Boolean*/ noSingleQuotes){
+               // summary:
+               //              Adds escape sequences for special characters in XML.
+               //              Optionally skips escapes for single quotes
+               // tags:
+               //              private
+
+               str = str.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;").replace(/"/gm, "&quot;");
+               if(!noSingleQuotes){
+                       str = str.replace(/'/gm, "&#39;");
+               }
+               return str; // string
+       },
+
+       getNodeHtml: function(/* DomNode */ node){
+               // summary:
+               //              Deprecated.   Use dijit._editor._getNodeHtml() instead.
+               // tags:
+               //              deprecated
+               dojo.deprecated('dijit.Editor::getNodeHtml is deprecated','use dijit._editor.getNodeHtml instead', 2);
+               return dijit._editor.getNodeHtml(node); // String
+       },
+
+       getNodeChildrenHtml: function(/* DomNode */ dom){
+               // summary:
+               //              Deprecated.   Use dijit._editor.getChildrenHtml() instead.
+               // tags:
+               //              deprecated
+               dojo.deprecated('dijit.Editor::getNodeChildrenHtml is deprecated','use dijit._editor.getChildrenHtml instead', 2);
+               return dijit._editor.getChildrenHtml(dom);
+       },
+
+       close: function(/*Boolean*/ save){
+               // summary:
+               //              Kills the editor and optionally writes back the modified contents to the
+               //              element from which it originated.
+               // save:
+               //              Whether or not to save the changes. If false, the changes are discarded.
+               // tags:
+               //              private
+
+               if(this.isClosed){return false; }
+
+               if(!arguments.length){ save = true; }
+               this._content = this.getValue();
+               var changed = (this.savedContent != this._content);
+
+               // line height is squashed for iframes
+               // FIXME: why was this here? if (this.iframe){ this.domNode.style.lineHeight = null; }
+
+               if(this.interval){ clearInterval(this.interval); }
+
+               if(this._webkitListener){
+                       //Cleaup of WebKit fix: #9532
+                       this.disconnect(this._webkitListener);
+                       delete this._webkitListener;
+               }
+
+               // Guard against memory leaks on IE (see #9268)
+               if(dojo.isIE){
+                        this.iframe.onfocus = null;
+               }
+               this.iframe._loadFunc = null;
+
+               if(this._iframeRegHandle){
+                       dijit.unregisterIframe(this._iframeRegHandle);
+                       delete this._iframeRegHandle;
+               }
+
+               if(this.textarea){
+                       var s = this.textarea.style;
+                       s.position = "";
+                       s.left = s.top = "";
+                       if(dojo.isIE){
+                               s.overflow = this.__overflow;
+                               this.__overflow = null;
+                       }
+                       this.textarea.value = save ? this._content : this.savedContent;
+                       dojo.destroy(this.domNode);
+                       this.domNode = this.textarea;
+               }else{
+                       // if(save){
+                       // why we treat moz differently? comment out to fix #1061
+                       //              if(dojo.isMoz){
+                       //                      var nc = dojo.doc.createElement("span");
+                       //                      this.domNode.appendChild(nc);
+                       //                      nc.innerHTML = this.editNode.innerHTML;
+                       //              }else{
+                       //                      this.domNode.innerHTML = this._content;
+                       //              }
+                       // }
+
+                       // Note that this destroys the iframe
+                       this.domNode.innerHTML = save ? this._content : this.savedContent;
+               }
+               delete this.iframe;
+
+               dojo.removeClass(this.domNode, this.baseClass);
+               this.isClosed = true;
+               this.isLoaded = false;
+
+               delete this.editNode;
+               delete this.focusNode;
+
+               if(this.window && this.window._frameElement){
+                       this.window._frameElement = null;
+               }
+
+               this.window = null;
+               this.document = null;
+               this.editingArea = null;
+               this.editorObject = null;
+
+               return changed; // Boolean: whether the content has been modified
+       },
+
+       destroy: function(){
+               if(!this.isClosed){ this.close(false); }
+               this.inherited(arguments);
+       },
+
+       _removeMozBogus: function(/* String */ html){
+               // summary:
+               //              Post filter to remove unwanted HTML attributes generated by mozilla
+               // tags:
+               //              private
+               return html.replace(/\stype="_moz"/gi, '').replace(/\s_moz_dirty=""/gi, '').replace(/_moz_resizing="(true|false)"/gi,''); // String
+       },
+       _removeWebkitBogus: function(/* String */ html){
+               // summary:
+               //              Post filter to remove unwanted HTML attributes generated by webkit
+               // tags:
+               //              private
+               html = html.replace(/\sclass="webkit-block-placeholder"/gi, '');
+               html = html.replace(/\sclass="apple-style-span"/gi, '');
+               return html; // String
+       },
+       _normalizeFontStyle: function(/* String */ html){
+               // summary:
+               //              Convert 'strong' and 'em' to 'b' and 'i'.
+               // description:
+               //              Moz can not handle strong/em tags correctly, so to help
+               //              mozilla and also to normalize output, convert them to 'b' and 'i'.
+               //
+               //              Note the IE generates 'strong' and 'em' rather than 'b' and 'i'
+               // tags:
+               //              private
+               return html.replace(/<(\/)?strong([ \>])/gi, '<$1b$2')
+                       .replace(/<(\/)?em([ \>])/gi, '<$1i$2' ); // String
+       },
+
+       _preFixUrlAttributes: function(/* String */ html){
+               // summary:
+               //              Pre-filter to do fixing to href attributes on <a> and <img> tags
+               // tags:
+               //              private
+               return html.replace(/(?:(<a(?=\s).*?\shref=)("|')(.*?)\2)|(?:(<a\s.*?href=)([^"'][^ >]+))/gi,
+                               '$1$4$2$3$5$2 _djrealurl=$2$3$5$2')
+                       .replace(/(?:(<img(?=\s).*?\ssrc=)("|')(.*?)\2)|(?:(<img\s.*?src=)([^"'][^ >]+))/gi,
+                               '$1$4$2$3$5$2 _djrealurl=$2$3$5$2'); // String
+       },
+
+       /*****************************************************************************
+               The following functions implement HTML manipulation commands for various
+               browser/contentEditable implementations.  The goal of them is to enforce
+               standard behaviors of them.
+       ******************************************************************************/
+
+       _inserthorizontalruleImpl: function(argument){
+               // summary:
+               //              This function implements the insertion of HTML 'HR' tags.
+               //              into a point on the page.  IE doesn't to it right, so
+               //              we have to use an alternate form
+               // argument:
+               //              arguments to the exec command, if any.
+               // tags:
+               //              protected
+               if(dojo.isIE){
+                       return this._inserthtmlImpl("<hr>");
+               }
+               return this.document.execCommand("inserthorizontalrule", false, argument);
+       },
+
+       _unlinkImpl: function(argument){
+               // summary:
+               //              This function implements the unlink of an 'a' tag.
+               // argument:
+               //              arguments to the exec command, if any.
+               // tags:
+               //              protected
+               if((this.queryCommandEnabled("unlink")) && (dojo.isMoz || dojo.isWebKit)){
+                       var a = this._sCall("getAncestorElement", [ "a" ]);
+                       this._sCall("selectElement", [ a ]);
+                       return this.document.execCommand("unlink", false, null);
+               }
+               return this.document.execCommand("unlink", false, argument);
+       },
+
+       _hilitecolorImpl: function(argument){
+               // summary:
+               //              This function implements the hilitecolor command
+               // argument:
+               //              arguments to the exec command, if any.
+               // tags:
+               //              protected
+               var returnValue;
+               if(dojo.isMoz){
+                       // mozilla doesn't support hilitecolor properly when useCSS is
+                       // set to false (bugzilla #279330)
+                       this.document.execCommand("styleWithCSS", false, true);
+                       returnValue = this.document.execCommand("hilitecolor", false, argument);
+                       this.document.execCommand("styleWithCSS", false, false);
+               }else{
+                       returnValue = this.document.execCommand("hilitecolor", false, argument);
+               }
+               return returnValue;
+       },
+
+       _backcolorImpl: function(argument){
+               // summary:
+               //              This function implements the backcolor command
+               // argument:
+               //              arguments to the exec command, if any.
+               // tags:
+               //              protected
+               if(dojo.isIE){
+                       // Tested under IE 6 XP2, no problem here, comment out
+                       // IE weirdly collapses ranges when we exec these commands, so prevent it
+                       //      var tr = this.document.selection.createRange();
+                       argument = argument ? argument : null;
+               }
+               return this.document.execCommand("backcolor", false, argument);
+       },
+
+       _forecolorImpl: function(argument){
+               // summary:
+               //              This function implements the forecolor command
+               // argument:
+               //              arguments to the exec command, if any.
+               // tags:
+               //              protected
+               if(dojo.isIE){
+                       // Tested under IE 6 XP2, no problem here, comment out
+                       // IE weirdly collapses ranges when we exec these commands, so prevent it
+                       //      var tr = this.document.selection.createRange();
+                       argument = argument? argument : null;
+               }
+               return this.document.execCommand("forecolor", false, argument);
+       },
+
+       _inserthtmlImpl: function(argument){
+               // summary:
+               //              This function implements the insertion of HTML content into
+               //              a point on the page.
+               // argument:
+               //              The content to insert, if any.
+               // tags:
+               //              protected
+               argument = this._preFilterContent(argument);
+               var rv = true;
+               if(dojo.isIE){
+                       var insertRange = this.document.selection.createRange();
+                       if(this.document.selection.type.toUpperCase() == 'CONTROL'){
+                               var n=insertRange.item(0);
+                               while(insertRange.length){
+                                       insertRange.remove(insertRange.item(0));
+                               }
+                               n.outerHTML=argument;
+                       }else{
+                               insertRange.pasteHTML(argument);
+                       }
+                       insertRange.select();
+                       //insertRange.collapse(true);
+               }else if(dojo.isMoz && !argument.length){
+                       //mozilla can not inserthtml an empty html to delete current selection
+                       //so we delete the selection instead in this case
+                       this._sCall("remove"); // FIXME
+               }else{
+                       rv = this.document.execCommand("inserthtml", false, argument);
+               }
+               return rv;
+       },
+
+       getHeaderHeight: function(){
+               // summary:
+               //              A function for obtaining the height of the header node
+               return this._getNodeChildrenHeight(this.header); // Number
+       },
+
+       getFooterHeight: function(){
+               // summary:
+               //              A function for obtaining the height of the footer node
+               return this._getNodeChildrenHeight(this.footer); // Number
+       },
+
+       _getNodeChildrenHeight: function(node){
+               // summary:
+               //              An internal function for computing the cumulative height of all child nodes of 'node'
+               // node:
+               //              The node to process the children of;
+               var h = 0;
+               if(node && node.childNodes){
+                       // IE didn't compute it right when position was obtained on the node directly is some cases, 
+                       // so we have to walk over all the children manually.
+                       var i; 
+                       for(i = 0; i < node.childNodes.length; i++){ 
+                               var size = dojo.position(node.childNodes[i]); 
+                               h += size.h;   
+                       } 
+               }
+               return h; // Number
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit._KeyNavContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._KeyNavContainer"] = true;
+dojo.provide("dijit._KeyNavContainer");
+
+
+dojo.declare("dijit._KeyNavContainer",
+       dijit._Container,
+       {
+
+               // summary:
+               //              A _Container with keyboard navigation of its children.
+               // description:
+               //              To use this mixin, call connectKeyNavHandlers() in
+               //              postCreate() and call startupKeyNavChildren() in startup().
+               //              It provides normalized keyboard and focusing code for Container
+               //              widgets.
+/*=====
+               // focusedChild: [protected] Widget
+               //              The currently focused child widget, or null if there isn't one
+               focusedChild: null,
+=====*/
+
+               // tabIndex: Integer
+               //              Tab index of the container; same as HTML tabIndex attribute.
+               //              Note then when user tabs into the container, focus is immediately
+               //              moved to the first item in the container.
+               tabIndex: "0",
+
+               _keyNavCodes: {},
+
+               connectKeyNavHandlers: function(/*dojo.keys[]*/ prevKeyCodes, /*dojo.keys[]*/ nextKeyCodes){
+                       // summary:
+                       //              Call in postCreate() to attach the keyboard handlers
+                       //              to the container.
+                       // preKeyCodes: dojo.keys[]
+                       //              Key codes for navigating to the previous child.
+                       // nextKeyCodes: dojo.keys[]
+                       //              Key codes for navigating to the next child.
+                       // tags:
+                       //              protected
+
+                       var keyCodes = (this._keyNavCodes = {});
+                       var prev = dojo.hitch(this, this.focusPrev);
+                       var next = dojo.hitch(this, this.focusNext);
+                       dojo.forEach(prevKeyCodes, function(code){ keyCodes[code] = prev; });
+                       dojo.forEach(nextKeyCodes, function(code){ keyCodes[code] = next; });
+                       this.connect(this.domNode, "onkeypress", "_onContainerKeypress");
+                       this.connect(this.domNode, "onfocus", "_onContainerFocus");
+               },
+
+               startupKeyNavChildren: function(){
+                       // summary:
+                       //              Call in startup() to set child tabindexes to -1
+                       // tags:
+                       //              protected
+                       dojo.forEach(this.getChildren(), dojo.hitch(this, "_startupChild"));
+               },
+
+               addChild: function(/*dijit._Widget*/ widget, /*int?*/ insertIndex){
+                       // summary:
+                       //              Add a child to our _Container
+                       dijit._KeyNavContainer.superclass.addChild.apply(this, arguments);
+                       this._startupChild(widget);
+               },
+
+               focus: function(){
+                       // summary:
+                       //              Default focus() implementation: focus the first child.
+                       this.focusFirstChild();
+               },
+
+               focusFirstChild: function(){
+                       // summary:
+                       //              Focus the first focusable child in the container.
+                       // tags:
+                       //              protected
+                       var child = this._getFirstFocusableChild();
+                       if(child){ // edge case: Menu could be empty or hidden
+                               this.focusChild(child);
+                       }
+               },
+
+               focusNext: function(){
+                       // summary:
+                       //              Focus the next widget
+                       // tags:
+                       //              protected
+                       var child = this._getNextFocusableChild(this.focusedChild, 1);
+                       this.focusChild(child);
+               },
+
+               focusPrev: function(){
+                       // summary:
+                       //              Focus the last focusable node in the previous widget
+                       //              (ex: go to the ComboButton icon section rather than button section)
+                       // tags:
+                       //              protected
+                       var child = this._getNextFocusableChild(this.focusedChild, -1);
+                       this.focusChild(child, true);
+               },
+
+               focusChild: function(/*dijit._Widget*/ widget, /*Boolean*/ last){
+                       // summary:
+                       //              Focus widget.
+                       // widget:
+                       //              Reference to container's child widget
+                       // last:
+                       //              If true and if widget has multiple focusable nodes, focus the
+                       //              last one instead of the first one
+                       // tags:
+                       //              protected
+                       
+                       if(this.focusedChild && widget !== this.focusedChild){
+                               this._onChildBlur(this.focusedChild);
+                       }
+                       widget.focus(last ? "end" : "start");
+                       this.focusedChild = widget;
+               },
+
+               _startupChild: function(/*dijit._Widget*/ widget){
+                       // summary:
+                       //              Setup for each child widget
+                       // description:
+                       //              Sets tabIndex=-1 on each child, so that the tab key will 
+                       //              leave the container rather than visiting each child.
+                       // tags:
+                       //              private
+                       
+                       widget.set("tabIndex", "-1");
+                       
+                       this.connect(widget, "_onFocus", function(){
+                               // Set valid tabIndex so tabbing away from widget goes to right place, see #10272
+                               widget.set("tabIndex", this.tabIndex);
+                       });
+                       this.connect(widget, "_onBlur", function(){
+                               widget.set("tabIndex", "-1");
+                       });
+               },
+
+               _onContainerFocus: function(evt){
+                       // summary:
+                       //              Handler for when the container gets focus
+                       // description:
+                       //              Initially the container itself has a tabIndex, but when it gets
+                       //              focus, switch focus to first child...
+                       // tags:
+                       //              private
+
+                       // Note that we can't use _onFocus() because switching focus from the
+                       // _onFocus() handler confuses the focus.js code
+                       // (because it causes _onFocusNode() to be called recursively)
+
+                       // focus bubbles on Firefox,
+                       // so just make sure that focus has really gone to the container
+                       if(evt.target !== this.domNode){ return; }
+
+                       this.focusFirstChild();
+
+                       // and then set the container's tabIndex to -1,
+                       // (don't remove as that breaks Safari 4)
+                       // so that tab or shift-tab will go to the fields after/before
+                       // the container, rather than the container itself
+                       dojo.attr(this.domNode, "tabIndex", "-1");
+               },
+
+               _onBlur: function(evt){
+                       // When focus is moved away the container, and its descendant (popup) widgets,
+                       // then restore the container's tabIndex so that user can tab to it again.
+                       // Note that using _onBlur() so that this doesn't happen when focus is shifted
+                       // to one of my child widgets (typically a popup)
+                       if(this.tabIndex){
+                               dojo.attr(this.domNode, "tabIndex", this.tabIndex);
+                       }
+                       this.inherited(arguments);
+               },
+
+               _onContainerKeypress: function(evt){
+                       // summary:
+                       //              When a key is pressed, if it's an arrow key etc. then
+                       //              it's handled here.
+                       // tags:
+                       //              private
+                       if(evt.ctrlKey || evt.altKey){ return; }
+                       var func = this._keyNavCodes[evt.charOrCode];
+                       if(func){
+                               func();
+                               dojo.stopEvent(evt);
+                       }
+               },
+
+               _onChildBlur: function(/*dijit._Widget*/ widget){
+                       // summary:
+                       //              Called when focus leaves a child widget to go
+                       //              to a sibling widget.
+                       // tags:
+                       //              protected
+               },
+
+               _getFirstFocusableChild: function(){
+                       // summary:
+                       //              Returns first child that can be focused
+                       return this._getNextFocusableChild(null, 1);    // dijit._Widget
+               },
+
+               _getNextFocusableChild: function(child, dir){
+                       // summary:
+                       //              Returns the next or previous focusable child, compared
+                       //              to "child"
+                       // child: Widget
+                       //              The current widget
+                       // dir: Integer
+                       //              * 1 = after
+                       //              * -1 = before
+                       if(child){
+                               child = this._getSiblingOfChild(child, dir);
+                       }
+                       var children = this.getChildren();
+                       for(var i=0; i < children.length; i++){
+                               if(!child){
+                                       child = children[(dir>0) ? 0 : (children.length-1)];
+                               }
+                               if(child.isFocusable()){
+                                       return child;   // dijit._Widget
+                               }
+                               child = this._getSiblingOfChild(child, dir);
+                       }
+                       // no focusable child found
+                       return null;    // dijit._Widget
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.ToolbarSeparator"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.ToolbarSeparator"] = true;
+dojo.provide("dijit.ToolbarSeparator");
+
+
+
+
+dojo.declare("dijit.ToolbarSeparator",
+               [ dijit._Widget, dijit._Templated ],
+               {
+               // summary:
+               //              A spacer between two `dijit.Toolbar` items
+               templateString: '<div class="dijitToolbarSeparator dijitInline" waiRole="presentation"></div>',
+               postCreate: function(){ dojo.setSelectable(this.domNode, false); },
+               isFocusable: function(){
+                       // summary:
+                       //              This widget isn't focusable, so pass along that fact.
+                       // tags:
+                       //              protected
+                       return false;
+               }
+
+       });
+
+
+
+}
+
+if(!dojo._hasResource["dijit.Toolbar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.Toolbar"] = true;
+dojo.provide("dijit.Toolbar");
+
+
+
+
+
+dojo.declare("dijit.Toolbar",
+       [dijit._Widget, dijit._Templated, dijit._KeyNavContainer],
+       {
+       // summary:
+       //              A Toolbar widget, used to hold things like `dijit.Editor` buttons
+
+       templateString:
+               '<div class="dijit" waiRole="toolbar" tabIndex="${tabIndex}" dojoAttachPoint="containerNode">' +
+               //      '<table style="table-layout: fixed" class="dijitReset dijitToolbarTable">' + // factor out style
+               //              '<tr class="dijitReset" dojoAttachPoint="containerNode"></tr>'+
+               //      '</table>' +
+               '</div>',
+
+       baseClass: "dijitToolbar",
+
+       postCreate: function(){
+               this.connectKeyNavHandlers(
+                       this.isLeftToRight() ? [dojo.keys.LEFT_ARROW] : [dojo.keys.RIGHT_ARROW],
+                       this.isLeftToRight() ? [dojo.keys.RIGHT_ARROW] : [dojo.keys.LEFT_ARROW]
+               );
+               this.inherited(arguments);
+       },
+
+       startup: function(){
+               if(this._started){ return; }
+
+               this.startupKeyNavChildren();
+
+               this.inherited(arguments);
+       }
+}
+);
+
+// For back-compat, remove for 2.0
+
+
+}
+
+if(!dojo._hasResource["dijit._HasDropDown"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._HasDropDown"] = true;
+dojo.provide("dijit._HasDropDown");
+
+
+
+
+dojo.declare("dijit._HasDropDown",
+       null,
+       {
+               // summary:
+               //              Mixin for widgets that need drop down ability.
+
+               // _buttonNode: [protected] DomNode
+               //              The button/icon/node to click to display the drop down.
+               //              Can be set via a dojoAttachPoint assignment.
+               //              If missing, then either focusNode or domNode (if focusNode is also missing) will be used.
+               _buttonNode: null,
+
+               // _arrowWrapperNode: [protected] DomNode
+               //              Will set CSS class dijitUpArrow, dijitDownArrow, dijitRightArrow etc. on this node depending
+               //              on where the drop down is set to be positioned.
+               //              Can be set via a dojoAttachPoint assignment.
+               //              If missing, then _buttonNode will be used.
+               _arrowWrapperNode: null,
+
+               // _popupStateNode: [protected] DomNode
+               //              The node to set the popupActive class on.
+               //              Can be set via a dojoAttachPoint assignment.
+               //              If missing, then focusNode or _buttonNode (if focusNode is missing) will be used.
+               _popupStateNode: null,
+
+               // _aroundNode: [protected] DomNode
+               //              The node to display the popup around.
+               //              Can be set via a dojoAttachPoint assignment.
+               //              If missing, then domNode will be used.
+               _aroundNode: null,
+
+               // dropDown: [protected] Widget
+               //              The widget to display as a popup.  This widget *must* be
+               //              defined before the startup function is called.
+               dropDown: null,
+
+               // autoWidth: [protected] Boolean
+               //              Set to true to make the drop down at least as wide as this
+               //              widget.  Set to false if the drop down should just be its
+               //              default width
+               autoWidth: true,
+
+               // forceWidth: [protected] Boolean
+               //              Set to true to make the drop down exactly as wide as this
+               //              widget.  Overrides autoWidth.
+               forceWidth: false,
+
+               // maxHeight: [protected] Integer
+               //              The max height for our dropdown.  Set to 0 for no max height.
+               //              any dropdown taller than this will have scrollbars
+               maxHeight: 0,
+
+               // dropDownPosition: [const] 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.
+               //
+               dropDownPosition: ["below","above"],
+
+               // _stopClickEvents: Boolean
+               //              When set to false, the click events will not be stopped, in
+               //              case you want to use them in your subwidget
+               _stopClickEvents: true,
+
+               _onDropDownMouseDown: function(/*Event*/ e){
+                       // summary:
+                       //              Callback when the user mousedown's on the arrow icon
+
+                       if(this.disabled || this.readOnly){ return; }
+
+                       this._docHandler = this.connect(dojo.doc, "onmouseup", "_onDropDownMouseUp");
+
+                       this.toggleDropDown();
+               },
+
+               _onDropDownMouseUp: function(/*Event?*/ e){
+                       // summary:
+                       //              Callback when the user lifts their mouse after mouse down on the arrow icon.
+                       //              If the drop is a simple menu and the mouse is over the menu, we execute it, otherwise, we focus our
+                       //              dropDown node.  If the event is missing, then we are not
+                       //              a mouseup event.
+                       //
+                       //              This is useful for the common mouse movement pattern
+                       //              with native browser <select> nodes:
+                       //                      1. mouse down on the select node (probably on the arrow)
+                       //                      2. move mouse to a menu item while holding down the mouse button
+                       //                      3. mouse up.  this selects the menu item as though the user had clicked it.
+                       if(e && this._docHandler){
+                               this.disconnect(this._docHandler);
+                       }
+                       var dropDown = this.dropDown, overMenu = false;
+
+                       if(e && this._opened){
+                               // This code deals with the corner-case when the drop down covers the original widget,
+                               // because it's so large.  In that case mouse-up shouldn't select a value from the menu.
+                               // Find out if our target is somewhere in our dropdown widget,
+                               // but not over our _buttonNode (the clickable node)
+                               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 && !overMenu){
+                                               if(dojo.hasClass(t, "dijitPopup")){
+                                                       overMenu = true;
+                                               }else{
+                                                       t = t.parentNode;
+                                               }
+                                       }
+                                       if(overMenu){
+                                               t = e.target;
+                                               if(dropDown.onItemClick){
+                                                       var menuItem;
+                                                       while(t && !(menuItem = dijit.byNode(t))){
+                                                               t = t.parentNode;
+                                                       }
+                                                       if(menuItem && menuItem.onClick && menuItem.getParent){
+                                                               menuItem.getParent().onItemClick(menuItem, e);
+                                                       }
+                                               }
+                                               return;
+                                       }
+                               }
+                       }
+                       if(this._opened && dropDown.focus){
+                               // Focus the dropdown widget - do it on a delay so that we
+                               // don't steal our own focus.
+                               window.setTimeout(dojo.hitch(dropDown, "focus"), 1);
+                       }
+               },
+
+               _onDropDownClick: function(/*Event*/ e){
+                       // the drop down was already opened on mousedown/keydown; just need to call stopEvent()
+                       if(this._stopClickEvents){
+                               dojo.stopEvent(e);
+                       }                       
+               },
+
+               _setupDropdown: function(){
+                       // summary:
+                       //              set up nodes and connect our mouse and keypress events
+                       this._buttonNode = this._buttonNode || this.focusNode || this.domNode;
+                       this._popupStateNode = this._popupStateNode || this.focusNode || this._buttonNode;
+                       this._aroundNode = this._aroundNode || this.domNode;
+                       this.connect(this._buttonNode, "onmousedown", "_onDropDownMouseDown");
+                       this.connect(this._buttonNode, "onclick", "_onDropDownClick");
+                       this.connect(this._buttonNode, "onkeydown", "_onDropDownKeydown");
+                       this.connect(this._buttonNode, "onkeyup", "_onKey");
+
+                       // If we have a _setStateClass function (which happens when
+                       // we are a form widget), then we need to connect our open/close
+                       // functions to it
+                       if(this._setStateClass){
+                               this.connect(this, "openDropDown", "_setStateClass");
+                               this.connect(this, "closeDropDown", "_setStateClass");
+                       }
+
+                       // Add a class to the "dijitDownArrowButton" type class to _buttonNode so theme can set direction of arrow
+                       // based on where drop down will normally appear
+                       var defaultPos = {
+                                       "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" + defaultPos + "ArrowButton");
+               },
+
+               postCreate: function(){
+                       this._setupDropdown();
+                       this.inherited(arguments);
+               },
+
+               destroyDescendants: function(){
+                       if(this.dropDown){
+                               // Destroy the drop down, unless it's already been destroyed.  This can happen because
+                               // the drop down is a direct child of <body> even though it's logically my child.
+                               if(!this.dropDown._destroyed){
+                                       this.dropDown.destroyRecursive();
+                               }
+                               delete this.dropDown;
+                       }
+                       this.inherited(arguments);
+               },
+
+               _onDropDownKeydown: function(/*Event*/ e){
+                       if(e.keyCode == dojo.keys.DOWN_ARROW || e.keyCode == dojo.keys.ENTER || e.keyCode == dojo.keys.SPACE){
+                               e.preventDefault();     // stop IE screen jump
+                       }
+               },
+
+               _onKey: function(/*Event*/ e){
+                       // summary:
+                       //              Callback when the user presses a key while focused on the button node
+
+                       if(this.disabled || this.readOnly){ return; }
+                       var d = this.dropDown;
+                       if(d && this._opened && d.handleKey){
+                               if(d.handleKey(e) === false){ return; }
+                       }
+                       if(d && this._opened && e.keyCode == dojo.keys.ESCAPE){
+                               this.toggleDropDown();
+                       }else if(d && !this._opened && 
+                                       (e.keyCode == dojo.keys.DOWN_ARROW || e.keyCode == dojo.keys.ENTER || e.keyCode == dojo.keys.SPACE)){
+                               this.toggleDropDown();
+                               if(d.focus){
+                                       setTimeout(dojo.hitch(d, "focus"), 1);
+                               }
+                       }
+               },
+
+               _onBlur: function(){
+                       // summary:
+                       //              Called magically when focus has shifted away from this widget and it's dropdown
+
+                       this.closeDropDown();
+                       // don't focus on button.  the user has explicitly focused on something else.
+                       this.inherited(arguments);
+               },
+
+               isLoaded: function(){
+                       // summary:
+                       //              Returns whether or not the dropdown is loaded.  This can
+                       //              be overridden in order to force a call to loadDropDown().
+                       // tags:
+                       //              protected
+
+                       return true;
+               },
+
+               loadDropDown: function(/* Function */ loadCallback){
+                       // summary:
+                       //              Loads the data for the dropdown, and at some point, calls
+                       //              the given callback
+                       // tags:
+                       //              protected
+
+                       loadCallback();
+               },
+
+               toggleDropDown: function(){
+                       // summary:
+                       //              Toggle the drop-down widget; if it is up, close it, if not, open it
+                       // tags:
+                       //              protected
+
+                       if(this.disabled || this.readOnly){ return; }
+                       this.focus();
+                       var dropDown = this.dropDown;
+                       if(!dropDown){ return; }
+                       if(!this._opened){
+                               // If we aren't loaded, load it first so there isn't a flicker
+                               if(!this.isLoaded()){
+                                       this.loadDropDown(dojo.hitch(this, "openDropDown"));
+                                       return;
+                               }else{
+                                       this.openDropDown();
+                               }
+                       }else{
+                               this.closeDropDown();
+                       }
+               },
+
+               openDropDown: function(){
+                       // summary:
+                       //              Opens the dropdown for this widget - it returns the
+                       //              return value of dijit.popup.open
+                       // tags:
+                       //              protected
+
+                       var dropDown = this.dropDown;
+                       var ddNode = dropDown.domNode;
+                       var self = this;
+
+                       // Prepare our popup's height and honor maxHeight if it exists.
+
+                       // TODO: isn't maxHeight dependent on the return value from dijit.popup.open(),
+                       // ie, dependent on how much space is available (BK)
+
+                       if(!this._preparedNode){
+                               dijit.popup.moveOffScreen(ddNode);
+                               this._preparedNode = true;                      
+                               // Check if we have explicitly set width and height on the dropdown widget dom node
+                               if(ddNode.style.width){
+                                       this._explicitDDWidth = true;
+                               }
+                               if(ddNode.style.height){
+                                       this._explicitDDHeight = true;
+                               }
+                       }
+
+                       // Code for resizing dropdown (height limitation, or increasing width to match my width)
+                       if(this.maxHeight || this.forceWidth || this.autoWidth){
+                               var myStyle = {
+                                       display: "",
+                                       visibility: "hidden"
+                               };
+                               if(!this._explicitDDWidth){
+                                       myStyle.width = "";
+                               }
+                               if(!this._explicitDDHeight){
+                                       myStyle.height = "";
+                               }
+                               dojo.style(ddNode, myStyle);
+                               
+                               // Get size of drop down, and determine if vertical scroll bar needed
+                               var mb = dojo.marginBox(ddNode);
+                               var overHeight = (this.maxHeight && mb.h > this.maxHeight);
+                               dojo.style(ddNode, {
+                                       overflowX: "hidden",
+                                       overflowY: overHeight ? "auto" : "hidden"
+                               });
+                               if(overHeight){
+                                       mb.h = this.maxHeight;
+                                       if("w" in mb){
+                                               mb.w += 16;     // room for vertical scrollbar
+                                       }
+                               }else{
+                                       delete mb.h;
+                               }
+                               delete mb.t;
+                               delete mb.l;
+
+                               // Adjust dropdown width to match or be larger than my width
+                               if(this.forceWidth){
+                                       mb.w = this.domNode.offsetWidth;
+                               }else if(this.autoWidth){
+                                       mb.w = Math.max(mb.w, this.domNode.offsetWidth);
+                               }else{
+                                       delete mb.w;
+                               }
+                               
+                               // And finally, resize the dropdown to calculated height and width
+                               if(dojo.isFunction(dropDown.resize)){
+                                       dropDown.resize(mb);
+                               }else{
+                                       dojo.marginBox(ddNode, mb);
+                               }
+                       }
+
+                       var retVal = dijit.popup.open({
+                               parent: this,
+                               popup: dropDown,
+                               around: this._aroundNode,
+                               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;
+                                       self.state = "";
+                               }
+                       });
+                       dojo.attr(this._popupStateNode, "popupActive", "true");
+                       dojo.addClass(self._popupStateNode, "dijitHasDropDownOpen");
+                       this._opened=true;
+                       this.state="Opened";
+                       // TODO: set this.checked and call setStateClass(), to affect button look while drop down is shown
+                       return retVal;
+               },
+
+               closeDropDown: function(/*Boolean*/ focus){
+                       // summary:
+                       //              Closes the drop down on this widget
+                       // tags:
+                       //              protected
+
+                       if(this._opened){
+                               if(focus){ this.focus(); }
+                               dijit.popup.close(this.dropDown);
+                               this._opened = false;
+                               this.state = "";
+                       }
+               }
+
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.form.Button"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.Button"] = true;
+dojo.provide("dijit.form.Button");
+
+
+
+
+
+dojo.declare("dijit.form.Button",
+       dijit.form._FormWidget,
+       {
+       // summary:
+       //              Basically the same thing as a normal HTML button, but with special styling.
+       // description:
+       //              Buttons can display a label, an icon, or both.
+       //              A label should always be specified (through innerHTML) or the label
+       //              attribute.  It can be hidden via showLabel=false.
+       // example:
+       // |    <button dojoType="dijit.form.Button" onClick="...">Hello world</button>
+       //
+       // example:
+       // |    var button1 = new dijit.form.Button({label: "hello world", onClick: foo});
+       // |    dojo.body().appendChild(button1.domNode);
+
+       // label: HTML String
+       //              Text to display in button.
+       //              If the label is hidden (showLabel=false) then and no title has
+       //              been specified, then label is also set as title attribute of icon.
+       label: "",
+
+       // showLabel: Boolean
+       //              Set this to true to hide the label text and display only the icon.
+       //              (If showLabel=false then iconClass must be specified.)
+       //              Especially useful for toolbars.
+       //              If showLabel=true, the label will become the title (a.k.a. tooltip/hint) of the icon.
+       //
+       //              The exception case is for computers in high-contrast mode, where the label
+       //              will still be displayed, since the icon doesn't appear.
+       showLabel: true,
+
+       // iconClass: String
+       //              Class to apply to DOMNode in button to make it display an icon
+       iconClass: "",
+
+       // type: String
+       //              Defines the type of button.  "button", "submit", or "reset".
+       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\twaiRole=\"button\" waiState=\"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\"\n\t\tdojoAttachPoint=\"valueNode\"\n/></span>\n"),
+
+       attributeMap: dojo.delegate(dijit.form._FormWidget.prototype.attributeMap, {
+               value: "valueNode",
+               iconClass: { node: "iconNode", type: "class" }
+       }),
+
+
+       _onClick: function(/*Event*/ e){
+               // summary:
+               //              Internal function to handle click actions
+               if(this.disabled){
+                       return false;
+               }
+               this._clicked(); // widget click actions
+               return this.onClick(e); // user click actions
+       },
+
+       _onButtonClick: function(/*Event*/ e){
+               // summary:
+               //              Handler when the user activates the button portion.
+               if(this._onClick(e) === false){ // returning nothing is same as true
+                       e.preventDefault(); // needed for checkbox
+               }else if(this.type == "submit" && !(this.valueNode||this.focusNode).form){ // see if a nonform widget needs to be signalled
+                       for(var node=this.domNode; node.parentNode/*#5935*/; node=node.parentNode){
+                               var widget=dijit.byNode(node);
+                               if(widget && typeof widget._onSubmit == "function"){
+                                       widget._onSubmit(e);
+                                       break;
+                               }
+                       }
+               }else if(this.valueNode){
+                       this.valueNode.click();
+                       e.preventDefault(); // cancel BUTTON click and continue with hidden INPUT click
+               }
+       },
+
+       _fillContent: function(/*DomNode*/ source){
+               // Overrides _Templated._fillContent().
+               // If button label is specified as srcNodeRef.innerHTML rather than
+               // this.params.label, handle it here.
+               if(source && (!this.params || !("label" in this.params))){
+                       this.set('label', source.innerHTML);
+               }
+       },
+
+       postCreate: function(){
+               dojo.setSelectable(this.focusNode, false);
+               this.inherited(arguments);
+       },
+
+       _setShowLabelAttr: function(val){
+               if(this.containerNode){
+                       dojo.toggleClass(this.containerNode, "dijitDisplayNone", !val);
+               }
+               this.showLabel = val;
+       },
+
+       onClick: function(/*Event*/ e){
+               // summary:
+               //              Callback for when button is clicked.
+               //              If type="submit", return true to perform submit, or false to cancel it.
+               // type:
+               //              callback
+               return true;            // Boolean
+       },
+
+       _clicked: function(/*Event*/ e){
+               // summary:
+               //              Internal overridable function for when the button is clicked
+       },
+
+       setLabel: function(/*String*/ content){
+               // summary:
+               //              Deprecated.  Use set('label', ...) instead.
+               dojo.deprecated("dijit.form.Button.setLabel() is deprecated.  Use set('label', ...) instead.", "", "2.0");
+               this.set("label", content);
+       },
+
+       _setLabelAttr: function(/*String*/ content){
+               // summary:
+               //              Hook for attr('label', ...) to work.
+               // description:
+               //              Set the label (text) of the button; takes an HTML string.
+               this.containerNode.innerHTML = this.label = content;
+               if(this.showLabel == false && !this.params.title){
+                       this.titleNode.title = dojo.trim(this.containerNode.innerText || this.containerNode.textContent || '');
+               }
+       }
+});
+
+
+dojo.declare("dijit.form.DropDownButton", [dijit.form.Button, dijit._Container, dijit._HasDropDown], {
+       // summary:
+       //              A button with a drop down
+       //
+       // example:
+       // |    <button dojoType="dijit.form.DropDownButton" label="Hello world">
+       // |            <div dojotype="dijit.Menu">...</div>
+       // |    </button>
+       //
+       // example:
+       // |    var button1 = new dijit.form.DropDownButton({ label: "hi", dropDown: new dijit.Menu(...) });
+       // |    dojo.body().appendChild(button1);
+       //
+
+       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\twaiRole=\"button\" waiState=\"haspopup-true,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\"\n\t\tdojoAttachPoint=\"valueNode\"\n/></span>\n"),
+
+       _fillContent: function(){
+               // Overrides Button._fillContent().
+               //
+               // My inner HTML contains both the button contents and a drop down widget, like
+               // <DropDownButton>  <span>push me</span>  <Menu> ... </Menu> </DropDownButton>
+               // The first node is assumed to be the button content. The widget is the popup.
+
+               if(this.srcNodeRef){ // programatically created buttons might not define srcNodeRef
+                       //FIXME: figure out how to filter out the widget and use all remaining nodes as button
+                       //      content, not just nodes[0]
+                       var nodes = dojo.query("*", this.srcNodeRef);
+                       dijit.form.DropDownButton.superclass._fillContent.call(this, nodes[0]);
+
+                       // save pointer to srcNode so we can grab the drop down widget after it's instantiated
+                       this.dropDownContainer = this.srcNodeRef;
+               }
+       },
+
+       startup: function(){
+               if(this._started){ return; }
+
+               // the child widget from srcNodeRef is the dropdown widget.  Insert it in the page DOM,
+               // make it invisible, and store a reference to pass to the popup code.
+               if(!this.dropDown){
+                       var dropDownNode = dojo.query("[widgetId]", this.dropDownContainer)[0];
+                       this.dropDown = dijit.byNode(dropDownNode);
+                       delete this.dropDownContainer;
+               }
+               dijit.popup.moveOffScreen(this.dropDown.domNode);
+
+               this.inherited(arguments);
+       },
+
+       isLoaded: function(){
+               // Returns whether or not we are loaded - if our dropdown has an href,
+               // then we want to check that.
+               var dropDown = this.dropDown;
+               return (!dropDown.href || dropDown.isLoaded);
+       },
+
+       loadDropDown: function(){
+               // Loads our dropdown
+               var dropDown = this.dropDown;
+               if(!dropDown){ return; }
+               if(!this.isLoaded()){
+                       var handler = dojo.connect(dropDown, "onLoad", this, function(){
+                               dojo.disconnect(handler);
+                               this.openDropDown();
+                       });
+                       dropDown.refresh();
+               }else{
+                       this.openDropDown();
+               }
+       },
+
+       isFocusable: function(){
+               // Overridden so that focus is handled by the _HasDropDown mixin, not by
+               // the _FormWidget mixin.
+               return this.inherited(arguments) && !this._mouseDown;
+       }
+});
+
+dojo.declare("dijit.form.ComboButton", dijit.form.DropDownButton, {
+       // summary:
+       //              A combination button and drop-down button.
+       //              Users can click one side to "press" the button, or click an arrow
+       //              icon to display the drop down.
+       //
+       // example:
+       // |    <button dojoType="dijit.form.ComboButton" onClick="...">
+       // |            <span>Hello world</span>
+       // |            <div dojoType="dijit.Menu">...</div>
+       // |    </button>
+       //
+       // example:
+       // |    var button1 = new dijit.form.ComboButton({label: "hello world", onClick: foo, dropDown: "myMenu"});
+       // |    dojo.body().appendChild(button1.domNode);
+       //
+
+       templateString: dojo.cache("dijit.form", "templates/ComboButton.html", "<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tcellspacing='0' cellpadding='0' waiRole=\"presentation\"\n\t><tbody waiRole=\"presentation\"><tr waiRole=\"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\twaiRole=\"button\" waiState=\"labelledby-${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" dojoAttachPoint=\"iconNode\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\" waiRole=\"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\twaiRole=\"button\" waiState=\"haspopup-true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" waiRole=\"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: String
+       //              Text that describes the options menu (accessibility)
+       optionsTitle: "",
+
+       baseClass: "dijitComboButton",
+
+       // Set classes like dijitButtonContentsHover or dijitArrowButtonActive depending on
+       // mouse action over specified node
+       cssStateNodes: {
+               "buttonNode": "dijitButtonNode",
+               "titleNode": "dijitButtonContents",
+               "_popupStateNode": "dijitDownArrowButton"
+       },
+
+       _focusedNode: null,
+
+       _onButtonKeyPress: function(/*Event*/ evt){
+               // summary:
+               //              Handler for right arrow key when focus is on left part of button
+               if(evt.charOrCode == dojo.keys[this.isLeftToRight() ? "RIGHT_ARROW" : "LEFT_ARROW"]){
+                       dijit.focus(this._popupStateNode);
+                       dojo.stopEvent(evt);
+               }
+       },
+
+       _onArrowKeyPress: function(/*Event*/ evt){
+               // summary:
+               //              Handler for left arrow key when focus is on right part of button
+               if(evt.charOrCode == dojo.keys[this.isLeftToRight() ? "LEFT_ARROW" : "RIGHT_ARROW"]){
+                       dijit.focus(this.titleNode);
+                       dojo.stopEvent(evt);
+               }
+       },
+       
+       focus: function(/*String*/ position){
+               // summary:
+               //              Focuses this widget to according to position, if specified,
+               //              otherwise on arrow node
+               // position:
+               //              "start" or "end"
+               
+               dijit.focus(position == "start" ? this.titleNode : this._popupStateNode);
+       }
+});
+
+dojo.declare("dijit.form.ToggleButton", dijit.form.Button, {
+       // summary:
+       //              A button that can be in two states (checked or not).
+       //              Can be base class for things like tabs or checkbox or radio buttons
+
+       baseClass: "dijitToggleButton",
+
+       // checked: Boolean
+       //              Corresponds to the native HTML <input> element's attribute.
+       //              In markup, specified as "checked='checked'" or just "checked".
+       //              True if the button is depressed, or the checkbox is checked,
+       //              or the radio button is selected, etc.
+       checked: false,
+
+       attributeMap: dojo.mixin(dojo.clone(dijit.form.Button.prototype.attributeMap), {
+               checked:"focusNode"
+       }),
+
+       _clicked: function(/*Event*/ evt){
+               this.set('checked', !this.checked);
+       },
+
+       _setCheckedAttr: function(/*Boolean*/ value, /* Boolean? */ priorityChange){
+               this.checked = value;
+               dojo.attr(this.focusNode || this.domNode, "checked", value);
+               dijit.setWaiState(this.focusNode || this.domNode, "pressed", value);
+               this._handleOnChange(value, priorityChange);
+       },
+
+       setChecked: function(/*Boolean*/ checked){
+               // summary:
+               //              Deprecated.   Use set('checked', true/false) instead.
+               dojo.deprecated("setChecked("+checked+") is deprecated. Use set('checked',"+checked+") instead.", "", "2.0");
+               this.set('checked', checked);
+       },
+
+       reset: function(){
+               // summary:
+               //              Reset the widget's value to what it was at initialization time
+
+               this._hasBeenBlurred = false;
+
+               // set checked state to original setting
+               this.set('checked', this.params.checked || false);
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit._editor._Plugin"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._editor._Plugin"] = true;
+dojo.provide("dijit._editor._Plugin");
+
+
+
+dojo.declare("dijit._editor._Plugin", null, {
+       // summary
+       //              Base class for a "plugin" to the editor, which is usually
+       //              a single button on the Toolbar and some associated code
+
+       constructor: function(/*Object?*/args, /*DomNode?*/node){
+               this.params = args || {};
+               dojo.mixin(this, this.params);
+               this._connects=[];
+       },
+
+       // editor: [const] dijit.Editor
+       //              Points to the parent editor
+       editor: null,
+
+       // iconClassPrefix: [const] String
+       //              The CSS class name for the button node is formed from `iconClassPrefix` and `command`
+       iconClassPrefix: "dijitEditorIcon",
+
+       // button: dijit._Widget?
+       //              Pointer to `dijit.form.Button` or other widget (ex: `dijit.form.FilteringSelect`)
+       //              that is added to the toolbar to control this plugin.
+       //              If not specified, will be created on initialization according to `buttonClass`
+       button: null,
+
+       // command: String
+       //              String like "insertUnorderedList", "outdent", "justifyCenter", etc. that represents an editor command.
+       //              Passed to editor.execCommand() if `useDefaultCommand` is true.
+       command: "",
+
+       // useDefaultCommand: Boolean
+       //              If true, this plugin executes by calling Editor.execCommand() with the argument specified in `command`.
+       useDefaultCommand: true,
+
+       // buttonClass: Widget Class
+       //              Class of widget (ex: dijit.form.Button or dijit.form.FilteringSelect)
+       //              that is added to the toolbar to control this plugin.
+       //              This is used to instantiate the button, unless `button` itself is specified directly.
+       buttonClass: dijit.form.Button,
+
+       getLabel: function(/*String*/key){
+               // summary:
+               //              Returns the label to use for the button
+               // tags:
+               //              private
+               return this.editor.commands[key];               // String
+       },
+
+       _initButton: function(){
+               // summary:
+               //              Initialize the button or other widget that will control this plugin.
+               //              This code only works for plugins controlling built-in commands in the editor.
+               // tags:
+               //              protected extension
+               if(this.command.length){
+                       var label = this.getLabel(this.command),
+                               editor = this.editor,
+                               className = this.iconClassPrefix+" "+this.iconClassPrefix + this.command.charAt(0).toUpperCase() + this.command.substr(1);
+                       if(!this.button){
+                               var props = dojo.mixin({
+                                       label: label,
+                                       dir: editor.dir,
+                                       lang: editor.lang,
+                                       showLabel: false,
+                                       iconClass: className,
+                                       dropDown: this.dropDown,
+                                       tabIndex: "-1"
+                               }, this.params || {});
+                               this.button = new this.buttonClass(props);
+                       }
+               }
+       },
+
+       destroy: function(){
+               // summary:
+               //              Destroy this plugin
+
+               dojo.forEach(this._connects, dojo.disconnect);
+               if(this.dropDown){
+                       this.dropDown.destroyRecursive();
+               }
+       },
+
+       connect: function(o, f, tf){
+               // summary:
+               //              Make a dojo.connect() that is automatically disconnected when this plugin is destroyed.
+               //              Similar to `dijit._Widget.connect`.
+               // tags:
+               //              protected
+               this._connects.push(dojo.connect(o, f, this, tf));
+       },
+
+       updateState: function(){
+               // summary:
+               //              Change state of the plugin to respond to events in the editor.
+               // description:
+               //              This is called on meaningful events in the editor, such as change of selection
+               //              or caret position (but not simple typing of alphanumeric keys).   It gives the
+               //              plugin a chance to update the CSS of its button.
+               //
+               //              For example, the "bold" plugin will highlight/unhighlight the bold button depending on whether the
+               //              characters next to the caret are bold or not.
+               //
+               //              Only makes sense when `useDefaultCommand` is true, as it calls Editor.queryCommandEnabled(`command`).
+               var e = this.editor,
+                       c = this.command,
+                       checked, enabled;
+               if(!e || !e.isLoaded || !c.length){ return; }
+               if(this.button){
+                       try{
+                               enabled = e.queryCommandEnabled(c);
+                               if(this.enabled !== enabled){
+                                       this.enabled = enabled;
+                                       this.button.set('disabled', !enabled);
+                               }
+                               if(typeof this.button.checked == 'boolean'){
+                                       checked = e.queryCommandState(c);
+                                       if(this.checked !== checked){
+                                               this.checked = checked;
+                                               this.button.set('checked', e.queryCommandState(c));
+                                       }
+                               }
+                       }catch(e){
+                               console.log(e); // FIXME: we shouldn't have debug statements in our code.  Log as an error?
+                       }
+               }
+       },
+
+       setEditor: function(/*dijit.Editor*/ editor){
+               // summary:
+               //              Tell the plugin which Editor it is associated with.
+
+               // TODO: refactor code to just pass editor to constructor.
+
+               // FIXME: detach from previous editor!!
+               this.editor = editor;
+
+               // FIXME: prevent creating this if we don't need to (i.e., editor can't handle our command)
+               this._initButton();
+
+               // Processing for buttons that execute by calling editor.execCommand()
+               if(this.button && this.useDefaultCommand){
+                       if(this.editor.queryCommandAvailable(this.command)){
+                               this.connect(this.button, "onClick",
+                                       dojo.hitch(this.editor, "execCommand", this.command, this.commandArg)
+                               );
+                       }else{
+                               // hide button because editor doesn't support command (due to browser limitations)
+                               this.button.domNode.style.display = "none";                     
+                       }
+               }
+
+               this.connect(this.editor, "onNormalizedDisplayChanged", "updateState");
+       },
+
+       setToolbar: function(/*dijit.Toolbar*/ toolbar){
+               // summary:
+               //              Tell the plugin to add it's controller widget (often a button)
+               //              to the toolbar.  Does nothing if there is no controller widget.
+
+               // TODO: refactor code to just pass toolbar to constructor.
+
+               if(this.button){
+                       toolbar.addChild(this.button);
+               }
+               // console.debug("adding", this.button, "to:", toolbar);
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit._editor.plugins.EnterKeyHandling"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._editor.plugins.EnterKeyHandling"] = true;
+dojo.provide("dijit._editor.plugins.EnterKeyHandling");
+
+
+
+dojo.declare("dijit._editor.plugins.EnterKeyHandling", dijit._editor._Plugin, {
+       // summary:
+       //              This plugin tries to make all browsers behave consistently w.r.t
+       //              displaying paragraphs, specifically dealing with when the user presses
+       //              the ENTER key.
+       //
+       //              It deals mainly with how the text appears on the screen (specifically
+       //              address the double-spaced line problem on IE), but also has some code
+       //              to normalize what attr('value') returns.
+       //
+       // description:
+       //              This plugin has three modes:
+       //
+       //                      * blockModeForEnter=BR
+       //                      * blockModeForEnter=DIV
+       //                      * blockModeForEnter=P
+       //
+       //              In blockModeForEnter=P, the ENTER key semantically means "start a new
+       //              paragraph", whereas shift-ENTER means  "new line in the current paragraph".
+       //              For example:
+       //
+       //              |       first paragraph <shift-ENTER>
+       //              |       second line of first paragraph <ENTER>
+       //              |
+       //              |       second paragraph
+       //
+       //              In the other two modes, the ENTER key means to go to a new line in the
+       //              current paragraph, and users [visually] create a new paragraph by pressing ENTER twice.
+       //              For example, if the user enters text into an editor like this:
+       //
+       //              |               one <ENTER>
+       //              |               two <ENTER>
+       //              |               three <ENTER>
+       //              |               <ENTER>
+       //              |               four <ENTER>
+       //              |               five <ENTER>
+       //              |               six <ENTER>
+       //
+       //              It will appear on the screen as two paragraphs of three lines each.
+       //
+       //              blockNodeForEnter=BR
+       //              --------------------
+       //              On IE, typing the above keystrokes in the editor will internally produce DOM of:
+       //
+       //              |               <p>one</p>
+       //              |               <p>two</p>
+       //              |               <p>three</p>
+       //              |               <p></p>
+       //              |               <p>four</p>
+       //              |               <p>five</p>
+       //              |               <p>six</p>
+       //
+       //              However, blockNodeForEnter=BR makes the Editor on IE display like other browsers, by
+       //              changing the CSS for the <p> node to not have top/bottom margins,
+       //              thus eliminating the double-spaced appearance.
+       //
+       //              Also, attr('value') when used w/blockNodeForEnter=br on IE will return:
+       //
+       //              |       <p> one <br> two <br> three </p>
+       //              |       <p> four <br> five <br> six </p>
+       //
+       //              This output normalization implemented by a filter when the
+       //              editor writes out it's data, to convert consecutive <p>
+       //              nodes into a single <p> node with internal <br> separators.
+       //
+       //              There's also a pre-filter to mirror the post-filter.
+       //              It converts a single <p> with <br> line breaks
+       //              into separate <p> nodes, and creates empty <p> nodes for spacing
+       //              between paragraphs.
+       //
+       //              On FF typing the above keystrokes will internally generate:
+       //
+       //              |               one <br> two <br> three <br> <br> four <br> five <br> six <br>
+       //
+       //              And on Safari it will generate:
+       //
+       //              |               "one"
+       //              |               <div>two</div>
+       //              |               <div>three</div>
+       //              |               <div><br></div>
+       //              |               <div>four</div>
+       //              |               <div>five</div>
+       //              |               <div>six</div>
+       //
+       //              Thus, Safari and FF already look correct although semantically their content is a bit strange.
+       //              On Safari or Firefox blockNodeForEnter=BR uses the builtin editor command "insertBrOnReturn",
+       //              but that doesn't seem to do anything.
+       //              Thus, attr('value') on safari/FF returns the browser-specific HTML listed above,
+       //              rather than the semantically meaningful value that IE returns: <p>one<br>two</p> <p>three<br>four</p>.
+       //
+       //              (Note: originally based on http://bugs.dojotoolkit.org/ticket/2859)
+       //
+       //              blockNodeForEnter=P
+       //              -------------------
+       //              Plugin will monitor keystrokes and update the editor's content on the fly,
+       //              so that the ENTER key will create a new <p> on FF and Safari (it already
+       //              works that way by default on IE).
+       //
+       //              blockNodeForEnter=DIV
+       //              ---------------------
+       //              Follows the same code path as blockNodeForEnter=P but inserting a <div>
+       //              on ENTER key.  Although it produces strange internal DOM, like this:
+       //
+       //              |       <div>paragraph one</div>
+       //              |       <div>paragraph one, line 2</div>
+       //              |       <div>&nbsp;</div>
+       //              |       <div>paragraph two</div>
+       //
+       //              it does provide a consistent look on all browsers, and the on-the-fly DOM updating
+       //              can be useful for collaborative editing.
+
+       // blockNodeForEnter: String
+       //              This property decides the behavior of Enter key. It can be either P,
+       //              DIV, BR, or empty (which means disable this feature). Anything else
+       //              will trigger errors.
+       //
+       //              See class description for more details.
+       blockNodeForEnter: 'BR',
+
+       constructor: function(args){
+               if(args){
+                       dojo.mixin(this,args);
+               }
+       },
+
+       setEditor: function(editor){
+               // Overrides _Plugin.setEditor().
+               this.editor = editor;
+               if(this.blockNodeForEnter == 'BR'){
+                       if(dojo.isIE){
+                               editor.contentDomPreFilters.push(dojo.hitch(this, "regularPsToSingleLinePs"));
+                               editor.contentDomPostFilters.push(dojo.hitch(this, "singleLinePsToRegularPs"));
+                               editor.onLoadDeferred.addCallback(dojo.hitch(this, "_fixNewLineBehaviorForIE"));
+                       }else{
+                               editor.onLoadDeferred.addCallback(dojo.hitch(this,function(d){
+                                       try{
+                                               this.editor.document.execCommand("insertBrOnReturn", false, true);
+                                       }catch(e){}
+                                       return d;
+                               }));
+                       }
+               }else if(this.blockNodeForEnter){
+                       // add enter key handler
+                       // FIXME: need to port to the new event code!!
+                       dojo['require']('dijit._editor.range');
+                       var h = dojo.hitch(this,this.handleEnterKey);
+                       editor.addKeyHandler(13, 0, 0, h); //enter
+                       editor.addKeyHandler(13, 0, 1, h); //shift+enter
+                       this.connect(this.editor,'onKeyPressed','onKeyPressed');
+               }
+       },
+       onKeyPressed: function(e){
+               // summary:
+               //              Handler for keypress events.
+               // tags:
+               //              private
+               if(this._checkListLater){
+                       if(dojo.withGlobal(this.editor.window, 'isCollapsed', dijit)){
+                               var liparent=dojo.withGlobal(this.editor.window, 'getAncestorElement', dijit._editor.selection, ['LI']);
+                               if(!liparent){
+                                       // circulate the undo detection code by calling RichText::execCommand directly
+                                       dijit._editor.RichText.prototype.execCommand.call(this.editor, 'formatblock',this.blockNodeForEnter);
+                                       // set the innerHTML of the new block node
+                                       var block = dojo.withGlobal(this.editor.window, 'getAncestorElement', dijit._editor.selection, [this.blockNodeForEnter]);
+                                       if(block){
+                                               block.innerHTML=this.bogusHtmlContent;
+                                               if(dojo.isIE){
+                                                       // move to the start by moving backwards one char
+                                                       var r = this.editor.document.selection.createRange();
+                                                       r.move('character',-1);
+                                                       r.select();
+                                               }
+                                       }else{
+                                               console.error('onKeyPressed: Cannot find the new block node'); // FIXME
+                                       }
+                               }else{
+                                       if(dojo.isMoz){
+                                               if(liparent.parentNode.parentNode.nodeName == 'LI'){
+                                                       liparent=liparent.parentNode.parentNode;
+                                               }
+                                       }
+                                       var fc=liparent.firstChild;
+                                       if(fc && fc.nodeType == 1 && (fc.nodeName == 'UL' || fc.nodeName == 'OL')){
+                                               liparent.insertBefore(fc.ownerDocument.createTextNode('\xA0'),fc);
+                                               var newrange = dijit.range.create(this.editor.window);
+                                               newrange.setStart(liparent.firstChild,0);
+                                               var selection = dijit.range.getSelection(this.editor.window, true);
+                                               selection.removeAllRanges();
+                                               selection.addRange(newrange);
+                                       }
+                               }
+                       }
+                       this._checkListLater = false;
+               }
+               if(this._pressedEnterInBlock){
+                       // the new created is the original current P, so we have previousSibling below
+                       if(this._pressedEnterInBlock.previousSibling){
+                               this.removeTrailingBr(this._pressedEnterInBlock.previousSibling);
+                       }
+                       delete this._pressedEnterInBlock;
+               }
+       },
+
+       // bogusHtmlContent: [private] String
+       //              HTML to stick into a new empty block
+       bogusHtmlContent: '&nbsp;',
+
+       // blockNodes: [private] Regex
+       //              Regex for testing if a given tag is a block level (display:block) tag
+       blockNodes: /^(?:P|H1|H2|H3|H4|H5|H6|LI)$/,
+
+       handleEnterKey: function(e){
+               // summary:
+               //              Handler for enter key events when blockModeForEnter is DIV or P.
+               // description:
+               //              Manually handle enter key event to make the behavior consistent across
+               //              all supported browsers. See class description for details.
+               // tags:
+               //              private
+
+               var selection, range, newrange, doc=this.editor.document,br;
+               if(e.shiftKey){         // shift+enter always generates <br>
+                       var parent = dojo.withGlobal(this.editor.window, "getParentElement", dijit._editor.selection);
+                       var header = dijit.range.getAncestor(parent,this.blockNodes);
+                       if(header){
+                               if(!e.shiftKey && header.tagName == 'LI'){
+                                       return true; // let browser handle
+                               }
+                               selection = dijit.range.getSelection(this.editor.window);
+                               range = selection.getRangeAt(0);
+                               if(!range.collapsed){
+                                       range.deleteContents();
+                                       selection = dijit.range.getSelection(this.editor.window);
+                                       range = selection.getRangeAt(0);
+                               }
+                               if(dijit.range.atBeginningOfContainer(header, range.startContainer, range.startOffset)){
+                                       if(e.shiftKey){
+                                               br=doc.createElement('br');
+                                               newrange = dijit.range.create(this.editor.window);
+                                               header.insertBefore(br,header.firstChild);
+                                               newrange.setStartBefore(br.nextSibling);
+                                               selection.removeAllRanges();
+                                               selection.addRange(newrange);
+                                       }else{
+                                               dojo.place(br, header, "before");
+                                       }
+                               }else if(dijit.range.atEndOfContainer(header, range.startContainer, range.startOffset)){
+                                       newrange = dijit.range.create(this.editor.window);
+                                       br=doc.createElement('br');
+                                       if(e.shiftKey){
+                                               header.appendChild(br);
+                                               header.appendChild(doc.createTextNode('\xA0'));
+                                               newrange.setStart(header.lastChild,0);
+                                       }else{
+                                               dojo.place(br, header, "after");
+                                               newrange.setStartAfter(header);
+                                       }
+
+                                       selection.removeAllRanges();
+                                       selection.addRange(newrange);
+                               }else{
+                                       return true; // let browser handle
+                               }
+                       }else{
+                               // don't change this: do not call this.execCommand, as that may have other logic in subclass
+                               dijit._editor.RichText.prototype.execCommand.call(this.editor, 'inserthtml', '<br>');
+                       }
+                       return false;
+               }
+               var _letBrowserHandle = true;
+
+               // first remove selection
+               selection = dijit.range.getSelection(this.editor.window);
+               range = selection.getRangeAt(0);
+               if(!range.collapsed){
+                       range.deleteContents();
+                       selection = dijit.range.getSelection(this.editor.window);
+                       range = selection.getRangeAt(0);
+               }
+
+               var block = dijit.range.getBlockAncestor(range.endContainer, null, this.editor.editNode);
+               var blockNode = block.blockNode;
+
+               // if this is under a LI or the parent of the blockNode is LI, just let browser to handle it
+               if((this._checkListLater = (blockNode && (blockNode.nodeName == 'LI' || blockNode.parentNode.nodeName == 'LI')))){
+                       if(dojo.isMoz){
+                               // press enter in middle of P may leave a trailing <br/>, let's remove it later
+                               this._pressedEnterInBlock = blockNode;
+                       }
+                       // if this li only contains spaces, set the content to empty so the browser will outdent this item
+                       if(/^(\s|&nbsp;|\xA0|<span\b[^>]*\bclass=['"]Apple-style-span['"][^>]*>(\s|&nbsp;|\xA0)<\/span>)?(<br>)?$/.test(blockNode.innerHTML)){
+                               // empty LI node
+                               blockNode.innerHTML = '';
+                               if(dojo.isWebKit){ // WebKit tosses the range when innerHTML is reset
+                                       newrange = dijit.range.create(this.editor.window);
+                                       newrange.setStart(blockNode, 0);
+                                       selection.removeAllRanges();
+                                       selection.addRange(newrange);
+                               }
+                               this._checkListLater = false; // nothing to check since the browser handles outdent
+                       }
+                       return true;
+               }
+
+               // text node directly under body, let's wrap them in a node
+               if(!block.blockNode || block.blockNode===this.editor.editNode){
+                       try{
+                               dijit._editor.RichText.prototype.execCommand.call(this.editor, 'formatblock',this.blockNodeForEnter);
+                       }catch(e2){ /*squelch FF3 exception bug when editor content is a single BR*/ }
+                       // get the newly created block node
+                       // FIXME
+                       block = {blockNode:dojo.withGlobal(this.editor.window, "getAncestorElement", dijit._editor.selection, [this.blockNodeForEnter]),
+                                       blockContainer: this.editor.editNode};
+                       if(block.blockNode){
+                               if(block.blockNode != this.editor.editNode &&
+                                       (!(block.blockNode.textContent || block.blockNode.innerHTML).replace(/^\s+|\s+$/g, "").length)){
+                                       this.removeTrailingBr(block.blockNode);
+                                       return false;
+                               }
+                       }else{  // we shouldn't be here if formatblock worked
+                               block.blockNode = this.editor.editNode;
+                       }
+                       selection = dijit.range.getSelection(this.editor.window);
+                       range = selection.getRangeAt(0);
+               }
+
+               var newblock = doc.createElement(this.blockNodeForEnter);
+               newblock.innerHTML=this.bogusHtmlContent;
+               this.removeTrailingBr(block.blockNode);
+               if(dijit.range.atEndOfContainer(block.blockNode, range.endContainer, range.endOffset)){
+                       if(block.blockNode === block.blockContainer){
+                               block.blockNode.appendChild(newblock);
+                       }else{
+                               dojo.place(newblock, block.blockNode, "after");
+                       }
+                       _letBrowserHandle = false;
+                       // lets move caret to the newly created block
+                       newrange = dijit.range.create(this.editor.window);
+                       newrange.setStart(newblock, 0);
+                       selection.removeAllRanges();
+                       selection.addRange(newrange);
+                       if(this.editor.height){
+                               dojo.window.scrollIntoView(newblock);
+                       }
+               }else if(dijit.range.atBeginningOfContainer(block.blockNode,
+                               range.startContainer, range.startOffset)){
+                       dojo.place(newblock, block.blockNode, block.blockNode === block.blockContainer ? "first" : "before");
+                       if(newblock.nextSibling && this.editor.height){
+                               // position input caret - mostly WebKit needs this
+                               newrange = dijit.range.create(this.editor.window);
+                               newrange.setStart(newblock.nextSibling, 0);
+                               selection.removeAllRanges();
+                               selection.addRange(newrange);
+                               // browser does not scroll the caret position into view, do it manually
+                               dojo.window.scrollIntoView(newblock.nextSibling);
+                       }
+                       _letBrowserHandle = false;
+               }else{ //press enter in the middle of P/DIV/Whatever/
+                       if(block.blockNode === block.blockContainer){
+                               block.blockNode.appendChild(newblock);
+                       }else{
+                               dojo.place(newblock, block.blockNode, "after");
+                       }
+                       _letBrowserHandle = false;
+
+                       // Clone any block level styles.
+                       if(block.blockNode.style){
+                               if(newblock.style){
+                                       if(block.blockNode.style.cssText){
+                                               newblock.style.cssText = block.blockNode.style.cssText;
+                                       }
+                               }
+                       }
+                       
+                       // Okay, we probably have to split.
+                       var rs = range.startContainer;
+                       if(rs && rs.nodeType == 3){
+                               // Text node, we have to split it.
+                               var nodeToMove, tNode;
+                               var txt = rs.nodeValue;
+                               var startNode = doc.createTextNode(txt.substring(0, range.startOffset));
+                               var endNode = doc.createTextNode(txt.substring(range.startOffset, txt.length));
+
+                               // Place the split, then remove original nodes.
+                               dojo.place(startNode, rs, "before");
+                               dojo.place(endNode, rs, "after");
+                               dojo.destroy(rs);
+
+                               // Okay, we split the text.  Now we need to see if we're
+                               // parented to the block element we're splitting and if
+                               // not, we have to split all the way up.  Ugh.
+                               var parentC = startNode.parentNode;
+                               while(parentC !== block.blockNode){
+                                       var tg = parentC.tagName;
+                                       var newTg = doc.createElement(tg);
+                                       // Clone over any 'style' data. 
+                                       if(parentC.style){
+                                               if(newTg.style){
+                                                       if(parentC.style.cssText){
+                                                               newTg.style.cssText = parentC.style.cssText;
+                                                       }
+                                               }
+                                       }
+
+                                       nodeToMove = endNode;
+                                       while(nodeToMove){
+                                               tNode = nodeToMove.nextSibling;
+                                               newTg.appendChild(nodeToMove);
+                                               nodeToMove = tNode;
+                                       }
+                                       dojo.place(newTg, parentC, "after");
+                                       startNode = parentC;
+                                       endNode = newTg;
+                                       parentC = parentC.parentNode;
+                               }
+
+                               // Lastly, move the split out tags to the new block.
+                               // as they should now be split properly.
+                               nodeToMove = endNode;
+                               if(nodeToMove.nodeType == 1 || (nodeToMove.nodeType == 3 && nodeToMove.nodeValue)){
+                                       // Non-blank text and non-text nodes need to clear out that blank space
+                                       // before moving the contents.
+                                       newblock.innerHTML = "";
+                               }
+                               while(nodeToMove){
+                                       tNode = nodeToMove.nextSibling;
+                                       newblock.appendChild(nodeToMove);
+                                       nodeToMove = tNode;
+                               }
+                       }
+                       
+                       //lets move caret to the newly created block
+                       newrange = dijit.range.create(this.editor.window);
+                       newrange.setStart(newblock, 0);
+                       selection.removeAllRanges();
+                       selection.addRange(newrange);
+                       if(this.editor.height){
+                               dijit.scrollIntoView(newblock);
+                       }
+                       if(dojo.isMoz){
+                               // press enter in middle of P may leave a trailing <br/>, let's remove it later
+                               this._pressedEnterInBlock = block.blockNode;
+                       }
+               }
+               return _letBrowserHandle;
+       },
+
+       removeTrailingBr: function(container){
+               // summary:
+               //              If last child of container is a <br>, then remove it.
+               // tags:
+               //              private
+               var para = /P|DIV|LI/i.test(container.tagName) ?
+                       container : dijit._editor.selection.getParentOfType(container,['P','DIV','LI']);
+
+               if(!para){ return; }
+               if(para.lastChild){
+                       if((para.childNodes.length > 1 && para.lastChild.nodeType == 3 && /^[\s\xAD]*$/.test(para.lastChild.nodeValue)) ||
+                               para.lastChild.tagName=='BR'){
+
+                               dojo.destroy(para.lastChild);
+                       }
+               }
+               if(!para.childNodes.length){
+                       para.innerHTML=this.bogusHtmlContent;
+               }
+       },
+       _fixNewLineBehaviorForIE: function(d){
+               // summary:
+               //              Insert CSS so <p> nodes don't have spacing around them,
+               //              thus hiding the fact that ENTER key on IE is creating new
+               //              paragraphs
+
+               // cannot use !important since there may be custom user styling;
+               var doc = this.editor.document;
+               if(doc.__INSERTED_EDITIOR_NEWLINE_CSS === undefined){
+                       var style = dojo.create("style", {type: "text/css"}, doc.getElementsByTagName("head")[0]);
+                       style.styleSheet.cssText = "p{margin:0;}"; // cannot use !important since there may be custom user styling;
+                       this.editor.document.__INSERTED_EDITIOR_NEWLINE_CSS = true;
+               }
+               return d;
+       },
+       regularPsToSingleLinePs: function(element, noWhiteSpaceInEmptyP){
+               // summary:
+               //              Converts a <p> node containing <br>'s into multiple <p> nodes.
+               // description:
+               //              See singleLinePsToRegularPs().   This method does the
+               //              opposite thing, and is used as a pre-filter when loading the
+               //              editor, to mirror the effects of the post-filter at end of edit.
+               // tags:
+               //              private
+               function wrapLinesInPs(el){
+                 // move "lines" of top-level text nodes into ps
+                       function wrapNodes(nodes){
+                               // nodes are assumed to all be siblings
+                               var newP = nodes[0].ownerDocument.createElement('p'); // FIXME: not very idiomatic
+                               nodes[0].parentNode.insertBefore(newP, nodes[0]);
+                               dojo.forEach(nodes, function(node){
+                                       newP.appendChild(node);
+                               });
+                       }
+
+                       var currentNodeIndex = 0;
+                       var nodesInLine = [];
+                       var currentNode;
+                       while(currentNodeIndex < el.childNodes.length){
+                               currentNode = el.childNodes[currentNodeIndex];
+                               if( currentNode.nodeType==3 ||  // text node
+                                       (currentNode.nodeType==1 && currentNode.nodeName!='BR' && dojo.style(currentNode, "display")!="block")
+                               ){
+                                       nodesInLine.push(currentNode);
+                               }else{
+                                       // hit line delimiter; process nodesInLine if there are any
+                                       var nextCurrentNode = currentNode.nextSibling;
+                                       if(nodesInLine.length){
+                                               wrapNodes(nodesInLine);
+                                               currentNodeIndex = (currentNodeIndex+1)-nodesInLine.length;
+                                               if(currentNode.nodeName=="BR"){
+                                                       dojo.destroy(currentNode);
+                                               }
+                                       }
+                                       nodesInLine = [];
+                               }
+                               currentNodeIndex++;
+                       }
+                       if(nodesInLine.length){ wrapNodes(nodesInLine); }
+               }
+
+               function splitP(el){
+                       // split a paragraph into seperate paragraphs at BRs
+                       var currentNode = null;
+                       var trailingNodes = [];
+                       var lastNodeIndex = el.childNodes.length-1;
+                       for(var i=lastNodeIndex; i>=0; i--){
+                               currentNode = el.childNodes[i];
+                               if(currentNode.nodeName=="BR"){
+                                       var newP = currentNode.ownerDocument.createElement('p');
+                                       dojo.place(newP, el, "after");
+                                       if(trailingNodes.length==0 && i != lastNodeIndex){
+                                               newP.innerHTML = "&nbsp;"
+                                       }
+                                       dojo.forEach(trailingNodes, function(node){
+                                               newP.appendChild(node);
+                                       });
+                                       dojo.destroy(currentNode);
+                                       trailingNodes = [];
+                               }else{
+                                       trailingNodes.unshift(currentNode);
+                               }
+                       }
+               }
+
+               var pList = [];
+               var ps = element.getElementsByTagName('p');
+               dojo.forEach(ps, function(p){ pList.push(p); });
+               dojo.forEach(pList, function(p){
+                       var prevSib = p.previousSibling;
+                       if(     (prevSib) && (prevSib.nodeType == 1) && 
+                               (prevSib.nodeName == 'P' || dojo.style(prevSib, 'display') != 'block')
+                       ){
+                               var newP = p.parentNode.insertBefore(this.document.createElement('p'), p);
+                               // this is essential to prevent IE from losing the P.
+                               // if it's going to be innerHTML'd later we need
+                               // to add the &nbsp; to _really_ force the issue
+                               newP.innerHTML = noWhiteSpaceInEmptyP ? "" : "&nbsp;";
+                       }
+                       splitP(p);
+               },this.editor);
+               wrapLinesInPs(element);
+               return element;
+       },
+
+       singleLinePsToRegularPs: function(element){
+               // summary:
+               //              Called as post-filter.
+               //              Apparently collapses adjacent <p> nodes into a single <p>
+               //              nodes with <br> separating each line.
+               //
+               // example:
+               //              Given this input:
+               //      |       <p>line 1</p>
+               //      |       <p>line 2</p>
+               //      |       <ol>
+               //      |               <li>item 1
+               //      |               <li>item 2
+               //      |       </ol>
+               //      |       <p>line 3</p>
+               //      |       <p>line 4</p>
+               //
+               //              Will convert to:
+               //      |       <p>line 1<br>line 2</p>
+               //      |       <ol>
+               //      |               <li>item 1
+               //      |               <li>item 2
+               //      |       </ol>
+               //      |       <p>line 3<br>line 4</p>
+               //
+               //              Not sure why this situation would even come up after the pre-filter and
+               //              the enter-key-handling code.
+               //
+               // tags:
+               //              private
+
+               function getParagraphParents(node){
+                       // summary:
+                       //              Used to get list of all nodes that contain paragraphs.
+                       //              Seems like that would just be the very top node itself, but apparently not.
+                       var ps = node.getElementsByTagName('p');
+                       var parents = [];
+                       for(var i=0; i<ps.length; i++){
+                               var p = ps[i];
+                               var knownParent = false;
+                               for(var k=0; k < parents.length; k++){
+                                       if(parents[k] === p.parentNode){
+                                               knownParent = true;
+                                               break;
+                                       }
+                               }
+                               if(!knownParent){
+                                       parents.push(p.parentNode);
+                               }
+                       }
+                       return parents;
+               }
+
+               function isParagraphDelimiter(node){
+                       return (!node.childNodes.length || node.innerHTML=="&nbsp;");
+               }
+
+               var paragraphContainers = getParagraphParents(element);
+               for(var i=0; i<paragraphContainers.length; i++){
+                       var container = paragraphContainers[i];
+                       var firstPInBlock = null;
+                       var node = container.firstChild;
+                       var deleteNode = null;
+                       while(node){
+                               if(node.nodeType != 1 || node.tagName != 'P' ||
+                                               (node.getAttributeNode('style') || {/*no style*/}).specified){
+                                       firstPInBlock = null;
+                               }else if(isParagraphDelimiter(node)){
+                                       deleteNode = node;
+                                       firstPInBlock = null;
+                               }else{
+                                       if(firstPInBlock == null){
+                                               firstPInBlock = node;
+                                       }else{
+                                               if( (!firstPInBlock.lastChild || firstPInBlock.lastChild.nodeName != 'BR') &&
+                                                       (node.firstChild) &&
+                                                       (node.firstChild.nodeName != 'BR')
+                                               ){
+                                                       firstPInBlock.appendChild(this.editor.document.createElement('br'));
+                                               }
+                                               while(node.firstChild){
+                                                       firstPInBlock.appendChild(node.firstChild);
+                                               }
+                                               deleteNode = node;
+                                       }
+                               }
+                               node = node.nextSibling;
+                               if(deleteNode){
+                                       dojo.destroy(deleteNode);
+                                       deleteNode = null;
+                               }
+                       }
+               }
+               return element;
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.Editor"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.Editor"] = true;
+dojo.provide("dijit.Editor");
+
+
+
+
+
+
+
+
+
+
+
+
+
+dojo.declare(
+       "dijit.Editor",
+       dijit._editor.RichText,
+       {
+               // summary:
+               //              A rich text Editing widget
+               //
+               // description:
+               //              This widget provides basic WYSIWYG editing features, based on the browser's
+               //              underlying rich text editing capability, accompanied by a toolbar (`dijit.Toolbar`).
+               //              A plugin model is available to extend the editor's capabilities as well as the
+               //              the options available in the toolbar.  Content generation may vary across
+               //              browsers, and clipboard operations may have different results, to name
+               //              a few limitations.  Note: this widget should not be used with the HTML
+               //              &lt;TEXTAREA&gt; tag -- see dijit._editor.RichText for details.
+
+               // plugins: Object[]
+               //              A list of plugin names (as strings) or instances (as objects)
+               //              for this widget.
+               //
+               //              When declared in markup, it might look like:
+               //      |       plugins="['bold',{name:'dijit._editor.plugins.FontChoice', command:'fontName', generic:true}]"
+               plugins: null,
+
+               // extraPlugins: Object[]
+               //              A list of extra plugin names which will be appended to plugins array
+               extraPlugins: null,
+
+               constructor: function(){
+                       // summary:
+                       //              Runs on widget initialization to setup arrays etc.
+                       // tags:
+                       //              private
+
+                       if(!dojo.isArray(this.plugins)){
+                               this.plugins=["undo","redo","|","cut","copy","paste","|","bold","italic","underline","strikethrough","|",
+                               "insertOrderedList","insertUnorderedList","indent","outdent","|","justifyLeft","justifyRight","justifyCenter","justifyFull",
+                               "dijit._editor.plugins.EnterKeyHandling" /*, "createLink"*/];
+                       }
+
+                       this._plugins=[];
+                       this._editInterval = this.editActionInterval * 1000;
+
+                       //IE will always lose focus when other element gets focus, while for FF and safari,
+                       //when no iframe is used, focus will be lost whenever another element gets focus.
+                       //For IE, we can connect to onBeforeDeactivate, which will be called right before
+                       //the focus is lost, so we can obtain the selected range. For other browsers,
+                       //no equivelent of onBeforeDeactivate, so we need to do two things to make sure
+                       //selection is properly saved before focus is lost: 1) when user clicks another
+                       //element in the page, in which case we listen to mousedown on the entire page and
+                       //see whether user clicks out of a focus editor, if so, save selection (focus will
+                       //only lost after onmousedown event is fired, so we can obtain correct caret pos.)
+                       //2) when user tabs away from the editor, which is handled in onKeyDown below.
+                       if(dojo.isIE){
+                               this.events.push("onBeforeDeactivate");
+                               this.events.push("onBeforeActivate");
+                       }
+               },
+
+               postCreate: function(){
+                       //for custom undo/redo, if enabled.
+                       this._steps=this._steps.slice(0);
+                       this._undoedSteps=this._undoedSteps.slice(0);
+
+                       if(dojo.isArray(this.extraPlugins)){
+                               this.plugins=this.plugins.concat(this.extraPlugins);
+                       }
+
+                       // Set up a deferred so that the value isn't applied to the editor 
+                       // until all the plugins load, needed to avoid timing condition
+                       // reported in #10537.
+                       this.setValueDeferred = new dojo.Deferred();
+
+                       this.inherited(arguments);
+
+                       this.commands = dojo.i18n.getLocalization("dijit._editor", "commands", this.lang);
+
+                       if(!this.toolbar){
+                               // if we haven't been assigned a toolbar, create one
+                               this.toolbar = new dijit.Toolbar({
+                                       dir: this.dir,
+                                       lang: this.lang
+                               });
+                               this.header.appendChild(this.toolbar.domNode);
+                       }
+
+                       dojo.forEach(this.plugins, this.addPlugin, this);
+
+                       // Okay, denote the value can now be set.
+                       this.setValueDeferred.callback(true);
+
+                       dojo.addClass(this.iframe.parentNode, "dijitEditorIFrameContainer");
+                       dojo.addClass(this.iframe, "dijitEditorIFrame");
+                       dojo.attr(this.iframe, "allowTransparency", true);
+
+                       if(dojo.isWebKit){
+                               // Disable selecting the entire editor by inadvertant double-clicks.
+                               // on buttons, title bar, etc.  Otherwise clicking too fast on
+                               // a button such as undo/redo selects the entire editor.
+                               dojo.style(this.domNode, "KhtmlUserSelect", "none");
+                       }
+                       this.toolbar.startup();
+                       this.onNormalizedDisplayChanged(); //update toolbar button status
+               },
+               destroy: function(){
+                       dojo.forEach(this._plugins, function(p){
+                               if(p && p.destroy){
+                                       p.destroy();
+                               }
+                       });
+                       this._plugins=[];
+                       this.toolbar.destroyRecursive();
+                       delete this.toolbar;
+                       this.inherited(arguments);
+               },
+               addPlugin: function(/*String||Object*/plugin, /*Integer?*/index){
+                       // summary:
+                       //              takes a plugin name as a string or a plugin instance and
+                       //              adds it to the toolbar and associates it with this editor
+                       //              instance. The resulting plugin is added to the Editor's
+                       //              plugins array. If index is passed, it's placed in the plugins
+                       //              array at that index. No big magic, but a nice helper for
+                       //              passing in plugin names via markup.
+                       //
+                       // plugin: String, args object or plugin instance
+                       //
+                       // args:
+                       //              This object will be passed to the plugin constructor
+                       //
+                       // index: Integer
+                       //              Used when creating an instance from
+                       //              something already in this.plugins. Ensures that the new
+                       //              instance is assigned to this.plugins at that index.
+                       var args=dojo.isString(plugin)?{name:plugin}:plugin;
+                       if(!args.setEditor){
+                               var o={"args":args,"plugin":null,"editor":this};
+                               dojo.publish(dijit._scopeName + ".Editor.getPlugin",[o]);
+                               if(!o.plugin){
+                                       var pc = dojo.getObject(args.name);
+                                       if(pc){
+                                               o.plugin=new pc(args);
+                                       }
+                               }
+                               if(!o.plugin){
+                                       console.warn('Cannot find plugin',plugin);
+                                       return;
+                               }
+                               plugin=o.plugin;
+                       }
+                       if(arguments.length > 1){
+                               this._plugins[index] = plugin;
+                       }else{
+                               this._plugins.push(plugin);
+                       }
+                       plugin.setEditor(this);
+                       if(dojo.isFunction(plugin.setToolbar)){
+                               plugin.setToolbar(this.toolbar);
+                       }
+               },
+               //the following 3 functions are required to make the editor play nice under a layout widget, see #4070
+               startup: function(){
+                       // summary:
+                       //              Exists to make Editor work as a child of a layout widget.
+                       //              Developers don't need to call this method.
+                       // tags:
+                       //              protected
+                       //console.log('startup',arguments);
+               },
+               resize: function(size){
+                       // summary:
+                       //              Resize the editor to the specified size, see `dijit.layout._LayoutWidget.resize`
+                       if(size){
+                               // we've been given a height/width for the entire editor (toolbar + contents), calls layout()
+                               // to split the allocated size between the toolbar and the contents
+                               dijit.layout._LayoutWidget.prototype.resize.apply(this, arguments);
+                       }
+                       /*
+                       else{
+                               // do nothing, the editor is already laid out correctly.   The user has probably specified
+                               // the height parameter, which was used to set a size on the iframe
+                       }
+                       */
+               },
+               layout: function(){
+                       // summary:
+                       //              Called from `dijit.layout._LayoutWidget.resize`.  This shouldn't be called directly
+                       // tags:
+                       //              protected
+
+                       // Converts the iframe (or rather the <div> surrounding it) to take all the available space
+                       // except what's needed for the header (toolbars) and footer (breadcrumbs, etc).
+                       // A class was added to the iframe container and some themes style it, so we have to
+                       // calc off the added margins and padding too. See tracker: #10662
+                       var areaHeight = (this._contentBox.h - 
+                               (this.getHeaderHeight() + this.getFooterHeight() + 
+                                dojo._getPadBorderExtents(this.iframe.parentNode).h +
+                                dojo._getMarginExtents(this.iframe.parentNode).h));
+                       this.editingArea.style.height = areaHeight + "px";
+                       if(this.iframe){
+                               this.iframe.style.height="100%";
+                       }
+                       this._layoutMode = true;
+               },
+               _onIEMouseDown: function(/*Event*/ e){
+                       // summary:
+                       //              IE only to prevent 2 clicks to focus
+                       // tags:
+                       //              private
+                       var outsideClientArea;
+                       // IE 8's componentFromPoint is broken, which is a shame since it
+                       // was smaller code, but oh well.  We have to do this brute force
+                       // to detect if the click was scroller or not.
+                       var b = this.document.body;
+                       var clientWidth = b.clientWidth;
+                       var clientHeight = b.clientHeight;
+                       var clientLeft = b.clientLeft;
+                       var offsetWidth = b.offsetWidth;
+                       var offsetHeight = b.offsetHeight;
+                       var offsetLeft = b.offsetLeft;
+
+                       //Check for vertical scroller click.
+                       bodyDir = b.dir?b.dir.toLowerCase():""
+                       if(bodyDir != "rtl"){
+                               if(clientWidth < offsetWidth && e.x > clientWidth && e.x < offsetWidth){ 
+                                       // Check the click was between width and offset width, if so, scroller
+                                       outsideClientArea = true;
+                               }
+                       }else{
+                               // RTL mode, we have to go by the left offsets.
+                               if(e.x < clientLeft && e.x > offsetLeft){
+                                       // Check the click was between width and offset width, if so, scroller
+                                       outsideClientArea = true;
+                               }
+                       }
+                       if(!outsideClientArea){
+                               // Okay, might be horiz scroller, check that.
+                               if(clientHeight < offsetHeight && e.y > clientHeight && e.y < offsetHeight){
+                                       // Horizontal scroller.
+                                       outsideClientArea = true;
+                               }
+                       }
+                       if(!outsideClientArea){
+                               delete this._cursorToStart; // Remove the force to cursor to start position. 
+                               delete this._savedSelection; // new mouse position overrides old selection
+                               if(e.target.tagName == "BODY"){
+                                       setTimeout(dojo.hitch(this, "placeCursorAtEnd"), 0);
+                               }
+                               this.inherited(arguments);
+                       }
+               },
+               onBeforeActivate: function(e){
+                       this._restoreSelection();
+               },
+               onBeforeDeactivate: function(e){
+                       // summary:
+                       //              Called on IE right before focus is lost.   Saves the selected range.
+                       // tags:
+                       //              private
+                       if(this.customUndo){
+                               this.endEditing(true);
+                       }
+                       //in IE, the selection will be lost when other elements get focus,
+                       //let's save focus before the editor is deactivated
+                       if(e.target.tagName != "BODY"){
+                               this._saveSelection();
+                       }
+                       //console.log('onBeforeDeactivate',this);
+               },
+
+               /* beginning of custom undo/redo support */
+
+               // customUndo: Boolean
+               //              Whether we shall use custom undo/redo support instead of the native
+               //              browser support. By default, we only enable customUndo for IE, as it
+               //              has broken native undo/redo support. Note: the implementation does
+               //              support other browsers which have W3C DOM2 Range API implemented.
+               //              It was also enabled on WebKit, to fix undo/redo enablement. (#9613)
+               customUndo: dojo.isIE || dojo.isWebKit,
+
+               // editActionInterval: Integer
+               //              When using customUndo, not every keystroke will be saved as a step.
+               //              Instead typing (including delete) will be grouped together: after
+               //              a user stops typing for editActionInterval seconds, a step will be
+               //              saved; if a user resume typing within editActionInterval seconds,
+               //              the timeout will be restarted. By default, editActionInterval is 3
+               //              seconds.
+               editActionInterval: 3,
+
+               beginEditing: function(cmd){
+                       // summary:
+                       //              Called to note that the user has started typing alphanumeric characters, if it's not already noted.
+                       //              Deals with saving undo; see editActionInterval parameter.
+                       // tags:
+                       //              private
+                       if(!this._inEditing){
+                               this._inEditing=true;
+                               this._beginEditing(cmd);
+                       }
+                       if(this.editActionInterval>0){
+                               if(this._editTimer){
+                                       clearTimeout(this._editTimer);
+                               }
+                               this._editTimer = setTimeout(dojo.hitch(this, this.endEditing), this._editInterval);
+                       }
+               },
+               _steps:[],
+               _undoedSteps:[],
+               execCommand: function(cmd){
+                       // summary:
+                       //              Main handler for executing any commands to the editor, like paste, bold, etc.
+                       //      Called by plugins, but not meant to be called by end users.
+                       // tags:
+                       //              protected
+                       if(this.customUndo && (cmd == 'undo' || cmd == 'redo')){
+                               return this[cmd]();
+                       }else{
+                               if(this.customUndo){
+                                       this.endEditing();
+                                       this._beginEditing();
+                               }
+                               var r;
+                               try{
+                                       r = this.inherited('execCommand', arguments);
+                                       if(dojo.isWebKit && cmd == 'paste' && !r){ //see #4598: safari does not support invoking paste from js
+                                               throw { code: 1011 }; // throw an object like Mozilla's error
+                                       }
+                               }catch(e){
+                                       //TODO: when else might we get an exception?  Do we need the Mozilla test below?
+                                       if(e.code == 1011 /* Mozilla: service denied */ && /copy|cut|paste/.test(cmd)){
+                                               // Warn user of platform limitation.  Cannot programmatically access clipboard. See ticket #4136
+                                               var sub = dojo.string.substitute,
+                                                       accel = {cut:'X', copy:'C', paste:'V'};
+                                               alert(sub(this.commands.systemShortcut,
+                                                       [this.commands[cmd], sub(this.commands[dojo.isMac ? 'appleKey' : 'ctrlKey'], [accel[cmd]])]));
+                                       }
+                                       r = false;
+                               }
+                               if(this.customUndo){
+                                       this._endEditing();
+                               }
+                               return r;
+                       }
+               },
+               queryCommandEnabled: function(cmd){
+                       // summary:
+                       //              Returns true if specified editor command is enabled.
+                       //      Used by the plugins to know when to highlight/not highlight buttons.
+                       // tags:
+                       //              protected
+                       if(this.customUndo && (cmd == 'undo' || cmd == 'redo')){
+                               return cmd == 'undo' ? (this._steps.length > 1) : (this._undoedSteps.length > 0);
+                       }else{
+                               return this.inherited('queryCommandEnabled',arguments);
+                       }
+               },
+               _moveToBookmark: function(b){
+                       // summary:
+                       //              Selects the text specified in bookmark b
+                       // tags:
+                       //              private
+                       var bookmark = b.mark;
+                       var mark = b.mark;
+                       var col = b.isCollapsed;
+                       var r, sNode, eNode, sel;
+                       if(mark){
+                               if(dojo.isIE){
+                                       if(dojo.isArray(mark)){
+                                               //IE CONTROL, have to use the native bookmark.
+                                               bookmark = [];
+                                               dojo.forEach(mark,function(n){
+                                                       bookmark.push(dijit.range.getNode(n,this.editNode));
+                                               },this);
+                                               dojo.withGlobal(this.window,'moveToBookmark',dijit,[{mark: bookmark, isCollapsed: col}]);
+                                       }else{
+                                               if(mark.startContainer && mark.endContainer){
+                                                       // Use the pseudo WC3 range API.  This works better for positions
+                                                       // than the IE native bookmark code.
+                                                       sel = dijit.range.getSelection(this.window);
+                                                       if(sel && sel.removeAllRanges){
+                                                               sel.removeAllRanges();
+                                                               r = dijit.range.create(this.window);
+                                                               sNode = dijit.range.getNode(mark.startContainer,this.editNode);
+                                                               eNode = dijit.range.getNode(mark.endContainer,this.editNode);
+                                                               if(sNode && eNode){
+                                                                       // Okay, we believe we found the position, so add it into the selection
+                                                                       // There are cases where it may not be found, particularly in undo/redo, when
+                                                                       // IE changes the underlying DOM on us (wraps text in a <p> tag or similar.
+                                                                       // So, in those cases, don't bother restoring selection.
+                                                                       r.setStart(sNode,mark.startOffset);
+                                                                       r.setEnd(eNode,mark.endOffset);
+                                                                       sel.addRange(r);
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }else{//w3c range
+                                       sel = dijit.range.getSelection(this.window);
+                                       if(sel && sel.removeAllRanges){
+                                               sel.removeAllRanges();
+                                               r = dijit.range.create(this.window);
+                                               sNode = dijit.range.getNode(mark.startContainer,this.editNode);
+                                               eNode = dijit.range.getNode(mark.endContainer,this.editNode);
+                                               if(sNode && eNode){
+                                                       // Okay, we believe we found the position, so add it into the selection
+                                                       // There are cases where it may not be found, particularly in undo/redo, when
+                                                       // formatting as been done and so on, so don't restore selection then.
+                                                       r.setStart(sNode,mark.startOffset);
+                                                       r.setEnd(eNode,mark.endOffset);
+                                                       sel.addRange(r);
+                                               }
+                                       }
+                               }
+                       }
+               },
+               _changeToStep: function(from, to){
+                       // summary:
+                       //              Reverts editor to "to" setting, from the undo stack.
+                       // tags:
+                       //              private
+                       this.setValue(to.text);
+                       var b=to.bookmark;
+                       if(!b){ return; }
+                       this._moveToBookmark(b);
+               },
+               undo: function(){
+                       // summary:
+                       //              Handler for editor undo (ex: ctrl-z) operation
+                       // tags:
+                       //              private
+                       //console.log('undo');
+                       var ret = false;
+                       if(!this._undoRedoActive){
+                               this._undoRedoActive = true;
+                               this.endEditing(true);
+                               var s=this._steps.pop();
+                               if(s && this._steps.length>0){
+                                       this.focus();
+                                       this._changeToStep(s,this._steps[this._steps.length-1]);
+                                       this._undoedSteps.push(s);
+                                       this.onDisplayChanged();
+                                       delete this._undoRedoActive;
+                                       ret = true;
+                               }
+                               delete this._undoRedoActive;
+                       }       
+                       return ret;
+               },
+               redo: function(){
+                       // summary:
+                       //              Handler for editor redo (ex: ctrl-y) operation
+                       // tags:
+                       //              private
+                       //console.log('redo');
+                       var ret = false;
+                       if(!this._undoRedoActive){
+                               this._undoRedoActive = true;
+                               this.endEditing(true);
+                               var s=this._undoedSteps.pop();
+                               if(s && this._steps.length>0){
+                                       this.focus();
+                                       this._changeToStep(this._steps[this._steps.length-1],s);
+                                       this._steps.push(s);
+                                       this.onDisplayChanged();
+                                       ret = true;
+                               }
+                               delete this._undoRedoActive;
+                       }
+                       return ret;
+               },
+               endEditing: function(ignore_caret){
+                       // summary:
+                       //              Called to note that the user has stopped typing alphanumeric characters, if it's not already noted.
+                       //              Deals with saving undo; see editActionInterval parameter.
+                       // tags:
+                       //              private
+                       if(this._editTimer){
+                               clearTimeout(this._editTimer);
+                       }
+                       if(this._inEditing){
+                               this._endEditing(ignore_caret);
+                               this._inEditing=false;
+                       }
+               },
+
+               _getBookmark: function(){
+                       // summary:
+                       //              Get the currently selected text
+                       // tags:
+                       //              protected
+                       var b=dojo.withGlobal(this.window,dijit.getBookmark);
+                       var tmp=[];
+                       if(b && b.mark){
+                               var mark = b.mark;
+                               if(dojo.isIE){
+                                       // Try to use the pseudo range API on IE for better accuracy.
+                                       var sel = dijit.range.getSelection(this.window);
+                                       if(!dojo.isArray(mark)){
+                                               if(sel){
+                                                       var range;
+                                                       if(sel.rangeCount){
+                                                               range = sel.getRangeAt(0);
+                                                       }
+                                                       if(range){
+                                                               b.mark = range.cloneRange();
+                                                       }else{
+                                                               b.mark = dojo.withGlobal(this.window,dijit.getBookmark);
+                                                       }
+                                               }
+                                       }else{
+                                               // Control ranges (img, table, etc), handle differently.
+                                               dojo.forEach(b.mark,function(n){
+                                                       tmp.push(dijit.range.getIndex(n,this.editNode).o);
+                                               },this);
+                                               b.mark = tmp;
+                                       }
+                               }
+                               try{
+                                       if(b.mark && b.mark.startContainer){
+                                               tmp=dijit.range.getIndex(b.mark.startContainer,this.editNode).o;
+                                               b.mark={startContainer:tmp,
+                                                       startOffset:b.mark.startOffset,
+                                                       endContainer:b.mark.endContainer===b.mark.startContainer?tmp:dijit.range.getIndex(b.mark.endContainer,this.editNode).o,
+                                                       endOffset:b.mark.endOffset};
+                                       }
+                               }catch(e){
+                                       b.mark = null;
+                               }
+                       }
+                       return b;
+               },
+               _beginEditing: function(cmd){
+                       // summary:
+                       //              Called when the user starts typing alphanumeric characters.
+                       //              Deals with saving undo; see editActionInterval parameter.
+                       // tags:
+                       //              private
+                       if(this._steps.length === 0){
+                               // You want to use the editor content without post filtering
+                               // to make sure selection restores right for the 'initial' state.
+                               // and undo is called.  So not using this.savedContent, as it was 'processed'
+                               // and the line-up for selections may have been altered.
+                               this._steps.push({'text':dijit._editor.getChildrenHtml(this.editNode),'bookmark':this._getBookmark()});
+                       }
+               },
+               _endEditing: function(ignore_caret){
+                       // summary:
+                       //              Called when the user stops typing alphanumeric characters.
+                       //              Deals with saving undo; see editActionInterval parameter.
+                       // tags:
+                       //              private
+                       // Avoid filtering to make sure selections restore.
+                       var v = dijit._editor.getChildrenHtml(this.editNode);
+
+                       this._undoedSteps=[];//clear undoed steps
+                       this._steps.push({text: v, bookmark: this._getBookmark()});
+               },
+               onKeyDown: function(e){
+                       // summary:
+                       //              Handler for onkeydown event.
+                       // tags:
+                       //              private
+
+                       //We need to save selection if the user TAB away from this editor
+                       //no need to call _saveSelection for IE, as that will be taken care of in onBeforeDeactivate
+                       if(!dojo.isIE && !this.iframe && e.keyCode == dojo.keys.TAB && !this.tabIndent){
+                               this._saveSelection();
+                       }
+                       if(!this.customUndo){
+                               this.inherited(arguments);
+                               return;
+                       }
+                       var k = e.keyCode, ks = dojo.keys;
+                       if(e.ctrlKey && !e.altKey){//undo and redo only if the special right Alt + z/y are not pressed #5892
+                               if(k == 90 || k == 122){ //z
+                                       dojo.stopEvent(e);
+                                       this.undo();
+                                       return;
+                               }else if(k == 89 || k == 121){ //y
+                                       dojo.stopEvent(e);
+                                       this.redo();
+                                       return;
+                               }
+                       }
+                       this.inherited(arguments);
+
+                       switch(k){
+                                       case ks.ENTER:
+                                       case ks.BACKSPACE:
+                                       case ks.DELETE:
+                                               this.beginEditing();
+                                               break;
+                                       case 88: //x
+                                       case 86: //v
+                                               if(e.ctrlKey && !e.altKey && !e.metaKey){
+                                                       this.endEditing();//end current typing step if any
+                                                       if(e.keyCode == 88){
+                                                               this.beginEditing('cut');
+                                                               //use timeout to trigger after the cut is complete
+                                                               setTimeout(dojo.hitch(this, this.endEditing), 1);
+                                                       }else{
+                                                               this.beginEditing('paste');
+                                                               //use timeout to trigger after the paste is complete
+                                                               setTimeout(dojo.hitch(this, this.endEditing), 1);
+                                                       }
+                                                       break;
+                                               }
+                                               //pass through
+                                       default:
+                                               if(!e.ctrlKey && !e.altKey && !e.metaKey && (e.keyCode<dojo.keys.F1 || e.keyCode>dojo.keys.F15)){
+                                                       this.beginEditing();
+                                                       break;
+                                               }
+                                               //pass through
+                                       case ks.ALT:
+                                               this.endEditing();
+                                               break;
+                                       case ks.UP_ARROW:
+                                       case ks.DOWN_ARROW:
+                                       case ks.LEFT_ARROW:
+                                       case ks.RIGHT_ARROW:
+                                       case ks.HOME:
+                                       case ks.END:
+                                       case ks.PAGE_UP:
+                                       case ks.PAGE_DOWN:
+                                               this.endEditing(true);
+                                               break;
+                                       //maybe ctrl+backspace/delete, so don't endEditing when ctrl is pressed
+                                       case ks.CTRL:
+                                       case ks.SHIFT:
+                                       case ks.TAB:
+                                               break;
+                               }
+               },
+               _onBlur: function(){
+                       // summary:
+                       //              Called from focus manager when focus has moved away from this editor
+                       // tags:
+                       //              protected
+
+                       //this._saveSelection();
+                       this.inherited('_onBlur',arguments);
+                       this.endEditing(true);
+               },
+               _saveSelection: function(){
+                       // summary:
+                       //              Save the currently selected text in _savedSelection attribute
+                       // tags:
+                       //              private
+                       this._savedSelection=this._getBookmark();
+                       //console.log('save selection',this._savedSelection,this);
+               },
+               _restoreSelection: function(){
+                       // summary:
+                       //              Re-select the text specified in _savedSelection attribute;
+                       //              see _saveSelection().
+                       // tags:
+                       //              private
+                       if(this._savedSelection){
+                               // Clear off cursor to start, we're deliberately going to a selection.
+                               delete this._cursorToStart;
+                               // only restore the selection if the current range is collapsed
+                               // if not collapsed, then it means the editor does not lose
+                               // selection and there is no need to restore it
+                               if(dojo.withGlobal(this.window,'isCollapsed',dijit)){
+                                       this._moveToBookmark(this._savedSelection);
+                               }
+                               delete this._savedSelection;
+                       }
+               },
+
+               onClick: function(){
+                       // summary:
+                       //              Handler for when editor is clicked
+                       // tags:
+                       //              protected
+                       this.endEditing(true);
+                       this.inherited(arguments);
+               },
+
+               _setDisabledAttr: function(/*Boolean*/ value){
+                       if(!this.disabled && value){
+                               // Disable editor: disable all enabled buttons and remember that list
+                               this._buttonEnabledPlugins = dojo.filter(this._plugins, function(p){
+                                       if (p && p.button && !p.button.get("disabled")) {
+                                               p.button.set("disabled", true);
+                                               return true;
+                                       }
+                                       return false;
+                               });
+                       }else if(this.disabled && !value){
+                               // Enable editor: we only want to enable the buttons that should be
+                               // enabled (for example, the outdent button shouldn't be enabled if the current
+                               // text can't be outdented).
+                               dojo.forEach(this._buttonEnabledPlugins, function(p){
+                                       p.button.attr("disabled", false);
+                                       p.updateState && p.updateState();       // just in case something changed, like caret position
+                               });
+                       }
+                       
+                       this.inherited(arguments);
+               },
+               
+               _setStateClass: function(){
+                       this.inherited(arguments);
+                       
+                       // Let theme set the editor's text color based on editor enabled/disabled state.
+                       // We need to jump through hoops because the main document (where the theme CSS is)
+                       // is separate from the iframe's document.
+                       if(this.document && this.document.body){
+                               dojo.style(this.document.body, "color", dojo.style(this.iframe, "color"));
+                       }
+               }
+       }
+);
+
+// Register the "default plugins", ie, the built-in editor commands
+dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
+       if(o.plugin){ return; }
+       var args = o.args, p;
+       var _p = dijit._editor._Plugin;
+       var name = args.name;
+       switch(name){
+               case "undo": case "redo": case "cut": case "copy": case "paste": case "insertOrderedList":
+               case "insertUnorderedList": case "indent": case "outdent": case "justifyCenter":
+               case "justifyFull": case "justifyLeft": case "justifyRight": case "delete":
+               case "selectAll": case "removeFormat": case "unlink":
+               case "insertHorizontalRule":
+                       p = new _p({ command: name });
+                       break;
+
+               case "bold": case "italic": case "underline": case "strikethrough":
+               case "subscript": case "superscript":
+                       p = new _p({ buttonClass: dijit.form.ToggleButton, command: name });
+                       break;
+               case "|":
+                       p = new _p({ button: new dijit.ToolbarSeparator(), setEditor: function(editor) {this.editor = editor;} });
+       }
+//     console.log('name',name,p);
+       o.plugin=p;
+});
+
+}
+
+if(!dojo._hasResource["dojo.regexp"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.regexp"] = true;
+dojo.provide("dojo.regexp");
+
+/*=====
+dojo.regexp = {
+       // summary: Regular expressions and Builder resources
+};
+=====*/
+
+dojo.regexp.escapeString = function(/*String*/str, /*String?*/except){
+       //      summary:
+       //              Adds escape sequences for special characters in regular expressions
+       // except:
+       //              a String with special characters to be left unescaped
+
+       return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, function(ch){
+               if(except && except.indexOf(ch) != -1){
+                       return ch;
+               }
+               return "\\" + ch;
+       }); // String
+}
+
+dojo.regexp.buildGroupRE = function(/*Object|Array*/arr, /*Function*/re, /*Boolean?*/nonCapture){
+       //      summary:
+       //              Builds a regular expression that groups subexpressions
+       //      description:
+       //              A utility function used by some of the RE generators. The
+       //              subexpressions are constructed by the function, re, in the second
+       //              parameter.  re builds one subexpression for each elem in the array
+       //              a, in the first parameter. Returns a string for a regular
+       //              expression that groups all the subexpressions.
+       // arr:
+       //              A single value or an array of values.
+       // re:
+       //              A function. Takes one parameter and converts it to a regular
+       //              expression. 
+       // nonCapture:
+       //              If true, uses non-capturing match, otherwise matches are retained
+       //              by regular expression. Defaults to false
+
+       // case 1: a is a single value.
+       if(!(arr instanceof Array)){
+               return re(arr); // String
+       }
+
+       // case 2: a is an array
+       var b = [];
+       for(var i = 0; i < arr.length; i++){
+               // convert each elem to a RE
+               b.push(re(arr[i]));
+       }
+
+        // join the REs as alternatives in a RE group.
+       return dojo.regexp.group(b.join("|"), nonCapture); // String
+}
+
+dojo.regexp.group = function(/*String*/expression, /*Boolean?*/nonCapture){
+       // summary:
+       //              adds group match to expression
+       // nonCapture:
+       //              If true, uses non-capturing match, otherwise matches are retained
+       //              by regular expression. 
+       return "(" + (nonCapture ? "?:":"") + expression + ")"; // String
+}
+
+}
+
+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.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.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.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.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["dijit.form.TextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.TextBox"] = true;
+dojo.provide("dijit.form.TextBox");
+
+
+
+dojo.declare(
+       "dijit.form.TextBox",
+       dijit.form._FormValueWidget,
+       {
+               // summary:
+               //              A base class for textbox form inputs
+
+               // trim: Boolean
+               //              Removes leading and trailing whitespace if true.  Default is false.
+               trim: false,
+
+               // uppercase: Boolean
+               //              Converts all characters to uppercase if true.  Default is false.
+               uppercase: false,
+
+               // lowercase: Boolean
+               //              Converts all characters to lowercase if true.  Default is false.
+               lowercase: false,
+
+               // propercase: Boolean
+               //              Converts the first character of each word to uppercase if true.
+               propercase: false,
+
+               //      maxLength: String
+               //              HTML INPUT tag maxLength declaration.
+               maxLength: "",
+
+               //      selectOnClick: [const] Boolean
+               //              If true, all text will be selected when focused with mouse
+               selectOnClick: false,
+
+               //      placeHolder: String
+               //              Defines a hint to help users fill out the input field (as defined in HTML 5).
+               //              This should only contain plain text (no html markup).
+               placeHolder: "",
+               
+               templateString: dojo.cache("dijit.form", "templates/TextBox.html", "<div class=\"dijit dijitReset dijitInline dijitLeft\" id=\"widget_${id}\" waiRole=\"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" : "", // allows IE to disallow focus, but Firefox cannot be disabled for mousedown events
+
+               baseClass: "dijitTextBox",
+
+               attributeMap: dojo.delegate(dijit.form._FormValueWidget.prototype.attributeMap, {
+                       maxLength: "focusNode"
+               }),
+               
+               postMixInProperties: function(){
+                       var type = this.type.toLowerCase();
+                       if(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.placeHolder = v;
+                       if(!this._phspan){
+                               this._attachPoints.push('_phspan');
+                               /* dijitInputField class gives placeHolder same padding as the input field
+                                * parent node already has dijitInputField class but it doesn't affect this <span>
+                                * since it's position: absolute.
+                                */
+                               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(){
+                       // summary:
+                       //              Hook so attr('value') works as we like.
+                       // description:
+                       //              For `dijit.form.TextBox` this basically returns the value of the <input>.
+                       //
+                       //              For `dijit.form.MappedTextBox` subclasses, which have both
+                       //              a "displayed value" and a separate "submit value",
+                       //              This treats the "displayed value" as the master value, computing the
+                       //              submit value from it via this.parse().
+                       return this.parse(this.get('displayedValue'), this.constraints);
+               },
+
+               _setValueAttr: function(value, /*Boolean?*/ priorityChange, /*String?*/ formattedValue){
+                       // summary:
+                       //              Hook so attr('value', ...) works.
+                       //
+                       // description:
+                       //              Sets the value of the widget to "value" which can be of
+                       //              any type as determined by the widget.
+                       //
+                       // value:
+                       //              The visual element value is also set to a corresponding,
+                       //              but not necessarily the same, value.
+                       //
+                       // formattedValue:
+                       //              If specified, used to set the visual element value,
+                       //              otherwise a computed visual value is used.
+                       //
+                       // priorityChange:
+                       //              If true, an onChange event is fired immediately instead of
+                       //              waiting for the next blur event.
+
+                       var filteredValue;
+                       if(value !== undefined){
+                               // TODO: this is calling filter() on both the display value and the actual value.
+                               // I added a comment to the filter() definition about this, but it should be changed.
+                               filteredValue = this.filter(value);
+                               if(typeof formattedValue != "string"){
+                                       if(filteredValue !== null && ((typeof filteredValue != "number") || !isNaN(filteredValue))){
+                                               formattedValue = this.filter(this.format(filteredValue, this.constraints));
+                                       }else{ formattedValue = ''; }
+                               }
+                       }
+                       if(formattedValue != null && formattedValue != undefined && ((typeof formattedValue) != "number" || !isNaN(formattedValue)) && this.textbox.value != formattedValue){
+                               this.textbox.value = formattedValue;
+                       }
+
+                       this._updatePlaceHolder();
+
+                       this.inherited(arguments, [filteredValue, priorityChange]);
+               },
+
+               // displayedValue: String
+               //              For subclasses like ComboBox where the displayed value
+               //              (ex: Kentucky) and the serialized value (ex: KY) are different,
+               //              this represents the displayed value.
+               //
+               //              Setting 'displayedValue' through attr('displayedValue', ...)
+               //              updates 'value', and vice-versa.  Otherwise 'value' is updated
+               //              from 'displayedValue' periodically, like onBlur etc.
+               //
+               //              TODO: move declaration to MappedTextBox?
+               //              Problem is that ComboBox references displayedValue,
+               //              for benefit of FilteringSelect.
+               displayedValue: "",
+
+               getDisplayedValue: function(){
+                       // summary:
+                       //              Deprecated.   Use set('displayedValue') instead.
+                       // tags:
+                       //              deprecated
+                       dojo.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use set('displayedValue') instead.", "", "2.0");
+                       return this.get('displayedValue');
+               },
+
+               _getDisplayedValueAttr: function(){
+                       // summary:
+                       //              Hook so attr('displayedValue') works.
+                       // description:
+                       //              Returns the displayed value (what the user sees on the screen),
+                       //              after filtering (ie, trimming spaces etc.).
+                       //
+                       //              For some subclasses of TextBox (like ComboBox), the displayed value
+                       //              is different from the serialized value that's actually
+                       //              sent to the server (see dijit.form.ValidationTextBox.serialize)
+
+                       return this.filter(this.textbox.value);
+               },
+
+               setDisplayedValue: function(/*String*/value){
+                       // summary:
+                       //              Deprecated.   Use set('displayedValue', ...) instead.
+                       // tags:
+                       //              deprecated
+                       dojo.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.", "", "2.0");
+                       this.set('displayedValue', value);
+               },
+
+               _setDisplayedValueAttr: function(/*String*/value){
+                       // summary:
+                       //              Hook so attr('displayedValue', ...) works.
+                       // description:
+                       //              Sets the value of the visual element to the string "value".
+                       //              The widget value is also set to a corresponding,
+                       //              but not necessarily the same, value.
+
+                       if(value === null || value === undefined){ value = '' }
+                       else if(typeof value != "string"){ value = String(value) }
+                       this.textbox.value = value;
+                       this._setValueAttr(this.get('value'), undefined, value);
+               },
+
+               format: function(/* String */ value, /* Object */ constraints){
+                       // summary:
+                       //              Replacable function to convert a value to a properly formatted string.
+                       // tags:
+                       //              protected extension
+                       return ((value == null || value == undefined) ? "" : (value.toString ? value.toString() : value));
+               },
+
+               parse: function(/* String */ value, /* Object */ constraints){
+                       // summary:
+                       //              Replacable function to convert a formatted string to a value
+                       // tags:
+                       //              protected extension
+
+                       return value;   // String
+               },
+
+               _refreshState: function(){
+                       // summary:
+                       //              After the user types some characters, etc., this method is
+                       //              called to check the field for validity etc.  The base method
+                       //              in `dijit.form.TextBox` does nothing, but subclasses override.
+                       // tags:
+                       //              protected
+               },
+
+               _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 _this = this;
+                               // the setTimeout allows the key to post to the widget input box
+                               setTimeout(function(){ _this._handleOnChange(_this.get('value'), false); }, 0);
+                       }
+                       this._refreshState();
+               },
+
+               postCreate: function(){
+                       // setting the value here is needed since value="" in the template causes "undefined"
+                       // and setting in the DOM (instead of the JS object) helps with form reset actions
+                       if(dojo.isIE){ // IE INPUT tag fontFamily has to be set directly using STYLE
+                               var s = dojo.getComputedStyle(this.domNode);
+                               if(s){
+                                       var ff = s.fontFamily;
+                                       if(ff){
+                                               var inputs = this.domNode.getElementsByTagName("INPUT");
+                                               if(inputs){
+                                                       for(var i=0; i < inputs.length; i++){
+                                                               inputs[i].style.fontFamily = ff;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       this.textbox.setAttribute("value", this.textbox.value); // DOM and JS values shuld be the same
+                       this.inherited(arguments);
+                       if(dojo.isMoz || dojo.isOpera){
+                               this.connect(this.textbox, "oninput", this._onInput);
+                       }else{
+                               this.connect(this.textbox, "onkeydown", this._onInput);
+                               this.connect(this.textbox, "onkeyup", this._onInput);
+                               this.connect(this.textbox, "onpaste", this._onInput);
+                               this.connect(this.textbox, "oncut", this._onInput);
+                       }
+               },
+
+               _blankValue: '', // if the textbox is blank, what value should be reported
+               filter: function(val){
+                       // summary:
+                       //              Auto-corrections (such as trimming) that are applied to textbox
+                       //              value on blur or form submit.
+                       // description:
+                       //              For MappedTextBox subclasses, this is called twice
+                       //                      - once with the display value
+                       //                      - once the value as set/returned by attr('value', ...)
+                       //              and attr('value'), ex: a Number for NumberTextBox.
+                       //
+                       //              In the latter case it does corrections like converting null to NaN.  In
+                       //              the former case the NumberTextBox.filter() method calls this.inherited()
+                       //              to execute standard trimming code in TextBox.filter().
+                       //
+                       //              TODO: break this into two methods in 2.0
+                       //
+                       // tags:
+                       //              protected extension
+                       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; // clear selection so that the next mouse click doesn't reselect
+                       }
+                       
+                       this._updatePlaceHolder();
+               },
+
+               _onFocus: function(/*String*/ by){
+                       if(this.disabled || this.readOnly){ return; }
+
+                       // Select all text on focus via click if nothing already selected.
+                       // Since mouse-up will clear the selection need to defer selection until after mouse-up.
+                       // Don't do anything on focus by tabbing into the widget since there's no associated mouse-up event.
+                       if(this.selectOnClick && by == "mouse"){
+                               this._selectOnClickHandle = this.connect(this.domNode, "onmouseup", function(){
+                                       // Only select all text on first click; otherwise users would have no way to clear
+                                       // the selection.
+                                       this.disconnect(this._selectOnClickHandle);
+
+                                       // Check if the user selected some text manually (mouse-down, mouse-move, mouse-up)
+                                       // and if not, then select all the text
+                                       var textIsNotSelected;
+                                       if(dojo.isIE){
+                                               var range = dojo.doc.selection.createRange();
+                                               var parent = range.parentElement();
+                                               textIsNotSelected = parent == this.textbox && range.text.length == 0;
+                                       }else{
+                                               textIsNotSelected = this.textbox.selectionStart == this.textbox.selectionEnd;
+                                       }
+                                       if(textIsNotSelected){
+                                               dijit.selectInputText(this.textbox);
+                                       }
+                               });
+                       }
+
+                       this._updatePlaceHolder();
+                       
+                       this._refreshState();
+                       this.inherited(arguments);
+               },
+
+               reset: function(){
+                       // Overrides dijit._FormWidget.reset().
+                       // Additionally resets the displayed textbox value to ''
+                       this.textbox.value = '';
+                       this.inherited(arguments);
+               }
+       }
+);
+
+dijit.selectInputText = function(/*DomNode*/element, /*Number?*/ start, /*Number?*/ stop){
+       // summary:
+       //              Select text in the input element argument, from start (default 0), to stop (default end).
+
+       // TODO: use functions in _editor/selection.js?
+       var _window = dojo.global;
+       var _document = dojo.doc;
+       element = dojo.byId(element);
+       if(isNaN(start)){ start = 0; }
+       if(isNaN(stop)){ stop = element.value ? element.value.length : 0; }
+       dijit.focus(element);
+       if(_document["selection"] && dojo.body()["createTextRange"]){ // IE
+               if(element.createTextRange){
+                       var range = element.createTextRange();
+                       with(range){
+                               collapse(true);
+                               moveStart("character", -99999); // move to 0
+                               moveStart("character", start); // delta from 0 is the correct position
+                               moveEnd("character", stop-start);
+                               select();
+                       }
+               }
+       }else if(_window["getSelection"]){
+               if(element.setSelectionRange){
+                       element.setSelectionRange(start, stop);
+               }
+       }
+};
+
+}
+
+if(!dojo._hasResource["dijit.Tooltip"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.Tooltip"] = true;
+dojo.provide("dijit.Tooltip");
+
+
+
+
+dojo.declare(
+       "dijit._MasterTooltip",
+       [dijit._Widget, dijit._Templated],
+       {
+               // summary:
+               //              Internal widget that holds the actual tooltip markup,
+               //              which occurs once per page.
+               //              Called by Tooltip widgets which are just containers to hold
+               //              the markup
+               // tags:
+               //              protected
+
+               // duration: Integer
+               //              Milliseconds to fade in/fade out
+               duration: dijit.defaultDuration,
+
+               templateString: dojo.cache("dijit", "templates/Tooltip.html", "<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\">\n\t<div class=\"dijitTooltipContainer dijitTooltipContents\" dojoAttachPoint=\"containerNode\" waiRole='alert'></div>\n\t<div class=\"dijitTooltipConnector\"></div>\n</div>\n"),
+
+               postCreate: function(){
+                       dojo.body().appendChild(this.domNode);
+
+                       this.bgIframe = new dijit.BackgroundIframe(this.domNode);
+
+                       // Setup fade-in and fade-out functions.
+                       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(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position, /*Boolean*/ rtl){
+                       // summary:
+                       //              Display tooltip w/specified contents to right of specified node
+                       //              (To left if there's no space on the right, or if rtl == true)
+
+                       if(this.aroundNode && this.aroundNode === aroundNode){
+                               return;
+                       }
+
+                       if(this.fadeOut.status() == "playing"){
+                               // previous tooltip is being hidden; wait until the hide completes then show new one
+                               this._onDeck=arguments;
+                               return;
+                       }
+                       this.containerNode.innerHTML=innerHTML;
+
+                       var pos = dijit.placeOnScreenAroundElement(this.domNode, aroundNode, dijit.getPopupAroundAlignment((position && position.length) ? position : dijit.Tooltip.defaultPosition, !rtl), dojo.hitch(this, "orient"));
+
+                       // show it
+                       dojo.style(this.domNode, "opacity", 0);
+                       this.fadeIn.play();
+                       this.isShowingNow = true;
+                       this.aroundNode = aroundNode;
+               },
+
+               orient: function(/* DomNode */ node, /* String */ aroundCorner, /* String */ tooltipCorner){
+                       // summary:
+                       //              Private function to set CSS for tooltip node based on which position it's in.
+                       //              This is called by the dijit popup code.
+                       // tags:
+                       //              protected
+
+                       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"
+                               }[aroundCorner + "-" + tooltipCorner];
+               },
+
+               _onShow: function(){
+                       // summary:
+                       //              Called at end of fade-in operation
+                       // tags:
+                       //              protected
+                       if(dojo.isIE){
+                               // the arrow won't show up on a node w/an opacity filter
+                               this.domNode.style.filter="";
+                       }
+               },
+
+               hide: function(aroundNode){
+                       // summary:
+                       //              Hide the tooltip
+                       if(this._onDeck && this._onDeck[1] == aroundNode){
+                               // this hide request is for a show() that hasn't even started yet;
+                               // just cancel the pending show()
+                               this._onDeck=null;
+                       }else if(this.aroundNode === aroundNode){
+                               // this hide request is for the currently displayed tooltip
+                               this.fadeIn.stop();
+                               this.isShowingNow = false;
+                               this.aroundNode = null;
+                               this.fadeOut.play();
+                       }else{
+                               // just ignore the call, it's for a tooltip that has already been erased
+                       }
+               },
+
+               _onHide: function(){
+                       // summary:
+                       //              Called at end of fade-out operation
+                       // tags:
+                       //              protected
+
+                       this.domNode.style.cssText="";  // to position offscreen again
+                       this.containerNode.innerHTML="";
+                       if(this._onDeck){
+                               // a show request has been queued up; do it now
+                               this.show.apply(this, this._onDeck);
+                               this._onDeck=null;
+                       }
+               }
+
+       }
+);
+
+dijit.showTooltip = function(/*String*/ innerHTML, /*DomNode*/ aroundNode, /*String[]?*/ position, /*Boolean*/ rtl){
+       // summary:
+       //              Display tooltip w/specified contents in specified position.
+       //              See description of dijit.Tooltip.defaultPosition for details on position parameter.
+       //              If position is not specified then dijit.Tooltip.defaultPosition is used.
+       if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); }
+       return dijit._masterTT.show(innerHTML, aroundNode, position, rtl);
+};
+
+dijit.hideTooltip = function(aroundNode){
+       // summary:
+       //              Hide the tooltip
+       if(!dijit._masterTT){ dijit._masterTT = new dijit._MasterTooltip(); }
+       return dijit._masterTT.hide(aroundNode);
+};
+
+dojo.declare(
+       "dijit.Tooltip",
+       dijit._Widget,
+       {
+               // summary:
+               //              Pops up a tooltip (a help message) when you hover over a node.
+
+               // label: String
+               //              Text to display in the tooltip.
+               //              Specified as innerHTML when creating the widget from markup.
+               label: "",
+
+               // showDelay: Integer
+               //              Number of milliseconds to wait after hovering over/focusing on the object, before
+               //              the tooltip is displayed.
+               showDelay: 400,
+
+               // connectId: [const] String[]
+               //              Id's of domNodes to attach the tooltip to.
+               //              When user hovers over any of the specified dom nodes, the tooltip will appear.
+               //
+               //              Note: Currently connectId can only be specified on initialization, it cannot
+               //              be changed via attr('connectId', ...)
+               //
+               //              Note: in 2.0 this will be renamed to connectIds for less confusion.
+               connectId: [],
+
+               // position: String[]
+               //              See description of `dijit.Tooltip.defaultPosition` for details on position parameter.
+               position: [],
+
+               constructor: function(){
+                       // Map id's of nodes I'm connected to to a list of the this.connect() handles
+                       this._nodeConnectionsById = {};
+               },
+
+               _setConnectIdAttr: function(newIds){
+                       for(var oldId in this._nodeConnectionsById){
+                               this.removeTarget(oldId);
+                       }
+                       dojo.forEach(dojo.isArrayLike(newIds) ? newIds : [newIds], this.addTarget, this);
+               },
+
+               _getConnectIdAttr: function(){
+                       var ary = [];
+                       for(var id in this._nodeConnectionsById){
+                               ary.push(id);
+                       }
+                       return ary;
+               },
+
+               addTarget: function(/*DOMNODE || String*/ id){
+                       // summary:
+                       //              Attach tooltip to specified node, if it's not already connected
+                       var node = dojo.byId(id);
+                       if(!node){ return; }
+                       if(node.id in this._nodeConnectionsById){ return; }//Already connected
+
+                       this._nodeConnectionsById[node.id] = [
+                               this.connect(node, "onmouseenter", "_onTargetMouseEnter"),
+                               this.connect(node, "onmouseleave", "_onTargetMouseLeave"),
+                               this.connect(node, "onfocus", "_onTargetFocus"),
+                               this.connect(node, "onblur", "_onTargetBlur")
+                       ];
+               },
+
+               removeTarget: function(/*DOMNODE || String*/ node){
+                       // summary:
+                       //              Detach tooltip from specified node
+
+                       // map from DOMNode back to plain id string
+                       var id = node.id || node;
+
+                       if(id in this._nodeConnectionsById){
+                               dojo.forEach(this._nodeConnectionsById[id], this.disconnect, this);
+                               delete this._nodeConnectionsById[id];
+                       }
+               },
+
+               postCreate: function(){
+                       dojo.addClass(this.domNode,"dijitTooltipData");
+               },
+
+               startup: function(){
+                       this.inherited(arguments);
+
+                       // If this tooltip was created in a template, or for some other reason the specified connectId[s]
+                       // didn't exist during the widget's initialization, then connect now.
+                       var ids = this.connectId;
+                       dojo.forEach(dojo.isArrayLike(ids) ? ids : [ids], this.addTarget, this);
+               },
+
+               _onTargetMouseEnter: function(/*Event*/ e){
+                       // summary:
+                       //              Handler for mouseenter event on the target node
+                       // tags:
+                       //              private
+                       this._onHover(e);
+               },
+
+               _onTargetMouseLeave: function(/*Event*/ e){
+                       // summary:
+                       //              Handler for mouseleave event on the target node
+                       // tags:
+                       //              private
+                       this._onUnHover(e);
+               },
+
+               _onTargetFocus: function(/*Event*/ e){
+                       // summary:
+                       //              Handler for focus event on the target node
+                       // tags:
+                       //              private
+
+                       this._focus = true;
+                       this._onHover(e);
+               },
+
+               _onTargetBlur: function(/*Event*/ e){
+                       // summary:
+                       //              Handler for blur event on the target node
+                       // tags:
+                       //              private
+
+                       this._focus = false;
+                       this._onUnHover(e);
+               },
+
+               _onHover: function(/*Event*/ e){
+                       // summary:
+                       //              Despite the name of this method, it actually handles both hover and focus
+                       //              events on the target node, setting a timer to show the tooltip.
+                       // tags:
+                       //              private
+                       if(!this._showTimer){
+                               var target = e.target;
+                               this._showTimer = setTimeout(dojo.hitch(this, function(){this.open(target)}), this.showDelay);
+                       }
+               },
+
+               _onUnHover: function(/*Event*/ e){
+                       // summary:
+                       //              Despite the name of this method, it actually handles both mouseleave and blur
+                       //              events on the target node, hiding the tooltip.
+                       // tags:
+                       //              private
+
+                       // keep a tooltip open if the associated element still has focus (even though the
+                       // mouse moved away)
+                       if(this._focus){ return; }
+
+                       if(this._showTimer){
+                               clearTimeout(this._showTimer);
+                               delete this._showTimer;
+                       }
+                       this.close();
+               },
+
+               open: function(/*DomNode*/ target){
+                       // summary:
+                       //              Display the tooltip; usually not called directly.
+                       // tags:
+                       //              private
+
+                       if(this._showTimer){
+                               clearTimeout(this._showTimer);
+                               delete this._showTimer;
+                       }
+                       dijit.showTooltip(this.label || this.domNode.innerHTML, target, this.position, !this.isLeftToRight());
+
+                       this._connectNode = target;
+                       this.onShow(target, this.position);
+               },
+
+               close: function(){
+                       // summary:
+                       //              Hide the tooltip or cancel timer for show of tooltip
+                       // tags:
+                       //              private
+
+                       if(this._connectNode){
+                               // if tooltip is currently shown
+                               dijit.hideTooltip(this._connectNode);
+                               delete this._connectNode;
+                               this.onHide();
+                       }
+                       if(this._showTimer){
+                               // if tooltip is scheduled to be shown (after a brief delay)
+                               clearTimeout(this._showTimer);
+                               delete this._showTimer;
+                       }
+               },
+
+               onShow: function(target, position){
+                       // summary:
+                       //              Called when the tooltip is shown
+                       // tags:
+                       //              callback
+               },
+
+               onHide: function(){
+                       // summary:
+                       //              Called when the tooltip is hidden
+                       // tags:
+                       //              callback
+               },
+
+               uninitialize: function(){
+                       this.close();
+                       this.inherited(arguments);
+               }
+       }
+);
+
+// dijit.Tooltip.defaultPosition: String[]
+//             This variable controls the position of tooltips, if the position is not specified to
+//             the Tooltip widget or *TextBox widget itself.  It's an array of strings with the following values:
+//
+//                     * before: places tooltip to the left of the target node/widget, or to the right in
+//                       the case of RTL scripts like Hebrew and Arabic
+//                     * after: places tooltip to the right of the target node/widget, or to the left in
+//                       the case of RTL scripts like Hebrew and Arabic
+//                     * above: tooltip goes above target node
+//                     * below: tooltip goes below target node
+//
+//             The list is positions is tried, in order, until a position is found where the tooltip fits
+//             within the viewport.
+//
+//             Be careful setting this parameter.  A value of "above" may work fine until the user scrolls
+//             the screen so that there's no room above the target node.   Nodes with drop downs, like
+//             DropDownButton or FilteringSelect, are especially problematic, in that you need to be sure
+//             that the drop down and tooltip don't overlap, even when the viewport is scrolled so that there
+//             is only room below (or above) the target node, but not both.
+dijit.Tooltip.defaultPosition = ["after", "before"];
+
+}
+
+if(!dojo._hasResource["dijit.form.ValidationTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.ValidationTextBox"] = true;
+dojo.provide("dijit.form.ValidationTextBox");
+
+
+
+
+
+
+
+
+/*=====
+       dijit.form.ValidationTextBox.__Constraints = function(){
+               // locale: String
+               //              locale used for validation, picks up value from this widget's lang attribute
+               // _flags_: anything
+               //              various flags passed to regExpGen function
+               this.locale = "";
+               this._flags_ = "";
+       }
+=====*/
+
+dojo.declare(
+       "dijit.form.ValidationTextBox",
+       dijit.form.TextBox,
+       {
+               // summary:
+               //              Base class for textbox widgets with the ability to validate content of various types and provide user feedback.
+               // tags:
+               //              protected
+
+               templateString: dojo.cache("dijit.form", "templates/ValidationTextBox.html", "<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\" waiRole=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&Chi; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"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: Boolean
+               //              User is required to enter data into this field.
+               required: false,
+
+               // promptMessage: String
+               //              If defined, display this hint string immediately on focus to the textbox, if empty.
+               //              Think of this like a tooltip that tells the user what to do, not an error message
+               //              that tells the user what they've done wrong.
+               //
+               //              Message disappears when user starts typing.
+               promptMessage: "",
+
+               // invalidMessage: String
+               //              The message to display if value is invalid.
+               //              The translated string value is read from the message file by default.
+               //              Set to "" to use the promptMessage instead.
+               invalidMessage: "$_unset_$",
+
+               // missingMessage: String
+               //              The message to display if value is empty and the field is required.
+               //              The translated string value is read from the message file by default.
+               //              Set to "" to use the invalidMessage instead.
+               missingMessage: "$_unset_$",
+
+               // constraints: dijit.form.ValidationTextBox.__Constraints
+               //              user-defined object needed to pass parameters to the validator functions
+               constraints: {},
+
+               // regExp: [extension protected] String
+               //              regular expression string used to validate the input
+               //              Do not specify both regExp and regExpGen
+               regExp: ".*",
+
+               regExpGen: function(/*dijit.form.ValidationTextBox.__Constraints*/constraints){
+                       // summary:
+                       //              Overridable function used to generate regExp when dependent on constraints.
+                       //              Do not specify both regExp and regExpGen.
+                       // tags:
+                       //              extension protected
+                       return this.regExp; // String
+               },
+
+               // state: [readonly] String
+               //              Shows current state (ie, validation result) of input (Normal, Warning, or Error)
+               state: "",
+
+               // tooltipPosition: String[]
+               //              See description of `dijit.Tooltip.defaultPosition` for details on this parameter.
+               tooltipPosition: [],
+
+               _setValueAttr: function(){
+                       // summary:
+                       //              Hook so attr('value', ...) works.
+                       this.inherited(arguments);
+                       this.validate(this._focused);
+               },
+
+               validator: function(/*anything*/value, /*dijit.form.ValidationTextBox.__Constraints*/constraints){
+                       // summary:
+                       //              Overridable function used to validate the text input against the regular expression.
+                       // tags:
+                       //              protected
+                       return (new RegExp("^(?:" + this.regExpGen(constraints) + ")"+(this.required?"":"?")+"$")).test(value) &&
+                               (!this.required || !this._isEmpty(value)) &&
+                               (this._isEmpty(value) || this.parse(value, constraints) !== undefined); // Boolean
+               },
+
+               _isValidSubset: function(){
+                       // summary:
+                       //              Returns true if the value is either already valid or could be made valid by appending characters.
+                       //              This is used for validation while the user [may be] still typing.
+                       return this.textbox.value.search(this._partialre) == 0;
+               },
+
+               isValid: function(/*Boolean*/ isFocused){
+                       // summary:
+                       //              Tests if value is valid.
+                       //              Can override with your own routine in a subclass.
+                       // tags:
+                       //              protected
+                       return this.validator(this.textbox.value, this.constraints);
+               },
+
+               _isEmpty: function(value){
+                       // summary:
+                       //              Checks for whitespace
+                       return /^\s*$/.test(value); // Boolean
+               },
+
+               getErrorMessage: function(/*Boolean*/ isFocused){
+                       // summary:
+                       //              Return an error message to show if appropriate
+                       // tags:
+                       //              protected
+                       return (this.required && this._isEmpty(this.textbox.value)) ? this.missingMessage : this.invalidMessage; // String
+               },
+
+               getPromptMessage: function(/*Boolean*/ isFocused){
+                       // summary:
+                       //              Return a hint message to show when widget is first focused
+                       // tags:
+                       //              protected
+                       return this.promptMessage; // String
+               },
+
+               _maskValidSubsetError: true,
+               validate: function(/*Boolean*/ isFocused){
+                       // summary:
+                       //              Called by oninit, onblur, and onkeypress.
+                       // description:
+                       //              Show missing or invalid messages if appropriate, and highlight textbox field.
+                       // tags:
+                       //              protected
+                       var message = "";
+                       var isValid = this.disabled || this.isValid(isFocused);
+                       if(isValid){ this._maskValidSubsetError = true; }
+                       var isEmpty = this._isEmpty(this.textbox.value);
+                       var isValidSubset = !isValid && !isEmpty && isFocused && this._isValidSubset();
+                       this.state = ((isValid || ((!this._hasBeenBlurred || isFocused) && isEmpty) || isValidSubset) && this._maskValidSubsetError) ? "" : "Error";
+                       if(this.state == "Error"){ this._maskValidSubsetError = isFocused; } // we want the error to show up afer a blur and refocus
+                       this._setStateClass();
+                       dijit.setWaiState(this.focusNode, "invalid", isValid ? "false" : "true");
+                       if(isFocused){
+                               if(this.state == "Error"){
+                                       message = this.getErrorMessage(true);
+                               }else{
+                                       message = this.getPromptMessage(true); // show the prompt whever there's no error
+                               }
+                               this._maskValidSubsetError = true; // since we're focused, always mask warnings
+                       }
+                       this.displayMessage(message);
+                       return isValid;
+               },
+
+               // _message: String
+               //              Currently displayed message
+               _message: "",
+
+               displayMessage: function(/*String*/ message){
+                       // summary:
+                       //              Overridable method to display validation errors/hints.
+                       //              By default uses a tooltip.
+                       // tags:
+                       //              extension
+                       if(this._message == message){ return; }
+                       this._message = message;
+                       dijit.hideTooltip(this.domNode);
+                       if(message){
+                               dijit.showTooltip(message, this.domNode, this.tooltipPosition, !this.isLeftToRight());
+                       }
+               },
+
+               _refreshState: function(){
+                       // Overrides TextBox._refreshState()
+                       this.validate(this._focused);
+                       this.inherited(arguments);
+               },
+
+               //////////// INITIALIZATION METHODS ///////////////////////////////////////
+
+               constructor: function(){
+                       this.constraints = {};
+               },
+
+               _setConstraintsAttr: function(/* Object */ constraints){
+                       if(!constraints.locale && this.lang){
+                               constraints.locale = this.lang;
+                       }
+                       this.constraints = constraints;
+                       this._computePartialRE();
+               },
+
+               _computePartialRE: function(){
+                       var p = this.regExpGen(this.constraints);
+                       this.regExp = p;
+                       var partialre = "";
+                       // parse the regexp and produce a new regexp that matches valid subsets
+                       // if the regexp is .* then there's no use in matching subsets since everything is valid
+                       if(p != ".*"){ this.regExp.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,
+                               function (re){
+                                       switch(re.charAt(0)){
+                                               case '{':
+                                               case '+':
+                                               case '?':
+                                               case '*':
+                                               case '^':
+                                               case '$':
+                                               case '|':
+                                               case '(':
+                                                       partialre += re;
+                                                       break;
+                                               case ")":
+                                                       partialre += "|$)";
+                                                       break;
+                                                default:
+                                                       partialre += "(?:"+re+"|$)";
+                                                       break;
+                                       }
+                               }
+                       );}
+                       try{ // this is needed for now since the above regexp parsing needs more test verification
+                               "".search(partialre);
+                       }catch(e){ // should never be here unless the original RE is bad or the parsing is bad
+                               partialre = this.regExp;
+                               console.warn('RegExp error in ' + this.declaredClass + ': ' + this.regExp);
+                       } // should never be here unless the original RE is bad or the parsing is bad
+                       this._partialre = "^(?:" + partialre + ")$";
+               },
+
+               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); // this needs to happen now (and later) due to codependency on _set*Attr calls attachPoints
+               },
+
+               _setDisabledAttr: function(/*Boolean*/ value){
+                       this.inherited(arguments);      // call FormValueWidget._setDisabledAttr()
+                       this._refreshState();
+               },
+
+               _setRequiredAttr: function(/*Boolean*/ value){
+                       this.required = value;
+                       dijit.setWaiState(this.focusNode, "required", value);
+                       this._refreshState();
+               },
+
+               reset:function(){
+                       // Overrides dijit.form.TextBox.reset() by also
+                       // hiding errors about partial matches
+                       this._maskValidSubsetError = true;
+                       this.inherited(arguments);
+               },
+
+               _onBlur: function(){
+                       this.displayMessage('');
+                       this.inherited(arguments);
+               }
+       }
+);
+
+dojo.declare(
+       "dijit.form.MappedTextBox",
+       dijit.form.ValidationTextBox,
+       {
+               // summary:
+               //              A dijit.form.ValidationTextBox subclass which provides a base class for widgets that have
+               //              a visible formatted display value, and a serializable
+               //              value in a hidden input field which is actually sent to the server.
+               // description:
+               //              The visible display may
+               //              be locale-dependent and interactive.  The value sent to the server is stored in a hidden
+               //              input field which uses the `name` attribute declared by the original widget.  That value sent
+               //              to the server is defined by the dijit.form.MappedTextBox.serialize method and is typically
+               //              locale-neutral.
+               // tags:
+               //              protected
+
+               postMixInProperties: function(){
+                       this.inherited(arguments);
+
+                       // we want the name attribute to go to the hidden <input>, not the displayed <input>,
+                       // so override _FormWidget.postMixInProperties() setting of nameAttrSetting
+                       this.nameAttrSetting = "";
+               },
+
+               serialize: function(/*anything*/val, /*Object?*/options){
+                       // summary:
+                       //              Overridable function used to convert the attr('value') result to a canonical
+                       //              (non-localized) string.  For example, will print dates in ISO format, and
+                       //              numbers the same way as they are represented in javascript.
+                       // tags:
+                       //              protected extension
+                       return val.toString ? val.toString() : ""; // String
+               },
+
+               toString: function(){
+                       // summary:
+                       //              Returns widget as a printable string using the widget's value
+                       // tags:
+                       //              protected
+                       var val = this.filter(this.get('value')); // call filter in case value is nonstring and filter has been customized
+                       return val != null ? (typeof val == "string" ? val : this.serialize(val, this.constraints)) : ""; // String
+               },
+
+               validate: function(){
+                       // Overrides `dijit.form.TextBox.validate`
+                       this.valueNode.value = this.toString();
+                       return this.inherited(arguments);
+               },
+
+               buildRendering: function(){
+                       // Overrides `dijit._Templated.buildRendering`
+
+                       this.inherited(arguments);
+
+                       // Create a hidden <input> node with the serialized value used for submit
+                       // (as opposed to the displayed value).
+                       // Passing in name as markup rather than calling dojo.create() with an attrs argument
+                       // to make dojo.query(input[name=...]) work on IE. (see #8660)
+                       this.valueNode = dojo.place("<input type='hidden'" + (this.name ? " name='" + this.name + "'" : "") + ">", this.textbox, "after");
+               },
+
+               reset:function(){
+                       // Overrides `dijit.form.ValidationTextBox.reset` to
+                       // reset the hidden textbox value to ''
+                       this.valueNode.value = '';
+                       this.inherited(arguments);
+               }
+       }
+);
+
+/*=====
+       dijit.form.RangeBoundTextBox.__Constraints = function(){
+               // min: Number
+               //              Minimum signed value.  Default is -Infinity
+               // max: Number
+               //              Maximum signed value.  Default is +Infinity
+               this.min = min;
+               this.max = max;
+       }
+=====*/
+
+dojo.declare(
+       "dijit.form.RangeBoundTextBox",
+       dijit.form.MappedTextBox,
+       {
+               // summary:
+               //              Base class for textbox form widgets which defines a range of valid values.
+
+               // rangeMessage: String
+               //              The message to display if value is out-of-range
+               rangeMessage: "",
+
+               /*=====
+               // constraints: dijit.form.RangeBoundTextBox.__Constraints
+               constraints: {},
+               ======*/
+
+               rangeCheck: function(/*Number*/ primitive, /*dijit.form.RangeBoundTextBox.__Constraints*/ constraints){
+                       // summary:
+                       //              Overridable function used to validate the range of the numeric input value.
+                       // tags:
+                       //              protected
+                       return  ("min" in constraints? (this.compare(primitive,constraints.min) >= 0) : true) &&
+                               ("max" in constraints? (this.compare(primitive,constraints.max) <= 0) : true); // Boolean
+               },
+
+               isInRange: function(/*Boolean*/ isFocused){
+                       // summary:
+                       //              Tests if the value is in the min/max range specified in constraints
+                       // tags:
+                       //              protected
+                       return this.rangeCheck(this.get('value'), this.constraints);
+               },
+
+               _isDefinitelyOutOfRange: function(){
+                       // summary:
+                       //              Returns true if the value is out of range and will remain
+                       //              out of range even if the user types more characters
+                       var val = this.get('value');
+                       var isTooLittle = false;
+                       var isTooMuch = false;
+                       if("min" in this.constraints){
+                               var min = this.constraints.min;
+                               min = this.compare(val, ((typeof min == "number") && min >= 0 && val !=0) ? 0 : min);
+                               isTooLittle = (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);
+                               isTooMuch = (typeof max == "number") && max > 0;
+                       }
+                       return isTooLittle || isTooMuch;
+               },
+
+               _isValidSubset: function(){
+                       // summary:
+                       //              Overrides `dijit.form.ValidationTextBox._isValidSubset`.
+                       //              Returns true if the input is syntactically valid, and either within
+                       //              range or could be made in range by more typing.
+                       return this.inherited(arguments) && !this._isDefinitelyOutOfRange();
+               },
+
+               isValid: function(/*Boolean*/ isFocused){
+                       // Overrides dijit.form.ValidationTextBox.isValid to check that the value is also in range.
+                       return this.inherited(arguments) &&
+                               ((this._isEmpty(this.textbox.value) && !this.required) || this.isInRange(isFocused)); // Boolean
+               },
+
+               getErrorMessage: function(/*Boolean*/ isFocused){
+                       // Overrides dijit.form.ValidationTextBox.getErrorMessage to print "out of range" message if appropriate
+                       var v = this.get('value');
+                       if(v !== null && v !== '' && v !== undefined && (typeof v != "number" || !isNaN(v)) && !this.isInRange(isFocused)){ // don't check isInRange w/o a real value
+                               return this.rangeMessage; // String
+                       }
+                       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(/* Object */ constraints){
+                       this.inherited(arguments);
+                       if(this.focusNode){ // not set when called from postMixInProperties
+                               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(/*Number*/ value, /*Boolean?*/ priorityChange){
+                       // summary:
+                       //              Hook so attr('value', ...) works.
+
+                       dijit.setWaiState(this.focusNode, "valuenow", value);
+                       this.inherited(arguments);
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.form.ComboBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.ComboBox"] = true;
+dojo.provide("dijit.form.ComboBox");
+
+
+
+
+
+
+
+
+
+
+
+
+dojo.declare(
+       "dijit.form.ComboBoxMixin",
+       null,
+       {
+               // summary:
+               //              Implements the base functionality for `dijit.form.ComboBox`/`dijit.form.FilteringSelect`
+               // description:
+               //              All widgets that mix in dijit.form.ComboBoxMixin must extend `dijit.form._FormValueWidget`.
+               // tags:
+               //              protected
+
+               // item: Object
+               //              This is the item returned by the dojo.data.store implementation that
+               //              provides the data for this ComboBox, it's the currently selected item.
+               item: null,
+
+               // pageSize: Integer
+               //              Argument to data provider.
+               //              Specifies number of search results per page (before hitting "next" button)
+               pageSize: Infinity,
+
+               // store: Object
+               //              Reference to data provider object used by this ComboBox
+               store: null,
+
+               // fetchProperties: Object
+               //              Mixin to the dojo.data store's fetch.
+               //              For example, to set the sort order of the ComboBox menu, pass:
+               //      |       { sort: {attribute:"name",descending: true} }
+               //              To override the default queryOptions so that deep=false, do:
+               //      |       { queryOptions: {ignoreCase: true, deep: false} }
+               fetchProperties:{},
+
+               // query: Object
+               //              A query that can be passed to 'store' to initially filter the items,
+               //              before doing further filtering based on `searchAttr` and the key.
+               //              Any reference to the `searchAttr` is ignored.
+               query: {},
+
+               // autoComplete: Boolean
+               //              If user types in a partial string, and then tab out of the `<input>` box,
+               //              automatically copy the first entry displayed in the drop down list to
+               //              the `<input>` field
+               autoComplete: true,
+
+               // highlightMatch: String
+               //              One of: "first", "all" or "none".
+               //
+               //              If the ComboBox/FilteringSelect opens with the search results and the searched
+               //              string can be found, it will be highlighted.  If set to "all"
+               //              then will probably want to change `queryExpr` parameter to '*${0}*'
+               //
+               //              Highlighting is only performed when `labelType` is "text", so as to not
+               //              interfere with any HTML markup an HTML label might contain.
+               highlightMatch: "first",
+
+               // searchDelay: Integer
+               //              Delay in milliseconds between when user types something and we start
+               //              searching based on that value
+               searchDelay: 100,
+
+               // searchAttr: String
+               //              Search for items in the data store where this attribute (in the item)
+               //              matches what the user typed
+               searchAttr: "name",
+
+               // labelAttr: String?
+               //              The entries in the drop down list come from this attribute in the
+               //              dojo.data items.
+               //              If not specified, the searchAttr attribute is used instead.
+               labelAttr: "",
+
+               // labelType: String
+               //              Specifies how to interpret the labelAttr in the data store items.
+               //              Can be "html" or "text".
+               labelType: "text",
+
+               // queryExpr: String
+               //              This specifies what query ComboBox/FilteringSelect sends to the data store,
+               //              based on what the user has typed.  Changing this expression will modify
+               //              whether the drop down shows only exact matches, a "starting with" match,
+               //              etc.   Use it in conjunction with highlightMatch.
+               //              dojo.data query expression pattern.
+               //              `${0}` will be substituted for the user text.
+               //              `*` is used for wildcards.
+               //              `${0}*` means "starts with", `*${0}*` means "contains", `${0}` means "is"
+               queryExpr: "${0}*",
+
+               // ignoreCase: Boolean
+               //              Set true if the ComboBox/FilteringSelect should ignore case when matching possible items
+               ignoreCase: true,
+
+               // hasDownArrow: [const] Boolean
+               //              Set this textbox to have a down arrow button, to display the drop down list.
+               //              Defaults to true.
+               hasDownArrow: true,
+
+               templateString: dojo.cache("dijit.form", "templates/ComboBox.html", "<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\"\n\tdojoAttachPoint=\"comboNode\" waiRole=\"combobox\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdojoAttachPoint=\"downArrowNode\" waiRole=\"presentation\"\n\t\tdojoAttachEvent=\"onmousedown:_onArrowMouseDown\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"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=\"&Chi; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"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\tdojoAttachEvent=\"onkeypress:_onKeyPress,compositionend\"\n\t\t\tdojoAttachPoint=\"textbox,focusNode\" waiRole=\"textbox\" waiState=\"haspopup-true,autocomplete-list\"\n\t/></div\n></div>\n"),
+
+               baseClass: "dijitTextBox dijitComboBox",
+
+               // Set classes like dijitDownArrowButtonHover depending on
+               // mouse action over button node
+               cssStateNodes: {
+                       "downArrowNode": "dijitDownArrowButton"
+               },
+
+               _getCaretPos: function(/*DomNode*/ element){
+                       // khtml 3.5.2 has selection* methods as does webkit nightlies from 2005-06-22
+                       var pos = 0;
+                       if(typeof(element.selectionStart) == "number"){
+                               // FIXME: this is totally borked on Moz < 1.3. Any recourse?
+                               pos = element.selectionStart;
+                       }else if(dojo.isIE){
+                               // in the case of a mouse click in a popup being handled,
+                               // then the dojo.doc.selection is not the textarea, but the popup
+                               // var r = dojo.doc.selection.createRange();
+                               // hack to get IE 6 to play nice. What a POS browser.
+                               var tr = dojo.doc.selection.createRange().duplicate();
+                               var ntr = element.createTextRange();
+                               tr.move("character",0);
+                               ntr.move("character",0);
+                               try{
+                                       // If control doesnt have focus, you get an exception.
+                                       // Seems to happen on reverse-tab, but can also happen on tab (seems to be a race condition - only happens sometimes).
+                                       // There appears to be no workaround for this - googled for quite a while.
+                                       ntr.setEndPoint("EndToEnd", tr);
+                                       pos = String(ntr.text).replace(/\r/g,"").length;
+                               }catch(e){
+                                       // If focus has shifted, 0 is fine for caret pos.
+                               }
+                       }
+                       return pos;
+               },
+
+               _setCaretPos: function(/*DomNode*/ element, /*Number*/ location){
+                       location = parseInt(location);
+                       dijit.selectInputText(element, location, location);
+               },
+
+               _setDisabledAttr: function(/*Boolean*/ value){
+                       // Additional code to set disabled state of ComboBox node.
+                       // Overrides _FormValueWidget._setDisabledAttr() or ValidationTextBox._setDisabledAttr().
+                       this.inherited(arguments);
+                       dijit.setWaiState(this.comboNode, "disabled", value);
+               },
+
+               _abortQuery: function(){
+                       // stop in-progress query
+                       if(this.searchTimer){
+                               clearTimeout(this.searchTimer);
+                               this.searchTimer = null;
+                       }
+                       if(this._fetchHandle){
+                               if(this._fetchHandle.abort){ this._fetchHandle.abort(); }
+                               this._fetchHandle = null;
+                       }
+               },
+
+               _onInput: function(/*Event*/ evt){
+                       // summary:
+                       //              Handles paste events
+                       if(!this.searchTimer && (evt.type == 'paste'/*IE|WebKit*/ || evt.type == 'input'/*Firefox*/) && this._lastInput != this.textbox.value){
+                               this.searchTimer = setTimeout(dojo.hitch(this, function(){
+                                       this._onKeyPress({charOrCode: 229}); // fake IME key to cause a search
+                               }), 100); // long delay that will probably be preempted by keyboard input
+                       }
+                       this.inherited(arguments);
+               },
+
+               _onKeyPress: function(/*Event*/ evt){
+                       // summary:
+                       //              Handles keyboard events
+                       var key = evt.charOrCode;
+                       // except for cutting/pasting case - ctrl + x/v
+                       if(evt.altKey || ((evt.ctrlKey || evt.metaKey) && (key != 'x' && key != 'v')) || key == dojo.keys.SHIFT){
+                               return; // throw out weird key combinations and spurious events
+                       }
+                       var doSearch = false;
+                       var searchFunction = "_startSearchFromInput";
+                       var pw = this._popupWidget;
+                       var dk = dojo.keys;
+                       var highlighted = null;
+                       this._prev_key_backspace = false;
+                       this._abortQuery();
+                       if(this._isShowingNow){
+                               pw.handleKey(key);
+                               highlighted = pw.getHighlightedOption();
+                       }
+                       switch(key){
+                               case dk.PAGE_DOWN:
+                               case dk.DOWN_ARROW:
+                               case dk.PAGE_UP:
+                               case dk.UP_ARROW:
+                                       if(!this._isShowingNow){
+                                               doSearch = true;
+                                               searchFunction = "_startSearchAll";
+                                       }else{
+                                               this._announceOption(highlighted);
+                                       }
+                                       dojo.stopEvent(evt);
+                                       break;
+
+                               case dk.ENTER:
+                                       // prevent submitting form if user presses enter. Also
+                                       // prevent accepting the value if either Next or Previous
+                                       // are selected
+                                       if(highlighted){
+                                               // only stop event on prev/next
+                                               if(highlighted == pw.nextButton){
+                                                       this._nextSearch(1);
+                                                       dojo.stopEvent(evt);
+                                                       break;
+                                               }else if(highlighted == pw.previousButton){
+                                                       this._nextSearch(-1);
+                                                       dojo.stopEvent(evt);
+                                                       break;
+                                               }
+                                       }else{
+                                               // Update 'value' (ex: KY) according to currently displayed text
+                                               this._setBlurValue(); // set value if needed
+                                               this._setCaretPos(this.focusNode, this.focusNode.value.length); // move cursor to end and cancel highlighting
+                                       }
+                                       // default case:
+                                       // prevent submit, but allow event to bubble
+                                       evt.preventDefault();
+                                       // fall through
+
+                               case dk.TAB:
+                                       var newvalue = this.get('displayedValue');
+                                       //      if the user had More Choices selected fall into the
+                                       //      _onBlur handler
+                                       if(pw && (
+                                               newvalue == pw._messages["previousMessage"] ||
+                                               newvalue == pw._messages["nextMessage"])
+                                       ){
+                                               break;
+                                       }
+                                       if(highlighted){
+                                               this._selectOption();
+                                       }
+                                       if(this._isShowingNow){
+                                               this._lastQuery = null; // in case results come back later
+                                               this._hideResultList();
+                                       }
+                                       break;
+
+                               case ' ':
+                                       if(highlighted){
+                                               dojo.stopEvent(evt);
+                                               this._selectOption();
+                                               this._hideResultList();
+                                       }else{
+                                               doSearch = true;
+                                       }
+                                       break;
+
+                               case dk.ESCAPE:
+                                       if(this._isShowingNow){
+                                               dojo.stopEvent(evt);
+                                               this._hideResultList();
+                                       }
+                                       break;
+
+                               case dk.DELETE:
+                               case dk.BACKSPACE:
+                                       this._prev_key_backspace = true;
+                                       doSearch = true;
+                                       break;
+
+                               default:
+                                       // Non char keys (F1-F12 etc..)  shouldn't open list.
+                                       // Ascii characters and IME input (Chinese, Japanese etc.) should.
+                                       // On IE and safari, IME input produces keycode == 229, and we simulate
+                                       // it on firefox by attaching to compositionend event (see compositionend method)
+                                       doSearch = typeof key == 'string' || key == 229;
+                       }
+                       if(doSearch){
+                               // need to wait a tad before start search so that the event
+                               // bubbles through DOM and we have value visible
+                               this.item = undefined; // undefined means item needs to be set
+                               this.searchTimer = setTimeout(dojo.hitch(this, searchFunction),1);
+                       }
+               },
+
+               _autoCompleteText: function(/*String*/ text){
+                       // summary:
+                       //              Fill in the textbox with the first item from the drop down
+                       //              list, and highlight the characters that were
+                       //              auto-completed. For example, if user typed "CA" and the
+                       //              drop down list appeared, the textbox would be changed to
+                       //              "California" and "ifornia" would be highlighted.
+
+                       var fn = this.focusNode;
+
+                       // IE7: clear selection so next highlight works all the time
+                       dijit.selectInputText(fn, fn.value.length);
+                       // does text autoComplete the value in the textbox?
+                       var caseFilter = this.ignoreCase? 'toLowerCase' : 'substr';
+                       if(text[caseFilter](0).indexOf(this.focusNode.value[caseFilter](0)) == 0){
+                               var cpos = this._getCaretPos(fn);
+                               // only try to extend if we added the last character at the end of the input
+                               if((cpos+1) > fn.value.length){
+                                       // only add to input node as we would overwrite Capitalisation of chars
+                                       // actually, that is ok
+                                       fn.value = text;//.substr(cpos);
+                                       // visually highlight the autocompleted characters
+                                       dijit.selectInputText(fn, cpos);
+                               }
+                       }else{
+                               // text does not autoComplete; replace the whole value and highlight
+                               fn.value = text;
+                               dijit.selectInputText(fn);
+                       }
+               },
+
+               _openResultList: function(/*Object*/ results, /*Object*/ dataObject){
+                       this._fetchHandle = null;
+                       if(     this.disabled ||
+                               this.readOnly ||
+                               (dataObject.query[this.searchAttr] != this._lastQuery)
+                       ){
+                               return;
+                       }
+                       this._popupWidget.clearResultList();
+                       if(!results.length && !this._maxOptions){ // this condition needs to match !this._isvalid set in FilteringSelect::_openResultList
+                               this._hideResultList();
+                               return;
+                       }
+
+
+                       // Fill in the textbox with the first item from the drop down list,
+                       // and highlight the characters that were auto-completed. For
+                       // example, if user typed "CA" and the drop down list appeared, the
+                       // textbox would be changed to "California" and "ifornia" would be
+                       // highlighted.
+
+                       dataObject._maxOptions = this._maxOptions;
+                       var nodes = this._popupWidget.createOptions(
+                               results,
+                               dataObject,
+                               dojo.hitch(this, "_getMenuLabelFromItem")
+                       );
+
+                       // show our list (only if we have content, else nothing)
+                       this._showResultList();
+
+                       // #4091:
+                       //              tell the screen reader that the paging callback finished by
+                       //              shouting the next choice
+                       if(dataObject.direction){
+                               if(1 == dataObject.direction){
+                                       this._popupWidget.highlightFirstOption();
+                               }else if(-1 == dataObject.direction){
+                                       this._popupWidget.highlightLastOption();
+                               }
+                               this._announceOption(this._popupWidget.getHighlightedOption());
+                       }else if(this.autoComplete && !this._prev_key_backspace /*&& !dataObject.direction*/
+                               // when the user clicks the arrow button to show the full list,
+                               // startSearch looks for "*".
+                               // it does not make sense to autocomplete
+                               // if they are just previewing the options available.
+                               && !/^[*]+$/.test(dataObject.query[this.searchAttr])){
+                                       this._announceOption(nodes[1]); // 1st real item
+                       }
+               },
+
+               _showResultList: function(){
+                       this._hideResultList();
+                       // hide the tooltip
+                       this.displayMessage("");
+
+                       // Position the list and if it's too big to fit on the screen then
+                       // size it to the maximum possible height
+                       // Our dear friend IE doesnt take max-height so we need to
+                       // calculate that on our own every time
+
+                       // TODO: want to redo this, see
+                       //              http://trac.dojotoolkit.org/ticket/3272
+                       //      and
+                       //              http://trac.dojotoolkit.org/ticket/4108
+
+
+                       // natural size of the list has changed, so erase old
+                       // width/height settings, which were hardcoded in a previous
+                       // call to this function (via dojo.marginBox() call)
+                       dojo.style(this._popupWidget.domNode, {width: "", height: ""});
+
+                       var best = this.open();
+                       // #3212:
+                       //              only set auto scroll bars if necessary prevents issues with
+                       //              scroll bars appearing when they shouldn't when node is made
+                       //              wider (fractional pixels cause this)
+                       var popupbox = dojo.marginBox(this._popupWidget.domNode);
+                       this._popupWidget.domNode.style.overflow =
+                               ((best.h == popupbox.h) && (best.w == popupbox.w)) ? "hidden" : "auto";
+                       // #4134:
+                       //              borrow TextArea scrollbar test so content isn't covered by
+                       //              scrollbar and horizontal scrollbar doesn't appear
+                       var newwidth = best.w;
+                       if(best.h < this._popupWidget.domNode.scrollHeight){
+                               newwidth += 16;
+                       }
+                       dojo.marginBox(this._popupWidget.domNode, {
+                               h: best.h,
+                               w: Math.max(newwidth, this.domNode.offsetWidth)
+                       });
+                       
+                       // If we increased the width of drop down to match the width of ComboBox.domNode,
+                       // then need to reposition the drop down (wrapper) so (all of) the drop down still
+                       // appears underneath the ComboBox.domNode
+                       if(newwidth < this.domNode.offsetWidth){
+                               this._popupWidget.domNode.parentNode.style.left = dojo.position(this.domNode, true).x + "px";
+                       }
+
+                       dijit.setWaiState(this.comboNode, "expanded", "true");
+               },
+
+               _hideResultList: function(){
+                       this._abortQuery();
+                       if(this._isShowingNow){
+                               dijit.popup.close(this._popupWidget);
+                               this._isShowingNow=false;
+                               dijit.setWaiState(this.comboNode, "expanded", "false");
+                               dijit.removeWaiState(this.focusNode,"activedescendant");
+                       }
+               },
+
+               _setBlurValue: function(){
+                       // if the user clicks away from the textbox OR tabs away, set the
+                       // value to the textbox value
+                       // #4617:
+                       //              if value is now more choices or previous choices, revert
+                       //              the value
+                       var newvalue = this.get('displayedValue');
+                       var pw = this._popupWidget;
+                       if(pw && (
+                               newvalue == pw._messages["previousMessage"] ||
+                               newvalue == pw._messages["nextMessage"]
+                               )
+                       ){
+                               this._setValueAttr(this._lastValueReported, true);
+                       }else if(typeof this.item == "undefined"){
+                               // Update 'value' (ex: KY) according to currently displayed text
+                               this.item = null;
+                               this.set('displayedValue', newvalue);
+                       }else{
+                               if(this.value != this._lastValueReported){
+                                       dijit.form._FormValueWidget.prototype._setValueAttr.call(this, this.value, true);
+                               }
+                               this._refreshState();
+                       }
+               },
+
+               _onBlur: function(){
+                       // summary:
+                       //              Called magically when focus has shifted away from this widget and it's drop down
+                       this._hideResultList();
+                       this.inherited(arguments);
+               },
+
+               _setItemAttr: function(/*item*/ item, /*Boolean?*/ priorityChange, /*String?*/ displayedValue){
+                       // summary:
+                       //              Set the displayed valued in the input box, and the hidden value
+                       //              that gets submitted, based on a dojo.data store item.
+                       // description:
+                       //              Users shouldn't call this function; they should be calling
+                       //              attr('item', value)
+                       // tags:
+                       //              private
+                       if(!displayedValue){ displayedValue = this.labelFunc(item, this.store); }
+                       this.value = this._getValueField() != this.searchAttr? this.store.getIdentity(item) : displayedValue;
+                       this.item = item;
+                       dijit.form.ComboBox.superclass._setValueAttr.call(this, this.value, priorityChange, displayedValue);
+               },
+
+               _announceOption: function(/*Node*/ node){
+                       // summary:
+                       //              a11y code that puts the highlighted option in the textbox.
+                       //              This way screen readers will know what is happening in the
+                       //              menu.
+
+                       if(!node){
+                               return;
+                       }
+                       // pull the text value from the item attached to the DOM node
+                       var newValue;
+                       if(node == this._popupWidget.nextButton ||
+                               node == this._popupWidget.previousButton){
+                               newValue = node.innerHTML;
+                               this.item = undefined;
+                               this.value = '';
+                       }else{
+                               newValue = this.labelFunc(node.item, this.store);
+                               this.set('item', node.item, false, newValue);
+                       }
+                       // get the text that the user manually entered (cut off autocompleted text)
+                       this.focusNode.value = this.focusNode.value.substring(0, this._lastInput.length);
+                       // set up ARIA activedescendant
+                       dijit.setWaiState(this.focusNode, "activedescendant", dojo.attr(node, "id"));
+                       // autocomplete the rest of the option to announce change
+                       this._autoCompleteText(newValue);
+               },
+
+               _selectOption: function(/*Event*/ evt){
+                       // summary:
+                       //              Menu callback function, called when an item in the menu is selected.
+                       if(evt){
+                               this._announceOption(evt.target);
+                       }
+                       this._hideResultList();
+                       this._setCaretPos(this.focusNode, this.focusNode.value.length);
+                       dijit.form._FormValueWidget.prototype._setValueAttr.call(this, this.value, true); // set this.value and fire onChange
+               },
+
+               _onArrowMouseDown: function(evt){
+                       // summary:
+                       //              Callback when arrow is clicked
+                       if(this.disabled || this.readOnly){
+                               return;
+                       }
+                       dojo.stopEvent(evt);
+                       this.focus();
+                       if(this._isShowingNow){
+                               this._hideResultList();
+                       }else{
+                               // forces full population of results, if they click
+                               // on the arrow it means they want to see more options
+                               this._startSearchAll();
+                       }
+               },
+
+               _startSearchAll: function(){
+                       this._startSearch('');
+               },
+
+               _startSearchFromInput: function(){
+                       this._startSearch(this.focusNode.value.replace(/([\\\*\?])/g, "\\$1"));
+               },
+
+               _getQueryString: function(/*String*/ text){
+                       return dojo.string.substitute(this.queryExpr, [text]);
+               },
+
+               _startSearch: function(/*String*/ key){
+                       if(!this._popupWidget){
+                               var popupId = this.id + "_popup";
+                               this._popupWidget = new dijit.form._ComboBoxMenu({
+                                       onChange: dojo.hitch(this, this._selectOption),
+                                       id: popupId,
+                                       dir: this.dir
+                               });
+                               dijit.removeWaiState(this.focusNode,"activedescendant");
+                               dijit.setWaiState(this.textbox,"owns",popupId); // associate popup with textbox
+                       }
+                       // create a new query to prevent accidentally querying for a hidden
+                       // value from FilteringSelect's keyField
+                       var query = dojo.clone(this.query); // #5970
+                       this._lastInput = key; // Store exactly what was entered by the user.
+                       this._lastQuery = query[this.searchAttr] = this._getQueryString(key);
+                       // #5970: set _lastQuery, *then* start the timeout
+                       // otherwise, if the user types and the last query returns before the timeout,
+                       // _lastQuery won't be set and their input gets rewritten
+                       this.searchTimer=setTimeout(dojo.hitch(this, function(query, _this){
+                               this.searchTimer = null;
+                               var fetch = {
+                                       queryOptions: {
+                                               ignoreCase: this.ignoreCase,
+                                               deep: true
+                                       },
+                                       query: query,
+                                       onBegin: dojo.hitch(this, "_setMaxOptions"),
+                                       onComplete: dojo.hitch(this, "_openResultList"),
+                                       onError: function(errText){
+                                               _this._fetchHandle = null;
+                                               console.error('dijit.form.ComboBox: ' + errText);
+                                               dojo.hitch(_this, "_hideResultList")();
+                                       },
+                                       start: 0,
+                                       count: this.pageSize
+                               };
+                               dojo.mixin(fetch, _this.fetchProperties);
+                               this._fetchHandle = _this.store.fetch(fetch);
+
+                               var nextSearch = function(dataObject, direction){
+                                       dataObject.start += dataObject.count*direction;
+                                       // #4091:
+                                       //              tell callback the direction of the paging so the screen
+                                       //              reader knows which menu option to shout
+                                       dataObject.direction = direction;
+                                       this._fetchHandle = this.store.fetch(dataObject);
+                               };
+                               this._nextSearch = this._popupWidget.onPage = dojo.hitch(this, nextSearch, this._fetchHandle);
+                       }, query, this), this.searchDelay);
+               },
+
+               _setMaxOptions: function(size, request){
+                        this._maxOptions = size;
+               },
+
+               _getValueField: function(){
+                       // summmary:
+                       //              Helper for postMixInProperties() to set this.value based on data inlined into the markup.
+                       //              Returns the attribute name in the item (in dijit.form._ComboBoxDataStore) to use as the value.
+                       return this.searchAttr;
+               },
+
+               /////////////// Event handlers /////////////////////
+
+               // FIXME: For 2.0, rename to "_compositionEnd"
+               compositionend: function(/*Event*/ evt){
+                       // summary:
+                       //              When inputting characters using an input method, such as
+                       //              Asian languages, it will generate this event instead of
+                       //              onKeyDown event.
+                       //              Note: this event is only triggered in FF (not in IE/safari)
+                       // tags:
+                       //              private
+
+                       // 229 is the code produced by IE and safari while pressing keys during
+                       // IME input mode
+                       this._onKeyPress({charOrCode: 229});
+               },
+
+               //////////// INITIALIZATION METHODS ///////////////////////////////////////
+
+               constructor: function(){
+                       this.query={};
+                       this.fetchProperties={};
+               },
+
+               postMixInProperties: function(){
+                       if(!this.store){
+                               var srcNodeRef = this.srcNodeRef;
+
+                               // if user didn't specify store, then assume there are option tags
+                               this.store = new dijit.form._ComboBoxDataStore(srcNodeRef);
+
+                               // if there is no value set and there is an option list, set
+                               // the value to the first value to be consistent with native
+                               // Select
+
+                               // Firefox and Safari set value
+                               // IE6 and Opera set selectedIndex, which is automatically set
+                               // by the selected attribute of an option tag
+                               // IE6 does not set value, Opera sets value = selectedIndex
+                               if(!("value" in this.params)){
+                                       var item = this.store.fetchSelectedItem();
+                                       if(item){
+                                               var valueField = this._getValueField();
+                                               this.value = valueField != this.searchAttr? this.store.getValue(item, valueField) : this.labelFunc(item, this.store);
+                                       }
+                               }
+                       }
+                       this.inherited(arguments);
+               },
+
+               postCreate: function(){
+                       // summary:
+                       //              Subclasses must call this method from their postCreate() methods
+                       // tags:
+                       //              protected
+
+                       if(!this.hasDownArrow){
+                               this.downArrowNode.style.display = "none";
+                       }
+
+                       // find any associated label element and add to ComboBox node.
+                       var label=dojo.query('label[for="'+this.id+'"]');
+                       if(label.length){
+                               label[0].id = (this.id+"_label");
+                               var cn=this.comboNode;
+                               dijit.setWaiState(cn, "labelledby", label[0].id);
+
+                       }
+                       this.inherited(arguments);
+               },
+
+               uninitialize: function(){
+                       if(this._popupWidget && !this._popupWidget._destroyed){
+                               this._hideResultList();
+                               this._popupWidget.destroy();
+                       }
+                       this.inherited(arguments);
+               },
+
+               _getMenuLabelFromItem: function(/*Item*/ item){
+                       var label = this.labelAttr? this.store.getValue(item, this.labelAttr) : this.labelFunc(item, this.store);
+                       var labelType = this.labelType;
+                       // If labelType is not "text" we don't want to screw any markup ot whatever.
+                       if(this.highlightMatch != "none" && this.labelType == "text" && this._lastInput){
+                               label = this.doHighlight(label, this._escapeHtml(this._lastInput));
+                               labelType = "html";
+                       }
+                       return {html: labelType == "html", label: label};
+               },
+
+               doHighlight: function(/*String*/label, /*String*/find){
+                       // summary:
+                       //              Highlights the string entered by the user in the menu.  By default this
+                       //              highlights the first occurence found. Override this method
+                       //              to implement your custom highlighing.
+                       // tags:
+                       //              protected
+
+                       // Add greedy when this.highlightMatch == "all"
+                       var modifiers = "i"+(this.highlightMatch == "all"?"g":"");
+                       var escapedLabel = this._escapeHtml(label);
+                       find = dojo.regexp.escapeString(find); // escape regexp special chars
+                       var ret = escapedLabel.replace(new RegExp("(^|\\s)("+ find +")", modifiers),
+                                       '$1<span class="dijitComboBoxHighlightMatch">$2</span>');
+                       return ret;// returns String, (almost) valid HTML (entities encoded)
+               },
+
+               _escapeHtml: function(/*string*/str){
+                       // TODO Should become dojo.html.entities(), when exists use instead
+                       // summary:
+                       //              Adds escape sequences for special characters in XML: &<>"'
+                       str = String(str).replace(/&/gm, "&amp;").replace(/</gm, "&lt;")
+                               .replace(/>/gm, "&gt;").replace(/"/gm, "&quot;");
+                       return str; // string
+               },
+
+               open: function(){
+                       // summary:
+                       //              Opens the drop down menu.  TODO: rename to _open.
+                       // tags:
+                       //              private
+                       this._isShowingNow=true;
+                       return dijit.popup.open({
+                               popup: this._popupWidget,
+                               around: this.domNode,
+                               parent: this
+                       });
+               },
+
+               reset: function(){
+                       // Overrides the _FormWidget.reset().
+                       // Additionally reset the .item (to clean up).
+                       this.item = null;
+                       this.inherited(arguments);
+               },
+
+               labelFunc: function(/*item*/ item, /*dojo.data.store*/ store){
+                       // summary:
+                       //              Computes the label to display based on the dojo.data store item.
+                       // returns:
+                       //              The label that the ComboBox should display
+                       // tags:
+                       //              private
+
+                       // Use toString() because XMLStore returns an XMLItem whereas this
+                       // method is expected to return a String (#9354)
+                       return store.getValue(item, this.searchAttr).toString(); // String
+               }
+       }
+);
+
+dojo.declare(
+       "dijit.form._ComboBoxMenu",
+       [dijit._Widget, dijit._Templated, dijit._CssStateMixin],
+       {
+               // summary:
+               //              Focus-less menu for internal use in `dijit.form.ComboBox`
+               // tags:
+               //              private
+
+               templateString: "<ul class='dijitReset dijitMenu' dojoAttachEvent='onmousedown:_onMouseDown,onmouseup:_onMouseUp,onmouseover:_onMouseOver,onmouseout:_onMouseOut' tabIndex='-1' style='overflow: \"auto\"; overflow-x: \"hidden\";'>"
+                               +"<li class='dijitMenuItem dijitMenuPreviousButton' dojoAttachPoint='previousButton' waiRole='option'></li>"
+                               +"<li class='dijitMenuItem dijitMenuNextButton' dojoAttachPoint='nextButton' waiRole='option'></li>"
+                       +"</ul>",
+
+               // _messages: Object
+               //              Holds "next" and "previous" text for paging buttons on drop down
+               _messages: null,
+               
+               baseClass: "dijitComboBoxMenu",
+
+               postMixInProperties: function(){
+                       this._messages = dojo.i18n.getLocalization("dijit.form", "ComboBox", this.lang);
+                       this.inherited(arguments);
+               },
+
+               _setValueAttr: function(/*Object*/ value){
+                       this.value = value;
+                       this.onChange(value);
+               },
+
+               // stubs
+               onChange: function(/*Object*/ value){
+                       // summary:
+                       //              Notifies ComboBox/FilteringSelect that user clicked an option in the drop down menu.
+                       //              Probably should be called onSelect.
+                       // tags:
+                       //              callback
+               },
+               onPage: function(/*Number*/ direction){
+                       // summary:
+                       //              Notifies ComboBox/FilteringSelect that user clicked to advance to next/previous page.
+                       // tags:
+                       //              callback
+               },
+
+               postCreate: function(){
+                       // fill in template with i18n messages
+                       this.previousButton.innerHTML = this._messages["previousMessage"];
+                       this.nextButton.innerHTML = this._messages["nextMessage"];
+                       this.inherited(arguments);
+               },
+
+               onClose: function(){
+                       // summary:
+                       //              Callback from dijit.popup code to this widget, notifying it that it closed
+                       // tags:
+                       //              private
+                       this._blurOptionNode();
+               },
+
+               _createOption: function(/*Object*/ item, labelFunc){
+                       // summary:
+                       //              Creates an option to appear on the popup menu subclassed by
+                       //              `dijit.form.FilteringSelect`.
+
+                       var labelObject = labelFunc(item);
+                       var menuitem = dojo.doc.createElement("li");
+                       dijit.setWaiRole(menuitem, "option");
+                       if(labelObject.html){
+                               menuitem.innerHTML = labelObject.label;
+                       }else{
+                               menuitem.appendChild(
+                                       dojo.doc.createTextNode(labelObject.label)
+                               );
+                       }
+                       // #3250: in blank options, assign a normal height
+                       if(menuitem.innerHTML == ""){
+                               menuitem.innerHTML = "&nbsp;";
+                       }
+                       menuitem.item=item;
+                       return menuitem;
+               },
+
+               createOptions: function(results, dataObject, labelFunc){
+                       // summary:
+                       //              Fills in the items in the drop down list
+                       // results:
+                       //              Array of dojo.data items
+                       // dataObject:
+                       //              dojo.data store
+                       // labelFunc:
+                       //              Function to produce a label in the drop down list from a dojo.data item
+
+                       //this._dataObject=dataObject;
+                       //this._dataObject.onComplete=dojo.hitch(comboBox, comboBox._openResultList);
+                       // display "Previous . . ." button
+                       this.previousButton.style.display = (dataObject.start == 0) ? "none" : "";
+                       dojo.attr(this.previousButton, "id", this.id + "_prev");
+                       // create options using _createOption function defined by parent
+                       // ComboBox (or FilteringSelect) class
+                       // #2309:
+                       //              iterate over cache nondestructively
+                       dojo.forEach(results, function(item, i){
+                               var menuitem = this._createOption(item, labelFunc);
+                               menuitem.className = "dijitReset dijitMenuItem" +
+                                       (this.isLeftToRight() ? "" : " dijitMenuItemRtl");
+                               dojo.attr(menuitem, "id", this.id + i);
+                               this.domNode.insertBefore(menuitem, this.nextButton);
+                       }, this);
+                       // display "Next . . ." button
+                       var displayMore = false;
+                       //Try to determine if we should show 'more'...
+                       if(dataObject._maxOptions && dataObject._maxOptions != -1){
+                               if((dataObject.start + dataObject.count) < dataObject._maxOptions){
+                                       displayMore = true;
+                               }else if((dataObject.start + dataObject.count) > dataObject._maxOptions && dataObject.count == results.length){
+                                       //Weird return from a datastore, where a start + count > maxOptions
+                                       // implies maxOptions isn't really valid and we have to go into faking it.
+                                       //And more or less assume more if count == results.length
+                                       displayMore = true;
+                               }
+                       }else if(dataObject.count == results.length){
+                               //Don't know the size, so we do the best we can based off count alone.
+                               //So, if we have an exact match to count, assume more.
+                               displayMore = true;
+                       }
+
+                       this.nextButton.style.display = displayMore ? "" : "none";
+                       dojo.attr(this.nextButton,"id", this.id + "_next");
+                       return this.domNode.childNodes;
+               },
+
+               clearResultList: function(){
+                       // summary:
+                       //              Clears the entries in the drop down list, but of course keeps the previous and next buttons.
+                       while(this.domNode.childNodes.length>2){
+                               this.domNode.removeChild(this.domNode.childNodes[this.domNode.childNodes.length-2]);
+                       }
+               },
+
+               _onMouseDown: function(/*Event*/ evt){
+                       dojo.stopEvent(evt);
+               },
+
+               _onMouseUp: function(/*Event*/ evt){
+                       if(evt.target === this.domNode || !this._highlighted_option){
+                               return;
+                       }else if(evt.target == this.previousButton){
+                               this.onPage(-1);
+                       }else if(evt.target == this.nextButton){
+                               this.onPage(1);
+                       }else{
+                               var tgt = evt.target;
+                               // while the clicked node is inside the div
+                               while(!tgt.item){
+                                       // recurse to the top
+                                       tgt = tgt.parentNode;
+                               }
+                               this._setValueAttr({ target: tgt }, true);
+                       }
+               },
+
+               _onMouseOver: function(/*Event*/ evt){
+                       if(evt.target === this.domNode){ return; }
+                       var tgt = evt.target;
+                       if(!(tgt == this.previousButton || tgt == this.nextButton)){
+                               // while the clicked node is inside the div
+                               while(!tgt.item){
+                                       // recurse to the top
+                                       tgt = tgt.parentNode;
+                               }
+                       }
+                       this._focusOptionNode(tgt);
+               },
+
+               _onMouseOut: function(/*Event*/ evt){
+                       if(evt.target === this.domNode){ return; }
+                       this._blurOptionNode();
+               },
+
+               _focusOptionNode: function(/*DomNode*/ node){
+                       // summary:
+                       //              Does the actual highlight.
+                       if(this._highlighted_option != node){
+                               this._blurOptionNode();
+                               this._highlighted_option = node;
+                               dojo.addClass(this._highlighted_option, "dijitMenuItemSelected");
+                       }
+               },
+
+               _blurOptionNode: function(){
+                       // summary:
+                       //              Removes highlight on highlighted option.
+                       if(this._highlighted_option){
+                               dojo.removeClass(this._highlighted_option, "dijitMenuItemSelected");
+                               this._highlighted_option = null;
+                       }
+               },
+
+               _highlightNextOption: function(){
+                       // summary:
+                       //              Highlight the item just below the current selection.
+                       //              If nothing selected, highlight first option.
+
+                       // because each press of a button clears the menu,
+                       // the highlighted option sometimes becomes detached from the menu!
+                       // test to see if the option has a parent to see if this is the case.
+                       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();
+                               }
+                       }
+                       // scrollIntoView is called outside of _focusOptionNode because in IE putting it inside causes the menu to scroll up on mouseover
+                       dojo.window.scrollIntoView(this._highlighted_option);
+               },
+
+               highlightFirstOption: function(){
+                       // summary:
+                       //              Highlight the first real item in the list (not Previous Choices).
+                       var first = this.domNode.firstChild;
+                       var second = first.nextSibling;
+                       this._focusOptionNode(second.style.display == "none" ? first : second); // remotely possible that Previous Choices is the only thing in the list
+                       dojo.window.scrollIntoView(this._highlighted_option);
+               },
+
+               highlightLastOption: function(){
+                       // summary:
+                       //              Highlight the last real item in the list (not More Choices).
+                       this._focusOptionNode(this.domNode.lastChild.previousSibling);
+                       dojo.window.scrollIntoView(this._highlighted_option);
+               },
+
+               _highlightPrevOption: function(){
+                       // summary:
+                       //              Highlight the item just above the current selection.
+                       //              If nothing selected, highlight last option (if
+                       //              you select Previous and try to keep scrolling up the list).
+                       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(/*Boolean*/ up){
+                       // summary:
+                       //              Handles page-up and page-down keypresses
+
+                       var scrollamount = 0;
+                       var oldscroll = this.domNode.scrollTop;
+                       var height = dojo.style(this.domNode, "height");
+                       // if no item is highlighted, highlight the first option
+                       if(!this.getHighlightedOption()){
+                               this._highlightNextOption();
+                       }
+                       while(scrollamount<height){
+                               if(up){
+                                       // stop at option 1
+                                       if(!this.getHighlightedOption().previousSibling ||
+                                               this._highlighted_option.previousSibling.style.display == "none"){
+                                               break;
+                                       }
+                                       this._highlightPrevOption();
+                               }else{
+                                       // stop at last option
+                                       if(!this.getHighlightedOption().nextSibling ||
+                                               this._highlighted_option.nextSibling.style.display == "none"){
+                                               break;
+                                       }
+                                       this._highlightNextOption();
+                               }
+                               // going backwards
+                               var newscroll=this.domNode.scrollTop;
+                               scrollamount+=(newscroll-oldscroll)*(up ? -1:1);
+                               oldscroll=newscroll;
+                       }
+               },
+
+               pageUp: function(){
+                       // summary:
+                       //              Handles pageup keypress.
+                       //              TODO: just call _page directly from handleKey().
+                       // tags:
+                       //              private
+                       this._page(true);
+               },
+
+               pageDown: function(){
+                       // summary:
+                       //              Handles pagedown keypress.
+                       //              TODO: just call _page directly from handleKey().
+                       // tags:
+                       //              private
+                       this._page(false);
+               },
+
+               getHighlightedOption: function(){
+                       // summary:
+                       //              Returns the highlighted option.
+                       var ho = this._highlighted_option;
+                       return (ho && ho.parentNode) ? ho : null;
+               },
+
+               handleKey: function(key){
+                       switch(key){
+                               case dojo.keys.DOWN_ARROW:
+                                       this._highlightNextOption();
+                                       break;
+                               case dojo.keys.PAGE_DOWN:
+                                       this.pageDown();
+                                       break;
+                               case dojo.keys.UP_ARROW:
+                                       this._highlightPrevOption();
+                                       break;
+                               case dojo.keys.PAGE_UP:
+                                       this.pageUp();
+                                       break;
+                       }
+               }
+       }
+);
+
+dojo.declare(
+       "dijit.form.ComboBox",
+       [dijit.form.ValidationTextBox, dijit.form.ComboBoxMixin],
+       {
+               // summary:
+               //              Auto-completing text box, and base class for dijit.form.FilteringSelect.
+               //
+               // description:
+               //              The drop down box's values are populated from an class called
+               //              a data provider, which returns a list of values based on the characters
+               //              that the user has typed into the input box.
+               //              If OPTION tags are used as the data provider via markup,
+               //              then the OPTION tag's child text node is used as the widget value
+               //              when selected.  The OPTION tag's value attribute is ignored.
+               //              To set the default value when using OPTION tags, specify the selected
+               //              attribute on 1 of the child OPTION tags.
+               //
+               //              Some of the options to the ComboBox are actually arguments to the data
+               //              provider.
+
+               _setValueAttr: function(/*String*/ value, /*Boolean?*/ priorityChange, /*String?*/ displayedValue){
+                       // summary:
+                       //              Hook so attr('value', value) works.
+                       // description:
+                       //              Sets the value of the select.
+                       this.item = null; // value not looked up in store
+                       if(!value){ value = ''; } // null translates to blank
+                       dijit.form.ValidationTextBox.prototype._setValueAttr.call(this, value, priorityChange, displayedValue);
+               }
+       }
+);
+
+dojo.declare("dijit.form._ComboBoxDataStore", null, {
+       // summary:
+       //              Inefficient but small data store specialized for inlined `dijit.form.ComboBox` data
+       //
+       // description:
+       //              Provides a store for inlined data like:
+       //
+       //      |       <select>
+       //      |               <option value="AL">Alabama</option>
+       //      |               ...
+       //
+       //              Actually. just implements the subset of dojo.data.Read/Notification
+       //              needed for ComboBox and FilteringSelect to work.
+       //
+       //              Note that an item is just a pointer to the <option> DomNode.
+
+       constructor: function( /*DomNode*/ root){
+               this.root = root;
+               if(root.tagName != "SELECT" && root.firstChild){
+                       root = dojo.query("select", root);
+                       if(root.length > 0){ // SELECT is a child of srcNodeRef
+                               root = root[0];
+                       }else{ // no select, so create 1 to parent the option tags to define selectedIndex
+                               this.root.innerHTML = "<SELECT>"+this.root.innerHTML+"</SELECT>";
+                               root = this.root.firstChild;
+                       }
+                       this.root = root;
+               }
+               dojo.query("> option", root).forEach(function(node){
+                       //      TODO: this was added in #3858 but unclear why/if it's needed;  doesn't seem to be.
+                       //      If it is needed then can we just hide the select itself instead?
+                       //node.style.display="none";
+                       node.innerHTML = dojo.trim(node.innerHTML);
+               });
+
+       },
+
+       getValue: function(     /* item */ item,
+                                               /* attribute-name-string */ attribute,
+                                               /* value? */ defaultValue){
+               return (attribute == "value") ? item.value : (item.innerText || item.textContent || '');
+       },
+
+       isItemLoaded: function(/* anything */ something){
+               return true;
+       },
+
+       getFeatures: function(){
+               return {"dojo.data.api.Read": true, "dojo.data.api.Identity": true};
+       },
+
+       _fetchItems: function(  /* Object */ args,
+                                                       /* Function */ findCallback,
+                                                       /* Function */ errorCallback){
+               // summary:
+               //              See dojo.data.util.simpleFetch.fetch()
+               if(!args.query){ args.query = {}; }
+               if(!args.query.name){ args.query.name = ""; }
+               if(!args.queryOptions){ args.queryOptions = {}; }
+               var matcher = dojo.data.util.filter.patternToRegExp(args.query.name, args.queryOptions.ignoreCase),
+                       items = dojo.query("> option", this.root).filter(function(option){
+                               return (option.innerText || option.textContent || '').match(matcher);
+                       } );
+               if(args.sort){
+                       items.sort(dojo.data.util.sorter.createSortFunction(args.sort, this));
+               }
+               findCallback(items, args);
+       },
+
+       close: function(/*dojo.data.api.Request || args || null */ request){
+               return;
+       },
+
+       getLabel: function(/* item */ item){
+               return item.innerHTML;
+       },
+
+       getIdentity: function(/* item */ item){
+               return dojo.attr(item, "value");
+       },
+
+       fetchItemByIdentity: function(/* Object */ args){
+               // summary:
+               //              Given the identity of an item, this method returns the item that has
+               //              that identity through the onItem callback.
+               //              Refer to dojo.data.api.Identity.fetchItemByIdentity() for more details.
+               //
+               // description:
+               //              Given arguments like:
+               //
+               //      |               {identity: "CA", onItem: function(item){...}
+               //
+               //              Call `onItem()` with the DOM node `<option value="CA">California</option>`
+               var item = dojo.query("> option[value='" + args.identity + "']", this.root)[0];
+               args.onItem(item);
+       },
+
+       fetchSelectedItem: function(){
+               // summary:
+               //              Get the option marked as selected, like `<option selected>`.
+               //              Not part of dojo.data API.
+               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.data.Item
+       }
+});
+//Mix in the simple fetch implementation to this class.
+dojo.extend(dijit.form._ComboBoxDataStore,dojo.data.util.simpleFetch);
+
+}
+
+if(!dojo._hasResource["dijit.form.FilteringSelect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.FilteringSelect"] = true;
+dojo.provide("dijit.form.FilteringSelect");
+
+
+
+dojo.declare(
+       "dijit.form.FilteringSelect",
+       [dijit.form.MappedTextBox, dijit.form.ComboBoxMixin],
+       {
+               // summary:
+               //              An enhanced version of the HTML SELECT tag, populated dynamically
+               //
+               // description:
+               //              An enhanced version of the HTML SELECT tag, populated dynamically. It works
+               //              very nicely with very large data sets because it can load and page data as needed.
+               //              It also resembles ComboBox, but does not allow values outside of the provided ones.
+               //              If OPTION tags are used as the data provider via markup, then the
+               //              OPTION tag's child text node is used as the displayed value when selected
+               //              while the OPTION tag's value attribute is used as the widget value on form submit.
+               //              To set the default value when using OPTION tags, specify the selected
+               //              attribute on 1 of the child OPTION tags.
+               //
+               //              Similar features:
+               //                      - There is a drop down list of possible values.
+               //                      - You can only enter a value from the drop down list.  (You can't
+               //                              enter an arbitrary value.)
+               //                      - The value submitted with the form is the hidden value (ex: CA),
+               //                              not the displayed value a.k.a. label (ex: California)
+               //
+               //              Enhancements over plain HTML version:
+               //                      - If you type in some text then it will filter down the list of
+               //                              possible values in the drop down list.
+               //                      - List can be specified either as a static list or via a javascript
+               //                              function (that can get the list from a server)
+
+               _isvalid: true,
+
+               // required: Boolean
+               //              True (default) if user is required to enter a value into this field.
+               required: true,
+
+               _lastDisplayedValue: "",
+
+               isValid: function(){
+                       // Overrides ValidationTextBox.isValid()
+                       return this._isvalid || (!this.required && this.get('displayedValue') == ""); // #5974
+               },
+
+               _refreshState: function(){
+                       if(!this.searchTimer){ // state will be refreshed after results are returned
+                               this.inherited(arguments);
+                       }
+               },
+
+               _callbackSetLabel: function(    /*Array*/ result,
+                                               /*Object*/ dataObject,
+                                               /*Boolean?*/ priorityChange){
+                       // summary:
+                       //              Callback function that dynamically sets the label of the
+                       //              ComboBox
+
+                       // setValue does a synchronous lookup,
+                       // so it calls _callbackSetLabel directly,
+                       // and so does not pass dataObject
+                       // still need to test against _lastQuery in case it came too late
+                       if((dataObject && dataObject.query[this.searchAttr] != this._lastQuery) || (!dataObject && result.length && this.store.getIdentity(result[0]) != this._lastQuery)){
+                               return;
+                       }
+                       if(!result.length){
+                               //#3268: do nothing on bad input
+                               //#3285: change CSS to indicate error
+                               this.valueNode.value = "";
+                               dijit.form.TextBox.superclass._setValueAttr.call(this, "", priorityChange || (priorityChange === undefined && !this._focused));
+                               this._isvalid = false;
+                               this.validate(this._focused);
+                               this.item = null;
+                       }else{
+                               this.set('item', result[0], priorityChange);
+                       }
+               },
+
+               _openResultList: function(/*Object*/ results, /*Object*/ dataObject){
+                       // Overrides ComboBox._openResultList()
+
+                       // #3285: tap into search callback to see if user's query resembles a match
+                       if(dataObject.query[this.searchAttr] != this._lastQuery){
+                               return;
+                       }
+                       if(this.item === undefined){ // item == undefined for keyboard search
+                               this._isvalid = results.length != 0 || this._maxOptions != 0; // result.length==0 && maxOptions != 0 implies the nextChoices item selected but then the datastore returned 0 more entries
+                               this.validate(true);
+                       }
+                       dijit.form.ComboBoxMixin.prototype._openResultList.apply(this, arguments);
+               },
+
+               _getValueAttr: function(){
+                       // summary:
+                       //              Hook for attr('value') to work.
+
+                       // don't get the textbox value but rather the previously set hidden value.
+                       // Use this.valueNode.value which isn't always set for other MappedTextBox widgets until blur
+                       return this.valueNode.value;
+               },
+
+               _getValueField: function(){
+                       // Overrides ComboBox._getValueField()
+                       return "value";
+               },
+
+               _setValueAttr: function(/*String*/ value, /*Boolean?*/ priorityChange){
+                       // summary:
+                       //              Hook so attr('value', value) works.
+                       // description:
+                       //              Sets the value of the select.
+                       //              Also sets the label to the corresponding value by reverse lookup.
+                       if(!this._onChangeActive){ priorityChange = null; }
+                       this._lastQuery = value;
+
+                       if(value === null || value === ''){
+                               this._setDisplayedValueAttr('', priorityChange);
+                               return;
+                       }
+
+                       //#3347: fetchItemByIdentity if no keyAttr specified
+                       var self = this;
+                       this.store.fetchItemByIdentity({
+                               identity: value,
+                               onItem: function(item){
+                                       self._callbackSetLabel(item? [item] : [], undefined, priorityChange);
+                               }
+                       });
+               },
+
+               _setItemAttr: function(/*item*/ item, /*Boolean?*/ priorityChange, /*String?*/ displayedValue){
+                       // summary:
+                       //              Set the displayed valued in the input box, and the hidden value
+                       //              that gets submitted, based on a dojo.data store item.
+                       // description:
+                       //              Users shouldn't call this function; they should be calling
+                       //              attr('item', value)
+                       // tags:
+                       //              private
+                       this._isvalid = true;
+                       this.inherited(arguments);
+                       this.valueNode.value = this.value;
+                       this._lastDisplayedValue = this.textbox.value;
+               },
+
+               _getDisplayQueryString: function(/*String*/ text){
+                       return text.replace(/([\\\*\?])/g, "\\$1");
+               },
+
+               _setDisplayedValueAttr: function(/*String*/ label, /*Boolean?*/ priorityChange){
+                       // summary:
+                       //              Hook so attr('displayedValue', label) works.
+                       // description:
+                       //              Sets textbox to display label. Also performs reverse lookup
+                       //              to set the hidden value.
+
+                       // When this is called during initialization it'll ping the datastore
+                       // for reverse lookup, and when that completes (after an XHR request)
+                       // will call setValueAttr()... but that shouldn't trigger an onChange()
+                       // event, even when it happens after creation has finished
+                       if(!this._created){
+                               priorityChange = false;
+                       }
+
+                       if(this.store){
+                               this._hideResultList();
+                               var query = dojo.clone(this.query); // #6196: populate query with user-specifics
+                               // escape meta characters of dojo.data.util.filter.patternToRegExp().
+                               this._lastQuery = query[this.searchAttr] = this._getDisplayQueryString(label);
+                               // if the label is not valid, the callback will never set it,
+                               // so the last valid value will get the warning textbox set the
+                               // textbox value now so that the impending warning will make
+                               // sense to the user
+                               this.textbox.value = label;
+                               this._lastDisplayedValue = label;
+                               var _this = this;
+                               var fetch = {
+                                       query: query,
+                                       queryOptions: {
+                                               ignoreCase: this.ignoreCase,
+                                               deep: true
+                                       },
+                                       onComplete: function(result, dataObject){
+                                               _this._fetchHandle = null;
+                                               dojo.hitch(_this, "_callbackSetLabel")(result, dataObject, priorityChange);
+                                       },
+                                       onError: function(errText){
+                                               _this._fetchHandle = null;
+                                               console.error('dijit.form.FilteringSelect: ' + errText);
+                                               dojo.hitch(_this, "_callbackSetLabel")([], undefined, false);
+                                       }
+                               };
+                               dojo.mixin(fetch, this.fetchProperties);
+                               this._fetchHandle = this.store.fetch(fetch);
+                       }
+               },
+
+               postMixInProperties: function(){
+                       this.inherited(arguments);
+                       this._isvalid = !this.required;
+               },
+
+               undo: function(){
+                       this.set('displayedValue', this._lastDisplayedValue);
+               }
+       }
+);
+
+}
+
+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 == 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:'May 14, 1802'});
+                       //      |       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(!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:'July 18, 1918'}] }
+               // into this:
+               //              { name:['Kermit'], born:(new Date('July 18, 1918')) } 
+               //
+               // 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){
+                       item = this._itemsByIdentity[identity];
+               }else{
+                       item = this._arrayOfAllItems[identity];
+               }
+               if(item === undefined){
+                       item = null;
+               }
+               return item; // Object
+       },
+
+       getIdentityAttributes: function(/* item */ item){
+               //      summary: 
+               //              See dojo.data.api.Identity.getIdentifierAttributes()
+                
+               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 == 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["dijit._editor.plugins.FontChoice"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._editor.plugins.FontChoice"] = true;
+dojo.provide("dijit._editor.plugins.FontChoice");
+
+
+
+
+
+
+
+
+
+
+dojo.declare("dijit._editor.plugins._FontDropDown",
+       [dijit._Widget, dijit._Templated],{
+       // summary:
+       //              Base class for widgets that contains a label (like "Font:")
+       //              and a FilteringSelect drop down to pick a value.
+       //              Used as Toolbar entry.
+
+       // label: [public] String
+       //              The label to apply to this particular FontDropDown.
+       label: "",
+
+       // widgetsInTemplate: [public] boolean
+       //              Over-ride denoting the template has widgets to parse.
+       widgetsInTemplate: true,
+
+       // plainText: [public] boolean
+       //              Flag to indicate that the returned label should be plain text
+       //              instead of an example.
+       plainText: false,
+
+       // templateString: [public] String
+       //              The template used to construct the labeled dropdown.
+       templateString:
+               "<span style='white-space: nowrap' class='dijit dijitReset dijitInline'>" +
+                       "<label class='dijitLeft dijitInline' for='${selectId}'>${label}</label>" +
+                       "<input dojoType='dijit.form.FilteringSelect' required=false labelType=html labelAttr=label searchAttr=name " +
+                                       "tabIndex='-1' id='${selectId}' dojoAttachPoint='select' value=''/>" +
+               "</span>",
+
+       postMixInProperties: function(){
+               // summary:
+               //              Over-ride to misin specific properties.
+               this.inherited(arguments);
+
+               this.strings = dojo.i18n.getLocalization("dijit._editor", "FontChoice");
+
+               // Set some substitution variables used in the template
+               this.label = this.strings[this.command];
+               this.id = dijit.getUniqueId(this.declaredClass.replace(/\./g,"_"));
+               this.selectId = this.id + "_select";
+
+               this.inherited(arguments);
+       },
+
+       postCreate: function(){
+               // summary:
+               //              Over-ride for the default postCreate action
+               //              This establishes the filtering selects and the like.
+
+               // Initialize the list of items in the drop down by creating data store with items like:
+               // {value: 1, name: "xx-small", label: "<font size=1>xx-small</font-size>" }
+               var     items = dojo.map(this.values, function(value){
+                               var name = this.strings[value] || value;
+                               return {
+                                       label: this.getLabel(value, name),
+                                       name: name,
+                                       value: value
+                               };
+                       }, this);
+
+               this.select.store = new dojo.data.ItemFileReadStore({
+                       data: {
+                               identifier: "value",
+                               items: items
+                       }
+               });
+
+               this.select.set("value", "", false);
+               this.disabled = this.select.get("disabled");
+       },
+
+       _setValueAttr: function(value, priorityChange){
+               // summary:
+               //              Over-ride for the default action of setting the
+               //              widget value, maps the input to known values
+               // value: Object|String
+               //              The value to set in the select.
+               // priorityChange:
+               //              Optional parameter used to tell the select whether or not to fire
+               //              onChange event.
+
+               //if the value is not a permitted value, just set empty string to prevent showing the warning icon
+               priorityChange = priorityChange !== false?true:false;
+               this.select.set('value', dojo.indexOf(this.values,value) < 0 ? "" : value, priorityChange);
+               if(!priorityChange){
+                       // Clear the last state in case of updateState calls.  Ref: #10466
+                       this.select._lastValueReported=null;
+               }
+       },
+
+       _getValueAttr: function(){
+               // summary:
+               //              Allow retreiving the value from the composite select on
+               //              call to button.get("value");
+               return this.select.get('value');
+       },
+
+       focus: function(){
+               // summary:
+               //              Over-ride for focus control of this widget.  Delegates focus down to the
+               //              filtering select.
+               this.select.focus();
+       },
+
+       _setDisabledAttr: function(value){
+               // summary:
+               //              Over-ride for the button's 'disabled' attribute so that it can be
+               //              disabled programmatically.
+
+               // Save off ths disabled state so the get retrieves it correctly
+               //without needing to have a function proxy it.
+               this.disabled = value;
+               this.select.set("disabled", value);
+       }
+});
+
+
+dojo.declare("dijit._editor.plugins._FontNameDropDown", dijit._editor.plugins._FontDropDown, {
+       // summary:
+       //              Dropdown to select a font; goes in editor toolbar.
+
+       // generic: Boolean
+       //              Use generic (web standard) font names
+       generic: false,
+
+       // command: [public] String
+       //              The editor 'command' implemented by this plugin.
+       command: "fontName",
+
+       postMixInProperties: function(){
+               // summary:
+               //              Over-ride for the default posr mixin control
+               if(!this.values){
+                       this.values = this.generic ?
+                               ["serif", "sans-serif", "monospace", "cursive", "fantasy"] : // CSS font-family generics
+                                       ["Arial", "Times New Roman", "Comic Sans MS", "Courier New"];
+               }
+               this.inherited(arguments);
+       },
+
+       getLabel: function(value, name){
+               // summary:
+               //              Function used to generate the labels of the format dropdown
+               //              will return a formatted, or plain label based on the value
+               //              of the plainText option.
+               // value: String
+               //              The 'insert value' associated with a name
+               // name: String
+               //              The text name of the value
+               if(this.plainText){
+                       return name;
+               }else{
+                       return "<div style='font-family: "+value+"'>" + name + "</div>";
+               }
+       },
+
+       _setValueAttr: function(value, priorityChange){
+               // summary:
+               //              Over-ride for the default action of setting the
+               //              widget value, maps the input to known values
+
+               priorityChange = priorityChange !== false?true:false;
+               if(this.generic){
+                       var map = {
+                               "Arial": "sans-serif",
+                               "Helvetica": "sans-serif",
+                               "Myriad": "sans-serif",
+                               "Times": "serif",
+                               "Times New Roman": "serif",
+                               "Comic Sans MS": "cursive",
+                               "Apple Chancery": "cursive",
+                               "Courier": "monospace",
+                               "Courier New": "monospace",
+                               "Papyrus": "fantasy"
+//                                     ,"????": "fantasy" TODO: IE doesn't map fantasy font-family?
+                       };
+                       value = map[value] || value;
+               }
+               this.inherited(arguments, [value, priorityChange]);
+       }
+});
+
+dojo.declare("dijit._editor.plugins._FontSizeDropDown", dijit._editor.plugins._FontDropDown, {
+       // summary:
+       //              Dropdown to select a font size; goes in editor toolbar.
+
+       // command: [public] String
+       //              The editor 'command' implemented by this plugin.
+       command: "fontSize",
+
+       // values: [public] Number[]
+       //              The HTML font size values supported by this plugin
+       values: [1,2,3,4,5,6,7], // sizes according to the old HTML FONT SIZE
+
+       getLabel: function(value, name){
+               // summary:
+               //              Function used to generate the labels of the format dropdown
+               //              will return a formatted, or plain label based on the value
+               //              of the plainText option.
+               //              We're stuck using the deprecated FONT tag to correspond
+               //              with the size measurements used by the editor
+               // value: String
+               //              The 'insert value' associated with a name
+               // name: String
+               //              The text name of the value
+               if(this.plainText){
+                       return name;
+               }else{
+                       return "<font size=" + value + "'>" + name + "</font>";
+               }
+       },
+
+       _setValueAttr: function(value, priorityChange){
+               // summary:
+               //              Over-ride for the default action of setting the
+               //              widget value, maps the input to known values
+               priorityChange = priorityChange !== false?true:false;
+               if(value.indexOf && value.indexOf("px") != -1){
+                       var pixels = parseInt(value, 10);
+                       value = {10:1, 13:2, 16:3, 18:4, 24:5, 32:6, 48:7}[pixels] || value;
+               }
+
+               this.inherited(arguments, [value, priorityChange]);
+       }
+});
+
+
+dojo.declare("dijit._editor.plugins._FormatBlockDropDown", dijit._editor.plugins._FontDropDown, {
+       // summary:
+       //              Dropdown to select a format (like paragraph or heading); goes in editor toolbar.
+
+       // command: [public] String
+       //              The editor 'command' implemented by this plugin.
+       command: "formatBlock",
+
+       // values: [public] Array
+       //              The HTML format tags supported by this plugin
+       values: ["noFormat", "p", "h1", "h2", "h3", "pre"],
+
+       postCreate: function(){
+               // Init and set the default value to no formatting.  Update state will adjust it
+               // as needed.
+               this.inherited(arguments);
+               this.set("value", "noFormat", false);
+       },
+
+       getLabel: function(value, name){
+               // summary:
+               //              Function used to generate the labels of the format dropdown
+               //              will return a formatted, or plain label based on the value
+               //              of the plainText option.
+               // value: String
+               //              The 'insert value' associated with a name
+               // name: String
+               //              The text name of the value
+               if(this.plainText){
+                       return name;
+               }else{
+                       return "<" + value + ">" + name + "</" + value + ">";
+               }
+       },
+
+       _execCommand: function(editor, command, choice){
+               // summary:
+               //              Over-ride for default exec-command label.
+               //              Allows us to treat 'none' as special.
+               if(choice === "noFormat"){
+                       var start;
+                       var end;
+                       var sel = dijit.range.getSelection(editor.window);
+                       if(sel && sel.rangeCount > 0){
+                               var range = sel.getRangeAt(0);
+                               var node, tag;
+                               if(range){
+                                       start = range.startContainer;
+                                       end = range.endContainer;
+
+                                       // find containing nodes of start/end.
+                                       while(start && start !== editor.editNode && 
+                                                 start !== editor.document.body && 
+                                                 start.nodeType !== 1){
+                                               start = start.parentNode;
+                                       }
+
+                                       while(end && end !== editor.editNode && 
+                                                 end !== editor.document.body && 
+                                                 end.nodeType !== 1){
+                                               end = end.parentNode;
+                                       }
+
+                                       var processChildren = dojo.hitch(this, function(node, array){
+                                               if(node.childNodes && node.childNodes.length){
+                                                       var i;
+                                                       for(i = 0; i < node.childNodes.length; i++){
+                                                               var c = node.childNodes[i];
+                                                               if(c.nodeType == 1){
+                                                                       if(dojo.withGlobal(editor.window, "inSelection", dijit._editor.selection, [c])){
+                                                                               var tag = c.tagName? c.tagName.toLowerCase(): "";
+                                                                               if(dojo.indexOf(this.values, tag) !== -1){
+                                                                                       array.push(c);
+                                                                               }
+                                                                               processChildren(c,array);
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       });
+
+                                       var unformatNodes = dojo.hitch(this, function(nodes){
+                                               // summary:
+                                               //              Internal function to clear format nodes.
+                                               // nodes:
+                                               //              The array of nodes to strip formatting from.
+                                               if(nodes && nodes.length){
+                                                       editor.beginEditing();
+                                                       while(nodes.length){
+                                                               this._removeFormat(editor, nodes.pop());
+                                                       }
+                                                       editor.endEditing();
+                                               }
+                                       });
+
+                                       var clearNodes = [];
+                                       if(start == end){
+                                               //Contained within the same block, may be collapsed, but who cares, see if we
+                                               // have a block element to remove.
+                                               var block;
+                                               node = start;
+                                               while(node && node !== editor.editNode && node !== editor.document.body){
+                                                       if(node.nodeType == 1){
+                                                               tag = node.tagName? node.tagName.toLowerCase(): "";
+                                                               if(dojo.indexOf(this.values, tag) !== -1){
+                                                                       block = node;
+                                                                       break;
+                                                               }
+                                                       }
+                                                       node = node.parentNode;
+                                               }
+
+                                               //Also look for all child nodes in the selection that may need to be 
+                                               //cleared of formatting
+                                               processChildren(start, clearNodes);
+                                               if(block) { clearNodes = [block].concat(clearNodes); }
+                                               unformatNodes(clearNodes);
+                                       }else{
+                                               // Probably a multi select, so we have to process it.  Whee.
+                                               node = start;
+                                               while(dojo.withGlobal(editor.window, "inSelection", dijit._editor.selection, [node])){
+                                                       if(node.nodeType == 1){
+                                                               tag = node.tagName? node.tagName.toLowerCase(): "";
+                                                               if(dojo.indexOf(this.values, tag) !== -1){
+                                                                       clearNodes.push(node);
+                                                               }
+                                                               processChildren(node,clearNodes);
+                                                       }
+                                                       node = node.nextSibling;
+                                               }
+                                               unformatNodes(clearNodes);
+                                       }
+                                       editor.onDisplayChanged();
+                               }
+                       }
+               }else{
+                       editor.execCommand(command, choice);
+               }
+       },
+
+       _removeFormat: function(editor, node){
+               // summary:
+               //              function to remove the block format node.
+               // node:
+               //              The block format node to remove (and leave the contents behind)
+               if(editor.customUndo){
+                       // So of course IE doesn't work right with paste-overs.
+                       // We have to do this manually, which is okay since IE already uses
+                       // customUndo and we turned it on for WebKit.  WebKit pasted funny, 
+                       // so couldn't use the execCommand approach
+                       while(node.firstChild){
+                               dojo.place(node.firstChild, node, "before");
+                       }
+                       node.parentNode.removeChild(node);
+               }else{
+                       // Everyone else works fine this way, a paste-over and is native
+                       // undo friendly.
+                       dojo.withGlobal(editor.window, 
+                                "selectElementChildren", dijit._editor.selection, [node]);
+                       var html =      dojo.withGlobal(editor.window, 
+                                "getSelectedHtml", dijit._editor.selection, [null]);
+                       dojo.withGlobal(editor.window, 
+                                "selectElement", dijit._editor.selection, [node]);
+                       editor.execCommand("inserthtml", html||"");
+               }
+       }
+});
+
+// TODO: for 2.0, split into FontChoice plugin into three separate classes,
+// one for each command (and change registry below)
+dojo.declare("dijit._editor.plugins.FontChoice", dijit._editor._Plugin,{
+       // summary:
+       //              This plugin provides three drop downs for setting style in the editor
+       //              (font, font size, and format block), as controlled by command.
+       //
+       // description:
+       //              The commands provided by this plugin are:
+       //
+       //              * fontName
+       //      |               Provides a drop down to select from a list of font names
+       //              * fontSize
+       //      |               Provides a drop down to select from a list of font sizes
+       //              * formatBlock
+       //      |               Provides a drop down to select from a list of block styles
+       //      |
+       //
+       //              which can easily be added to an editor by including one or more of the above commands
+       //              in the `plugins` attribute as follows:
+       //
+       //      |       plugins="['fontName','fontSize',...]"
+       //
+       //              It is possible to override the default dropdown list by providing an Array for the `custom` property when
+       //              instantiating this plugin, e.g.
+       //
+       //      |       plugins="[{name:'dijit._editor.plugins.FontChoice', command:'fontName', custom:['Verdana','Myriad','Garamond']},...]"
+       //
+       //              Alternatively, for `fontName` only, `generic:true` may be specified to provide a dropdown with
+       //              [CSS generic font families](http://www.w3.org/TR/REC-CSS2/fonts.html#generic-font-families)
+       //
+       //              Note that the editor is often unable to properly handle font styling information defined outside
+       //              the context of the current editor instance, such as pre-populated HTML.
+
+       // useDefaultCommand: [protected] booleam
+       //              Override _Plugin.useDefaultCommand...
+       //              processing is handled by this plugin, not by dijit.Editor.
+       useDefaultCommand: false,
+
+       _initButton: function(){
+               // summary:
+               //              Overrides _Plugin._initButton(), to initialize the FilteringSelect+label in toolbar,
+               //              rather than a simple button.
+               // tags:
+               //              protected
+
+               // Create the widget to go into the toolbar (the so-called "button")
+               var clazz = {
+                               fontName: dijit._editor.plugins._FontNameDropDown,
+                               fontSize: dijit._editor.plugins._FontSizeDropDown,
+                               formatBlock: dijit._editor.plugins._FormatBlockDropDown
+                       }[this.command],
+               params = this.params;
+
+               // For back-compat reasons support setting custom values via "custom" parameter
+               // rather than "values" parameter
+               if(this.params.custom){
+                       params.values = this.params.custom;
+               }
+
+               var editor = this.editor;
+               this.button = new clazz(dojo.delegate({dir: editor.dir, lang: editor.lang}, params));
+
+               // Reflect changes to the drop down in the editor
+               this.connect(this.button.select, "onChange", function(choice){
+                       // User invoked change, since all internal updates set priorityChange to false and will
+                       // not trigger an onChange event.
+                       this.editor.focus();
+                       
+                       if(this.command == "fontName" && choice.indexOf(" ") != -1){ choice = "'" + choice + "'"; }
+
+                       // Invoke, the editor already normalizes commands called through its
+                       // execCommand.
+                       if(this.button._execCommand){
+                               this.button._execCommand(this.editor, this.command, choice);
+                       }else{
+                               this.editor.execCommand(this.command, choice);
+                       }
+                       
+                       // Enable custom undo for webkit, needed for noFormat to work properly
+                       // and still undo.
+                       this.editor.customUndo = this.editor.customUndo || dojo.isWebKit;
+               });
+       },
+
+       updateState: function(){
+               // summary:
+               //              Overrides _Plugin.updateState().  This controls updating the menu
+               //              options to the right values on state changes in the document (that trigger a
+               //              test of the actions.)
+               //              It set value of drop down in toolbar to reflect font/font size/format block
+               //              of text at current caret position.
+               // tags:
+               //              protected
+               var _e = this.editor;
+               var _c = this.command;
+               if(!_e || !_e.isLoaded || !_c.length){ return; }
+               if(this.button){
+                       var value;
+                       try{
+                               value = _e.queryCommandValue(_c) || "";
+                       }catch(e){
+                               //Firefox may throw error above if the editor is just loaded, ignore it
+                               value = "";
+                       }
+
+                       // strip off single quotes, if any
+                       var quoted = dojo.isString(value) && value.match(/'([^']*)'/);
+                       if(quoted){ value = quoted[1]; }
+
+                       if(_c === "formatBlock"){
+                               if(!value || value == "p"){
+                                       // Some browsers (WebKit) doesn't actually get the tag info right.
+                                       // and IE returns paragraph when in a DIV!, so incorrect a lot,
+                                       // so we have double-check it.
+                                       value = null;
+                                       var elem;
+                                       // Try to find the current element where the caret is.
+                                       var sel = dijit.range.getSelection(this.editor.window);
+                                       if(sel && sel.rangeCount > 0){
+                                               var range = sel.getRangeAt(0);
+                                               if(range){
+                                                       elem = range.endContainer;
+                                               }
+                                       }
+
+                                       // Okay, now see if we can find one of the formatting types we're in.
+                                       while(elem && elem !== _e.editNode && elem !== _e.document){
+                                               var tg = elem.tagName?elem.tagName.toLowerCase():"";
+                                               if(tg && dojo.indexOf(this.button.values, tg) > -1){
+                                                       value = tg;
+                                                       break;
+                                               }
+                                               elem = elem.parentNode;
+                                       }
+                                       if(!value){
+                                               // Still no value, so lets select 'none'.
+                                               value = "noFormat";
+                                       }
+                               }else{
+                                       // Check that the block format is one allowed, if not,
+                                       // null it so that it gets set to empty.
+                                       if(dojo.indexOf(this.button.values, value) < 0){
+                                               value = "noFormat";
+                                       }
+                               }
+                       }
+                       if(value !== this.button.get("value")){
+                               // Set the value, but denote it is not a priority change, so no
+                               // onchange fires.
+                               this.button.set('value', value, false);
+                       }
+               }
+       }
+});
+
+// Register this plugin.
+dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
+       if(o.plugin){ return; }
+       switch(o.args.name){
+       case "fontName": case "fontSize": case "formatBlock":
+               o.plugin = new dijit._editor.plugins.FontChoice({
+                       command: o.args.name,
+                       plainText: o.args.plainText?o.args.plainText:false
+               });
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.form._FormSelectWidget"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form._FormSelectWidget"] = true;
+dojo.provide("dijit.form._FormSelectWidget");
+
+
+
+
+/*=====
+dijit.form.__SelectOption = function(){
+       // value: String
+       //              The value of the option.  Setting to empty (or missing) will
+       //              place a separator at that location
+       // label: String
+       //              The label for our option.  It can contain html tags.
+       //  selected: Boolean
+       //              Whether or not we are a selected option
+       // disabled: Boolean
+       //              Whether or not this specific option is disabled
+       this.value = value;
+       this.label = label;
+       this.selected = selected;
+       this.disabled = disabled;
+}
+=====*/
+
+dojo.declare("dijit.form._FormSelectWidget", dijit.form._FormValueWidget, {
+       // summary:
+       //              Extends _FormValueWidget in order to provide "select-specific"
+       //              values - i.e., those values that are unique to <select> elements.
+       //              This also provides the mechanism for reading the elements from
+       //              a store, if desired.
+
+       // multiple: Boolean
+       //              Whether or not we are multi-valued
+       multiple: false,
+
+       // options: dijit.form.__SelectOption[]
+       //              The set of options for our select item.  Roughly corresponds to
+       //      the html <option> tag.
+       options: null,
+
+       // store: dojo.data.api.Identity
+       //              A store which, at the very least impelements dojo.data.api.Identity
+       //              to use for getting our list of options - rather than reading them
+       //              from the <option> html tags.
+       store: null,
+
+       // query: object
+       //              A query to use when fetching items from our store
+       query: null,
+
+       // queryOptions: object
+       //              Query options to use when fetching from the store
+       queryOptions: null,
+
+       // onFetch: Function
+       //              A callback to do with an onFetch - but before any items are actually
+       //              iterated over (i.e. to filter even futher what you want to add)
+       onFetch: null,
+
+       // sortByLabel: boolean
+       //              Flag to sort the options returned from a store by the label of
+       //              the store.
+       sortByLabel: true,
+
+
+       // loadChildrenOnOpen: boolean
+       //              By default loadChildren is called when the items are fetched from the
+       //              store.  This property allows delaying loadChildren (and the creation
+       //              of the options/menuitems) until the user opens the click the button.
+       //              dropdown
+       loadChildrenOnOpen: false,
+
+       getOptions: function(/* anything */ valueOrIdx){
+               // summary:
+               //              Returns a given option (or options).
+               // valueOrIdx:
+               //              If passed in as a string, that string is used to look up the option
+               //              in the array of options - based on the value property.
+               //              (See dijit.form.__SelectOption).
+               //
+               //              If passed in a number, then the option with the given index (0-based)
+               //              within this select will be returned.
+               //
+               //              If passed in a dijit.form.__SelectOption, the same option will be
+               //              returned if and only if it exists within this select.
+               //
+               //              If passed an array, then an array will be returned with each element
+               //              in the array being looked up.
+               //
+               //              If not passed a value, then all options will be returned
+               //
+               // returns:
+               //              The option corresponding with the given value or index.  null
+               //              is returned if any of the following are true:
+               //                      - A string value is passed in which doesn't exist
+               //                      - An index is passed in which is outside the bounds of the array of options
+               //                      - A dijit.form.__SelectOption is passed in which is not a part of the select
+
+               // NOTE: the compare for passing in a dijit.form.__SelectOption checks
+               //              if the value property matches - NOT if the exact option exists
+               // NOTE: if passing in an array, null elements will be placed in the returned
+               //              array when a value is not found.
+               var lookupValue = valueOrIdx, opts = this.options || [], l = opts.length;
+
+               if(lookupValue === undefined){
+                       return opts; // dijit.form.__SelectOption[]
+               }
+               if(dojo.isArray(lookupValue)){
+                       return dojo.map(lookupValue, "return this.getOptions(item);", this); // dijit.form.__SelectOption[]
+               }
+               if(dojo.isObject(valueOrIdx)){
+                       // We were passed an option - so see if it's in our array (directly),
+                       // and if it's not, try and find it by value.
+                       if(!dojo.some(this.options, function(o, idx){
+                               if(o === lookupValue ||
+                                       (o.value && o.value === lookupValue.value)){
+                                       lookupValue = idx;
+                                       return true;
+                               }
+                               return false;
+                       })){
+                               lookupValue = -1;
+                       }
+               }
+               if(typeof lookupValue == "string"){
+                       for(var i=0; i<l; i++){
+                               if(opts[i].value === lookupValue){
+                                       lookupValue = i;
+                                       break;
+                               }
+                       }
+               }
+               if(typeof lookupValue == "number" && lookupValue >= 0 && lookupValue < l){
+                       return this.options[lookupValue] // dijit.form.__SelectOption
+               }
+               return null; // null
+       },
+
+       addOption: function(/* dijit.form.__SelectOption, dijit.form.__SelectOption[] */ option){
+               // summary:
+               //              Adds an option or options to the end of the select.  If value
+               //              of the option is empty or missing, a separator is created instead.
+               //              Passing in an array of options will yield slightly better performance
+               //              since the children are only loaded once.
+               if(!dojo.isArray(option)){ option = [option]; }
+               dojo.forEach(option, function(i){
+                       if(i && dojo.isObject(i)){
+                               this.options.push(i);
+                       }
+               }, this);
+               this._loadChildren();
+       },
+
+       removeOption: function(/* string, dijit.form.__SelectOption, number, or array */ valueOrIdx){
+               // summary:
+               //              Removes the given option or options.  You can remove by string
+               //              (in which case the value is removed), number (in which case the
+               //              index in the options array is removed), or select option (in
+               //              which case, the select option with a matching value is removed).
+               //              You can also pass in an array of those values for a slightly
+               //              better performance since the children are only loaded once.
+               if(!dojo.isArray(valueOrIdx)){ valueOrIdx = [valueOrIdx]; }
+               var oldOpts = this.getOptions(valueOrIdx);
+               dojo.forEach(oldOpts, function(i){
+                       // We can get null back in our array - if our option was not found.  In
+                       // that case, we don't want to blow up...
+                       if(i){
+                               this.options = dojo.filter(this.options, function(node, idx){
+                                       return (node.value !== i.value);
+                               });
+                               this._removeOptionItem(i);
+                       }
+               }, this);
+               this._loadChildren();
+       },
+
+       updateOption: function(/* dijit.form.__SelectOption, dijit.form.__SelectOption[] */ newOption){
+               // summary:
+               //              Updates the values of the given option.  The option to update
+               //              is matched based on the value of the entered option.  Passing
+               //              in an array of new options will yeild better performance since
+               //              the children will only be loaded once.
+               if(!dojo.isArray(newOption)){ newOption = [newOption]; }
+               dojo.forEach(newOption, function(i){
+                       var oldOpt = this.getOptions(i), k;
+                       if(oldOpt){
+                               for(k in i){ oldOpt[k] = i[k]; }
+                       }
+               }, this);
+               this._loadChildren();
+       },
+
+       setStore: function(/* dojo.data.api.Identity */ store,
+                                               /* anything? */ selectedValue,
+                                               /* Object? */ fetchArgs){
+               // summary:
+               //              Sets the store you would like to use with this select widget.
+               //              The selected value is the value of the new store to set.  This
+               //              function returns the original store, in case you want to reuse
+               //              it or something.
+               // store: dojo.data.api.Identity
+               //              The store you would like to use - it MUST implement Identity,
+               //              and MAY implement Notification.
+               // selectedValue: anything?
+               //              The value that this widget should set itself to *after* the store
+               //              has been loaded
+               // fetchArgs: Object?
+               //              The arguments that will be passed to the store's fetch() function
+               var oStore = this.store;
+               fetchArgs = fetchArgs || {};
+               if(oStore !== store){
+                       // Our store has changed, so update our notifications
+                       dojo.forEach(this._notifyConnections || [], dojo.disconnect);
+                       delete this._notifyConnections;
+                       if(store && store.getFeatures()["dojo.data.api.Notification"]){
+                               this._notifyConnections = [
+                                       dojo.connect(store, "onNew", this, "_onNewItem"),
+                                       dojo.connect(store, "onDelete", this, "_onDeleteItem"),
+                                       dojo.connect(store, "onSet", this, "_onSetItem")
+                               ];
+                       }
+                       this.store = store;
+               }
+
+               // Turn off change notifications while we make all these changes
+               this._onChangeActive = false;
+
+               // Remove existing options (if there are any)
+               if(this.options && this.options.length){
+                       this.removeOption(this.options);
+               }
+
+               // Add our new options
+               if(store){
+                       var cb = function(items){
+                               if(this.sortByLabel && !fetchArgs.sort && items.length){
+                                       items.sort(dojo.data.util.sorter.createSortFunction([{
+                                               attribute: store.getLabelAttributes(items[0])[0]
+                                       }], store));
+                               }
+
+                               if(fetchArgs.onFetch){
+                                       items = fetchArgs.onFetch(items);
+                               }
+                               // TODO: Add these guys as a batch, instead of separately
+                               dojo.forEach(items, function(i){
+                                       this._addOptionForItem(i);
+                               }, this);
+
+                               // Set our value (which might be undefined), and then tweak
+                               // it to send a change event with the real value
+                               this._loadingStore = false;
+                               this.set("value", (("_pendingValue" in this) ? this._pendingValue : selectedValue));
+                               delete this._pendingValue;
+
+                               if(!this.loadChildrenOnOpen){
+                                       this._loadChildren();
+                               }else{
+                                       this._pseudoLoadChildren(items);
+                               }
+                               this._fetchedWith = opts;
+                               this._lastValueReported = this.multiple ? [] : null;
+                               this._onChangeActive = true;
+                               this.onSetStore();
+                               this._handleOnChange(this.value);
+                       };
+                       var opts = dojo.mixin({onComplete:cb, scope: this}, fetchArgs);
+                       this._loadingStore = true;
+                       store.fetch(opts);
+               }else{
+                       delete this._fetchedWith;
+               }
+               return oStore;  // dojo.data.api.Identity
+       },
+
+       _setValueAttr: function(/*anything*/ newValue, /*Boolean, optional*/ priorityChange){
+               // summary:
+               //              set the value of the widget.
+               //              If a string is passed, then we set our value from looking it up.
+               if(this._loadingStore){
+                       // Our store is loading - so save our value, and we'll set it when
+                       // we're done
+                       this._pendingValue = newValue;
+                       return;
+               }
+               var opts = this.getOptions() || [];
+               if(!dojo.isArray(newValue)){
+                       newValue = [newValue];
+               }
+               dojo.forEach(newValue, function(i, idx){
+                       if(!dojo.isObject(i)){
+                               i = i + "";
+                       }
+                       if(typeof i === "string"){
+                               newValue[idx] = dojo.filter(opts, function(node){
+                                       return node.value === i;
+                               })[0] || {value: "", label: ""};
+                       }
+               }, this);
+
+               // Make sure some sane default is set
+               newValue = dojo.filter(newValue, function(i){ return i && i.value; });
+               if(!this.multiple && (!newValue[0] || !newValue[0].value) && opts.length){
+                       newValue[0] = opts[0];
+               }
+               dojo.forEach(opts, function(i){
+                       i.selected = dojo.some(newValue, function(v){ return v.value === i.value; });
+               });
+               var val = dojo.map(newValue, function(i){ return i.value; }),
+                       disp = dojo.map(newValue, function(i){ return i.label; });
+
+               this.value = this.multiple ? val : val[0];
+               this._setDisplay(this.multiple ? disp : disp[0]);
+               this._updateSelection();
+               this._handleOnChange(this.value, priorityChange);
+       },
+
+       _getDisplayedValueAttr: function(){
+               // summary:
+               //              returns the displayed value of the widget
+               var val = this.get("value");
+               if(!dojo.isArray(val)){
+                       val = [val];
+               }
+               var ret = dojo.map(this.getOptions(val), function(v){
+                       if(v && "label" in v){
+                               return v.label;
+                       }else if(v){
+                               return v.value;
+                       }
+                       return null;
+               }, this);
+               return this.multiple ? ret : ret[0];
+       },
+
+       _getValueDeprecated: false, // remove when _FormWidget:getValue is removed
+       getValue: function(){
+               // summary:
+               //              get the value of the widget.
+               return this._lastValue;
+       },
+
+       undo: function(){
+               // summary:
+               //              restore the value to the last value passed to onChange
+               this._setValueAttr(this._lastValueReported, false);
+       },
+
+       _loadChildren: function(){
+               // summary:
+               //              Loads the children represented by this widget's options.
+               //              reset the menu to make it "populatable on the next click
+               if(this._loadingStore){ return; }
+               dojo.forEach(this._getChildren(), function(child){
+                       child.destroyRecursive();
+               });
+               // Add each menu item
+               dojo.forEach(this.options, this._addOptionItem, this);
+
+               // Update states
+               this._updateSelection();
+       },
+
+       _updateSelection: function(){
+               // summary:
+               //              Sets the "selected" class on the item for styling purposes
+               this.value = this._getValueFromOpts();
+               var val = this.value;
+               if(!dojo.isArray(val)){
+                       val = [val];
+               }
+               if(val && val[0]){
+                       dojo.forEach(this._getChildren(), function(child){
+                               var isSelected = dojo.some(val, function(v){
+                                       return child.option && (v === child.option.value);
+                               });
+                               dojo.toggleClass(child.domNode, this.baseClass + "SelectedOption", isSelected);
+                               dijit.setWaiState(child.domNode, "selected", isSelected);
+                       }, this);
+               }
+               this._handleOnChange(this.value);
+       },
+
+       _getValueFromOpts: function(){
+               // summary:
+               //              Returns the value of the widget by reading the options for
+               //              the selected flag
+               var opts = this.getOptions() || [];
+               if(!this.multiple && opts.length){
+                       // Mirror what a select does - choose the first one
+                       var opt = dojo.filter(opts, function(i){
+                               return i.selected;
+                       })[0];
+                       if(opt && opt.value){
+                               return opt.value
+                       }else{
+                               opts[0].selected = true;
+                               return opts[0].value;
+                       }
+               }else if(this.multiple){
+                       // Set value to be the sum of all selected
+                       return dojo.map(dojo.filter(opts, function(i){
+                               return i.selected;
+                       }), function(i){
+                               return i.value;
+                       }) || [];
+               }
+               return "";
+       },
+
+       // Internal functions to call when we have store notifications come in
+       _onNewItem: function(/* item */ item, /* Object? */ parentInfo){
+               if(!parentInfo || !parentInfo.parent){
+                       // Only add it if we are top-level
+                       this._addOptionForItem(item);
+               }
+       },
+       _onDeleteItem: function(/* item */ item){
+               var store = this.store;
+               this.removeOption(store.getIdentity(item));
+       },
+       _onSetItem: function(/* item */ item){
+               this.updateOption(this._getOptionObjForItem(item));
+       },
+
+       _getOptionObjForItem: function(item){
+               // summary:
+               //              Returns an option object based off the given item.  The "value"
+               //              of the option item will be the identity of the item, the "label"
+               //              of the option will be the label of the item.  If the item contains
+               //              children, the children value of the item will be set
+               var store = this.store, label = store.getLabel(item),
+                       value = (label ? store.getIdentity(item) : null);
+               return {value: value, label: label, item:item}; // dijit.form.__SelectOption
+       },
+
+       _addOptionForItem: function(/* item */ item){
+               // summary:
+               //              Creates (and adds) the option for the given item
+               var store = this.store;
+               if(!store.isItemLoaded(item)){
+                       // We are not loaded - so let's load it and add later
+                       store.loadItem({item: item, onComplete: function(i){
+                               this._addOptionForItem(item);
+                       },
+                       scope: this});
+                       return;
+               }
+               var newOpt = this._getOptionObjForItem(item);
+               this.addOption(newOpt);
+       },
+
+       constructor: function(/* Object */ keywordArgs){
+               // summary:
+               //              Saves off our value, if we have an initial one set so we
+               //              can use it if we have a store as well (see startup())
+               this._oValue = (keywordArgs || {}).value || null;
+       },
+
+       _fillContent: function(){
+               // summary:
+               //              Loads our options and sets up our dropdown correctly.  We
+               //              don't want any content, so we don't call any inherit chain
+               //              function.
+               var opts = this.options;
+               if(!opts){
+                       opts = this.options = this.srcNodeRef ? dojo.query(">",
+                                               this.srcNodeRef).map(function(node){
+                                                       if(node.getAttribute("type") === "separator"){
+                                                               return { value: "", label: "", selected: false, disabled: false };
+                                                       }
+                                                       return { value: node.getAttribute("value"),
+                                                                               label: String(node.innerHTML),
+                                                                               selected: node.getAttribute("selected") || false,
+                                                                               disabled: node.getAttribute("disabled") || false };
+                                               }, this) : [];
+               }
+               if(!this.value){
+                       this.value = this._getValueFromOpts();
+               }else if(this.multiple && typeof this.value == "string"){
+                       this.value = this.value.split(",");
+               }
+       },
+
+       postCreate: function(){
+               // summary:
+               //              sets up our event handling that we need for functioning
+               //              as a select
+               dojo.setSelectable(this.focusNode, false);
+               this.inherited(arguments);
+
+               // Make our event connections for updating state
+               this.connect(this, "onChange", "_updateSelection");
+               this.connect(this, "startup", "_loadChildren");
+
+               this._setValueAttr(this.value, null);
+       },
+
+       startup: function(){
+               // summary:
+               //              Connects in our store, if we have one defined
+               this.inherited(arguments);
+               var store = this.store, fetchArgs = {};
+               dojo.forEach(["query", "queryOptions", "onFetch"], function(i){
+                       if(this[i]){
+                               fetchArgs[i] = this[i];
+                       }
+                       delete this[i];
+               }, this);
+               if(store && store.getFeatures()["dojo.data.api.Identity"]){
+                       // Temporarily set our store to null so that it will get set
+                       // and connected appropriately
+                       this.store = null;
+                       this.setStore(store, this._oValue, fetchArgs);
+               }
+       },
+
+       destroy: function(){
+               // summary:
+               //              Clean up our connections
+               dojo.forEach(this._notifyConnections || [], dojo.disconnect);
+               this.inherited(arguments);
+       },
+
+       _addOptionItem: function(/* dijit.form.__SelectOption */ option){
+               // summary:
+               //              User-overridable function which, for the given option, adds an
+               //              item to the select.  If the option doesn't have a value, then a
+               //              separator is added in that place.  Make sure to store the option
+               //              in the created option widget.
+       },
+
+       _removeOptionItem: function(/* dijit.form.__SelectOption */ option){
+               // summary:
+               //              User-overridable function which, for the given option, removes
+               //              its item from the select.
+       },
+
+       _setDisplay: function(/*String or String[]*/ newDisplay){
+               // summary:
+               //              Overridable function which will set the display for the
+               //              widget.  newDisplay is either a string (in the case of
+               //              single selects) or array of strings (in the case of multi-selects)
+       },
+
+       _getChildren: function(){
+               // summary:
+               //              Overridable function to return the children that this widget contains.
+               return [];
+       },
+
+       _getSelectedOptionsAttr: function(){
+               // summary:
+               //              hooks into this.attr to provide a mechanism for getting the
+               //              option items for the current value of the widget.
+               return this.getOptions(this.get("value"));
+       },
+
+       _pseudoLoadChildren: function(/* item[] */ items){
+               // summary:
+               //              a function that will "fake" loading children, if needed, and
+               //              if we have set to not load children until the widget opens.
+               // items:
+               //              An array of items that will be loaded, when needed
+       },
+
+       onSetStore: function(){
+               // summary:
+               //              a function that can be connected to in order to receive a
+               //              notification that the store has finished loading and all options
+               //              from that store are available
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.MenuItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.MenuItem"] = true;
+dojo.provide("dijit.MenuItem");
+
+
+
+
+
+
+dojo.declare("dijit.MenuItem",
+               [dijit._Widget, dijit._Templated, dijit._Contained, dijit._CssStateMixin],
+               {
+               // summary:
+               //              A line item in a Menu Widget
+
+               // Make 3 columns
+               // icon, label, and expand arrow (BiDi-dependent) indicating sub-menu
+               templateString: dojo.cache("dijit", "templates/MenuItem.html", "<tr class=\"dijitReset dijitMenuItem\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitem\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" waiRole=\"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\" waiRole=\"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: String
+               //              Menu text
+               label: '',
+
+               // iconClass: String
+               //              Class to apply to DOMNode to make it display an icon.
+               iconClass: "",
+
+               // accelKey: String
+               //              Text for the accelerator (shortcut) key combination.
+               //              Note that although Menu can display accelerator keys there
+               //              is no infrastructure to actually catch and execute these
+               //              accelerators.
+               accelKey: "",
+
+               // disabled: Boolean
+               //              If true, the menu item is disabled.
+               //              If false, the menu item is enabled.
+               disabled: false,
+
+               _fillContent: function(/*DomNode*/ source){
+                       // If button label is specified as srcNodeRef.innerHTML rather than
+                       // this.params.label, handle it here.
+                       if(source && !("label" in this.params)){
+                               this.set('label', source.innerHTML);
+                       }
+               },
+
+               postCreate: function(){
+                       this.inherited(arguments);
+                       dojo.setSelectable(this.domNode, false);
+                       var label = this.id+"_text";
+                       dojo.attr(this.containerNode, "id", label);
+                       if(this.accelKeyNode){
+                               dojo.attr(this.accelKeyNode, "id", this.id + "_accel");
+                               label += " " + this.id + "_accel";
+                       }
+                       dijit.setWaiState(this.domNode, "labelledby", label);
+               },
+
+               _onHover: function(){
+                       // summary:
+                       //              Handler when mouse is moved onto menu item
+                       // tags:
+                       //              protected
+                       this.getParent().onItemHover(this);
+               },
+
+               _onUnhover: function(){
+                       // summary:
+                       //              Handler when mouse is moved off of menu item,
+                       //              possibly to a child menu, or maybe to a sibling
+                       //              menuitem or somewhere else entirely.
+                       // tags:
+                       //              protected
+
+                       // if we are unhovering the currently selected item
+                       // then unselect it
+                       this.getParent().onItemUnhover(this);
+
+                       // _onUnhover() is called when the menu is hidden (collapsed), due to clicking
+                       // a MenuItem and having it execut.  When that happens, FF and IE don't generate
+                       // an onmouseout event for the MenuItem, so give _CssStateMixin some help
+                       this._hovering = false;
+                       this._setStateClass();
+               },
+
+               _onClick: function(evt){
+                       // summary:
+                       //              Internal handler for click events on MenuItem.
+                       // tags:
+                       //              private
+                       this.getParent().onItemClick(this, evt);
+                       dojo.stopEvent(evt);
+               },
+
+               onClick: function(/*Event*/ evt){
+                       // summary:
+                       //              User defined function to handle clicks
+                       // tags:
+                       //              callback
+               },
+
+               focus: function(){
+                       // summary:
+                       //              Focus on this MenuItem
+                       try{
+                               if(dojo.isIE == 8){
+                                       // needed for IE8 which won't scroll TR tags into view on focus yet calling scrollIntoView creates flicker (#10275)
+                                       this.containerNode.focus();
+                               }
+                               dijit.focus(this.focusNode);
+                       }catch(e){
+                               // this throws on IE (at least) in some scenarios
+                       }
+               },
+
+               _onFocus: function(){
+                       // summary:
+                       //              This is called by the focus manager when focus
+                       //              goes to this MenuItem or a child menu.
+                       // tags:
+                       //              protected
+                       this._setSelected(true);
+                       this.getParent()._onItemFocus(this);
+
+                       this.inherited(arguments);
+               },
+
+               _setSelected: function(selected){
+                       // summary:
+                       //              Indicate that this node is the currently selected one
+                       // tags:
+                       //              private
+
+                       /***
+                        * TODO: remove this method and calls to it, when _onBlur() is working for MenuItem.
+                        * Currently _onBlur() gets called when focus is moved from the MenuItem to a child menu.
+                        * That's not supposed to happen, but the problem is:
+                        * In order to allow dijit.popup's getTopPopup() to work,a sub menu's popupParent
+                        * points to the parent Menu, bypassing the parent MenuItem... thus the
+                        * MenuItem is not in the chain of active widgets and gets a premature call to
+                        * _onBlur()
+                        */
+
+                       dojo.toggleClass(this.domNode, "dijitMenuItemSelected", selected);
+               },
+
+               setLabel: function(/*String*/ content){
+                       // summary:
+                       //              Deprecated.   Use set('label', ...) instead.
+                       // tags:
+                       //              deprecated
+                       dojo.deprecated("dijit.MenuItem.setLabel() is deprecated.  Use set('label', ...) instead.", "", "2.0");
+                       this.set("label", content);
+               },
+
+               setDisabled: function(/*Boolean*/ disabled){
+                       // summary:
+                       //              Deprecated.   Use set('disabled', bool) instead.
+                       // tags:
+                       //              deprecated
+                       dojo.deprecated("dijit.Menu.setDisabled() is deprecated.  Use set('disabled', bool) instead.", "", "2.0");
+                       this.set('disabled', disabled);
+               },
+               _setDisabledAttr: function(/*Boolean*/ value){
+                       // summary:
+                       //              Hook for attr('disabled', ...) to work.
+                       //              Enable or disable this menu item.
+                       this.disabled = value;
+                       dijit.setWaiState(this.focusNode, 'disabled', value ? 'true' : 'false');
+               },
+               _setAccelKeyAttr: function(/*String*/ value){
+                       // summary:
+                       //              Hook for attr('accelKey', ...) to work.
+                       //              Set accelKey on this menu item.
+                       this.accelKey=value;
+
+                       this.accelKeyNode.style.display=value?"":"none";
+                       this.accelKeyNode.innerHTML=value;
+                       //have to use colSpan to make it work in IE
+                       dojo.attr(this.containerNode,'colSpan',value?"1":"2");
+               }
+       });
+
+}
+
+if(!dojo._hasResource["dijit.PopupMenuItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.PopupMenuItem"] = true;
+dojo.provide("dijit.PopupMenuItem");
+
+
+
+dojo.declare("dijit.PopupMenuItem",
+               dijit.MenuItem,
+               {
+               _fillContent: function(){
+                       // summary:
+                       //              When Menu is declared in markup, this code gets the menu label and
+                       //              the popup widget from the srcNodeRef.
+                       // description:
+                       //              srcNodeRefinnerHTML contains both the menu item text and a popup widget
+                       //              The first part holds the menu item text and the second part is the popup
+                       // example:
+                       // |    <div dojoType="dijit.PopupMenuItem">
+                       // |            <span>pick me</span>
+                       // |            <popup> ... </popup>
+                       // |    </div>
+                       // tags:
+                       //              protected
+
+                       if(this.srcNodeRef){
+                               var nodes = dojo.query("*", this.srcNodeRef);
+                               dijit.PopupMenuItem.superclass._fillContent.call(this, nodes[0]);
+
+                               // save pointer to srcNode so we can grab the drop down widget after it's instantiated
+                               this.dropDownContainer = this.srcNodeRef;
+                       }
+               },
+
+               startup: function(){
+                       if(this._started){ return; }
+                       this.inherited(arguments);
+
+                       // we didn't copy the dropdown widget from the this.srcNodeRef, so it's in no-man's
+                       // land now.  move it to dojo.doc.body.
+                       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){
+                               // Destroy the popup, unless it's already been destroyed.  This can happen because
+                               // the popup is a direct child of <body> even though it's logically my child.
+                               if(!this.popup._destroyed){
+                                       this.popup.destroyRecursive();
+                               }
+                               delete this.popup;
+                       }
+                       this.inherited(arguments);
+               }
+       });
+
+
+}
+
+if(!dojo._hasResource["dijit.CheckedMenuItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.CheckedMenuItem"] = true;
+dojo.provide("dijit.CheckedMenuItem");
+
+
+
+dojo.declare("dijit.CheckedMenuItem",
+               dijit.MenuItem,
+               {
+               // summary:
+               //              A checkbox-like menu item for toggling on and off
+
+               templateString: dojo.cache("dijit", "templates/CheckedMenuItem.html", "<tr class=\"dijitReset dijitMenuItem\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitemcheckbox\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" waiRole=\"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\" waiRole=\"presentation\">&nbsp;</td>\n</tr>\n"),
+
+               // checked: Boolean
+               //              Our checked state
+               checked: false,
+               _setCheckedAttr: function(/*Boolean*/ checked){
+                       // summary:
+                       //              Hook so attr('checked', bool) works.
+                       //              Sets the class and state for the check box.
+                       dojo.toggleClass(this.domNode, "dijitCheckedMenuItemChecked", checked);
+                       dijit.setWaiState(this.domNode, "checked", checked);
+                       this.checked = checked;
+               },
+
+               onChange: function(/*Boolean*/ checked){
+                       // summary:
+                       //              User defined function to handle check/uncheck events
+                       // tags:
+                       //              callback
+               },
+
+               _onClick: function(/*Event*/ e){
+                       // summary:
+                       //              Clicking this item just toggles its state
+                       // tags:
+                       //              private
+                       if(!this.disabled){
+                               this.set("checked", !this.checked);
+                               this.onChange(this.checked);
+                       }
+                       this.inherited(arguments);
+               }
+       });
+
+}
+
+if(!dojo._hasResource["dijit.MenuSeparator"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.MenuSeparator"] = true;
+dojo.provide("dijit.MenuSeparator");
+
+
+
+
+
+dojo.declare("dijit.MenuSeparator",
+               [dijit._Widget, dijit._Templated, dijit._Contained],
+               {
+               // summary:
+               //              A line between two menu items
+
+               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"),
+
+               postCreate: function(){
+                       dojo.setSelectable(this.domNode, false);
+               },
+
+               isFocusable: function(){
+                       // summary:
+                       //              Override to always return false
+                       // tags:
+                       //              protected
+
+                       return false; // Boolean
+               }
+       });
+
+
+}
+
+if(!dojo._hasResource["dijit.Menu"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.Menu"] = true;
+dojo.provide("dijit.Menu");
+
+
+
+
+
+
+
+dojo.declare("dijit._MenuBase",
+       [dijit._Widget, dijit._Templated, dijit._KeyNavContainer],
+{
+       // summary:
+       //              Base class for Menu and MenuBar
+
+       // parentMenu: [readonly] Widget
+       //              pointer to menu that displayed me
+       parentMenu: null,
+
+       // popupDelay: Integer
+       //              number of milliseconds before hovering (without clicking) causes the popup to automatically open.
+       popupDelay: 500,
+
+       startup: function(){
+               if(this._started){ return; }
+
+               dojo.forEach(this.getChildren(), function(child){ child.startup(); });
+               this.startupKeyNavChildren();
+
+               this.inherited(arguments);
+       },
+
+       onExecute: function(){
+               // summary:
+               //              Attach point for notification about when a menu item has been executed.
+               //              This is an internal mechanism used for Menus to signal to their parent to
+               //              close them, because they are about to execute the onClick handler.   In
+               //              general developers should not attach to or override this method.
+               // tags:
+               //              protected
+       },
+
+       onCancel: function(/*Boolean*/ closeAll){
+               // summary:
+               //              Attach point for notification about when the user cancels the current menu
+               //              This is an internal mechanism used for Menus to signal to their parent to
+               //              close them.  In general developers should not attach to or override this method.
+               // tags:
+               //              protected
+       },
+
+       _moveToPopup: function(/*Event*/ evt){
+               // summary:
+               //              This handles the right arrow key (left arrow key on RTL systems),
+               //              which will either open a submenu, or move to the next item in the
+               //              ancestor MenuBar
+               // tags:
+               //              private
+
+               if(this.focusedChild && this.focusedChild.popup && !this.focusedChild.disabled){
+                       this.focusedChild._onClick(evt);
+               }else{
+                       var topMenu = this._getTopMenu();
+                       if(topMenu && topMenu._isMenuBar){
+                               topMenu.focusNext();
+                       }
+               }
+       },
+
+       _onPopupHover: function(/*Event*/ evt){
+               // summary:
+               //              This handler is called when the mouse moves over the popup.
+               // tags:
+               //              private
+
+               // if the mouse hovers over a menu popup that is in pending-close state,
+               // then stop the close operation.
+               // This can't be done in onItemHover since some popup targets don't have MenuItems (e.g. ColorPicker)
+               if(this.currentPopup && this.currentPopup._pendingClose_timer){
+                       var parentMenu = this.currentPopup.parentMenu;
+                       // highlight the parent menu item pointing to this popup
+                       if(parentMenu.focusedChild){
+                               parentMenu.focusedChild._setSelected(false);
+                       }
+                       parentMenu.focusedChild = this.currentPopup.from_item;
+                       parentMenu.focusedChild._setSelected(true);
+                       // cancel the pending close
+                       this._stopPendingCloseTimer(this.currentPopup);
+               }
+       },
+
+       onItemHover: function(/*MenuItem*/ item){
+               // summary:
+               //              Called when cursor is over a MenuItem.
+               // tags:
+               //              protected
+
+               // Don't do anything unless user has "activated" the menu by:
+               //              1) clicking it
+               //              2) opening it from a parent menu (which automatically focuses it)
+               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 the user is mixing mouse and keyboard navigation,
+               // then the menu may not be active but a menu item has focus,
+               // but it's not the item that the mouse just hovered over.
+               // To avoid both keyboard and mouse selections, use the latest.
+               if(this.focusedChild){
+                       this.focusChild(item);
+               }
+               this._hoveredChild = item;
+       },
+
+       _onChildBlur: function(item){
+               // summary:
+               //              Called when a child MenuItem becomes inactive because focus
+               //              has been removed from the MenuItem *and* it's descendant menus.
+               // tags:
+               //              private
+               this._stopPopupTimer();
+               item._setSelected(false);
+               // Close all popups that are open and descendants of this menu
+               var itemPopup = item.popup;
+               if(itemPopup){
+                       this._stopPendingCloseTimer(itemPopup);
+                       itemPopup._pendingClose_timer = setTimeout(function(){
+                               itemPopup._pendingClose_timer = null;
+                               if(itemPopup.parentMenu){
+                                       itemPopup.parentMenu.currentPopup = null;
+                               }
+                               dijit.popup.close(itemPopup); // this calls onClose
+                       }, this.popupDelay);
+               }
+       },
+
+       onItemUnhover: function(/*MenuItem*/ item){
+               // summary:
+               //              Callback fires when mouse exits a MenuItem
+               // tags:
+               //              protected
+
+               if(this.isActive){
+                       this._stopPopupTimer();
+               }
+               if(this._hoveredChild == item){ this._hoveredChild = null; }
+       },
+
+       _stopPopupTimer: function(){
+               // summary:
+               //              Cancels the popup timer because the user has stop hovering
+               //              on the MenuItem, etc.
+               // tags:
+               //              private
+               if(this.hover_timer){
+                       clearTimeout(this.hover_timer);
+                       this.hover_timer = null;
+               }
+       },
+
+       _stopPendingCloseTimer: function(/*dijit._Widget*/ popup){
+               // summary:
+               //              Cancels the pending-close timer because the close has been preempted
+               // tags:
+               //              private
+               if(popup._pendingClose_timer){
+                       clearTimeout(popup._pendingClose_timer);
+                       popup._pendingClose_timer = null;
+               }
+       },
+
+       _stopFocusTimer: function(){
+               // summary:
+               //              Cancels the pending-focus timer because the menu was closed before focus occured
+               // tags:
+               //              private
+               if(this._focus_timer){
+                       clearTimeout(this._focus_timer);
+                       this._focus_timer = null;
+               }
+       },
+
+       _getTopMenu: function(){
+               // summary:
+               //              Returns the top menu in this chain of Menus
+               // tags:
+               //              private
+               for(var top=this; top.parentMenu; top=top.parentMenu);
+               return top;
+       },
+
+       onItemClick: function(/*dijit._Widget*/ item, /*Event*/ evt){
+               // summary:
+               //              Handle clicks on an item.
+               // tags:
+               //              private
+
+               // this can't be done in _onFocus since the _onFocus events occurs asynchronously
+               if(typeof this.isShowingNow == 'undefined'){ // non-popup menu
+                       this._markActive();
+               }
+
+               this.focusChild(item);
+
+               if(item.disabled){ return false; }
+
+               if(item.popup){
+                       this._openPopup();
+               }else{
+                       // before calling user defined handler, close hierarchy of menus
+                       // and restore focus to place it was when menu was opened
+                       this.onExecute();
+
+                       // user defined handler for click
+                       item.onClick(evt);
+               }
+       },
+
+       _openPopup: function(){
+               // summary:
+               //              Open the popup to the side of/underneath the current menu item
+               // tags:
+               //              protected
+
+               this._stopPopupTimer();
+               var from_item = this.focusedChild;
+               if(!from_item){ return; } // the focused child lost focus since the timer was started
+               var popup = from_item.popup;
+               if(popup.isShowingNow){ return; }
+               if(this.currentPopup){
+                       this._stopPendingCloseTimer(this.currentPopup);
+                       dijit.popup.close(this.currentPopup);
+               }
+               popup.parentMenu = this;
+               popup.from_item = from_item; // helps finding the parent item that should be focused for this popup
+               var self = this;
+               dijit.popup.open({
+                       parent: this,
+                       popup: popup,
+                       around: from_item.domNode,
+                       orient: this._orient || (this.isLeftToRight() ?
+                                                                       {'TR': 'TL', 'TL': 'TR', 'BR': 'BL', 'BL': 'BR'} :
+                                                                       {'TL': 'TR', 'TR': 'TL', 'BL': 'BR', 'BR': 'BL'}),
+                       onCancel: function(){ // called when the child menu is canceled
+                               // set isActive=false (_closeChild vs _cleanUp) so that subsequent hovering will NOT open child menus
+                               // which seems aligned with the UX of most applications (e.g. notepad, wordpad, paint shop pro)
+                               self.focusChild(from_item);     // put focus back on my node
+                               self._cleanUp();                        // close the submenu (be sure this is done _after_ focus is moved)
+                               from_item._setSelected(true); // oops, _cleanUp() deselected the item
+                               self.focusedChild = from_item;  // and unset focusedChild
+                       },
+                       onExecute: dojo.hitch(this, "_cleanUp")
+               });
+
+               this.currentPopup = popup;
+               // detect mouseovers to handle lazy mouse movements that temporarily focus other menu items
+               popup.connect(popup.domNode, "onmouseenter", dojo.hitch(self, "_onPopupHover")); // cleaned up when the popped-up widget is destroyed on close
+
+               if(popup.focus){
+                       // If user is opening the popup via keyboard (right arrow, or down arrow for MenuBar),
+                       // if the cursor happens to collide with the popup, it will generate an onmouseover event
+                       // even though the mouse wasn't moved.   Use a setTimeout() to call popup.focus so that
+                       // our focus() call overrides the onmouseover event, rather than vice-versa.  (#8742)
+                       popup._focus_timer = setTimeout(dojo.hitch(popup, function(){
+                               this._focus_timer = null;
+                               this.focus();
+                       }), 0);
+               }
+       },
+
+       _markActive: function(){
+               // summary:
+               //              Mark this menu's state as active.
+               //              Called when this Menu gets focus from:
+               //                      1) clicking it (mouse or via space/arrow key)
+               //                      2) being opened by a parent menu.
+               //              This is not called just from mouse hover.
+               //              Focusing a menu via TAB does NOT automatically set isActive
+               //              since TAB is a navigation operation and not a selection one.
+               //              For Windows apps, pressing the ALT key focuses the menubar
+               //              menus (similar to TAB navigation) but the menu is not active
+               //              (ie no dropdown) until an item is clicked.
+               this.isActive = true;
+               dojo.addClass(this.domNode, "dijitMenuActive");
+               dojo.removeClass(this.domNode, "dijitMenuPassive");
+       },
+
+       onOpen: function(/*Event*/ e){
+               // summary:
+               //              Callback when this menu is opened.
+               //              This is called by the popup manager as notification that the menu
+               //              was opened.
+               // tags:
+               //              private
+
+               this.isShowingNow = true;
+               this._markActive();
+       },
+
+       _markInactive: function(){
+               // summary:
+               //              Mark this menu's state as inactive.
+               this.isActive = false; // don't do this in _onBlur since the state is pending-close until we get here
+               dojo.removeClass(this.domNode, "dijitMenuActive");
+               dojo.addClass(this.domNode, "dijitMenuPassive");
+       },
+
+       onClose: function(){
+               // summary:
+               //              Callback when this menu is closed.
+               //              This is called by the popup manager as notification that the menu
+               //              was closed.
+               // tags:
+               //              private
+
+               this._stopFocusTimer();
+               this._markInactive();
+               this.isShowingNow = false;
+               this.parentMenu = null;
+       },
+
+       _closeChild: function(){
+               // summary:
+               //              Called when submenu is clicked or focus is lost.  Close hierarchy of menus.
+               // tags:
+               //              private
+               this._stopPopupTimer();
+               if(this.focusedChild){ // unhighlight the focused item
+                       this.focusedChild._setSelected(false);
+                       this.focusedChild._onUnhover();
+                       this.focusedChild = null;
+               }
+               if(this.currentPopup){
+                       // Close all popups that are open and descendants of this menu
+                       dijit.popup.close(this.currentPopup);
+                       this.currentPopup = null;
+               }
+       },
+
+       _onItemFocus: function(/*MenuItem*/ item){
+               // summary:
+               //              Called when child of this Menu gets focus from:
+               //                      1) clicking it
+               //                      2) tabbing into it
+               //                      3) being opened by a parent menu.
+               //              This is not called just from mouse hover.
+               if(this._hoveredChild && this._hoveredChild != item){
+                       this._hoveredChild._onUnhover(); // any previous mouse movement is trumped by focus selection
+               }
+       },
+
+       _onBlur: function(){
+               // summary:
+               //              Called when focus is moved away from this Menu and it's submenus.
+               // tags:
+               //              protected
+               this._cleanUp();
+               this.inherited(arguments);
+       },
+
+       _cleanUp: function(){
+               // summary:
+               //              Called when the user is done with this menu.  Closes hierarchy of menus.
+               // tags:
+               //              private
+
+               this._closeChild(); // don't call this.onClose since that's incorrect for MenuBar's that never close
+               if(typeof this.isShowingNow == 'undefined'){ // non-popup menu doesn't call onClose
+                       this._markInactive();
+               }
+       }
+});
+
+dojo.declare("dijit.Menu",
+       dijit._MenuBase,
+       {
+       // summary
+       //              A context menu you can assign to multiple elements
+
+       // TODO: most of the code in here is just for context menu (right-click menu)
+       // support.  In retrospect that should have been a separate class (dijit.ContextMenu).
+       // Split them for 2.0
+
+       constructor: function(){
+               this._bindings = [];
+       },
+
+       templateString: dojo.cache("dijit", "templates/Menu.html", "<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" waiRole=\"menu\" tabIndex=\"${tabIndex}\" dojoAttachEvent=\"onkeypress:_onKeyPress\" cellspacing=0>\n\t<tbody class=\"dijitReset\" dojoAttachPoint=\"containerNode\"></tbody>\n</table>\n"),
+
+       baseClass: "dijitMenu",
+
+       // targetNodeIds: [const] String[]
+       //              Array of dom node ids of nodes to attach to.
+       //              Fill this with nodeIds upon widget creation and it becomes context menu for those nodes.
+       targetNodeIds: [],
+
+       // contextMenuForWindow: [const] Boolean
+       //              If true, right clicking anywhere on the window will cause this context menu to open.
+       //              If false, must specify targetNodeIds.
+       contextMenuForWindow: false,
+
+       // leftClickToOpen: [const] Boolean
+       //              If true, menu will open on left click instead of right click, similiar to a file menu.
+       leftClickToOpen: false,
+
+       // refocus: Boolean
+       //              When this menu closes, re-focus the element which had focus before it was opened.
+       refocus: true,
+
+       postCreate: function(){
+               if(this.contextMenuForWindow){
+                       this.bindDomNode(dojo.body());
+               }else{
+                       // TODO: should have _setTargetNodeIds() method to handle initialization and a possible
+                       // later attr('targetNodeIds', ...) call.   There's also a problem that targetNodeIds[]
+                       // gets stale after calls to bindDomNode()/unBindDomNode() as it still is just the original list (see #9610)
+                       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(/*Event*/ evt){
+               // summary:
+               //              Handle keyboard based menu navigation.
+               // tags:
+               //              protected
+
+               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;
+               }
+       },
+
+       // thanks burstlib!
+       _iframeContentWindow: function(/* HTMLIFrameElement */iframe_el){
+               // summary:
+               //              Returns the window reference of the passed iframe
+               // tags:
+               //              private
+               var win = dojo.window.get(this._iframeContentDocument(iframe_el)) ||
+                       // Moz. TODO: is this available when defaultView isn't?
+                       this._iframeContentDocument(iframe_el)['__parent__'] ||
+                       (iframe_el.name && dojo.doc.frames[iframe_el.name]) || null;
+               return win;     //      Window
+       },
+
+       _iframeContentDocument: function(/* HTMLIFrameElement */iframe_el){
+               // summary:
+               //              Returns a reference to the document object inside iframe_el
+               // tags:
+               //              protected
+               var doc = iframe_el.contentDocument // W3
+                       || (iframe_el.contentWindow && iframe_el.contentWindow.document) // IE
+                       || (iframe_el.name && dojo.doc.frames[iframe_el.name] && dojo.doc.frames[iframe_el.name].document)
+                       || null;
+               return doc;     //      HTMLDocument
+       },
+
+       bindDomNode: function(/*String|DomNode*/ node){
+               // summary:
+               //              Attach menu to given node
+               node = dojo.byId(node);
+
+               var cn; // Connect node
+
+               // Support context menus on iframes.   Rather than binding to the iframe itself we need
+               // to bind to the <body> node inside the iframe.
+               if(node.tagName.toLowerCase() == "iframe"){
+                       var iframe = node,
+                               win = this._iframeContentWindow(iframe);
+                       cn = dojo.withGlobal(win, dojo.body);
+               }else{
+                       
+                       // To capture these events at the top level, attach to <html>, not <body>.
+                       // Otherwise right-click context menu just doesn't work.
+                       cn = (node == dojo.body() ? dojo.doc.documentElement : node);
+               }
+
+
+               // "binding" is the object to track our connection to the node (ie, the parameter to bindDomNode())
+               var binding = {
+                       node: node,
+                       iframe: iframe
+               };
+
+               // Save info about binding in _bindings[], and make node itself record index(+1) into
+               // _bindings[] array.   Prefix w/_dijitMenu to avoid setting an attribute that may
+               // start with a number, which fails on FF/safari.
+               dojo.attr(node, "_dijitMenu" + this.id, this._bindings.push(binding));
+
+               // Setup the connections to monitor click etc., unless we are connecting to an iframe which hasn't finished
+               // loading yet, in which case we need to wait for the onload event first, and then connect
+               // On linux Shift-F10 produces the oncontextmenu event, but on Windows it doesn't, so
+               // we need to monitor keyboard events in addition to the oncontextmenu event.
+               var doConnects = dojo.hitch(this, function(cn){
+                       return [
+                               // TODO: when leftClickToOpen is true then shouldn't space/enter key trigger the menu,
+                               // rather than shift-F10?
+                               dojo.connect(cn, this.leftClickToOpen ? "onclick" : "oncontextmenu", this, function(evt){
+                                       // Schedule context menu to be opened unless it's already been scheduled from onkeydown handler
+                                       dojo.stopEvent(evt);
+                                       this._scheduleOpen(evt.target, iframe, {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, iframe); // no coords - open near target node
+                                       }
+                               })
+                       ];      
+               });
+               binding.connects = cn ? doConnects(cn) : [];
+
+               if(iframe){
+                       // Setup handler to [re]bind to the iframe when the contents are initially loaded,
+                       // and every time the contents change.
+                       // Need to do this b/c we are actually binding to the iframe's <body> node.
+                       // Note: can't use dojo.connect(), see #9609.
+
+                       binding.onloadHandler = dojo.hitch(this, function(){
+                               // want to remove old connections, but IE throws exceptions when trying to
+                               // access the <body> node because it's already gone, or at least in a state of limbo
+
+                               var win = this._iframeContentWindow(iframe);
+                                       cn = dojo.withGlobal(win, dojo.body);
+                               binding.connects = doConnects(cn);
+                       });
+                       if(iframe.addEventListener){
+                               iframe.addEventListener("load", binding.onloadHandler, false);
+                       }else{
+                               iframe.attachEvent("onload", binding.onloadHandler);
+                       }
+               }
+       },
+
+       unBindDomNode: function(/*String|DomNode*/ nodeName){
+               // summary:
+               //              Detach menu from given node
+
+               var node;
+               try{
+                       node = dojo.byId(nodeName);
+               }catch(e){
+                       // On IE the dojo.byId() call will get an exception if the attach point was
+                       // the <body> node of an <iframe> that has since been reloaded (and thus the
+                       // <body> node is in a limbo state of destruction.
+                       return;
+               }
+
+               // node["_dijitMenu" + this.id] contains index(+1) into my _bindings[] array
+               var attrName = "_dijitMenu" + this.id;
+               if(node && dojo.hasAttr(node, attrName)){
+                       var bid = dojo.attr(node, attrName)-1, b = this._bindings[bid];
+                       dojo.forEach(b.connects, dojo.disconnect);
+
+                       // Remove listener for iframe onload events
+                       var iframe = b.iframe;
+                       if(iframe){
+                               if(iframe.removeEventListener){
+                                       iframe.removeEventListener("load", b.onloadHandler, false);
+                               }else{
+                                       iframe.detachEvent("onload", b.onloadHandler);
+                               }
+                       }
+
+                       dojo.removeAttr(node, attrName);
+                       delete this._bindings[bid];
+               }
+       },
+
+       _scheduleOpen: function(/*DomNode?*/ target, /*DomNode?*/ iframe, /*Object?*/ coords){
+               // summary:
+               //              Set timer to display myself.  Using a timer rather than displaying immediately solves
+               //              two problems:
+               //
+               //              1. IE: without the delay, focus work in "open" causes the system
+               //              context menu to appear in spite of stopEvent.
+               //
+               //              2. Avoid double-shows on linux, where shift-F10 generates an oncontextmenu event
+               //              even after a dojo.stopEvent(e).  (Shift-F10 on windows doesn't generate the
+               //              oncontextmenu event.)
+
+               if(!this._openTimer){
+                       this._openTimer = setTimeout(dojo.hitch(this, function(){
+                               delete this._openTimer;
+                               this._openMyself({
+                                       target: target,
+                                       iframe: iframe,
+                                       coords: coords
+                               });
+                       }), 1);
+               }
+       },
+
+       _openMyself: function(args){
+               // summary:
+               //              Internal function for opening myself when the user does a right-click or something similar.
+               // args:
+               //              This is an Object containing:
+               //              * target:
+               //                      The node that is being clicked
+               //              * iframe:
+               //                      If an <iframe> is being clicked, iframe points to that iframe
+               //              * coords:
+               //                      Put menu at specified x/y position in viewport, or if iframe is
+               //                      specified, then relative to iframe.
+               //
+               //              _openMyself() formerly took the event object, and since various code references
+               //              evt.target (after connecting to _openMyself()), using an Object for parameters
+               //              (so that old code still works).
+
+               var target = args.target,
+                       iframe = args.iframe,
+                       coords = args.coords;
+
+               // Get coordinates to open menu, either at specified (mouse) position or (if triggered via keyboard)
+               // then near the node the menu is assigned to.
+               if(coords){
+                       if(iframe){
+                               // Specified coordinates are on <body> node of an <iframe>, convert to match main document
+                               var od = target.ownerDocument,
+                                       ifc = dojo.position(iframe, true),
+                                       win = this._iframeContentWindow(iframe),
+                                       scroll = dojo.withGlobal(win, "_docScroll", dojo);
+       
+                               var cs = dojo.getComputedStyle(iframe),
+                                       tp = dojo._toPixelValue,
+                                       left = (dojo.isIE && dojo.isQuirks ? 0 : tp(iframe, cs.paddingLeft)) + (dojo.isIE && dojo.isQuirks ? tp(iframe, cs.borderLeftWidth) : 0),
+                                       top = (dojo.isIE && dojo.isQuirks ? 0 : tp(iframe, cs.paddingTop)) + (dojo.isIE && dojo.isQuirks ? tp(iframe, cs.borderTopWidth) : 0);
+
+                               coords.x += ifc.x + left - scroll.x;
+                               coords.y += ifc.y + top - scroll.y;
+                       }
+               }else{
+                       coords = dojo.position(target, true);
+                       coords.x += 10;
+                       coords.y += 10;
+               }
+
+               var self=this;
+               var savedFocus = dijit.getFocus(this);
+               function closeAndRestoreFocus(){
+                       // user has clicked on a menu or popup
+                       if(self.refocus){
+                               dijit.focus(savedFocus);
+                       }
+                       dijit.popup.close(self);
+               }
+               dijit.popup.open({
+                       popup: this,
+                       x: coords.x,
+                       y: coords.y,
+                       onExecute: closeAndRestoreFocus,
+                       onCancel: closeAndRestoreFocus,
+                       orient: this.isLeftToRight() ? 'L' : 'R'
+               });
+               this.focus();
+
+               this._onBlur = function(){
+                       this.inherited('_onBlur', arguments);
+                       // Usually the parent closes the child widget but if this is a context
+                       // menu then there is no parent
+                       dijit.popup.close(this);
+                       // don't try to restore focus; user has clicked another part of the screen
+                       // and set focus there
+               };
+       },
+
+       uninitialize: function(){
+               dojo.forEach(this._bindings, function(b){ if(b){ this.unBindDomNode(b.node); } }, this);
+               this.inherited(arguments);
+       }
+}
+);
+
+// Back-compat (TODO: remove in 2.0)
+
+
+
+
+
+
+}
+
+if(!dojo._hasResource["dijit.form.Select"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.Select"] = true;
+dojo.provide("dijit.form.Select");
+
+
+
+
+
+
+
+
+dojo.declare("dijit.form._SelectMenu", dijit.Menu, {
+       // summary:
+       //              An internally-used menu for dropdown that allows us a vertical scrollbar
+       buildRendering: function(){
+               // summary:
+               //              Stub in our own changes, so that our domNode is not a table
+               //              otherwise, we won't respond correctly to heights/overflows
+               this.inherited(arguments);
+               var o = (this.menuTableNode = this.domNode);
+               var n = (this.domNode = dojo.create("div", {style: {overflowX: "hidden", overflowY: "scroll"}}));
+               if(o.parentNode){
+                       o.parentNode.replaceChild(n, o);
+               }
+               dojo.removeClass(o, "dijitMenuTable");
+               n.className = o.className + " dijitSelectMenu";
+               o.className = "dijitReset dijitMenuTable";
+               dijit.setWaiRole(o,"listbox");
+               dijit.setWaiRole(n,"presentation");
+               n.appendChild(o);
+       },
+       resize: function(/*Object*/ mb){
+               // summary:
+               //              Overridden so that we are able to handle resizing our
+               //              internal widget.  Note that this is not a "full" resize
+               //              implementation - it only works correctly if you pass it a
+               //              marginBox.
+               //
+               // mb: Object
+               //              The margin box to set this dropdown to.
+               if(mb){
+                       dojo.marginBox(this.domNode, mb);
+                       if("w" in mb){
+                               // We've explicitly set the wrapper <div>'s width, so set <table> width to match.
+                               // 100% is safer than a pixel value because there may be a scroll bar with
+                               // browser/OS specific width.
+                               this.menuTableNode.style.width = "100%";
+                       }
+               }
+       }
+});
+
+dojo.declare("dijit.form.Select", [dijit.form._FormSelectWidget, dijit._HasDropDown], {
+       // summary:
+       //              This is a "styleable" select box - it is basically a DropDownButton which
+       //              can take a <select> as its input.
+
+       baseClass: "dijitSelect",
+
+       templateString: dojo.cache("dijit.form", "templates/Select.html", "<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tdojoAttachPoint=\"_buttonNode,tableNode,focusNode\" cellspacing='0' cellpadding='0'\n\twaiRole=\"combobox\" waiState=\"haspopup-true\"\n\t><tbody waiRole=\"presentation\"><tr waiRole=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents dijitButtonNode\" waiRole=\"presentation\"\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"  dojoAttachPoint=\"containerNode,_popupStateNode\"></span\n\t\t\t><input type=\"hidden\" ${!nameAttrSetting} dojoAttachPoint=\"valueNode\" value=\"${value}\" waiState=\"hidden-true\"\n\t\t/></td><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton\"\n\t\t\t\tdojoAttachPoint=\"titleNode\" waiRole=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" waiRole=\"presentation\">&#9660;</div\n\t\t></td\n\t></tr></tbody\n></table>\n"),
+
+       // attributeMap: Object
+       //              Add in our style to be applied to the focus node
+       attributeMap: dojo.mixin(dojo.clone(dijit.form._FormSelectWidget.prototype.attributeMap),{style:"tableNode"}),
+
+       // required: Boolean
+       //              Can be true or false, default is false.
+       required: false,
+
+       // state: String
+       //              Shows current state (ie, validation result) of input (Normal, Warning, or Error)
+       state: "",
+
+       //      tooltipPosition: String[]
+       //              See description of dijit.Tooltip.defaultPosition for details on this parameter.
+       tooltipPosition: [],
+
+       // emptyLabel: string
+       //              What to display in an "empty" dropdown
+       emptyLabel: "",
+
+       // _isLoaded: Boolean
+       //              Whether or not we have been loaded
+       _isLoaded: false,
+
+       // _childrenLoaded: Boolean
+       //              Whether or not our children have been loaded
+       _childrenLoaded: false,
+
+       _fillContent: function(){
+               // summary:
+               //              Set the value to be the first, or the selected index
+               this.inherited(arguments);
+               if(this.options.length && !this.value && this.srcNodeRef){
+                       var si = this.srcNodeRef.selectedIndex;
+                       this.value = this.options[si != -1 ? si : 0].value;
+               }
+
+               // Create the dropDown widget
+               this.dropDown = new dijit.form._SelectMenu({id: this.id + "_menu"});
+               dojo.addClass(this.dropDown.domNode, this.baseClass + "Menu");
+       },
+
+       _getMenuItemForOption: function(/*dijit.form.__SelectOption*/ option){
+               // summary:
+               //              For the given option, return the menu item that should be
+               //              used to display it.  This can be overridden as needed
+               if(!option.value){
+                       // We are a separator (no label set for it)
+                       return new dijit.MenuSeparator();
+               }else{
+                       // Just a regular menu option
+                       var click = dojo.hitch(this, "_setValueAttr", option);
+                       var item = new dijit.MenuItem({
+                               option: option,
+                               label: option.label,
+                               onClick: click,
+                               disabled: option.disabled || false
+                       });
+                       dijit.setWaiRole(item.focusNode, "listitem");
+                       return item;
+               }
+       },
+
+       _addOptionItem: function(/*dijit.form.__SelectOption*/ option){
+               // summary:
+               //              For the given option, add an option to our dropdown.
+               //              If the option doesn't have a value, then a separator is added
+               //              in that place.
+               if(this.dropDown){
+                       this.dropDown.addChild(this._getMenuItemForOption(option));
+               }
+       },
+
+       _getChildren: function(){
+               if(!this.dropDown){
+                       return [];
+               }
+               return this.dropDown.getChildren();
+       },
+
+       _loadChildren: function(/*Boolean*/ loadMenuItems){
+               // summary:
+               //              Resets the menu and the length attribute of the button - and
+               //              ensures that the label is appropriately set.
+               //      loadMenuItems: Boolean
+               //              actually loads the child menu items - we only do this when we are
+               //              populating for showing the dropdown.
+
+               if(loadMenuItems === true){
+                       // this.inherited destroys this.dropDown's child widgets (MenuItems).
+                       // Avoid this.dropDown (Menu widget) having a pointer to a destroyed widget (which will cause
+                       // issues later in _setSelected). (see #10296)
+                       if(this.dropDown){
+                               delete this.dropDown.focusedChild;
+                       }
+                       if(this.options.length){
+                               this.inherited(arguments);
+                       }else{
+                               // Drop down menu is blank but add one blank entry just so something appears on the screen
+                               // to let users know that they are no choices (mimicing native select behavior)
+                               dojo.forEach(this._getChildren(), function(child){ child.destroyRecursive(); });
+                               var item = new dijit.MenuItem({label: "&nbsp;"});
+                               this.dropDown.addChild(item);
+                       }
+               }else{
+                       this._updateSelection();
+               }
+
+               var len = this.options.length;
+               this._isLoaded = false;
+               this._childrenLoaded = true;
+
+               if(!this._loadingStore){
+                       // Don't call this if we are loading - since we will handle it later
+                       this._setValueAttr(this.value);
+               }
+       },
+
+       _setValueAttr: function(value){
+               this.inherited(arguments);
+               dojo.attr(this.valueNode, "value", this.get("value"));
+       },
+
+       _setDisplay: function(/*String*/ newDisplay){
+               // summary:
+               //              sets the display for the given value (or values)
+               this.containerNode.innerHTML = '<span class="dijitReset dijitInline ' + this.baseClass + 'Label">' +
+                                       (newDisplay || this.emptyLabel || "&nbsp;") +
+                                       '</span>';
+               dijit.setWaiState(this.focusNode, "valuetext", (newDisplay || this.emptyLabel || "&nbsp;") );
+       },
+
+       validate: function(/*Boolean*/ isFocused){
+               // summary:
+               //              Called by oninit, onblur, and onkeypress.
+               // description:
+               //              Show missing or invalid messages if appropriate, and highlight textbox field.
+               //              Used when a select is initially set to no value and the user is required to
+               //              set the value.
+               
+               var isValid = this.isValid(isFocused);
+               this.state = isValid ? "" : "Error";
+               this._setStateClass();
+               dijit.setWaiState(this.focusNode, "invalid", isValid ? "false" : "true");
+               var message = isValid ? "" : this._missingMsg;
+               if(this._message !== message){
+                       this._message = message;
+                       dijit.hideTooltip(this.domNode);
+                       if(message){
+                               dijit.showTooltip(message, this.domNode, this.tooltipPosition, !this.isLeftToRight());
+                       }
+               }
+               return isValid;
+       },
+
+       isValid: function(/*Boolean*/ isFocused){
+               // summary:
+               //              Whether or not this is a valid value.   The only way a Select
+               //              can be invalid is when it's required but nothing is selected.
+               return (!this.required || !(/^\s*$/.test(this.value)));
+       },
+
+       reset: function(){
+               // summary:
+               //              Overridden so that the state will be cleared.
+               this.inherited(arguments);
+               dijit.hideTooltip(this.domNode);
+               this.state = "";
+               this._setStateClass();
+               delete this._message;
+       },
+
+       postMixInProperties: function(){
+               // summary:
+               //              set the missing message
+               this.inherited(arguments);
+               this._missingMsg = dojo.i18n.getLocalization("dijit.form", "validate",
+                                                                       this.lang).missingMessage;
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+               if(this.tableNode.style.width){
+                       dojo.addClass(this.domNode, this.baseClass + "FixedWidth");
+               }
+       },
+
+       isLoaded: function(){
+               return this._isLoaded;
+       },
+
+       loadDropDown: function(/*Function*/ loadCallback){
+               // summary:
+               //              populates the menu
+               this._loadChildren(true);
+               this._isLoaded = true;
+               loadCallback();
+       },
+
+       closeDropDown: function(){
+               // overriding _HasDropDown.closeDropDown()
+               this.inherited(arguments);
+
+               if(this.dropDown && this.dropDown.menuTableNode){
+                       // Erase possible width: 100% setting from _SelectMenu.resize().
+                       // Leaving it would interfere with the next openDropDown() call, which
+                       // queries the natural size of the drop down.
+                       this.dropDown.menuTableNode.style.width = "";
+               }
+       },
+
+       uninitialize: function(preserveDom){
+               if(this.dropDown && !this.dropDown._destroyed){
+                       this.dropDown.destroyRecursive(preserveDom);
+                       delete this.dropDown;
+               }
+               this.inherited(arguments);
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit._editor.plugins.LinkDialog"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._editor.plugins.LinkDialog"] = true;
+dojo.provide("dijit._editor.plugins.LinkDialog");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+dojo.declare("dijit._editor.plugins.LinkDialog", dijit._editor._Plugin, {
+       // summary:
+       //              This plugin provides the basis for an 'anchor' (link) dialog and an extension of it
+       //              provides the image link dialog.
+       //
+       // description:
+       //              The command provided by this plugin is:
+       //              * createLink
+
+       // Override _Plugin.buttonClass.   This plugin is controlled by a DropDownButton
+       // (which triggers a TooltipDialog).
+       buttonClass: dijit.form.DropDownButton,
+
+       // Override _Plugin.useDefaultCommand... processing is handled by this plugin, not by dijit.Editor.
+       useDefaultCommand: false,
+
+       // urlRegExp: [protected] String
+       //              Used for validating input as correct URL.  While file:// urls are not terribly
+       //              useful, they are technically valid.
+       urlRegExp: "((https?|ftps?|file)\\://|\./|/|)(/[a-zA-Z]{1,1}:/|)(((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)*(?:[a-zA-Z](?:[-\\da-zA-Z]{0,80}[\\da-zA-Z])?)\\.?)|(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])|(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]|(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]|(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])|0[xX]0*[\\da-fA-F]{1,8}|([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}|([\\da-fA-F]{1,4}\\:){6}((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])))(\\:\\d+)?(/(?:[^?#\\s/]+/)*(?:[^?#\\s/]+(?:\\?[^?#\\s/]*)?(?:#.*)?)?)?",
+
+       // emailRegExp: [protected] String
+       //              Used for validating input as correct email address.  Taken from dojox.validate
+       emailRegExp:  "<?(mailto\\:)([!#-'*+\\-\\/-9=?A-Z^-~]+[.])*[!#-'*+\\-\\/-9=?A-Z^-~]+" /*username*/ + "@" +  
+        "((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)+(?:[a-zA-Z](?:[-\\da-zA-Z]{0,6}[\\da-zA-Z])?)\\.?)|localhost|^[^-][a-zA-Z0-9_-]*>?",        // host.
+
+       // htmlTemplate: [protected] String
+       //              String used for templating the HTML to insert at the desired point.
+       htmlTemplate: "<a href=\"${urlInput}\" _djrealurl=\"${urlInput}\"" +
+               " target=\"${targetSelect}\"" +
+               ">${textInput}</a>",
+
+       // tag: [protected] String
+       //              Tag used for the link type.
+       tag: "a",
+
+       // _hostRxp [private] RegExp
+       //              Regular expression used to validate url fragments (ip address, hostname, etc)
+       _hostRxp:  new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),
+
+       // _userAtRxp [private] RegExp
+       //              Regular expression used to validate e-mail address fragment.
+       _userAtRxp: new RegExp("^([!#-'*+\\-\\/-9=?A-Z^-~]+[.])*[!#-'*+\\-\\/-9=?A-Z^-~]+@", "i"),
+
+       // linkDialogTemplate: [protected] String
+       //              Template for contents of TooltipDialog to pick URL
+       linkDialogTemplate: [
+               "<table><tr><td>",
+               "<label for='${id}_urlInput'>${url}</label>",
+               "</td><td>",
+               "<input dojoType='dijit.form.ValidationTextBox' required='true' " +
+               "id='${id}_urlInput' name='urlInput' intermediateChanges='true'>",
+               "</td></tr><tr><td>",
+               "<label for='${id}_textInput'>${text}</label>",
+               "</td><td>",
+               "<input dojoType='dijit.form.ValidationTextBox' required='true' id='${id}_textInput' " +
+               "name='textInput' intermediateChanges='true'>",
+               "</td></tr><tr><td>",
+               "<label for='${id}_targetSelect'>${target}</label>",
+               "</td><td>",
+               "<select id='${id}_targetSelect' name='targetSelect' dojoType='dijit.form.Select'>",
+               "<option selected='selected' value='_self'>${currentWindow}</option>",
+               "<option value='_blank'>${newWindow}</option>",
+               "<option value='_top'>${topWindow}</option>",
+               "<option value='_parent'>${parentWindow}</option>",
+               "</select>",
+               "</td></tr><tr><td colspan='2'>",
+               "<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>",
+               "<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>",
+               "</td></tr></table>"
+       ].join(""),
+
+       _initButton: function(){
+               // Override _Plugin._initButton() to initialize DropDownButton and TooltipDialog.
+               var _this = this;
+               this.tag = this.command == 'insertImage' ? 'img' : 'a';
+               var messages = dojo.mixin(dojo.i18n.getLocalization("dijit", "common", this.lang),
+                       dojo.i18n.getLocalization("dijit._editor", "LinkDialog", this.lang));
+               var dropDown = (this.dropDown = new dijit.TooltipDialog({
+                       title: messages[this.command + "Title"],
+                       execute: dojo.hitch(this, "setValue"),
+                       onOpen: function(){
+                               _this._onOpenDialog();
+                               dijit.TooltipDialog.prototype.onOpen.apply(this, arguments);
+                       },
+                       onCancel: function(){
+                               setTimeout(dojo.hitch(_this, "_onCloseDialog"),0);
+                       }
+               }));
+               messages.urlRegExp = this.urlRegExp;
+               messages.id = dijit.getUniqueId(this.editor.id);
+               this._uniqueId = messages.id;
+               this._setContent(dropDown.title +
+                       "<div style='border-bottom: 1px black solid;padding-bottom:2pt;margin-bottom:4pt'></div>" +
+                       dojo.string.substitute(this.linkDialogTemplate, messages));
+               dropDown.startup();
+               this._urlInput = dijit.byId(this._uniqueId + "_urlInput");
+               this._textInput = dijit.byId(this._uniqueId + "_textInput");
+               this._setButton = dijit.byId(this._uniqueId + "_setButton");
+               this.connect(dijit.byId(this._uniqueId + "_cancelButton"), "onClick", function(){
+                       this.dropDown.onCancel();
+               });
+               if(this._urlInput){
+                       this.connect(this._urlInput, "onChange", "_checkAndFixInput");
+               }
+               if(this._textInput){
+                       this.connect(this._textInput, "onChange", "_checkAndFixInput");
+               }
+
+               // Build up the dual check for http/https/file:, and mailto formats.
+               this._urlRegExp = new RegExp("^" + this.urlRegExp + "$", "i");
+               this._emailRegExp = new RegExp("^" + this.emailRegExp + "$", "i");
+               this._urlInput.isValid = dojo.hitch(this, function(){
+                       // Function over-ride of isValid to test if the input matches a url or a mailto style link.
+                       var value = this._urlInput.get("value");
+                       return this._urlRegExp.test(value) || this._emailRegExp.test(value);
+               });
+
+               this._connectTagEvents();
+               this.inherited(arguments);
+       },
+
+       _checkAndFixInput: function(){
+               // summary:
+               //              A function to listen for onChange events and test the input contents
+               //              for valid information, such as valid urls with http/https/ftp and if
+               //              not present, try and guess if the input url is relative or not, and if
+               //              not, append http:// to it.  Also validates other fields as determined by
+               //              the internal _isValid function.
+               var self = this;
+               var url = this._urlInput.get("value");
+               var fixupUrl = function(url){
+                       var appendHttp = false;
+                       var appendMailto = false;
+                       if(url && url.length > 1){
+                               url = dojo.trim(url);
+                               if(url.indexOf("mailto:") !== 0){
+                                       if(url.indexOf("/") > 0){
+                                               if(url.indexOf("://") === -1){
+                                                       // Check that it doesn't start with / or ./, which would
+                                                       // imply 'target server relativeness'
+                                                       if(url.charAt(0) !== '/' && url.indexOf("./") !== 0){
+                                                               if(self._hostRxp.test(url)){
+                                                                       appendHttp = true;
+                                                               }
+                                                       }
+                                               }
+                                       }else if(self._userAtRxp.test(url)){
+                                               // If it looks like a foo@, append a mailto.
+                                               appendMailto = true;
+                                       }
+                               }
+                       }
+                       if(appendHttp){
+                               self._urlInput.set("value", "http://" + url);
+                       }
+                       if(appendMailto){
+                               self._urlInput.set("value", "mailto:" + url);
+                       }
+                       self._setButton.set("disabled", !self._isValid());
+               };
+               if(this._delayedCheck){
+                       clearTimeout(this._delayedCheck);
+                       this._delayedCheck = null;
+               }
+               this._delayedCheck = setTimeout(function(){
+                       fixupUrl(url);
+               }, 250);
+       },
+
+       _connectTagEvents: function(){
+               // summary:
+               //              Over-ridable function that connects tag specific events.
+               this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){
+                       this.connect(this.editor.editNode, "ondblclick", this._onDblClick);
+               }));
+       },
+
+       _isValid: function(){
+               // summary:
+               //              Internal function to allow validating of the inputs
+               //              for a link to determine if set should be disabled or not
+               // tags:
+               //              protected
+               return this._urlInput.isValid() && this._textInput.isValid();
+       },
+
+       _setContent: function(staticPanel){
+               // summary:
+               //              Helper for _initButton above.   Not sure why it's a separate method.
+               this.dropDown.set('content', staticPanel);
+       },
+
+       _checkValues: function(args){
+               // summary:
+               //              Function to check the values in args and 'fix' them up as needed.
+               // args: Object
+               //              Content being set.              
+               // tags: 
+               //              protected
+               if(args && args.urlInput){
+                       args.urlInput = args.urlInput.replace(/"/g, "&quot;");
+               }
+               return args;
+       },
+
+       setValue: function(args){
+               // summary:
+               //              Callback from the dialog when user presses "set" button.
+               // tags:
+               //              private
+               //TODO: prevent closing popup if the text is empty
+               this._onCloseDialog();
+               if(dojo.isIE){ //see #4151
+                       var sel = dijit.range.getSelection(this.editor.window);
+                       var range = sel.getRangeAt(0);
+                       var a = range.endContainer;
+                       if(a.nodeType === 3){
+                               // Text node, may be the link contents, so check parent.
+                               // This plugin doesn't really support nested HTML elements
+                               // in the link, it assumes all link content is text.
+                               a = a.parentNode;
+                       }
+                       if(a && (a.nodeName && a.nodeName.toLowerCase() !== this.tag)){
+                               // Stll nothing, one last thing to try on IE, as it might be 'img'
+                               // and thus considered a control.
+                               a = dojo.withGlobal(this.editor.window,
+                                       "getSelectedElement", dijit._editor.selection, [this.tag]);
+                       }
+                       if(a && (a.nodeName && a.nodeName.toLowerCase() === this.tag)){
+                               // Okay, we do have a match.  IE, for some reason, sometimes pastes before
+                               // instead of removing the targetted paste-over element, so we unlink the
+                               // old one first.  If we do not the <a> tag remains, but it has no content,
+                               // so isn't readily visible (but is wrong for the action).
+                               if(this.editor.queryCommandEnabled("unlink")){
+                                       // Select all the link childent, then unlink.  The following insert will
+                                       // then replace the selected text.
+                                       dojo.withGlobal(this.editor.window,
+                                               "selectElementChildren", dijit._editor.selection, [a]);
+                                       this.editor.execCommand("unlink");
+                               }
+                       }
+               }
+               // make sure values are properly escaped, etc.
+               args = this._checkValues(args); 
+               this.editor.execCommand('inserthtml',
+                       dojo.string.substitute(this.htmlTemplate, args));
+       },
+
+       _onCloseDialog: function(){
+               // summary:
+               //              Handler for close event on the dialog
+               this.editor.focus();
+       },
+
+       _getCurrentValues: function(a){
+               // summary:
+               //              Over-ride for getting the values to set in the dropdown.
+               // a:
+               //              The anchor/link to process for data for the dropdown.
+               // tags:
+               //              protected
+               var url, text, target;
+               if(a && a.tagName.toLowerCase() === this.tag){
+                       url = a.getAttribute('_djrealurl') || a.getAttribute('href');
+                       target = a.getAttribute('target') || "_self";
+                       text = a.textContent || a.innerText;
+                       dojo.withGlobal(this.editor.window, "selectElement", dijit._editor.selection, [a, true]);
+               }else{
+                       text = dojo.withGlobal(this.editor.window, dijit._editor.selection.getSelectedText);
+               }
+               return {urlInput: url || '', textInput: text || '', targetSelect: target || ''}; //Object;
+       },
+
+       _onOpenDialog: function(){
+               // summary:
+               //              Handler for when the dialog is opened.
+               //              If the caret is currently in a URL then populate the URL's info into the dialog.
+               var a;
+               if(dojo.isIE){
+                       // IE is difficult to select the element in, using the range unified
+                       // API seems to work reasonably well.
+                       var sel = dijit.range.getSelection(this.editor.window);
+                       var range = sel.getRangeAt(0);
+                       a = range.endContainer;
+                       if(a.nodeType === 3){
+                               // Text node, may be the link contents, so check parent.
+                               // This plugin doesn't really support nested HTML elements
+                               // in the link, it assumes all link content is text.
+                               a = a.parentNode;
+                       }
+                       if(a && (a.nodeName && a.nodeName.toLowerCase() !== this.tag)){
+                               // Stll nothing, one last thing to try on IE, as it might be 'img'
+                               // and thus considered a control.
+                               a = dojo.withGlobal(this.editor.window,
+                                       "getSelectedElement", dijit._editor.selection, [this.tag]);
+                       }
+               }else{
+                       a = dojo.withGlobal(this.editor.window,
+                               "getAncestorElement", dijit._editor.selection, [this.tag]);
+               }
+               this.dropDown.reset();
+               this._setButton.set("disabled", true);
+               this.dropDown.set("value", this._getCurrentValues(a));
+       },
+
+       _onDblClick: function(e){
+               // summary:
+               //              Function to define a behavior on double clicks on the element
+               //              type this dialog edits to select it and pop up the editor
+               //              dialog.
+               // e: Object
+               //              The double-click event.
+               // tags:
+               //              protected.
+               if(e && e.target){
+                       var t = e.target;
+                       var tg = t.tagName? t.tagName.toLowerCase() : "";
+                       if(tg === this.tag && dojo.attr(t,"href")){
+                               dojo.withGlobal(this.editor.window,
+                                        "selectElement",
+                                        dijit._editor.selection, [t]);
+                               this.editor.onDisplayChanged();
+                               setTimeout(dojo.hitch(this, function(){
+                                       // Focus shift outside the event handler.
+                                       // IE doesn't like focus changes in event handles.
+                                       this.button.set("disabled", false);
+                                       this.button.openDropDown();
+                               }), 10);
+                       }
+               }
+       }
+});
+
+dojo.declare("dijit._editor.plugins.ImgLinkDialog", [dijit._editor.plugins.LinkDialog], {
+       // summary:
+       //              This plugin extends LinkDialog and adds in a plugin for handling image links.
+       //              provides the image link dialog.
+       //
+       // description:
+       //              The command provided by this plugin is:
+       //              * insertImage
+
+       // linkDialogTemplate: [protected] String
+       //              Over-ride for template since img dialog doesn't need target that anchor tags may.
+       linkDialogTemplate: [
+               "<table><tr><td>",
+               "<label for='${id}_urlInput'>${url}</label>",
+               "</td><td>",
+               "<input dojoType='dijit.form.ValidationTextBox' regExp='${urlRegExp}' " +
+               "required='true' id='${id}_urlInput' name='urlInput' intermediateChanges='true'>",
+               "</td></tr><tr><td>",
+               "<label for='${id}_textInput'>${text}</label>",
+               "</td><td>",
+               "<input dojoType='dijit.form.ValidationTextBox' required='false' id='${id}_textInput' " +
+               "name='textInput' intermediateChanges='true'>",
+               "</td></tr><tr><td>",
+               "</td><td>",
+               "</td></tr><tr><td colspan='2'>",
+               "<button dojoType='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>",
+               "<button dojoType='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>",
+               "</td></tr></table>"
+       ].join(""),
+
+       // htmlTemplate: [protected] String
+       //              String used for templating the <img> HTML to insert at the desired point.
+       htmlTemplate: "<img src=\"${urlInput}\" _djrealurl=\"${urlInput}\" alt=\"${textInput}\" />",
+
+       // tag: [protected] String
+       //              Tag used for the link type (img).
+       tag: "img",
+
+       _getCurrentValues: function(img){
+               // summary:
+               //              Over-ride for getting the values to set in the dropdown.
+               // a:
+               //              The anchor/link to process for data for the dropdown.
+               // tags:
+               //              protected
+               var url, text;
+               if(img && img.tagName.toLowerCase() === this.tag){
+                       url = img.getAttribute('_djrealurl') || img.getAttribute('src');
+                       text = img.getAttribute('alt');
+                       dojo.withGlobal(this.editor.window,
+                               "selectElement", dijit._editor.selection, [img, true]);
+               }else{
+                       text = dojo.withGlobal(this.editor.window, dijit._editor.selection.getSelectedText);
+               }
+               return {urlInput: url || '', textInput: text || ''}; //Object;
+       },
+
+       _isValid: function(){
+               // summary:
+               //              Over-ride for images.  You can have alt text of blank, it is valid.
+               // tags:
+               //              protected
+               return this._urlInput.isValid();
+       },
+
+       _connectTagEvents: function(){
+               // summary:
+               //              Over-ridable function that connects tag specific events.
+               this.inherited(arguments);
+               this.editor.onLoadDeferred.addCallback(dojo.hitch(this, function(){
+                       // Use onmousedown instead of onclick.  Seems that IE eats the first onclick
+                       // to wrap it in a selector box, then the second one acts as onclick.  See #10420
+                       this.connect(this.editor.editNode, "onmousedown", this._selectTag);
+               }));
+       },
+
+       _selectTag: function(e){
+               // summary:
+               //              A simple event handler that lets me select an image if it is clicked on.
+               //              makes it easier to select images in a standard way across browsers.  Otherwise
+               //              selecting an image for edit becomes difficult.
+               // e: Event
+               //              The mousedown event.
+               // tags:
+               //              private
+               if(e && e.target){
+                       var t = e.target;
+                       var tg = t.tagName? t.tagName.toLowerCase() : "";
+                       if(tg === this.tag){
+                               dojo.withGlobal(this.editor.window,
+                                       "selectElement",
+                                       dijit._editor.selection, [t]);
+                       }
+               }
+       },
+
+       _checkValues: function(args){
+               // summary:
+               //              Function to check the values in args and 'fix' them up as needed 
+               //              (special characters in the url or alt text)
+               // args: Object
+               //              Content being set.              
+               // tags: 
+               //              protected
+               if(args && args.urlInput){
+                       args.urlInput = args.urlInput.replace(/"/g, "&quot;");
+               }
+               if(args && args.textInput){
+                       args.textInput = args.textInput.replace(/"/g, "&quot;");
+               }
+               return args;
+       },
+
+       _onDblClick: function(e){
+               // summary:
+               //              Function to define a behavior on double clicks on the element
+               //              type this dialog edits to select it and pop up the editor
+               //              dialog.
+               // e: Object
+               //              The double-click event.
+               // tags:
+               //              protected.
+               if(e && e.target){
+                       var t = e.target;
+                       var tg = t.tagName? t.tagName.toLowerCase() : "";
+                       if(tg === this.tag && dojo.attr(t,"src")){
+                               dojo.withGlobal(this.editor.window,
+                                        "selectElement",
+                                        dijit._editor.selection, [t]);
+                               this.editor.onDisplayChanged();
+                               setTimeout(dojo.hitch(this, function(){
+                                       // Focus shift outside the event handler.
+                                       // IE doesn't like focus changes in event handles.
+                                       this.button.set("disabled", false);
+                                       this.button.openDropDown();
+                               }), 10);
+                       }
+               }
+       }
+});
+
+// Register this plugin.
+dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
+       if(o.plugin){ return; }
+       switch(o.args.name){
+               case "createLink":
+                       o.plugin = new dijit._editor.plugins.LinkDialog({command: o.args.name});
+                       break;
+               case "insertImage":
+                       o.plugin = new dijit._editor.plugins.ImgLinkDialog({command: o.args.name});
+                       break;
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.MenuBar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.MenuBar"] = true;
+dojo.provide("dijit.MenuBar");
+
+
+
+dojo.declare("dijit.MenuBar", dijit._MenuBase, {
+       // summary:
+       //              A menu bar, listing menu choices horizontally, like the "File" menu in most desktop applications
+
+       templateString: dojo.cache("dijit", "templates/MenuBar.html", "<div class=\"dijitMenuBar dijitMenuPassive\" dojoAttachPoint=\"containerNode\"  waiRole=\"menubar\" tabIndex=\"${tabIndex}\" dojoAttachEvent=\"onkeypress: _onKeyPress\"></div>\n"),
+
+       baseClass: "dijitMenuBar",
+
+       // _isMenuBar: [protected] Boolean
+       //              This is a MenuBar widget, not a (vertical) Menu widget.
+       _isMenuBar: true,
+
+       postCreate: function(){
+               var k = dojo.keys, l = this.isLeftToRight();
+               this.connectKeyNavHandlers(
+                       l ? [k.LEFT_ARROW] : [k.RIGHT_ARROW],
+                       l ? [k.RIGHT_ARROW] : [k.LEFT_ARROW]
+               );
+
+               // parameter to dijit.popup.open() about where to put popup (relative to this.domNode)
+               this._orient = this.isLeftToRight() ? {BL: 'TL'} : {BR: 'TR'};
+       },
+
+       focusChild: function(item){
+               // overload focusChild so that whenever the focus is moved to a new item,
+               // check the previous focused whether it has its popup open, if so, after
+               // focusing the new item, open its submenu immediately
+               var prev_item = this.focusedChild,
+                       showpopup = prev_item && prev_item.popup && prev_item.popup.isShowingNow;
+               this.inherited(arguments);
+               if(showpopup && item.popup && !item.disabled){
+                       this._openPopup();              // TODO: on down arrow, _openPopup() is called here and in onItemClick()
+               }
+       },
+
+       _onKeyPress: function(/*Event*/ evt){
+               // summary:
+               //              Handle keyboard based menu navigation.
+               // tags:
+               //              protected
+
+               if(evt.ctrlKey || evt.altKey){ return; }
+
+               switch(evt.charOrCode){
+                       case dojo.keys.DOWN_ARROW:
+                               this._moveToPopup(evt);
+                               dojo.stopEvent(evt);
+               }
+       },
+
+       onItemClick: function(/*dijit._Widget*/ item, /*Event*/ evt){
+               // summary:
+               //              Handle clicks on an item. Cancels a dropdown if already open.
+               // tags:
+               //              private
+               if(item.popup && item.popup.isShowingNow){
+                       item.popup.onCancel();
+               }else{
+                       this.inherited(arguments);
+               }
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.MenuBarItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.MenuBarItem"] = true;
+dojo.provide("dijit.MenuBarItem");
+
+
+
+dojo.declare("dijit._MenuBarItemMixin", null, {
+       templateString: dojo.cache("dijit", "templates/MenuBarItem.html", "<div class=\"dijitReset dijitInline dijitMenuItem dijitMenuItemLabel\" dojoAttachPoint=\"focusNode\" waiRole=\"menuitem\" tabIndex=\"-1\"\n\t\tdojoAttachEvent=\"onmouseenter:_onHover,onmouseleave:_onUnhover,ondijitclick:_onClick\">\n\t<span dojoAttachPoint=\"containerNode\"></span>\n</div>\n"),
+
+       // overriding attributeMap because we don't have icon
+       attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
+               label: { node: "containerNode", type: "innerHTML" }
+       })
+});
+
+dojo.declare("dijit.MenuBarItem", [dijit.MenuItem, dijit._MenuBarItemMixin], {
+       // summary:
+       //              Item in a MenuBar that's clickable, and doesn't spawn a submenu when pressed (or hovered)
+
+});
+
+}
+
+if(!dojo._hasResource["dijit.PopupMenuBarItem"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.PopupMenuBarItem"] = true;
+dojo.provide("dijit.PopupMenuBarItem");
+
+
+
+
+dojo.declare("dijit.PopupMenuBarItem", [dijit.PopupMenuItem, dijit._MenuBarItemMixin], {
+       // summary:
+       //              Item in a MenuBar like "File" or "Edit", that spawns a submenu when pressed (or hovered)
+});
+
+
+}
+
+if(!dojo._hasResource["dojo.number"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.number"] = true;
+dojo.provide("dojo.number");
+
+
+
+
+
+
+
+/*=====
+dojo.number = {
+       // summary: localized formatting and parsing routines for Number
+}
+
+dojo.number.__FormatOptions = function(){
+       //      pattern: String?
+       //              override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns)
+       //              with this string.  Default value is based on locale.  Overriding this property will defeat
+       //              localization.  Literal characters in patterns are not supported.
+       //      type: String?
+       //              choose a format type based on the locale from the following:
+       //              decimal, scientific (not yet supported), percent, currency. decimal by default.
+       //      places: Number?
+       //              fixed number of decimal places to show.  This overrides any
+       //              information in the provided pattern.
+       //      round: Number?
+       //              5 rounds to nearest .5; 0 rounds to nearest whole (default). -1
+       //              means do not round.
+       //      locale: String?
+       //              override the locale used to determine formatting rules
+       //      fractional: Boolean?
+       //              If false, show no decimal places, overriding places and pattern settings.
+       this.pattern = pattern;
+       this.type = type;
+       this.places = places;
+       this.round = round;
+       this.locale = locale;
+       this.fractional = fractional;
+}
+=====*/
+
+dojo.number.format = function(/*Number*/value, /*dojo.number.__FormatOptions?*/options){
+       // summary:
+       //              Format a Number as a String, using locale-specific settings
+       // description:
+       //              Create a string from a Number using a known localized pattern.
+       //              Formatting patterns appropriate to the locale are chosen from the
+       //              [Common Locale Data Repository](http://unicode.org/cldr) as well as the appropriate symbols and
+       //              delimiters.
+       //              If value is Infinity, -Infinity, or is not a valid JavaScript number, return null.
+       // value:
+       //              the number to be formatted
+
+       options = dojo.mixin({}, options || {});
+       var locale = dojo.i18n.normalizeLocale(options.locale),
+               bundle = dojo.i18n.getLocalization("dojo.cldr", "number", locale);
+       options.customs = bundle;
+       var pattern = options.pattern || bundle[(options.type || "decimal") + "Format"];
+       if(isNaN(value) || Math.abs(value) == Infinity){ return null; } // null
+       return dojo.number._applyPattern(value, pattern, options); // String
+};
+
+//dojo.number._numberPatternRE = /(?:[#0]*,?)*[#0](?:\.0*#*)?/; // not precise, but good enough
+dojo.number._numberPatternRE = /[#0,]*[#0](?:\.0*#*)?/; // not precise, but good enough
+
+dojo.number._applyPattern = function(/*Number*/value, /*String*/pattern, /*dojo.number.__FormatOptions?*/options){
+       // summary:
+       //              Apply pattern to format value as a string using options. Gives no
+       //              consideration to local customs.
+       // value:
+       //              the number to be formatted.
+       // pattern:
+       //              a pattern string as described by
+       //              [unicode.org TR35](http://www.unicode.org/reports/tr35/#Number_Format_Patterns)
+       // options: dojo.number.__FormatOptions?
+       //              _applyPattern is usually called via `dojo.number.format()` which
+       //              populates an extra property in the options parameter, "customs".
+       //              The customs object specifies group and decimal parameters if set.
+
+       //TODO: support escapes
+       options = options || {};
+       var group = options.customs.group,
+               decimal = options.customs.decimal,
+               patternList = pattern.split(';'),
+               positivePattern = patternList[0];
+       pattern = patternList[(value < 0) ? 1 : 0] || ("-" + positivePattern);
+
+       //TODO: only test against unescaped
+       if(pattern.indexOf('%') != -1){
+               value *= 100;
+       }else if(pattern.indexOf('\u2030') != -1){
+               value *= 1000; // per mille
+       }else if(pattern.indexOf('\u00a4') != -1){
+               group = options.customs.currencyGroup || group;//mixins instead?
+               decimal = options.customs.currencyDecimal || decimal;// Should these be mixins instead?
+               pattern = pattern.replace(/\u00a4{1,3}/, function(match){
+                       var prop = ["symbol", "currency", "displayName"][match.length-1];
+                       return options[prop] || options.currency || "";
+               });
+       }else if(pattern.indexOf('E') != -1){
+               throw new Error("exponential notation not supported");
+       }
+       
+       //TODO: support @ sig figs?
+       var numberPatternRE = dojo.number._numberPatternRE;
+       var numberPattern = positivePattern.match(numberPatternRE);
+       if(!numberPattern){
+               throw new Error("unable to find a number expression in pattern: "+pattern);
+       }
+       if(options.fractional === false){ options.places = 0; }
+       return pattern.replace(numberPatternRE,
+               dojo.number._formatAbsolute(value, numberPattern[0], {decimal: decimal, group: group, places: options.places, round: options.round}));
+}
+
+dojo.number.round = function(/*Number*/value, /*Number?*/places, /*Number?*/increment){
+       //      summary:
+       //              Rounds to the nearest value with the given number of decimal places, away from zero
+       //      description:
+       //              Rounds to the nearest value with the given number of decimal places, away from zero if equal.
+       //              Similar to Number.toFixed(), but compensates for browser quirks. Rounding can be done by
+       //              fractional increments also, such as the nearest quarter.
+       //              NOTE: Subject to floating point errors.  See dojox.math.round for experimental workaround.
+       //      value:
+       //              The number to round
+       //      places:
+       //              The number of decimal places where rounding takes place.  Defaults to 0 for whole rounding.
+       //              Must be non-negative.
+       //      increment:
+       //              Rounds next place to nearest value of increment/10.  10 by default.
+       //      example:
+       //              >>> dojo.number.round(-0.5)
+       //              -1
+       //              >>> dojo.number.round(162.295, 2)
+       //              162.29  // note floating point error.  Should be 162.3
+       //              >>> dojo.number.round(10.71, 0, 2.5)
+       //              10.75
+       var factor = 10 / (increment || 10);
+       return (factor * +value).toFixed(places) / factor; // Number
+}
+
+if((0.9).toFixed() == 0){
+       // (isIE) toFixed() bug workaround: Rounding fails on IE when most significant digit
+       // is just after the rounding place and is >=5
+       (function(){
+               var round = 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 round(v, p, m) + (v > 0 ? d : -d);
+               }
+       })();
+}
+
+/*=====
+dojo.number.__FormatAbsoluteOptions = function(){
+       //      decimal: String?
+       //              the decimal separator
+       //      group: String?
+       //              the group separator
+       //      places: Number?|String?
+       //              number of decimal places.  the range "n,m" will format to m places.
+       //      round: Number?
+       //              5 rounds to nearest .5; 0 rounds to nearest whole (default). -1
+       //              means don't round.
+       this.decimal = decimal;
+       this.group = group;
+       this.places = places;
+       this.round = round;
+}
+=====*/
+
+dojo.number._formatAbsolute = function(/*Number*/value, /*String*/pattern, /*dojo.number.__FormatAbsoluteOptions?*/options){
+       // summary: 
+       //              Apply numeric pattern to absolute value using options. Gives no
+       //              consideration to local customs.
+       // value:
+       //              the number to be formatted, ignores sign
+       // pattern:
+       //              the number portion of a pattern (e.g. `#,##0.00`)
+       options = options || {};
+       if(options.places === true){options.places=0;}
+       if(options.places === Infinity){options.places=6;} // avoid a loop; pick a limit
+
+       var patternParts = pattern.split("."),
+               comma = typeof options.places == "string" && options.places.indexOf(","),
+               maxPlaces = options.places;
+       if(comma){
+               maxPlaces = options.places.substring(comma + 1);
+       }else if(!(maxPlaces >= 0)){
+               maxPlaces = (patternParts[1] || []).length;
+       }
+       if(!(options.round < 0)){
+               value = dojo.number.round(value, maxPlaces, options.round);
+       }
+
+       var valueParts = String(Math.abs(value)).split("."),
+               fractional = valueParts[1] || "";
+       if(patternParts[1] || options.places){
+               if(comma){
+                       options.places = options.places.substring(0, comma);
+               }
+               // Pad fractional with trailing zeros
+               var pad = options.places !== undefined ? options.places : (patternParts[1] && patternParts[1].lastIndexOf("0") + 1);
+               if(pad > fractional.length){
+                       valueParts[1] = dojo.string.pad(fractional, pad, '0', true);
+               }
+
+               // Truncate fractional
+               if(maxPlaces < fractional.length){
+                       valueParts[1] = fractional.substr(0, maxPlaces);
+               }
+       }else{
+               if(valueParts[1]){ valueParts.pop(); }
+       }
+
+       // Pad whole with leading zeros
+       var patternDigits = patternParts[0].replace(',', '');
+       pad = patternDigits.indexOf("0");
+       if(pad != -1){
+               pad = patternDigits.length - pad;
+               if(pad > valueParts[0].length){
+                       valueParts[0] = dojo.string.pad(valueParts[0], pad);
+               }
+
+               // Truncate whole
+               if(patternDigits.indexOf("#") == -1){
+                       valueParts[0] = valueParts[0].substr(valueParts[0].length - pad);
+               }
+       }
+
+       // Add group separators
+       var index = patternParts[0].lastIndexOf(','),
+               groupSize, groupSize2;
+       if(index != -1){
+               groupSize = patternParts[0].length - index - 1;
+               var remainder = patternParts[0].substr(0, index);
+               index = remainder.lastIndexOf(',');
+               if(index != -1){
+                       groupSize2 = remainder.length - index - 1;
+               }
+       }
+       var pieces = [];
+       for(var whole = valueParts[0]; whole;){
+               var off = whole.length - groupSize;
+               pieces.push((off > 0) ? whole.substr(off) : whole);
+               whole = (off > 0) ? whole.slice(0, off) : "";
+               if(groupSize2){
+                       groupSize = groupSize2;
+                       delete groupSize2;
+               }
+       }
+       valueParts[0] = pieces.reverse().join(options.group || ",");
+
+       return valueParts.join(options.decimal || ".");
+};
+
+/*=====
+dojo.number.__RegexpOptions = function(){
+       //      pattern: String?
+       //              override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns)
+       //              with this string.  Default value is based on locale.  Overriding this property will defeat
+       //              localization.
+       //      type: String?
+       //              choose a format type based on the locale from the following:
+       //              decimal, scientific (not yet supported), percent, currency. decimal by default.
+       //      locale: String?
+       //              override the locale used to determine formatting rules
+       //      strict: Boolean?
+       //              strict parsing, false by default.  Strict parsing requires input as produced by the format() method.
+       //              Non-strict is more permissive, e.g. flexible on white space, omitting thousands separators
+       //      places: Number|String?
+       //              number of decimal places to accept: Infinity, a positive number, or
+       //              a range "n,m".  Defined by pattern or Infinity if pattern not provided.
+       this.pattern = pattern;
+       this.type = type;
+       this.locale = locale;
+       this.strict = strict;
+       this.places = places;
+}
+=====*/
+dojo.number.regexp = function(/*dojo.number.__RegexpOptions?*/options){
+       //      summary:
+       //              Builds the regular needed to parse a number
+       //      description:
+       //              Returns regular expression with positive and negative match, group
+       //              and decimal separators
+       return dojo.number._parseInfo(options).regexp; // String
+}
+
+dojo.number._parseInfo = function(/*Object?*/options){
+       options = options || {};
+       var locale = dojo.i18n.normalizeLocale(options.locale),
+               bundle = dojo.i18n.getLocalization("dojo.cldr", "number", locale),
+               pattern = options.pattern || bundle[(options.type || "decimal") + "Format"],
+//TODO: memoize?
+               group = bundle.group,
+               decimal = bundle.decimal,
+               factor = 1;
+
+       if(pattern.indexOf('%') != -1){
+               factor /= 100;
+       }else if(pattern.indexOf('\u2030') != -1){
+               factor /= 1000; // per mille
+       }else{
+               var isCurrency = pattern.indexOf('\u00a4') != -1;
+               if(isCurrency){
+                       group = bundle.currencyGroup || group;
+                       decimal = bundle.currencyDecimal || decimal;
+               }
+       }
+
+       //TODO: handle quoted escapes
+       var patternList = pattern.split(';');
+       if(patternList.length == 1){
+               patternList.push("-" + patternList[0]);
+       }
+
+       var re = dojo.regexp.buildGroupRE(patternList, function(pattern){
+               pattern = "(?:"+dojo.regexp.escapeString(pattern, '.')+")";
+               return pattern.replace(dojo.number._numberPatternRE, function(format){
+                       var flags = {
+                               signed: false,
+                               separator: options.strict ? group : [group,""],
+                               fractional: options.fractional,
+                               decimal: decimal,
+                               exponent: false
+                               },
+
+                               parts = format.split('.'),
+                               places = options.places;
+
+                       // special condition for percent (factor != 1)
+                       // allow decimal places even if not specified in pattern
+                       if(parts.length == 1 && factor != 1){
+                           parts[1] = "###";
+                       }
+                       if(parts.length == 1 || places === 0){
+                               flags.fractional = false;
+                       }else{
+                               if(places === undefined){ places = options.pattern ? parts[1].lastIndexOf('0') + 1 : Infinity; }
+                               if(places && options.fractional == undefined){flags.fractional = true;} // required fractional, unless otherwise specified
+                               if(!options.places && (places < parts[1].length)){ places += "," + parts[1].length; }
+                               flags.places = places;
+                       }
+                       var groups = parts[0].split(',');
+                       if(groups.length > 1){
+                               flags.groupSize = groups.pop().length;
+                               if(groups.length > 1){
+                                       flags.groupSize2 = groups.pop().length;
+                               }
+                       }
+                       return "("+dojo.number._realNumberRegexp(flags)+")";
+               });
+       }, true);
+
+       if(isCurrency){
+               // substitute the currency symbol for the placeholder in the pattern
+               re = re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g, function(match, before, target, after){
+                       var prop = ["symbol", "currency", "displayName"][target.length-1],
+                               symbol = dojo.regexp.escapeString(options[prop] || options.currency || "");
+                       before = before ? "[\\s\\xa0]" : "";
+                       after = after ? "[\\s\\xa0]" : "";
+                       if(!options.strict){
+                               if(before){before += "*";}
+                               if(after){after += "*";}
+                               return "(?:"+before+symbol+after+")?";
+                       }
+                       return before+symbol+after;
+               });
+       }
+
+//TODO: substitute localized sign/percent/permille/etc.?
+
+       // normalize whitespace and return
+       return {regexp: re.replace(/[\xa0 ]/g, "[\\s\\xa0]"), group: group, decimal: decimal, factor: factor}; // Object
+}
+
+/*=====
+dojo.number.__ParseOptions = function(){
+       //      pattern: String?
+       //              override [formatting pattern](http://www.unicode.org/reports/tr35/#Number_Format_Patterns)
+       //              with this string.  Default value is based on locale.  Overriding this property will defeat
+       //              localization.  Literal characters in patterns are not supported.
+       //      type: String?
+       //              choose a format type based on the locale from the following:
+       //              decimal, scientific (not yet supported), percent, currency. decimal by default.
+       //      locale: String?
+       //              override the locale used to determine formatting rules
+       //      strict: Boolean?
+       //              strict parsing, false by default.  Strict parsing requires input as produced by the format() method.
+       //              Non-strict is more permissive, e.g. flexible on white space, omitting thousands separators
+       //      fractional: Boolean?|Array?
+       //              Whether to include the fractional portion, where the number of decimal places are implied by pattern
+       //              or explicit 'places' parameter.  The value [true,false] makes the fractional portion optional.
+       this.pattern = pattern;
+       this.type = type;
+       this.locale = locale;
+       this.strict = strict;
+       this.fractional = fractional;
+}
+=====*/
+dojo.number.parse = function(/*String*/expression, /*dojo.number.__ParseOptions?*/options){
+       // summary:
+       //              Convert a properly formatted string to a primitive Number, using
+       //              locale-specific settings.
+       // description:
+       //              Create a Number from a string using a known localized pattern.
+       //              Formatting patterns are chosen appropriate to the locale
+       //              and follow the syntax described by
+       //              [unicode.org TR35](http://www.unicode.org/reports/tr35/#Number_Format_Patterns)
+       //              Note that literal characters in patterns are not supported.
+       // expression:
+       //              A string representation of a Number
+       var info = dojo.number._parseInfo(options),
+               results = (new RegExp("^"+info.regexp+"$")).exec(expression);
+       if(!results){
+               return NaN; //NaN
+       }
+       var absoluteMatch = results[1]; // match for the positive expression
+       if(!results[1]){
+               if(!results[2]){
+                       return NaN; //NaN
+               }
+               // matched the negative pattern
+               absoluteMatch =results[2];
+               info.factor *= -1;
+       }
+
+       // Transform it to something Javascript can parse as a number.  Normalize
+       // decimal point and strip out group separators or alternate forms of whitespace
+       absoluteMatch = absoluteMatch.
+               replace(new RegExp("["+info.group + "\\s\\xa0"+"]", "g"), "").
+               replace(info.decimal, ".");
+       // Adjust for negative sign, percent, etc. as necessary
+       return absoluteMatch * info.factor; //Number
+};
+
+/*=====
+dojo.number.__RealNumberRegexpFlags = function(){
+       //      places: Number?
+       //              The integer number of decimal places or a range given as "n,m".  If
+       //              not given, the decimal part is optional and the number of places is
+       //              unlimited.
+       //      decimal: String?
+       //              A string for the character used as the decimal point.  Default
+       //              is ".".
+       //      fractional: Boolean?|Array?
+       //              Whether decimal places are used.  Can be true, false, or [true,
+       //              false].  Default is [true, false] which means optional.
+       //      exponent: Boolean?|Array?
+       //              Express in exponential notation.  Can be true, false, or [true,
+       //              false]. Default is [true, false], (i.e. will match if the
+       //              exponential part is present are not).
+       //      eSigned: Boolean?|Array?
+       //              The leading plus-or-minus sign on the exponent.  Can be true,
+       //              false, or [true, false].  Default is [true, false], (i.e. will
+       //              match if it is signed or unsigned).  flags in regexp.integer can be
+       //              applied.
+       this.places = places;
+       this.decimal = decimal;
+       this.fractional = fractional;
+       this.exponent = exponent;
+       this.eSigned = eSigned;
+}
+=====*/
+
+dojo.number._realNumberRegexp = function(/*dojo.number.__RealNumberRegexpFlags?*/flags){
+       // summary:
+       //              Builds a regular expression to match a real number in exponential
+       //              notation
+
+       // assign default values to missing parameters
+       flags = flags || {};
+       //TODO: use mixin instead?
+       if(!("places" in flags)){ flags.places = Infinity; }
+       if(typeof flags.decimal != "string"){ flags.decimal = "."; }
+       if(!("fractional" in flags) || /^0/.test(flags.places)){ flags.fractional = [true, false]; }
+       if(!("exponent" in flags)){ flags.exponent = [true, false]; }
+       if(!("eSigned" in flags)){ flags.eSigned = [true, false]; }
+
+       var integerRE = dojo.number._integerRegexp(flags),
+               decimalRE = dojo.regexp.buildGroupRE(flags.fractional,
+               function(q){
+                       var re = "";
+                       if(q && (flags.places!==0)){
+                               re = "\\" + flags.decimal;
+                               if(flags.places == Infinity){ 
+                                       re = "(?:" + re + "\\d+)?"; 
+                               }else{
+                                       re += "\\d{" + flags.places + "}"; 
+                               }
+                       }
+                       return re;
+               },
+               true
+       );
+
+       var exponentRE = dojo.regexp.buildGroupRE(flags.exponent,
+               function(q){ 
+                       if(q){ return "([eE]" + dojo.number._integerRegexp({ signed: flags.eSigned}) + ")"; }
+                       return ""; 
+               }
+       );
+
+       var realRE = integerRE + decimalRE;
+       // allow for decimals without integers, e.g. .25
+       if(decimalRE){realRE = "(?:(?:"+ realRE + ")|(?:" + decimalRE + "))";}
+       return realRE + exponentRE; // String
+};
+
+/*=====
+dojo.number.__IntegerRegexpFlags = function(){
+       //      signed: Boolean?
+       //              The leading plus-or-minus sign. Can be true, false, or `[true,false]`.
+       //              Default is `[true, false]`, (i.e. will match if it is signed
+       //              or unsigned).
+       //      separator: String?
+       //              The character used as the thousands separator. Default is no
+       //              separator. For more than one symbol use an array, e.g. `[",", ""]`,
+       //              makes ',' optional.
+       //      groupSize: Number?
+       //              group size between separators
+       //      groupSize2: Number?
+       //              second grouping, where separators 2..n have a different interval than the first separator (for India)
+       this.signed = signed;
+       this.separator = separator;
+       this.groupSize = groupSize;
+       this.groupSize2 = groupSize2;
+}
+=====*/
+
+dojo.number._integerRegexp = function(/*dojo.number.__IntegerRegexpFlags?*/flags){
+       // summary: 
+       //              Builds a regular expression that matches an integer
+
+       // assign default values to missing parameters
+       flags = flags || {};
+       if(!("signed" in flags)){ flags.signed = [true, false]; }
+       if(!("separator" in flags)){
+               flags.separator = "";
+       }else if(!("groupSize" in flags)){
+               flags.groupSize = 3;
+       }
+
+       var signRE = dojo.regexp.buildGroupRE(flags.signed,
+               function(q){ return q ? "[-+]" : ""; },
+               true
+       );
+
+       var numberRE = dojo.regexp.buildGroupRE(flags.separator,
+               function(sep){
+                       if(!sep){
+                               return "(?:\\d+)";
+                       }
+
+                       sep = dojo.regexp.escapeString(sep);
+                       if(sep == " "){ sep = "\\s"; }
+                       else if(sep == "\xa0"){ sep = "\\s\\xa0"; }
+
+                       var grp = flags.groupSize, grp2 = flags.groupSize2;
+                       //TODO: should we continue to enforce that numbers with separators begin with 1-9?  See #6933
+                       if(grp2){
+                               var grp2RE = "(?:0|[1-9]\\d{0," + (grp2-1) + "}(?:[" + sep + "]\\d{" + grp2 + "})*[" + sep + "]\\d{" + grp + "})";
+                               return ((grp-grp2) > 0) ? "(?:" + grp2RE + "|(?:0|[1-9]\\d{0," + (grp-1) + "}))" : grp2RE;
+                       }
+                       return "(?:0|[1-9]\\d{0," + (grp-1) + "}(?:[" + sep + "]\\d{" + grp + "})*)";
+               },
+               true
+       );
+
+       return signRE + numberRE; // String
+}
+
+}
+
+if(!dojo._hasResource["dijit.ProgressBar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.ProgressBar"] = true;
+dojo.provide("dijit.ProgressBar");
+
+
+
+
+
+
+
+dojo.declare("dijit.ProgressBar", [dijit._Widget, dijit._Templated], {
+       // summary:
+       //              A progress indication widget, showing the amount completed
+       //              (often the percentage completed) of a task.
+       //
+       // example:
+       // |    <div dojoType="ProgressBar"
+       // |             places="0"
+       // |             progress="..." maximum="...">
+       // |    </div>
+       //
+       // description:
+       //              Note that the progress bar is updated via (a non-standard)
+       //              update() method, rather than via attr() like other widgets.
+
+       // progress: [const] String (Percentage or Number)
+       //              Number or percentage indicating amount of task completed.
+       //              With "%": percentage value, 0% <= progress <= 100%, or
+       //              without "%": absolute value, 0 <= progress <= maximum
+       // TODO: rename to value for 2.0
+       progress: "0",
+
+       // maximum: [const] Float
+       //              Max sample number
+       maximum: 100,
+
+       // places: [const] Number
+       //              Number of places to show in values; 0 by default
+       places: 0,
+
+       // indeterminate: [const] Boolean
+       //              If false: show progress value (number or percentage).
+       //              If true: show that a process is underway but that the amount completed is unknown.
+       indeterminate: false,
+
+       // name: String
+       //              this is the field name (for a form) if set. This needs to be set if you want to use
+       //              this widget in a dijit.form.Form widget (such as dijit.Dialog)
+       name: '',
+
+       templateString: dojo.cache("dijit", "templates/ProgressBar.html", "<div class=\"dijitProgressBar dijitProgressBarEmpty\"\n\t><div waiRole=\"progressbar\" dojoAttachPoint=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\"></div\n\t\t><span style=\"visibility:hidden\">&nbsp;</span\n\t></div\n\t><div dojoAttachPoint=\"label\" class=\"dijitProgressBarLabel\" id=\"${id}_label\">&nbsp;</div\n\t><img dojoAttachPoint=\"indeterminateHighContrastImage\" class=\"dijitProgressBarIndeterminateHighContrastImage\" alt=\"\"\n/></div>\n"),
+
+       // _indeterminateHighContrastImagePath: [private] dojo._URL
+       //              URL to image to use for indeterminate progress bar when display is in high contrast mode
+       _indeterminateHighContrastImagePath:
+               dojo.moduleUrl("dijit", "themes/a11y/indeterminate_progress.gif"),
+
+       // public functions
+       postCreate: function(){
+               this.inherited(arguments);
+               this.indeterminateHighContrastImage.setAttribute("src",
+                       this._indeterminateHighContrastImagePath.toString());
+               this.update();
+       },
+
+       update: function(/*Object?*/attributes){
+               // summary:
+               //              Change attributes of ProgressBar, similar to attr(hash).
+               //
+               // attributes:
+               //              May provide progress and/or maximum properties on this parameter;
+               //              see attribute specs for details.
+               //
+               // example:
+               //      |       myProgressBar.update({'indeterminate': true});
+               //      |       myProgressBar.update({'progress': 80});
+
+               // TODO: deprecate this method and use set() instead
+
+               dojo.mixin(this, attributes || {});
+               var tip = this.internalProgress;
+               var percent = 1, classFunc;
+               if(this.indeterminate){
+                       classFunc = "addClass";
+                       dijit.removeWaiState(tip, "valuenow");
+                       dijit.removeWaiState(tip, "valuemin");
+                       dijit.removeWaiState(tip, "valuemax");
+               }else{
+                       classFunc = "removeClass";
+                       if(String(this.progress).indexOf("%") != -1){
+                               percent = Math.min(parseFloat(this.progress)/100, 1);
+                               this.progress = percent * this.maximum;
+                       }else{
+                               this.progress = Math.min(this.progress, this.maximum);
+                               percent = this.progress / this.maximum;
+                       }
+                       var text = this.report(percent);
+                       this.label.firstChild.nodeValue = text;
+                       dijit.setWaiState(tip, "describedby", this.label.id);
+                       dijit.setWaiState(tip, "valuenow", this.progress);
+                       dijit.setWaiState(tip, "valuemin", 0);
+                       dijit.setWaiState(tip, "valuemax", this.maximum);
+               }
+               dojo[classFunc](this.domNode, "dijitProgressBarIndeterminate");
+               tip.style.width = (percent * 100) + "%";
+               this.onChange();
+       },
+
+       _setValueAttr: function(v){
+               if(v == Infinity){
+                       this.update({indeterminate:true});
+               }else{
+                       this.update({indeterminate:false, progress:v});
+               }
+       },
+
+       _getValueAttr: function(){
+               return this.progress;
+       },
+
+       report: function(/*float*/percent){
+               // summary:
+               //              Generates message to show inside progress bar (normally indicating amount of task completed).
+               //              May be overridden.
+               // tags:
+               //              extension
+
+               return dojo.number.format(percent, { type: "percent", places: this.places, locale: this.lang });
+       },
+
+       onChange: function(){
+               // summary:
+               //              Callback fired when progress updates.
+               // tags:
+               //              progress
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.TitlePane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.TitlePane"] = true;
+dojo.provide("dijit.TitlePane");
+
+
+
+
+
+
+
+dojo.declare(
+       "dijit.TitlePane",
+       [dijit.layout.ContentPane, dijit._Templated, dijit._CssStateMixin],
+{
+       // summary:
+       //              A pane with a title on top, that can be expanded or collapsed.
+       //
+       // description:
+       //              An accessible container with a title Heading, and a content
+       //              section that slides open and closed. TitlePane is an extension to
+       //              `dijit.layout.ContentPane`, providing all the useful content-control aspects from it.
+       //
+       // example:
+       // |    // load a TitlePane from remote file:
+       // |    var foo = new dijit.TitlePane({ href: "foobar.html", title:"Title" });
+       // |    foo.startup();
+       //
+       // example:
+       // |    <!-- markup href example: -->
+       // |    <div dojoType="dijit.TitlePane" href="foobar.html" title="Title"></div>
+       //
+       // example:
+       // |    <!-- markup with inline data -->
+       // |    <div dojoType="dijit.TitlePane" title="Title">
+       // |            <p>I am content</p>
+       // |    </div>
+
+       // title: String
+       //              Title of the pane
+       title: "",
+
+       // open: Boolean
+       //              Whether pane is opened or closed.
+       open: true,
+
+       // toggleable: Boolean
+       //              Whether pane can be opened or closed by clicking the title bar.
+       toggleable: true,
+
+       // tabIndex: String
+       //              Tabindex setting for the title (so users can tab to the title then
+       //              use space/enter to open/close the title pane)
+       tabIndex: "0",
+
+       // duration: Integer
+       //              Time in milliseconds to fade in/fade out
+       duration: dijit.defaultDuration,
+
+       // baseClass: [protected] String
+       //              The root className to be placed on this widget's domNode.
+       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\" waiRole=\"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\" waiRole=\"presentation\">\n\t\t<div class=\"dijitReset\" dojoAttachPoint=\"wipeNode\" waiRole=\"presentation\">\n\t\t\t<div class=\"dijitTitlePaneContentInner\" dojoAttachPoint=\"containerNode\" waiRole=\"region\" tabindex=\"-1\" 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"},    // focusNode spans the entire width, titleNode doesn't
+               id:""
+       }),
+
+       postCreate: function(){
+               if(!this.open){
+                       this.hideNode.style.display = this.wipeNode.style.display = "none";
+               }
+               
+               // Hover and focus effect on title bar, except for non-toggleable TitlePanes
+               // This should really be controlled from _setToggleableAttr() but _CssStateMixin
+               // doesn't provide a way to disconnect a previous _trackMouseState() call
+               if(this.toggleable){
+                       this._trackMouseState(this.titleBarNode, "dijitTitlePaneTitle");
+               }
+               this._setCss();
+               dojo.setSelectable(this.titleNode, false);
+
+               // setup open/close animations
+               var hideNode = this.hideNode, wipeNode = this.wipeNode;
+               this._wipeIn = dojo.fx.wipeIn({
+                       node: this.wipeNode,
+                       duration: this.duration,
+                       beforeBegin: function(){
+                               hideNode.style.display="";
+                       }
+               });
+               this._wipeOut = dojo.fx.wipeOut({
+                       node: this.wipeNode,
+                       duration: this.duration,
+                       onEnd: function(){
+                               hideNode.style.display="none";
+                       }
+               });
+               this.inherited(arguments);
+       },
+
+       _setOpenAttr: function(/* Boolean */ open){
+               // summary:
+               //              Hook to make attr("open", boolean) control the open/closed state of the pane.
+               // open: Boolean
+               //              True if you want to open the pane, false if you want to close it.
+               if(this.open !== open){ this.toggle(); }
+               dijit.setWaiState(this.containerNode,"hidden", this.open ? "false" : "true");
+               dijit.setWaiState(this.focusNode, "pressed", this.open ? "true" : "false");
+       },
+
+       _setToggleableAttr: function(/* Boolean */ canToggle){
+               // summary:
+               //              Hook to make attr("canToggle", boolean) work.
+               // canToggle: Boolean
+               //              True to allow user to open/close pane by clicking title bar.
+               this.toggleable = canToggle;
+               dijit.setWaiRole(this.focusNode, canToggle ? "button" : "heading");
+               if(canToggle){
+                       // TODO: if canToggle is switched from true false shouldn't we remove this setting?
+                       dijit.setWaiState(this.focusNode, "controls", this.id+"_pane");
+                       dojo.attr(this.focusNode, "tabIndex", this.tabIndex);
+               }
+               else{
+                       dojo.removeAttr(this.focusNode, "tabIndex");
+               }
+               this._setCss();
+       },
+
+       _setContentAttr: function(content){
+               // summary:
+               //              Hook to make attr("content", ...) work.
+               //              Typically called when an href is loaded.  Our job is to make the animation smooth.
+
+               if(!this.open || !this._wipeOut || this._wipeOut.status() == "playing"){
+                       // we are currently *closing* the pane (or the pane is closed), so just let that continue
+                       this.inherited(arguments);
+               }else{
+                       if(this._wipeIn && this._wipeIn.status() == "playing"){
+                               this._wipeIn.stop();
+                       }
+
+                       // freeze container at current height so that adding new content doesn't make it jump
+                       dojo.marginBox(this.wipeNode, { h: dojo.marginBox(this.wipeNode).h });
+
+                       // add the new content (erasing the old content, if any)
+                       this.inherited(arguments);
+
+                       // call _wipeIn.play() to animate from current height to new height
+                       if(this._wipeIn){
+                               this._wipeIn.play();
+                       }else{
+                               this.hideNode.style.display = "";
+                       }
+               }
+       },
+
+       toggle: function(){
+               // summary:
+               //              Switches between opened and closed state
+               // tags:
+               //              private
+
+               dojo.forEach([this._wipeIn, this._wipeOut], function(animation){
+                       if(animation && animation.status() == "playing"){
+                               animation.stop();
+                       }
+               });
+
+               var anim = this[this.open ? "_wipeOut" : "_wipeIn"]
+               if(anim){
+                       anim.play();
+               }else{
+                       this.hideNode.style.display = this.open ? "" : "none";
+               }
+               this.open =! this.open;
+
+               // load content (if this is the first time we are opening the TitlePane
+               // and content is specified as an href, or href was set when hidden)
+               if(this.open){
+                       this._onShow();
+               }else{
+                       this.onHide();
+               }
+
+               this._setCss();
+       },
+
+       _setCss: function(){
+               // summary:
+               //              Set the open/close css state for the TitlePane
+               // tags:
+               //              private
+
+               var node = this.titleBarNode || this.focusNode;
+
+               if(this._titleBarClass){
+                       dojo.removeClass(node, this._titleBarClass);
+               }
+               this._titleBarClass = "dijit" + (this.toggleable ? "" : "Fixed") + (this.open ? "Open" : "Closed");
+               dojo.addClass(node, this._titleBarClass);
+               this.arrowNodeInner.innerHTML = this.open ? "-" : "+";
+       },
+
+       _onTitleKey: function(/*Event*/ e){
+               // summary:
+               //              Handler for when user hits a key
+               // tags:
+               //              private
+
+               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(){
+               // summary:
+               //              Handler when user clicks the title bar
+               // tags:
+               //              private
+               if(this.toggleable){
+                       this.toggle();
+               }
+       },
+
+       setTitle: function(/*String*/ title){
+               // summary:
+               //              Deprecated.  Use set('title', ...) instead.
+               // tags:
+               //              deprecated
+               dojo.deprecated("dijit.TitlePane.setTitle() is deprecated.  Use set('title', ...) instead.", "", "2.0");
+               this.set("title", title);
+       }
+});
+
+}
+
+if(!dojo._hasResource["dojo.DeferredList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.DeferredList"] = true;
+dojo.provide("dojo.DeferredList");
+dojo.DeferredList = function(/*Array*/ list, /*Boolean?*/ fireOnOneCallback, /*Boolean?*/ fireOnOneErrback, /*Boolean?*/ consumeErrors, /*Function?*/ canceller){
+       // summary:
+       //              Provides event handling for a group of Deferred objects.
+       // description:
+       //              DeferredList takes an array of existing deferreds and returns a new deferred of its own
+       //              this new deferred will typically have its callback fired when all of the deferreds in
+       //              the given list have fired their own deferreds.  The parameters `fireOnOneCallback` and
+       //              fireOnOneErrback, will fire before all the deferreds as appropriate
+       //
+       //      list:
+       //              The list of deferreds to be synchronizied with this DeferredList
+       //      fireOnOneCallback:
+       //              Will cause the DeferredLists callback to be fired as soon as any
+       //              of the deferreds in its list have been fired instead of waiting until
+       //              the entire list has finished
+       //      fireonOneErrback:
+       //              Will cause the errback to fire upon any of the deferreds errback
+       //      canceller:
+       //              A deferred canceller function, see dojo.Deferred
+       var resultList = [];
+       dojo.Deferred.call(this);
+       var self = this;
+       if(list.length === 0 && !fireOnOneCallback){
+               this.resolve([0, []]);
+       }
+       var finished = 0;
+       dojo.forEach(list, function(item, i){
+               item.then(function(result){
+                       if(fireOnOneCallback){
+                               self.resolve([i, result]);
+                       }else{
+                               addResult(true, result);
+                       }
+               },function(error){
+                       if(fireOnOneErrback){
+                               self.reject(error);
+                       }else{
+                               addResult(false, error);
+                       }
+                       if(consumeErrors){
+                               return null;
+                       }
+                       throw error;
+               });
+               function addResult(succeeded, result){
+                       resultList[i] = [succeeded, result];
+                       finished++;
+                       if(finished === list.length){
+                               self.resolve(resultList);
+                       }
+                       
+               }
+       });
+};
+dojo.DeferredList.prototype = new dojo.Deferred();
+
+dojo.DeferredList.prototype.gatherResults= function(deferredList){
+       // summary:     
+       //      Gathers the results of the deferreds for packaging
+       //      as the parameters to the Deferred Lists' callback
+
+       var d = new dojo.DeferredList(deferredList, false, true, false);
+       d.addCallback(function(results){
+               var ret = [];
+               dojo.forEach(results, function(result){
+                       ret.push(result[1]);
+               });
+               return ret;
+       });
+       return d;
+};
+
+}
+
+if(!dojo._hasResource["dojo.cookie"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.cookie"] = true;
+dojo.provide("dojo.cookie");
+
+
+
+/*=====
+dojo.__cookieProps = function(){
+       //      expires: Date|String|Number?
+       //              If a number, the number of days from today at which the cookie
+       //              will expire. If a date, the date past which the cookie will expire.
+       //              If expires is in the past, the cookie will be deleted.
+       //              If expires is omitted or is 0, the cookie will expire when the browser closes. << FIXME: 0 seems to disappear right away? FF3.
+       //      path: String?
+       //              The path to use for the cookie.
+       //      domain: String?
+       //              The domain to use for the cookie.
+       //      secure: Boolean?
+       //              Whether to only send the cookie on secure connections
+       this.expires = expires;
+       this.path = path;
+       this.domain = domain;
+       this.secure = secure;
+}
+=====*/
+
+
+dojo.cookie = function(/*String*/name, /*String?*/value, /*dojo.__cookieProps?*/props){
+       //      summary: 
+       //              Get or set a cookie.
+       //      description:
+       //              If one argument is passed, returns the value of the cookie
+       //              For two or more arguments, acts as a setter.
+       //      name:
+       //              Name of the cookie
+       //      value:
+       //              Value for the cookie
+       //      props: 
+       //              Properties for the cookie
+       //      example:
+       //              set a cookie with the JSON-serialized contents of an object which
+       //              will expire 5 days from now:
+       //      |       dojo.cookie("configObj", dojo.toJson(config), { expires: 5 });
+       //      
+       //      example:
+       //              de-serialize a cookie back into a JavaScript object:
+       //      |       var config = dojo.fromJson(dojo.cookie("configObj"));
+       //      
+       //      example:
+       //              delete a cookie:
+       //      |       dojo.cookie("configObj", null, {expires: -1});
+       var c = document.cookie;
+       if(arguments.length == 1){
+               var matches = c.match(new RegExp("(?:^|; )" + dojo.regexp.escapeString(name) + "=([^;]*)"));
+               return matches ? decodeURIComponent(matches[1]) : undefined; // String or undefined
+       }else{
+               props = props || {};
+// FIXME: expires=0 seems to disappear right away, not on close? (FF3)  Change docs?
+               var exp = props.expires;
+               if(typeof exp == "number"){ 
+                       var d = new Date();
+                       d.setTime(d.getTime() + exp*24*60*60*1000);
+                       exp = props.expires = d;
+               }
+               if(exp && exp.toUTCString){ props.expires = exp.toUTCString(); }
+
+               value = encodeURIComponent(value);
+               var updatedCookie = name + "=" + value, propName;
+               for(propName in props){
+                       updatedCookie += "; " + propName;
+                       var propValue = props[propName];
+                       if(propValue !== true){ updatedCookie += "=" + propValue; }
+               }
+               document.cookie = updatedCookie;
+       }
+};
+
+dojo.cookie.isSupported = function(){
+       //      summary:
+       //              Use to determine if the current browser supports cookies or not.
+       //              
+       //              Returns true if user allows cookies.
+       //              Returns false if user doesn't allow cookies.
+
+       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.tree.TreeStoreModel"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.tree.TreeStoreModel"] = true;
+dojo.provide("dijit.tree.TreeStoreModel");
+
+dojo.declare(
+               "dijit.tree.TreeStoreModel",
+               null,
+       {
+               // summary:
+               //              Implements dijit.Tree.model connecting to a store with a single
+               //              root item.  Any methods passed into the constructor will override
+               //              the ones defined here.
+
+               // store: dojo.data.Store
+               //              Underlying store
+               store: null,
+
+               // childrenAttrs: String[]
+               //              One or more attribute names (attributes in the dojo.data item) that specify that item's children
+               childrenAttrs: ["children"],
+
+               // newItemIdAttr: String
+               //              Name of attribute in the Object passed to newItem() that specifies the id.
+               //
+               //              If newItemIdAttr is set then it's used when newItem() is called to see if an
+               //              item with the same id already exists, and if so just links to the old item
+               //              (so that the old item ends up with two parents).
+               //
+               //              Setting this to null or "" will make every drop create a new item.
+               newItemIdAttr: "id",
+
+               // labelAttr: String
+               //              If specified, get label for tree node from this attribute, rather
+               //              than by calling store.getLabel()
+               labelAttr: "",
+
+               // root: [readonly] dojo.data.Item
+               //              Pointer to the root item (read only, not a parameter)
+               root: null,
+
+               // query: anything
+               //              Specifies datastore query to return the root item for the tree.
+               //              Must only return a single item.   Alternately can just pass in pointer
+               //              to root item.
+               // example:
+               //      |       {id:'ROOT'}
+               query: null,
+
+               // deferItemLoadingUntilExpand: Boolean
+               //              Setting this to true will cause the TreeStoreModel to defer calling loadItem on nodes
+               //              until they are expanded. This allows for lazying loading where only one
+               //              loadItem (and generally one network call, consequently) per expansion
+               //              (rather than one for each child).
+               //              This relies on partial loading of the children items; each children item of a
+               //              fully loaded item should contain the label and info about having children.
+               deferItemLoadingUntilExpand: false,
+
+               constructor: function(/* Object */ args){
+                       // summary:
+                       //              Passed the arguments listed above (store, etc)
+                       // tags:
+                       //              private
+
+                       dojo.mixin(this, args);
+
+                       this.connects = [];
+
+                       var store = this.store;
+                       if(!store.getFeatures()['dojo.data.api.Identity']){
+                               throw new Error("dijit.Tree: store must support dojo.data.Identity");
+                       }
+
+                       // if the store supports Notification, subscribe to the notification events
+                       if(store.getFeatures()['dojo.data.api.Notification']){
+                               this.connects = this.connects.concat([
+                                       dojo.connect(store, "onNew", this, "onNewItem"),
+                                       dojo.connect(store, "onDelete", this, "onDeleteItem"),
+                                       dojo.connect(store, "onSet", this, "onSetItem")
+                               ]);
+                       }
+               },
+
+               destroy: function(){
+                       dojo.forEach(this.connects, dojo.disconnect);
+                       // TODO: should cancel any in-progress processing of getRoot(), getChildren()
+               },
+
+               // =======================================================================
+               // Methods for traversing hierarchy
+
+               getRoot: function(onItem, onError){
+                       // summary:
+                       //              Calls onItem with the root item for the tree, possibly a fabricated item.
+                       //              Calls onError on error.
+                       if(this.root){
+                               onItem(this.root);
+                       }else{
+                               this.store.fetch({
+                                       query: this.query,
+                                       onComplete: dojo.hitch(this, function(items){
+                                               if(items.length != 1){
+                                                       throw new Error(this.declaredClass + ": query " + dojo.toJson(this.query) + " returned " + items.length +
+                                                               " items, but must return exactly one item");
+                                               }
+                                               this.root = items[0];
+                                               onItem(this.root);
+                                       }),
+                                       onError: onError
+                               });
+                       }
+               },
+
+               mayHaveChildren: function(/*dojo.data.Item*/ item){
+                       // summary:
+                       //              Tells if an item has or may have children.  Implementing logic here
+                       //              avoids showing +/- expando icon for nodes that we know don't have children.
+                       //              (For efficiency reasons we may not want to check if an element actually
+                       //              has children until user clicks the expando node)
+                       return dojo.some(this.childrenAttrs, function(attr){
+                               return this.store.hasAttribute(item, attr);
+                       }, this);
+               },
+
+               getChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ onComplete, /*function*/ onError){
+                       // summary:
+                       //              Calls onComplete() with array of child items of given parent item, all loaded.
+
+                       var store = this.store;
+                       if(!store.isItemLoaded(parentItem)){
+                               // The parent is not loaded yet, we must be in deferItemLoadingUntilExpand
+                               // mode, so we will load it and just return the children (without loading each
+                               // child item)
+                               var getChildren = dojo.hitch(this, arguments.callee);
+                               store.loadItem({
+                                       item: parentItem,
+                                       onItem: function(parentItem){
+                                               getChildren(parentItem, onComplete, onError);
+                                       },
+                                       onError: onError
+                               });
+                               return;
+                       }
+                       // get children of specified item
+                       var childItems = [];
+                       for(var i=0; i<this.childrenAttrs.length; i++){
+                               var vals = store.getValues(parentItem, this.childrenAttrs[i]);
+                               childItems = childItems.concat(vals);
+                       }
+
+                       // count how many items need to be loaded
+                       var _waitCount = 0;
+                       if(!this.deferItemLoadingUntilExpand){
+                               dojo.forEach(childItems, function(item){ if(!store.isItemLoaded(item)){ _waitCount++; } });
+                       }
+
+                       if(_waitCount == 0){
+                               // all items are already loaded (or we aren't loading them).  proceed...
+                               onComplete(childItems);
+                       }else{
+                               // still waiting for some or all of the items to load
+                               dojo.forEach(childItems, function(item, idx){
+                                       if(!store.isItemLoaded(item)){
+                                               store.loadItem({
+                                                       item: item,
+                                                       onItem: function(item){
+                                                               childItems[idx] = item;
+                                                               if(--_waitCount == 0){
+                                                                       // all nodes have been loaded, send them to the tree
+                                                                       onComplete(childItems);
+                                                               }
+                                                       },
+                                                       onError: onError
+                                               });
+                                       }
+                               });
+                       }
+               },
+
+               // =======================================================================
+               // Inspecting items
+
+               isItem: function(/* anything */ something){
+                       return this.store.isItem(something);    // Boolean
+               },
+
+               fetchItemByIdentity: function(/* object */ keywordArgs){
+                       this.store.fetchItemByIdentity(keywordArgs);
+               },
+
+               getIdentity: function(/* item */ item){
+                       return this.store.getIdentity(item);    // Object
+               },
+
+               getLabel: function(/*dojo.data.Item*/ item){
+                       // summary:
+                       //              Get the label for an item
+                       if(this.labelAttr){
+                               return this.store.getValue(item,this.labelAttr);        // String
+                       }else{
+                               return this.store.getLabel(item);       // String
+                       }
+               },
+
+               // =======================================================================
+               // Write interface
+
+               newItem: function(/* dojo.dnd.Item */ args, /*Item*/ parent, /*int?*/ insertIndex){
+                       // summary:
+                       //              Creates a new item.   See `dojo.data.api.Write` for details on args.
+                       //              Used in drag & drop when item from external source dropped onto tree.
+                       // description:
+                       //              Developers will need to override this method if new items get added
+                       //              to parents with multiple children attributes, in order to define which
+                       //              children attribute points to the new item.
+
+                       var pInfo = {parent: parent, attribute: this.childrenAttrs[0], insertIndex: insertIndex};
+
+                       if(this.newItemIdAttr && args[this.newItemIdAttr]){
+                               // Maybe there's already a corresponding item in the store; if so, reuse it.
+                               this.fetchItemByIdentity({identity: args[this.newItemIdAttr], scope: this, onItem: function(item){
+                                       if(item){
+                                               // There's already a matching item in store, use it
+                                               this.pasteItem(item, null, parent, true, insertIndex);
+                                       }else{
+                                               // Create new item in the tree, based on the drag source.
+                                               this.store.newItem(args, pInfo);
+                                       }
+                               }});
+                       }else{
+                               // [as far as we know] there is no id so we must assume this is a new item
+                               this.store.newItem(args, pInfo);
+                       }
+               },
+
+               pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy, /*int?*/ insertIndex){
+                       // summary:
+                       //              Move or copy an item from one parent item to another.
+                       //              Used in drag & drop
+                       var store = this.store,
+                               parentAttr = this.childrenAttrs[0];     // name of "children" attr in parent item
+
+                       // remove child from source item, and record the attribute that child occurred in
+                       if(oldParentItem){
+                               dojo.forEach(this.childrenAttrs, function(attr){
+                                       if(store.containsValue(oldParentItem, attr, childItem)){
+                                               if(!bCopy){
+                                                       var values = dojo.filter(store.getValues(oldParentItem, attr), function(x){
+                                                               return x != childItem;
+                                                       });
+                                                       store.setValues(oldParentItem, attr, values);
+                                               }
+                                               parentAttr = attr;
+                                       }
+                               });
+                       }
+
+                       // modify target item's children attribute to include this item
+                       if(newParentItem){
+                               if(typeof insertIndex == "number"){
+                                       // call slice() to avoid modifying the original array, confusing the data store
+                                       var childItems = store.getValues(newParentItem, parentAttr).slice();
+                                       childItems.splice(insertIndex, 0, childItem);
+                                       store.setValues(newParentItem, parentAttr, childItems);
+                               }else{
+                                       store.setValues(newParentItem, parentAttr,
+                                               store.getValues(newParentItem, parentAttr).concat(childItem));
+                               }
+                       }
+               },
+
+               // =======================================================================
+               // Callbacks
+
+               onChange: function(/*dojo.data.Item*/ item){
+                       // summary:
+                       //              Callback whenever an item has changed, so that Tree
+                       //              can update the label, icon, etc.   Note that changes
+                       //              to an item's children or parent(s) will trigger an
+                       //              onChildrenChange() so you can ignore those changes here.
+                       // tags:
+                       //              callback
+               },
+
+               onChildrenChange: function(/*dojo.data.Item*/ parent, /*dojo.data.Item[]*/ newChildrenList){
+                       // summary:
+                       //              Callback to do notifications about new, updated, or deleted items.
+                       // tags:
+                       //              callback
+               },
+
+               onDelete: function(/*dojo.data.Item*/ parent, /*dojo.data.Item[]*/ newChildrenList){
+                       // summary:
+                       //              Callback when an item has been deleted.
+                       // description:
+                       //              Note that there will also be an onChildrenChange() callback for the parent
+                       //              of this item.
+                       // tags:
+                       //              callback
+               },
+
+               // =======================================================================
+               // Events from data store
+
+               onNewItem: function(/* dojo.data.Item */ item, /* Object */ parentInfo){
+                       // summary:
+                       //              Handler for when new items appear in the store, either from a drop operation
+                       //              or some other way.   Updates the tree view (if necessary).
+                       // description:
+                       //              If the new item is a child of an existing item,
+                       //              calls onChildrenChange() with the new list of children
+                       //              for that existing item.
+                       //
+                       // tags:
+                       //              extension
+
+                       // We only care about the new item if it has a parent that corresponds to a TreeNode
+                       // we are currently displaying
+                       if(!parentInfo){
+                               return;
+                       }
+
+                       // Call onChildrenChange() on parent (ie, existing) item with new list of children
+                       // In the common case, the new list of children is simply parentInfo.newValue or
+                       // [ parentInfo.newValue ], although if items in the store has multiple
+                       // child attributes (see `childrenAttr`), then it's a superset of parentInfo.newValue,
+                       // so call getChildren() to be sure to get right answer.
+                       this.getChildren(parentInfo.item, dojo.hitch(this, function(children){
+                               this.onChildrenChange(parentInfo.item, children);
+                       }));
+               },
+
+               onDeleteItem: function(/*Object*/ item){
+                       // summary:
+                       //              Handler for delete notifications from underlying store
+                       this.onDelete(item);
+               },
+
+               onSetItem: function(/* item */ item,
+                                               /* attribute-name-string */ attribute,
+                                               /* object | array */ oldValue,
+                                               /* object | array */ newValue){
+                       // summary:
+                       //              Updates the tree view according to changes in the data store.
+                       // description:
+                       //              Handles updates to an item's children by calling onChildrenChange(), and
+                       //              other updates to an item by calling onChange().
+                       //
+                       //              See `onNewItem` for more details on handling updates to an item's children.
+                       // tags:
+                       //              extension
+
+                       if(dojo.indexOf(this.childrenAttrs, attribute) != -1){
+                               // item's children list changed
+                               this.getChildren(item, dojo.hitch(this, function(children){
+                                       // See comments in onNewItem() about calling getChildren()
+                                       this.onChildrenChange(item, children);
+                               }));
+                       }else{
+                               // item's label/icon/etc. changed.
+                               this.onChange(item);
+                       }
+               }
+       });
+
+
+
+}
+
+if(!dojo._hasResource["dijit.tree.ForestStoreModel"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.tree.ForestStoreModel"] = true;
+dojo.provide("dijit.tree.ForestStoreModel");
+
+
+
+dojo.declare("dijit.tree.ForestStoreModel", dijit.tree.TreeStoreModel, {
+       // summary:
+       //              Interface between Tree and a dojo.store that doesn't have a root item,
+       //              i.e. has multiple "top level" items.
+       //
+       // description
+       //              Use this class to wrap a dojo.store, making all the items matching the specified query
+       //              appear as children of a fabricated "root item".  If no query is specified then all the
+       //              items returned by fetch() on the underlying store become children of the root item.
+       //              It allows dijit.Tree to assume a single root item, even if the store doesn't have one.
+
+       // Parameters to constructor
+
+       // rootId: String
+       //              ID of fabricated root item
+       rootId: "$root$",
+
+       // rootLabel: String
+       //              Label of fabricated root item
+       rootLabel: "ROOT",
+
+       // query: String
+       //              Specifies the set of children of the root item.
+       // example:
+       //      |       {type:'continent'}
+       query: null,
+
+       // End of parameters to constructor
+
+       constructor: function(params){
+               // summary:
+               //              Sets up variables, etc.
+               // tags:
+               //              private
+
+               // Make dummy root item
+               this.root = {
+                       store: this,
+                       root: true,
+                       id: params.rootId,
+                       label: params.rootLabel,
+                       children: params.rootChildren   // optional param
+               };
+       },
+
+       // =======================================================================
+       // Methods for traversing hierarchy
+
+       mayHaveChildren: function(/*dojo.data.Item*/ item){
+               // summary:
+               //              Tells if an item has or may have children.  Implementing logic here
+               //              avoids showing +/- expando icon for nodes that we know don't have children.
+               //              (For efficiency reasons we may not want to check if an element actually
+               //              has children until user clicks the expando node)
+               // tags:
+               //              extension
+               return item === this.root || this.inherited(arguments);
+       },
+
+       getChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ callback, /*function*/ onError){
+               // summary:
+               //              Calls onComplete() with array of child items of given parent item, all loaded.
+               if(parentItem === this.root){
+                       if(this.root.children){
+                               // already loaded, just return
+                               callback(this.root.children);
+                       }else{
+                               this.store.fetch({
+                                       query: this.query,
+                                       onComplete: dojo.hitch(this, function(items){
+                                               this.root.children = items;
+                                               callback(items);
+                                       }),
+                                       onError: onError
+                               });
+                       }
+               }else{
+                       this.inherited(arguments);
+               }
+       },
+
+       // =======================================================================
+       // Inspecting items
+
+       isItem: function(/* anything */ something){
+               return (something === this.root) ? true : this.inherited(arguments);
+       },
+
+       fetchItemByIdentity: function(/* object */ keywordArgs){
+               if(keywordArgs.identity == this.root.id){
+                       var scope = keywordArgs.scope?keywordArgs.scope:dojo.global;
+                       if(keywordArgs.onItem){
+                               keywordArgs.onItem.call(scope, this.root);
+                       }
+               }else{
+                       this.inherited(arguments);
+               }
+       },
+
+       getIdentity: function(/* item */ item){
+               return (item === this.root) ? this.root.id : this.inherited(arguments);
+       },
+
+       getLabel: function(/* item */ item){
+               return  (item === this.root) ? this.root.label : this.inherited(arguments);
+       },
+
+       // =======================================================================
+       // Write interface
+
+       newItem: function(/* dojo.dnd.Item */ args, /*Item*/ parent, /*int?*/ insertIndex){
+               // summary:
+               //              Creates a new item.   See dojo.data.api.Write for details on args.
+               //              Used in drag & drop when item from external source dropped onto tree.
+               if(parent === this.root){
+                       this.onNewRootItem(args);
+                       return this.store.newItem(args);
+               }else{
+                       return this.inherited(arguments);
+               }
+       },
+
+       onNewRootItem: function(args){
+               // summary:
+               //              User can override this method to modify a new element that's being
+               //              added to the root of the tree, for example to add a flag like root=true
+       },
+
+       pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy, /*int?*/ insertIndex){
+               // summary:
+               //              Move or copy an item from one parent item to another.
+               //              Used in drag & drop
+               if(oldParentItem === this.root){
+                       if(!bCopy){
+                               // It's onLeaveRoot()'s responsibility to modify the item so it no longer matches
+                               // this.query... thus triggering an onChildrenChange() event to notify the Tree
+                               // that this element is no longer a child of the root node
+                               this.onLeaveRoot(childItem);
+                       }
+               }
+               dijit.tree.TreeStoreModel.prototype.pasteItem.call(this, childItem,
+                       oldParentItem === this.root ? null : oldParentItem,
+                       newParentItem === this.root ? null : newParentItem,
+                       bCopy,
+                       insertIndex
+               );
+               if(newParentItem === this.root){
+                       // It's onAddToRoot()'s responsibility to modify the item so it matches
+                       // this.query... thus triggering an onChildrenChange() event to notify the Tree
+                       // that this element is now a child of the root node
+                       this.onAddToRoot(childItem);
+               }
+       },
+
+       // =======================================================================
+       // Handling for top level children
+
+       onAddToRoot: function(/* item */ item){
+               // summary:
+               //              Called when item added to root of tree; user must override this method
+               //              to modify the item so that it matches the query for top level items
+               // example:
+               //      |       store.setValue(item, "root", true);
+               // tags:
+               //              extension
+               console.log(this, ": item ", item, " added to root");
+       },
+
+       onLeaveRoot: function(/* item */ item){
+               // summary:
+               //              Called when item removed from root of tree; user must override this method
+               //              to modify the item so it doesn't match the query for top level items
+               // example:
+               //      |       store.unsetAttribute(item, "root");
+               // tags:
+               //              extension
+               console.log(this, ": item ", item, " removed from root");
+       },
+
+       // =======================================================================
+       // Events from data store
+
+       _requeryTop: function(){
+               // reruns the query for the children of the root node,
+               // sending out an onSet notification if those children have changed
+               var oldChildren = this.root.children || [];
+               this.store.fetch({
+                       query: this.query,
+                       onComplete: dojo.hitch(this, function(newChildren){
+                               this.root.children = newChildren;
+
+                               // If the list of children or the order of children has changed...
+                               if(oldChildren.length != newChildren.length ||
+                                       dojo.some(oldChildren, function(item, idx){ return newChildren[idx] != item;})){
+                                       this.onChildrenChange(this.root, newChildren);
+                               }
+                       })
+               });
+       },
+
+       onNewItem: function(/* dojo.data.Item */ item, /* Object */ parentInfo){
+               // summary:
+               //              Handler for when new items appear in the store.  Developers should override this
+               //              method to be more efficient based on their app/data.
+               // description:
+               //              Note that the default implementation requeries the top level items every time
+               //              a new item is created, since any new item could be a top level item (even in
+               //              addition to being a child of another item, since items can have multiple parents).
+               //
+               //              Developers can override this function to do something more efficient if they can
+               //              detect which items are possible top level items (based on the item and the
+               //              parentInfo parameters).  Often all top level items have parentInfo==null, but
+               //              that will depend on which store you use and what your data is like.
+               // tags:
+               //              extension
+               this._requeryTop();
+
+               this.inherited(arguments);
+       },
+
+       onDeleteItem: function(/*Object*/ item){
+               // summary:
+               //              Handler for delete notifications from underlying store
+
+               // check if this was a child of root, and if so send notification that root's children
+               // have changed
+               if(dojo.indexOf(this.root.children, item) != -1){
+                       this._requeryTop();
+               }
+
+               this.inherited(arguments);
+       }
+});
+
+
+
+}
+
+if(!dojo._hasResource["dijit.Tree"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.Tree"] = true;
+dojo.provide("dijit.Tree");
+
+
+
+
+
+
+
+
+
+
+
+dojo.declare(
+       "dijit._TreeNode",
+       [dijit._Widget, dijit._Templated, dijit._Container, dijit._Contained, dijit._CssStateMixin],
+{
+       // summary:
+       //              Single node within a tree.   This class is used internally
+       //              by Tree and should not be accessed directly.
+       // tags:
+       //              private
+
+       // item: dojo.data.Item
+       //              the dojo.data entry this tree represents
+       item: null,
+
+       // isTreeNode: [protected] Boolean
+       //              Indicates that this is a TreeNode.   Used by `dijit.Tree` only,
+       //              should not be accessed directly.
+       isTreeNode: true,
+
+       // label: String
+       //              Text of this tree node
+       label: "",
+
+       // isExpandable: [private] Boolean
+       //              This node has children, so show the expando node (+ sign)
+       isExpandable: null,
+
+       // isExpanded: [readonly] Boolean
+       //              This node is currently expanded (ie, opened)
+       isExpanded: false,
+
+       // state: [private] String
+       //              Dynamic loading-related stuff.
+       //              When an empty folder node appears, it is "UNCHECKED" first,
+       //              then after dojo.data query it becomes "LOADING" and, finally "LOADED"
+       state: "UNCHECKED",
+
+       templateString: dojo.cache("dijit", "templates/TreeNode.html", "<div class=\"dijitTreeNode\" waiRole=\"presentation\"\n\t><div dojoAttachPoint=\"rowNode\" class=\"dijitTreeRow\" waiRole=\"presentation\" dojoAttachEvent=\"onmouseenter:_onMouseEnter, onmouseleave:_onMouseLeave, onclick:_onClick, ondblclick:_onDblClick\"\n\t\t><img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"expandoNode\" class=\"dijitTreeExpando\" waiRole=\"presentation\"\n\t\t/><span dojoAttachPoint=\"expandoNodeText\" class=\"dijitExpandoText\" waiRole=\"presentation\"\n\t\t></span\n\t\t><span dojoAttachPoint=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" waiRole=\"presentation\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"iconNode\" class=\"dijitIcon dijitTreeIcon\" waiRole=\"presentation\"\n\t\t\t/><span dojoAttachPoint=\"labelNode\" class=\"dijitTreeLabel\" wairole=\"treeitem\" tabindex=\"-1\" waiState=\"selected-false\" dojoAttachEvent=\"onfocus:_onLabelFocus\"></span>\n\t\t</span\n\t></div>\n\t<div dojoAttachPoint=\"containerNode\" class=\"dijitTreeContainer\" waiRole=\"presentation\" style=\"display: none;\"></div>\n</div>\n"),
+
+       baseClass: "dijitTreeNode",
+
+       // For hover effect for tree node, and focus effect for label
+       cssStateNodes: {
+               rowNode: "dijitTreeRow",
+               labelNode: "dijitTreeLabel"
+       },
+
+       attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
+               label: {node: "labelNode", type: "innerText"},
+               tooltip: {node: "rowNode", type: "attribute", attribute: "title"}
+       }),
+
+       postCreate: function(){
+               this.inherited(arguments);
+
+               // set expand icon for leaf
+               this._setExpando();
+
+               // set icon and label class based on item
+               this._updateItemClasses(this.item);
+
+               if(this.isExpandable){
+                       dijit.setWaiState(this.labelNode, "expanded", this.isExpanded);
+               }
+       },
+
+       _setIndentAttr: function(indent){
+               // summary:
+               //              Tell this node how many levels it should be indented
+               // description:
+               //              0 for top level nodes, 1 for their children, 2 for their
+               //              grandchildren, etc.
+               this.indent = indent;
+
+               // Math.max() is to prevent negative padding on hidden root node (when indent == -1)
+               var pixels = (Math.max(indent, 0) * this.tree._nodePixelIndent) + "px";
+
+               dojo.style(this.domNode, "backgroundPosition",  pixels + " 0px");
+               dojo.style(this.rowNode, this.isLeftToRight() ? "paddingLeft" : "paddingRight", pixels);
+
+               dojo.forEach(this.getChildren(), function(child){
+                       child.set("indent", indent+1);
+               });
+       },
+
+       markProcessing: function(){
+               // summary:
+               //              Visually denote that tree is loading data, etc.
+               // tags:
+               //              private
+               this.state = "LOADING";
+               this._setExpando(true);
+       },
+
+       unmarkProcessing: function(){
+               // summary:
+               //              Clear markup from markProcessing() call
+               // tags:
+               //              private
+               this._setExpando(false);
+       },
+
+       _updateItemClasses: function(item){
+               // summary:
+               //              Set appropriate CSS classes for icon and label dom node
+               //              (used to allow for item updates to change respective CSS)
+               // tags:
+               //              private
+               var tree = this.tree, model = tree.model;
+               if(tree._v10Compat && item === model.root){
+                       // For back-compat with 1.0, need to use null to specify root item (TODO: remove in 2.0)
+                       item = null;
+               }
+               this._applyClassAndStyle(item, "icon", "Icon");
+               this._applyClassAndStyle(item, "label", "Label");
+               this._applyClassAndStyle(item, "row", "Row");
+       },
+
+       _applyClassAndStyle: function(item, lower, upper){
+               // summary:
+               //              Set the appropriate CSS classes and styles for labels, icons and rows.
+               //
+               // item:
+               //              The data item.
+               //
+               // lower:
+               //              The lower case attribute to use, e.g. 'icon', 'label' or 'row'.
+               //
+               // upper:
+               //              The upper case attribute to use, e.g. 'Icon', 'Label' or 'Row'.
+               //
+               // tags:
+               //              private
+
+               var clsName = "_" + lower + "Class";
+               var nodeName = lower + "Node";
+
+               if(this[clsName]){
+                       dojo.removeClass(this[nodeName], this[clsName]);
+               }
+               this[clsName] = this.tree["get" + upper + "Class"](item, this.isExpanded);
+               if(this[clsName]){
+                       dojo.addClass(this[nodeName], this[clsName]);
+               }
+               dojo.style(this[nodeName], this.tree["get" + upper + "Style"](item, this.isExpanded) || {});
+       },
+
+       _updateLayout: function(){
+               // summary:
+               //              Set appropriate CSS classes for this.domNode
+               // tags:
+               //              private
+               var parent = this.getParent();
+               if(!parent || parent.rowNode.style.display == "none"){
+                       /* if we are hiding the root node then make every first level child look like a root node */
+                       dojo.addClass(this.domNode, "dijitTreeIsRoot");
+               }else{
+                       dojo.toggleClass(this.domNode, "dijitTreeIsLast", !this.getNextSibling());
+               }
+       },
+
+       _setExpando: function(/*Boolean*/ processing){
+               // summary:
+               //              Set the right image for the expando node
+               // tags:
+               //              private
+
+               var styles = ["dijitTreeExpandoLoading", "dijitTreeExpandoOpened",
+                                               "dijitTreeExpandoClosed", "dijitTreeExpandoLeaf"],
+                       _a11yStates = ["*","-","+","*"],
+                       idx = processing ? 0 : (this.isExpandable ?     (this.isExpanded ? 1 : 2) : 3);
+
+               // apply the appropriate class to the expando node
+               dojo.removeClass(this.expandoNode, styles);
+               dojo.addClass(this.expandoNode, styles[idx]);
+
+               // provide a non-image based indicator for images-off mode
+               this.expandoNodeText.innerHTML = _a11yStates[idx];
+
+       },
+
+       expand: function(){
+               // summary:
+               //              Show my children
+               // returns:
+               //              Deferred that fires when expansion is complete
+
+               // If there's already an expand in progress or we are already expanded, just return
+               if(this._expandDeferred){
+                       return this._expandDeferred;            // dojo.Deferred
+               }
+
+               // cancel in progress collapse operation
+               this._wipeOut && this._wipeOut.stop();
+
+               // All the state information for when a node is expanded, maybe this should be
+               // set when the animation completes instead
+               this.isExpanded = true;
+               dijit.setWaiState(this.labelNode, "expanded", "true");
+               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,
+                       wipeIn = dojo.fx.wipeIn({
+                               node: this.containerNode, duration: dijit.defaultDuration,
+                               onEnd: function(){
+                                       def.callback(true);
+                               }
+                       });
+
+               // Deferred that fires when expand is complete
+               def = (this._expandDeferred = new dojo.Deferred(function(){
+                       // Canceller
+                       wipeIn.stop();
+               }));
+
+               wipeIn.play();
+
+               return def;             // dojo.Deferred
+       },
+
+       collapse: function(){
+               // summary:
+               //              Collapse this node (if it's expanded)
+
+               if(!this.isExpanded){ return; }
+
+               // cancel in progress expand operation
+               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: Integer
+       //              Levels from this node to the root node
+       indent: 0,
+
+       setChildItems: function(/* Object[] */ items){
+               // summary:
+               //              Sets the child items of this node, removing/adding nodes
+               //              from current children to match specified items[] array.
+               //              Also, if this.persist == true, expands any children that were previously
+               //              opened.
+               // returns:
+               //              Deferred object that fires after all previously opened children
+               //              have been expanded again (or fires instantly if there are no such children).
+
+               var tree = this.tree,
+                       model = tree.model,
+                       defs = [];      // list of deferreds that need to fire before I am complete
+
+
+               // Orphan all my existing children.
+               // If items contains some of the same items as before then we will reattach them.
+               // Don't call this.removeChild() because that will collapse the tree etc.
+               dojo.forEach(this.getChildren(), function(child){
+                       dijit._Container.prototype.removeChild.call(this, child);
+               }, this);
+
+               this.state = "LOADED";
+
+               if(items && items.length > 0){
+                       this.isExpandable = true;
+
+                       // Create _TreeNode widget for each specified tree node, unless one already
+                       // exists and isn't being used (presumably it's from a DnD move and was recently
+                       // released
+                       dojo.forEach(items, function(item){
+                               var id = model.getIdentity(item),
+                                       existingNodes = tree._itemNodesMap[id],
+                                       node;
+                               if(existingNodes){
+                                       for(var i=0;i<existingNodes.length;i++){
+                                               if(existingNodes[i] && !existingNodes[i].getParent()){
+                                                       node = existingNodes[i];
+                                                       node.set('indent', this.indent+1);
+                                                       break;
+                                               }
+                                       }
+                               }
+                               if(!node){
+                                       node = this.tree._createTreeNode({
+                                                       item: item,
+                                                       tree: tree,
+                                                       isExpandable: model.mayHaveChildren(item),
+                                                       label: tree.getLabel(item),
+                                                       tooltip: tree.getTooltip(item),
+                                                       dir: tree.dir,
+                                                       lang: tree.lang,
+                                                       indent: this.indent + 1
+                                               });
+                                       if(existingNodes){
+                                               existingNodes.push(node);
+                                       }else{
+                                               tree._itemNodesMap[id] = [node];
+                                       }
+                               }
+                               this.addChild(node);
+
+                               // If node was previously opened then open it again now (this may trigger
+                               // more data store accesses, recursively)
+                               if(this.tree.autoExpand || this.tree._state(item)){
+                                       defs.push(tree._expandNode(node));
+                               }
+                       }, this);
+
+                       // note that updateLayout() needs to be called on each child after
+                       // _all_ the children exist
+                       dojo.forEach(this.getChildren(), function(child, idx){
+                               child._updateLayout();
+                       });
+               }else{
+                       this.isExpandable=false;
+               }
+
+               if(this._setExpando){
+                       // change expando to/from dot or + icon, as appropriate
+                       this._setExpando(false);
+               }
+
+               // Set leaf icon or folder icon, as appropriate
+               this._updateItemClasses(this.item);
+
+               // On initial tree show, make the selected TreeNode as either the root node of the tree,
+               // or the first child, if the root node is hidden
+               if(this == tree.rootNode){
+                       var fc = this.tree.showRoot ? this : this.getChildren()[0];
+                       if(fc){
+                               fc.setFocusable(true);
+                               tree.lastFocused = fc;
+                       }else{
+                               // fallback: no nodes in tree so focus on Tree <div> itself
+                               tree.domNode.setAttribute("tabIndex", "0");
+                       }
+               }
+
+               return new dojo.DeferredList(defs);     // dojo.Deferred
+       },
+
+       removeChild: function(/* treeNode */ node){
+               this.inherited(arguments);
+
+               var children = this.getChildren();
+               if(children.length == 0){
+                       this.isExpandable = false;
+                       this.collapse();
+               }
+
+               dojo.forEach(children, function(child){
+                               child._updateLayout();
+               });
+       },
+
+       makeExpandable: function(){
+               // summary:
+               //              if this node wasn't already showing the expando node,
+               //              turn it into one and call _setExpando()
+
+               // TODO: hmm this isn't called from anywhere, maybe should remove it for 2.0
+
+               this.isExpandable = true;
+               this._setExpando(false);
+       },
+
+       _onLabelFocus: function(evt){
+               // summary:
+               //              Called when this row is focused (possibly programatically)
+               //              Note that we aren't using _onFocus() builtin to dijit
+               //              because it's called when focus is moved to a descendant TreeNode.
+               // tags:
+               //              private
+               this.tree._onNodeFocus(this);
+       },
+
+       setSelected: function(/*Boolean*/ selected){
+               // summary:
+               //              A Tree has a (single) currently selected node.
+               //              Mark that this node is/isn't that currently selected node.
+               // description:
+               //              In particular, setting a node as selected involves setting tabIndex
+               //              so that when user tabs to the tree, focus will go to that node (only).
+               dijit.setWaiState(this.labelNode, "selected", selected);
+               dojo.toggleClass(this.rowNode, "dijitTreeRowSelected", selected);
+       },
+
+       setFocusable: function(/*Boolean*/ selected){
+               // summary:
+               //              A Tree has a (single) node that's focusable.
+               //              Mark that this node is/isn't that currently focsuable node.
+               // description:
+               //              In particular, setting a node as selected involves setting tabIndex
+               //              so that when user tabs to the tree, focus will go to that node (only).
+
+               this.labelNode.setAttribute("tabIndex", selected ? "0" : "-1");
+       },
+
+       _onClick: function(evt){
+               // summary:
+               //              Handler for onclick event on a node
+               // tags:
+               //              private
+               this.tree._onClick(this, evt);
+       },
+       _onDblClick: function(evt){
+               // summary:
+               //              Handler for ondblclick event on a node
+               // tags:
+               //              private
+               this.tree._onDblClick(this, evt);
+       },
+
+       _onMouseEnter: function(evt){
+               // summary:
+               //              Handler for onmouseenter event on a node
+               // tags:
+               //              private
+               this.tree._onNodeMouseEnter(this, evt);
+       },
+
+       _onMouseLeave: function(evt){
+               // summary:
+               //              Handler for onmouseenter event on a node
+               // tags:
+               //              private
+               this.tree._onNodeMouseLeave(this, evt);
+       }
+});
+
+dojo.declare(
+       "dijit.Tree",
+       [dijit._Widget, dijit._Templated],
+{
+       // summary:
+       //              This widget displays hierarchical data from a store.
+
+       // store: [deprecated] String||dojo.data.Store
+       //              Deprecated.  Use "model" parameter instead.
+       //              The store to get data to display in the tree.
+       store: null,
+
+       // model: dijit.Tree.model
+       //              Interface to read tree data, get notifications of changes to tree data,
+       //              and for handling drop operations (i.e drag and drop onto the tree)
+       model: null,
+
+       // query: [deprecated] anything
+       //              Deprecated.  User should specify query to the model directly instead.
+       //              Specifies datastore query to return the root item or top items for the tree.
+       query: null,
+
+       // label: [deprecated] String
+       //              Deprecated.  Use dijit.tree.ForestStoreModel directly instead.
+       //              Used in conjunction with query parameter.
+       //              If a query is specified (rather than a root node id), and a label is also specified,
+       //              then a fake root node is created and displayed, with this label.
+       label: "",
+
+       // showRoot: [const] Boolean
+       //              Should the root node be displayed, or hidden?
+       showRoot: true,
+
+       // childrenAttr: [deprecated] String[]
+       //              Deprecated.   This information should be specified in the model.
+       //              One ore more attributes that holds children of a tree node
+       childrenAttr: ["children"],
+
+       // path: String[] or Item[]
+       //              Full path from rootNode to selected node expressed as array of items or array of ids.
+       //              Since setting the path may be asynchronous (because ofwaiting on dojo.data), set("path", ...)
+       //              returns a Deferred to indicate when the set is complete.
+       path: [],
+
+       // selectedItem: [readonly] Item
+       //              The currently selected item in this tree.
+       //              This property can only be set (via set('selectedItem', ...)) when that item is already
+       //              visible in the tree.   (I.e. the tree has already been expanded to show that node.)
+       //              Should generally use `path` attribute to set the selected item instead.
+       selectedItem: null,
+
+       // openOnClick: Boolean
+       //              If true, clicking a folder node's label will open it, rather than calling onClick()
+       openOnClick: false,
+
+       // openOnDblClick: Boolean
+       //              If true, double-clicking a folder node's label will open it, rather than calling onDblClick()
+       openOnDblClick: false,
+
+       templateString: dojo.cache("dijit", "templates/Tree.html", "<div class=\"dijitTree dijitTreeContainer\" waiRole=\"tree\"\n\tdojoAttachEvent=\"onkeypress:_onKeyPress\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" dojoAttachPoint=\"indentDetector\"></div>\n</div>\n"),
+
+       // persist: Boolean
+       //              Enables/disables use of cookies for state saving.
+       persist: true,
+
+       // autoExpand: Boolean
+       //              Fully expand the tree on load.   Overrides `persist`
+       autoExpand: false,
+
+       // dndController: [protected] String
+       //              Class name to use as as the dnd controller.  Specifying this class enables DnD.
+       //              Generally you should specify this as "dijit.tree.dndSource".
+       dndController: null,
+
+       // parameters to pull off of the tree and pass on to the dndController as its params
+       dndParams: ["onDndDrop","itemCreator","onDndCancel","checkAcceptance", "checkItemAcceptance", "dragThreshold", "betweenThreshold"],
+
+       //declare the above items so they can be pulled from the tree's markup
+
+       // onDndDrop: [protected] Function
+       //              Parameter to dndController, see `dijit.tree.dndSource.onDndDrop`.
+       //              Generally this doesn't need to be set.
+       onDndDrop: null,
+
+       /*=====
+       itemCreator: function(nodes, target, source){
+               // summary:
+               //              Returns objects passed to `Tree.model.newItem()` based on DnD nodes
+               //              dropped onto the tree.   Developer must override this method to enable
+               //              dropping from external sources onto this Tree, unless the Tree.model's items
+               //              happen to look like {id: 123, name: "Apple" } with no other attributes.
+               // description:
+               //              For each node in nodes[], which came from source, create a hash of name/value
+               //              pairs to be passed to Tree.model.newItem().  Returns array of those hashes.
+               // nodes: DomNode[]
+               //              The DOMNodes dragged from the source container
+               // target: DomNode
+               //              The target TreeNode.rowNode
+               // source: dojo.dnd.Source
+               //              The source container the nodes were dragged from, perhaps another Tree or a plain dojo.dnd.Source
+               // returns: Object[]
+               //              Array of name/value hashes for each new item to be added to the Tree, like:
+               // |    [
+               // |            { id: 123, label: "apple", foo: "bar" },
+               // |            { id: 456, label: "pear", zaz: "bam" }
+               // |    ]
+               // tags:
+               //              extension
+               return [{}];
+       },
+       =====*/
+       itemCreator: null,
+
+       // onDndCancel: [protected] Function
+       //              Parameter to dndController, see `dijit.tree.dndSource.onDndCancel`.
+       //              Generally this doesn't need to be set.
+       onDndCancel: null,
+
+/*=====
+       checkAcceptance: function(source, nodes){
+               // summary:
+               //              Checks if the Tree itself can accept nodes from this source
+               // source: dijit.tree._dndSource
+               //              The source which provides items
+               // nodes: DOMNode[]
+               //              Array of DOM nodes corresponding to nodes being dropped, dijitTreeRow nodes if
+               //              source is a dijit.Tree.
+               // tags:
+               //              extension
+               return true;    // Boolean
+       },
+=====*/
+       checkAcceptance: null,
+
+/*=====
+       checkItemAcceptance: function(target, source, position){
+               // summary:
+               //              Stub function to be overridden if one wants to check for the ability to drop at the node/item level
+               // description:
+               //              In the base case, this is called to check if target can become a child of source.
+               //              When betweenThreshold is set, position="before" or "after" means that we
+               //              are asking if the source node can be dropped before/after the target node.
+               // target: DOMNode
+               //              The dijitTreeRoot DOM node inside of the TreeNode that we are dropping on to
+               //              Use dijit.getEnclosingWidget(target) to get the TreeNode.
+               // source: dijit.tree.dndSource
+               //              The (set of) nodes we are dropping
+               // position: String
+               //              "over", "before", or "after"
+               // tags:
+               //              extension
+               return true;    // Boolean
+       },
+=====*/
+       checkItemAcceptance: null,
+
+       // dragThreshold: Integer
+       //              Number of pixels mouse moves before it's considered the start of a drag operation
+       dragThreshold: 5,
+
+       // betweenThreshold: Integer
+       //              Set to a positive value to allow drag and drop "between" nodes.
+       //
+       //              If during DnD mouse is over a (target) node but less than betweenThreshold
+       //              pixels from the bottom edge, dropping the the dragged node will make it
+       //              the next sibling of the target node, rather than the child.
+       //
+       //              Similarly, if mouse is over a target node but less that betweenThreshold
+       //              pixels from the top edge, dropping the dragged node will make it
+       //              the target node's previous sibling rather than the target node's child.
+       betweenThreshold: 0,
+
+       // _nodePixelIndent: Integer
+       //              Number of pixels to indent tree nodes (relative to parent node).
+       //              Default is 19 but can be overridden by setting CSS class dijitTreeIndent
+       //              and calling resize() or startup() on tree after it's in the DOM.
+       _nodePixelIndent: 19,
+
+       _publish: function(/*String*/ topicName, /*Object*/ message){
+               // summary:
+               //              Publish a message for this widget/topic
+               dojo.publish(this.id, [dojo.mixin({tree: this, event: topicName}, message || {})]);
+       },
+
+       postMixInProperties: function(){
+               this.tree = this;
+
+               if(this.autoExpand){
+                       // There's little point in saving opened/closed state of nodes for a Tree
+                       // that initially opens all it's nodes.
+                       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();
+
+               // Create glue between store and Tree, if not specified directly by user
+               if(!this.model){
+                       this._store2model();
+               }
+
+               // monitor changes to items
+               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 params={};
+                       for(var i=0; i<this.dndParams.length;i++){
+                               if(this[this.dndParams[i]]){
+                                       params[this.dndParams[i]] = this[this.dndParams[i]];
+                               }
+                       }
+                       this.dndController = new this.dndController(this, params);
+               }
+       },
+
+       _store2model: function(){
+               // summary:
+               //              User specified a store&query rather than model, so create model from store/query
+               this._v10Compat = true;
+               dojo.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");
+
+               var modelParams = {
+                       id: this.id + "_ForestStoreModel",
+                       store: this.store,
+                       query: this.query,
+                       childrenAttrs: this.childrenAttr
+               };
+
+               // Only override the model's mayHaveChildren() method if the user has specified an override
+               if(this.params.mayHaveChildren){
+                       modelParams.mayHaveChildren = dojo.hitch(this, "mayHaveChildren");
+               }
+
+               if(this.params.getItemChildren){
+                       modelParams.getChildren = dojo.hitch(this, function(item, onComplete, onError){
+                               this.getItemChildren((this._v10Compat && item === this.model.root) ? null : item, onComplete, onError);
+                       });
+               }
+               this.model = new dijit.tree.ForestStoreModel(modelParams);
+
+               // For backwards compatibility, the visibility of the root node is controlled by
+               // whether or not the user has specified a label
+               this.showRoot = Boolean(this.label);
+       },
+
+       onLoad: function(){
+               // summary:
+               //              Called when tree finishes loading and expanding.
+               // description:
+               //              If persist == true the loading may encompass many levels of fetches
+               //              from the data store, each asynchronous.   Waits for all to finish.
+               // tags:
+               //              callback
+       },
+
+       _load: function(){
+               // summary:
+               //              Initial load of the tree.
+               //              Load root node (possibly hidden) and it's children.
+               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";
+                               }
+                               this.domNode.appendChild(rn.domNode);
+                               var identity = this.model.getIdentity(item);
+                               if(this._itemNodesMap[identity]){
+                                       this._itemNodesMap[identity].push(rn);
+                               }else{
+                                       this._itemNodesMap[identity] = [rn];
+                               }
+
+                               rn._updateLayout();             // sets "dijitTreeIsRoot" CSS classname
+
+                               // load top level children and then fire onLoad() event
+                               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(/*dojo.data.Item or id*/ item){
+               // summary:
+               //              Returns all tree nodes that refer to an item
+               // returns:
+               //              Array of tree nodes that refer to passed item
+
+               if(!item){ return []; }
+               var identity = dojo.isString(item) ? item : this.model.getIdentity(item);
+               // return a copy so widget don't get messed up by changes to returned array
+               return [].concat(this._itemNodesMap[identity]);
+       },
+
+       _setSelectedItemAttr: function(/*dojo.data.Item or id*/ item){
+               // summary:
+               //              Select a tree node related to passed item.
+               //              WARNING: if model use multi-parented items or desired tree node isn't already loaded
+               //              behavior is undefined. Use set('path', ...) instead.
+
+               var oldValue = this.get("selectedItem");
+               var identity = (!item || dojo.isString(item)) ? item : this.model.getIdentity(item);
+               if(identity == oldValue ? this.model.getIdentity(oldValue) : null){ return; }
+               var nodes = this._itemNodesMap[identity];
+               this._selectNode((nodes && nodes[0]) || null);  //select the first item
+       },
+
+       _getSelectedItemAttr: function(){
+               // summary:
+               //              Return item related to selected tree node.
+               return this.selectedNode && this.selectedNode.item;
+       },
+
+       _setPathAttr: function(/*Item[] || String[]*/ path){
+               // summary:
+               //              Select the tree node identified by passed path.
+               // path:
+               //              Array of items or item id's
+               // returns:
+               //              Deferred to indicate when the set is complete
+
+               var d = new dojo.Deferred();
+
+               this._selectNode(null);
+               if(!path || !path.length){
+                       d.resolve(true);
+                       return d;
+               }
+
+               // If this is called during initialization, defer running until Tree has finished loading
+               this._loadDeferred.addCallback(dojo.hitch(this, function(){
+                       if(!this.rootNode){
+                               d.reject(new Error("!this.rootNode"));
+                               return;
+                       }
+                       if(path[0] !== this.rootNode.item && (dojo.isString(path[0]) && path[0] != this.model.getIdentity(this.rootNode.item))){
+                               d.reject(new Error(this.id + ":path[0] doesn't match this.rootNode.item.  Maybe you are using the wrong tree."));
+                               return;
+                       }
+                       path.shift();
+
+                       var node = this.rootNode;
+
+                       function advance(){
+                               // summary:
+                               //              Called when "node" has completed loading and expanding.   Pop the next item from the path
+                               //              (which must be a child of "node") and advance to it, and then recurse.
+
+                               // Set item and identity to next item in path (node is pointing to the item that was popped
+                               // from the path _last_ time.
+                               var item = path.shift(),
+                                       identity = dojo.isString(item) ? item : this.model.getIdentity(item);
+
+                               // Change "node" from previous item in path to the item we just popped from path
+                               dojo.some(this._itemNodesMap[identity], function(n){
+                                       if(n.getParent() == node){
+                                               node = n;
+                                               return true;
+                                       }
+                                       return false;
+                               });
+
+                               if(path.length){
+                                       // Need to do more expanding
+                                       this._expandNode(node).addCallback(dojo.hitch(this, advance));
+                               }else{
+                                       // Final destination node, select it
+                                       this._selectNode(node);
+                                       
+                                       // signal that path setting is finished
+                                       d.resolve(true);
+                               }
+                       }
+
+                       this._expandNode(node).addCallback(dojo.hitch(this, advance));
+               }));
+                       
+               return d;
+       },
+
+       _getPathAttr: function(){
+               // summary:
+               //              Return an array of items that is the path to selected tree node.
+               if(!this.selectedNode){ return; }
+               var res = [];
+               var treeNode = this.selectedNode;
+               while(treeNode && treeNode !== this.rootNode){
+                       res.unshift(treeNode.item);
+                       treeNode = treeNode.getParent();
+               }
+               res.unshift(this.rootNode.item);
+               return res;
+       },
+
+       ////////////// Data store related functions //////////////////////
+       // These just get passed to the model; they are here for back-compat
+
+       mayHaveChildren: function(/*dojo.data.Item*/ item){
+               // summary:
+               //              Deprecated.   This should be specified on the model itself.
+               //
+               //              Overridable function to tell if an item has or may have children.
+               //              Controls whether or not +/- expando icon is shown.
+               //              (For efficiency reasons we may not want to check if an element actually
+               //              has children until user clicks the expando node)
+               // tags:
+               //              deprecated
+       },
+
+       getItemChildren: function(/*dojo.data.Item*/ parentItem, /*function(items)*/ onComplete){
+               // summary:
+               //              Deprecated.   This should be specified on the model itself.
+               //
+               //              Overridable function that return array of child items of given parent item,
+               //              or if parentItem==null then return top items in tree
+               // tags:
+               //              deprecated
+       },
+
+       ///////////////////////////////////////////////////////
+       // Functions for converting an item to a TreeNode
+       getLabel: function(/*dojo.data.Item*/ item){
+               // summary:
+               //              Overridable function to get the label for a tree node (given the item)
+               // tags:
+               //              extension
+               return this.model.getLabel(item);       // String
+       },
+
+       getIconClass: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
+               // summary:
+               //              Overridable function to return CSS class name to display icon
+               // tags:
+               //              extension
+               return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "dijitLeaf"
+       },
+
+       getLabelClass: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
+               // summary:
+               //              Overridable function to return CSS class name to display label
+               // tags:
+               //              extension
+       },
+
+       getRowClass: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
+               // summary:
+               //              Overridable function to return CSS class name to display row
+               // tags:
+               //              extension
+       },
+
+       getIconStyle: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
+               // summary:
+               //              Overridable function to return CSS styles to display icon
+               // returns:
+               //              Object suitable for input to dojo.style() like {backgroundImage: "url(...)"}
+               // tags:
+               //              extension
+       },
+
+       getLabelStyle: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
+               // summary:
+               //              Overridable function to return CSS styles to display label
+               // returns:
+               //              Object suitable for input to dojo.style() like {color: "red", background: "green"}
+               // tags:
+               //              extension
+       },
+
+       getRowStyle: function(/*dojo.data.Item*/ item, /*Boolean*/ opened){
+               // summary:
+               //              Overridable function to return CSS styles to display row
+               // returns:
+               //              Object suitable for input to dojo.style() like {background-color: "#bbb"}
+               // tags:
+               //              extension
+       },
+
+       getTooltip: function(/*dojo.data.Item*/ item){
+               // summary:
+               //              Overridable function to get the tooltip for a tree node (given the item)
+               // tags:
+               //              extension
+               return "";      // String
+       },
+
+       /////////// Keyboard and Mouse handlers ////////////////////
+
+       _onKeyPress: function(/*Event*/ e){
+               // summary:
+               //              Translates keypress events into commands for the controller
+               if(e.altKey){ return; }
+               var dk = dojo.keys;
+               var treeNode = dijit.getEnclosingWidget(e.target);
+               if(!treeNode){ return; }
+
+               var key = e.charOrCode;
+               if(typeof key == "string"){     // handle printables (letter navigation)
+                       // Check for key navigation.
+                       if(!e.altKey && !e.ctrlKey && !e.shiftKey && !e.metaKey){
+                               this._onLetterKeyNav( { node: treeNode, key: key.toLowerCase() } );
+                               dojo.stopEvent(e);
+                       }
+               }else{  // handle non-printables (arrow keys)
+                       // clear record of recent printables (being saved for multi-char letter navigation),
+                       // because "a", down-arrow, "b" shouldn't search for "ab"
+                       if(this._curSearch){
+                               clearTimeout(this._curSearch.timer);
+                               delete this._curSearch;
+                       }
+
+                       var map = this._keyHandlerMap;
+                       if(!map){
+                               // setup table mapping keys to events
+                               map = {};
+                               map[dk.ENTER]="_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: treeNode, item: treeNode.item, evt: e } );
+                               dojo.stopEvent(e);
+                       }
+               }
+       },
+
+       _onEnterKey: function(/*Object*/ message, /*Event*/ evt){
+               this._publish("execute", { item: message.item, node: message.node } );
+               this._selectNode(message.node);
+               this.onClick(message.item, message.node, evt);
+       },
+
+       _onDownArrow: function(/*Object*/ message){
+               // summary:
+               //              down arrow pressed; get next visible node, set focus there
+               var node = this._getNextNode(message.node);
+               if(node && node.isTreeNode){
+                       this.focusNode(node);
+               }
+       },
+
+       _onUpArrow: function(/*Object*/ message){
+               // summary:
+               //              Up arrow pressed; move to previous visible node
+
+               var node = message.node;
+
+               // if younger siblings
+               var previousSibling = node.getPreviousSibling();
+               if(previousSibling){
+                       node = previousSibling;
+                       // if the previous node is expanded, dive in deep
+                       while(node.isExpandable && node.isExpanded && node.hasChildren()){
+                               // move to the last child
+                               var children = node.getChildren();
+                               node = children[children.length-1];
+                       }
+               }else{
+                       // if this is the first child, return the parent
+                       // unless the parent is the root of a tree with a hidden root
+                       var parent = node.getParent();
+                       if(!(!this.showRoot && parent === this.rootNode)){
+                               node = parent;
+                       }
+               }
+
+               if(node && node.isTreeNode){
+                       this.focusNode(node);
+               }
+       },
+
+       _onRightArrow: function(/*Object*/ message){
+               // summary:
+               //              Right arrow pressed; go to child node
+               var node = message.node;
+
+               // if not expanded, expand, else move to 1st child
+               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(/*Object*/ message){
+               // summary:
+               //              Left arrow pressed.
+               //              If not collapsed, collapse, else move to parent.
+
+               var node = message.node;
+
+               if(node.isExpandable && node.isExpanded){
+                       this._collapseNode(node);
+               }else{
+                       var parent = node.getParent();
+                       if(parent && parent.isTreeNode && !(!this.showRoot && parent === this.rootNode)){
+                               this.focusNode(parent);
+                       }
+               }
+       },
+
+       _onHomeKey: function(){
+               // summary:
+               //              Home key pressed; get first visible node, and set focus there
+               var node = this._getRootOrFirstNode();
+               if(node){
+                       this.focusNode(node);
+               }
+       },
+
+       _onEndKey: function(/*Object*/ message){
+               // summary:
+               //              End key pressed; go to last visible node.
+
+               var node = this.rootNode;
+               while(node.isExpanded){
+                       var c = node.getChildren();
+                       node = c[c.length - 1];
+               }
+
+               if(node && node.isTreeNode){
+                       this.focusNode(node);
+               }
+       },
+
+       // multiCharSearchDuration: Number
+       //              If multiple characters are typed where each keystroke happens within
+       //              multiCharSearchDuration of the previous keystroke,
+       //              search for nodes matching all the keystrokes.
+       //
+       //              For example, typing "ab" will search for entries starting with
+       //              "ab" unless the delay between "a" and "b" is greater than multiCharSearchDuration.
+       multiCharSearchDuration: 250,
+
+       _onLetterKeyNav: function(message){
+               // summary:
+               //              Called when user presses a prinatable key; search for node starting with recently typed letters.
+               // message: Object
+               //              Like { node: TreeNode, key: 'a' } where key is the key the user pressed.
+
+               // Branch depending on whether this key starts a new search, or modifies an existing search
+               var cs = this._curSearch;
+               if(cs){
+                       // We are continuing a search.  Ex: user has pressed 'a', and now has pressed
+                       // 'b', so we want to search for nodes starting w/"ab".
+                       cs.pattern = cs.pattern + message.key;
+                       clearTimeout(cs.timer);
+               }else{
+                       // We are starting a new search
+                       cs = this._curSearch = {
+                                       pattern: message.key,
+                                       startNode: message.node
+                       };
+               }
+
+               // set/reset timer to forget recent keystrokes
+               var self = this;
+               cs.timer = setTimeout(function(){
+                       delete self._curSearch;
+               }, this.multiCharSearchDuration);
+
+               // Navigate to TreeNode matching keystrokes [entered so far].
+               var node = cs.startNode;
+               do{
+                       node = this._getNextNode(node);
+                       //check for last node, jump to first node if necessary
+                       if(!node){
+                               node = this._getRootOrFirstNode();
+                       }
+               }while(node !== cs.startNode && (node.label.toLowerCase().substr(0, cs.pattern.length) != cs.pattern));
+               if(node && node.isTreeNode){
+                       // no need to set focus if back where we started
+                       if(node !== cs.startNode){
+                               this.focusNode(node);
+                       }
+               }
+       },
+
+       _onClick: function(/*TreeNode*/ nodeWidget, /*Event*/ e){
+               // summary:
+               //              Translates click events into commands for the controller to process
+
+               var domElement = e.target,
+                       isExpandoClick = (domElement == nodeWidget.expandoNode || domElement == nodeWidget.expandoNodeText);
+
+               if( (this.openOnClick && nodeWidget.isExpandable) || isExpandoClick ){
+                       // expando node was clicked, or label of a folder node was clicked; open it
+                       if(nodeWidget.isExpandable){
+                               this._onExpandoClick({node:nodeWidget});
+                       }
+               }else{
+                       this._publish("execute", { item: nodeWidget.item, node: nodeWidget, evt: e } );
+                       this.onClick(nodeWidget.item, nodeWidget, e);
+                       this.focusNode(nodeWidget);
+               }
+               if(!isExpandoClick){
+                       this._selectNode(nodeWidget);
+               }
+               dojo.stopEvent(e);
+       },
+       _onDblClick: function(/*TreeNode*/ nodeWidget, /*Event*/ e){
+               // summary:
+               //              Translates double-click events into commands for the controller to process
+
+               var domElement = e.target,
+                       isExpandoClick = (domElement == nodeWidget.expandoNode || domElement == nodeWidget.expandoNodeText);
+
+               if( (this.openOnDblClick && nodeWidget.isExpandable) ||isExpandoClick ){
+                       // expando node was clicked, or label of a folder node was clicked; open it
+                       if(nodeWidget.isExpandable){
+                               this._onExpandoClick({node:nodeWidget});
+                       }
+               }else{
+                       this._publish("execute", { item: nodeWidget.item, node: nodeWidget, evt: e } );
+                       this.onDblClick(nodeWidget.item, nodeWidget, e);
+                       this.focusNode(nodeWidget);
+               }
+               if(!isExpandoClick){
+                       this._selectNode(nodeWidget);
+               }
+               dojo.stopEvent(e);
+       },
+
+       _onExpandoClick: function(/*Object*/ message){
+               // summary:
+               //              User clicked the +/- icon; expand or collapse my children.
+               var node = message.node;
+
+               // If we are collapsing, we might be hiding the currently focused node.
+               // Also, clicking the expando node might have erased focus from the current node.
+               // For simplicity's sake just focus on the node with the expando.
+               this.focusNode(node);
+
+               if(node.isExpanded){
+                       this._collapseNode(node);
+               }else{
+                       this._expandNode(node);
+               }
+       },
+
+       onClick: function(/* dojo.data */ item, /*TreeNode*/ node, /*Event*/ evt){
+               // summary:
+               //              Callback when a tree node is clicked
+               // tags:
+               //              callback
+       },
+       onDblClick: function(/* dojo.data */ item, /*TreeNode*/ node, /*Event*/ evt){
+               // summary:
+               //              Callback when a tree node is double-clicked
+               // tags:
+               //              callback
+       },
+       onOpen: function(/* dojo.data */ item, /*TreeNode*/ node){
+               // summary:
+               //              Callback when a node is opened
+               // tags:
+               //              callback
+       },
+       onClose: function(/* dojo.data */ item, /*TreeNode*/ node){
+               // summary:
+               //              Callback when a node is closed
+               // tags:
+               //              callback
+       },
+
+       _getNextNode: function(node){
+               // summary:
+               //              Get next visible node
+
+               if(node.isExpandable && node.isExpanded && node.hasChildren()){
+                       // if this is an expanded node, get the first child
+                       return node.getChildren()[0];           // _TreeNode
+               }else{
+                       // find a parent node with a sibling
+                       while(node && node.isTreeNode){
+                               var returnNode = node.getNextSibling();
+                               if(returnNode){
+                                       return returnNode;              // _TreeNode
+                               }
+                               node = node.getParent();
+                       }
+                       return null;
+               }
+       },
+
+       _getRootOrFirstNode: function(){
+               // summary:
+               //              Get first visible node
+               return this.showRoot ? this.rootNode : this.rootNode.getChildren()[0];
+       },
+
+       _collapseNode: function(/*_TreeNode*/ node){
+               // summary:
+               //              Called when the user has requested to collapse the node
+
+               if(node._expandNodeDeferred){
+                       delete node._expandNodeDeferred;
+               }
+
+               if(node.isExpandable){
+                       if(node.state == "LOADING"){
+                               // ignore clicks while we are in the process of loading data
+                               return;
+                       }
+
+                       node.collapse();
+                       this.onClose(node.item, node);
+
+                       if(node.item){
+                               this._state(node.item,false);
+                               this._saveState();
+                       }
+               }
+       },
+
+       _expandNode: function(/*_TreeNode*/ node, /*Boolean?*/ recursive){
+               // summary:
+               //              Called when the user has requested to expand the node
+               // recursive:
+               //              Internal flag used when _expandNode() calls itself, don't set.
+               // returns:
+               //              Deferred that fires when the node is loaded and opened and (if persist=true) all it's descendants
+               //              that were previously opened too
+
+               if(node._expandNodeDeferred && !recursive){
+                       // there's already an expand in progress (or completed), so just return
+                       return node._expandNodeDeferred;        // dojo.Deferred
+               }
+
+               var model = this.model,
+                       item = node.item,
+                       _this = this;
+
+               switch(node.state){
+                       case "UNCHECKED":
+                               // need to load all the children, and then expand
+                               node.markProcessing();
+
+                               // Setup deferred to signal when the load and expand are finished.
+                               // Save that deferred in this._expandDeferred as a flag that operation is in progress.
+                               var def = (node._expandNodeDeferred = new dojo.Deferred());
+
+                               // Get the children
+                               model.getChildren(
+                                       item,
+                                       function(items){
+                                               node.unmarkProcessing();
+
+                                               // Display the children and also start expanding any children that were previously expanded
+                                               // (if this.persist == true).   The returned Deferred will fire when those expansions finish.
+                                               var scid = node.setChildItems(items);
+
+                                               // Call _expandNode() again but this time it will just to do the animation (default branch).
+                                               // The returned Deferred will fire when the animation completes.
+                                               // TODO: seems like I can avoid recursion and just use a deferred to sequence the events?
+                                               var ed = _this._expandNode(node, true);
+
+                                               // After the above two tasks (setChildItems() and recursive _expandNode()) finish,
+                                               // signal that I am done.
+                                               scid.addCallback(function(){
+                                                       ed.addCallback(function(){
+                                                               def.callback();
+                                                       })
+                                               });
+                                       },
+                                       function(err){
+                                               console.error(_this, ": error loading root children: ", err);
+                                       }
+                               );
+                               break;
+
+                       default:        // "LOADED"
+                               // data is already loaded; just expand node
+                               def = (node._expandNodeDeferred = node.expand());
+
+                               this.onOpen(node.item, node);
+
+                               if(item){
+                                       this._state(item, true);
+                                       this._saveState();
+                               }
+               }
+
+               return def;     // dojo.Deferred
+       },
+
+       ////////////////// Miscellaneous functions ////////////////
+
+       focusNode: function(/* _tree.Node */ node){
+               // summary:
+               //              Focus on the specified node (which must be visible)
+               // tags:
+               //              protected
+
+               // set focus so that the label will be voiced using screen readers
+               dijit.focus(node.labelNode);
+       },
+
+       _selectNode: function(/*_tree.Node*/ node){
+               // summary:
+               //              Mark specified node as select, and unmark currently selected node.
+               // tags:
+               //              protected
+
+               if(this.selectedNode && !this.selectedNode._destroyed){
+                       this.selectedNode.setSelected(false);
+               }
+               if(node){
+                       node.setSelected(true);
+               }
+               this.selectedNode = node;
+       },
+
+       _onNodeFocus: function(/*dijit._Widget*/ node){
+               // summary:
+               //              Called when a TreeNode gets focus, either by user clicking
+               //              it, or programatically by arrow key handling code.
+               // description:
+               //              It marks that the current node is the selected one, and the previously
+               //              selected node no longer is.
+
+               if(node && node != this.lastFocused){
+                       if(this.lastFocused && !this.lastFocused._destroyed){
+                               // mark that the previously focsable node is no longer focusable
+                               this.lastFocused.setFocusable(false);
+                       }
+
+                       // mark that the new node is the currently selected one
+                       node.setFocusable(true);
+                       this.lastFocused = node;
+               }
+       },
+
+       _onNodeMouseEnter: function(/*dijit._Widget*/ node){
+               // summary:
+               //              Called when mouse is over a node (onmouseenter event),
+               //              this is monitored by the DND code
+       },
+
+       _onNodeMouseLeave: function(/*dijit._Widget*/ node){
+               // summary:
+               //              Called when mouse leaves a node (onmouseleave event),
+               //              this is monitored by the DND code
+       },
+
+       //////////////// Events from the model //////////////////////////
+
+       _onItemChange: function(/*Item*/ item){
+               // summary:
+               //              Processes notification of a change to an item's scalar values like label
+               var model = this.model,
+                       identity = model.getIdentity(item),
+                       nodes = this._itemNodesMap[identity];
+
+               if(nodes){
+                       var label = this.getLabel(item),
+                               tooltip = this.getTooltip(item);
+                       dojo.forEach(nodes, function(node){
+                               node.set({
+                                       item: item,             // theoretically could be new JS Object representing same item
+                                       label: label,
+                                       tooltip: tooltip
+                               });
+                               node._updateItemClasses(item);
+                       });
+               }
+       },
+
+       _onItemChildrenChange: function(/*dojo.data.Item*/ parent, /*dojo.data.Item[]*/ newChildrenList){
+               // summary:
+               //              Processes notification of a change to an item's children
+               var model = this.model,
+                       identity = model.getIdentity(parent),
+                       parentNodes = this._itemNodesMap[identity];
+
+               if(parentNodes){
+                       dojo.forEach(parentNodes,function(parentNode){
+                               parentNode.setChildItems(newChildrenList);
+                       });
+               }
+       },
+
+       _onItemDelete: function(/*Item*/ item){
+               // summary:
+               //              Processes notification of a deletion of an item
+               var model = this.model,
+                       identity = model.getIdentity(item),
+                       nodes = this._itemNodesMap[identity];
+
+               if(nodes){
+                       dojo.forEach(nodes,function(node){
+                               var parent = node.getParent();
+                               if(parent){
+                                       // if node has not already been orphaned from a _onSetItem(parent, "children", ..) call...
+                                       parent.removeChild(node);
+                               }
+                               node.destroyRecursive();
+                       });
+                       delete this._itemNodesMap[identity];
+               }
+       },
+
+       /////////////// Miscellaneous funcs
+
+       _initState: function(){
+               // summary:
+               //              Load in which nodes should be opened automatically
+               if(this.persist){
+                       var cookie = dojo.cookie(this.cookieName);
+                       this._openedItemIds = {};
+                       if(cookie){
+                               dojo.forEach(cookie.split(','), function(item){
+                                       this._openedItemIds[item] = true;
+                               }, this);
+                       }
+               }
+       },
+       _state: function(item,expanded){
+               // summary:
+               //              Query or set expanded state for an item,
+               if(!this.persist){
+                       return false;
+               }
+               var id=this.model.getIdentity(item);
+               if(arguments.length === 1){
+                       return this._openedItemIds[id];
+               }
+               if(expanded){
+                       this._openedItemIds[id] = true;
+               }else{
+                       delete this._openedItemIds[id];
+               }
+       },
+       _saveState: function(){
+               // summary:
+               //              Create and save a cookie with the currently expanded nodes identifiers
+               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(){
+               // A tree is treated as a leaf, not as a node with children (like a grid),
+               // but defining destroyRecursive for back-compat.
+               this.destroy();
+       },
+
+       resize: function(changeSize){
+               if(changeSize){
+                       dojo.marginBox(this.domNode, changeSize);
+                       dojo.style(this.domNode, "overflow", "auto");   // for scrollbars
+               }
+
+               // The only JS sizing involved w/tree is the indentation, which is specified
+               // in CSS and read in through this dummy indentDetector node (tree must be
+               // visible and attached to the DOM to read this)
+               this._nodePixelIndent = dojo.marginBox(this.tree.indentDetector).w;
+
+               if(this.tree.rootNode){
+                       // If tree has already loaded, then reset indent for all the nodes
+                       this.tree.rootNode.set('indent', this.showRoot ? 0 : -1);
+               }
+       },
+
+       _createTreeNode: function(/*Object*/ args){
+               // summary:
+               //              creates a TreeNode
+               // description:
+               //              Developers can override this method to define their own TreeNode class;
+               //              However it will probably be removed in a future release in favor of a way
+               //              of just specifying a widget for the label, rather than one that contains
+               //              the children too.
+               return new dijit._TreeNode(args);
+       }
+});
+
+// For back-compat.  TODO: remove in 2.0
+
+
+
+}
+
+if(!dojo._hasResource["dijit.InlineEditBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.InlineEditBox"] = true;
+dojo.provide("dijit.InlineEditBox");
+
+
+
+
+
+
+
+
+
+
+dojo.declare("dijit.InlineEditBox",
+       dijit._Widget,
+       {
+       // summary:
+       //              An element with in-line edit capabilites
+       //
+       // description:
+       //              Behavior for an existing node (`<p>`, `<div>`, `<span>`, etc.) so that
+       //              when you click it, an editor shows up in place of the original
+       //              text.  Optionally, Save and Cancel button are displayed below the edit widget.
+       //              When Save is clicked, the text is pulled from the edit
+       //              widget and redisplayed and the edit widget is again hidden.
+       //              By default a plain Textarea widget is used as the editor (or for
+       //              inline values a TextBox), but you can specify an editor such as
+       //              dijit.Editor (for editing HTML) or a Slider (for adjusting a number).
+       //              An edit widget must support the following API to be used:
+       //                      - displayedValue or value as initialization parameter,
+       //                      and available through set('displayedValue') / set('value')
+       //                      - void focus()
+       //                      - DOM-node focusNode = node containing editable text
+
+       // editing: [readonly] Boolean
+       //              Is the node currently in edit mode?
+       editing: false,
+
+       // autoSave: Boolean
+       //              Changing the value automatically saves it; don't have to push save button
+       //              (and save button isn't even displayed)
+       autoSave: true,
+
+       // buttonSave: String
+       //              Save button label
+       buttonSave: "",
+
+       // buttonCancel: String
+       //              Cancel button label
+       buttonCancel: "",
+
+       // renderAsHtml: Boolean
+       //              Set this to true if the specified Editor's value should be interpreted as HTML
+       //              rather than plain text (ex: `dijit.Editor`)
+       renderAsHtml: false,
+
+       // editor: String
+       //              Class name for Editor widget
+       editor: "dijit.form.TextBox",
+
+       // editorWrapper: String
+       //              Class name for widget that wraps the editor widget, displaying save/cancel
+       //              buttons.
+       editorWrapper: "dijit._InlineEditor",
+
+       // editorParams: Object
+       //              Set of parameters for editor, like {required: true}
+       editorParams: {},
+
+       onChange: function(value){
+               // summary:
+               //              Set this handler to be notified of changes to value.
+               // tags:
+               //              callback
+       },
+
+       onCancel: function(){
+               // summary:
+               //              Set this handler to be notified when editing is cancelled.
+               // tags:
+               //              callback
+       },
+
+       // width: String
+       //              Width of editor.  By default it's width=100% (ie, block mode).
+       width: "100%",
+
+       // value: String
+       //              The display value of the widget in read-only mode
+       value: "",
+
+       // noValueIndicator: [const] String
+       //              The text that gets displayed when there is no value (so that the user has a place to click to edit)
+       noValueIndicator: dojo.isIE <= 6 ?      // font-family needed on IE6 but it messes up IE8
+               "<span style='font-family: wingdings; text-decoration: underline;'>&nbsp;&nbsp;&nbsp;&nbsp;&#x270d;&nbsp;&nbsp;&nbsp;&nbsp;</span>" :
+               "<span style='text-decoration: underline;'>&nbsp;&nbsp;&nbsp;&nbsp;&#x270d;&nbsp;&nbsp;&nbsp;&nbsp;</span>",
+
+       constructor: function(){
+               // summary:
+               //              Sets up private arrays etc.
+               // tags:
+               //              private
+               this.editorParams = {};
+       },
+
+       postMixInProperties: function(){
+               this.inherited(arguments);
+
+               // save pointer to original source node, since Widget nulls-out srcNodeRef
+               this.displayNode = this.srcNodeRef;
+
+               // connect handlers to the display node
+               var events = {
+                       ondijitclick: "_onClick",
+                       onmouseover: "_onMouseOver",
+                       onmouseout: "_onMouseOut",
+                       onfocus: "_onMouseOver",
+                       onblur: "_onMouseOut"
+               };
+               for(var name in events){
+                       this.connect(this.displayNode, name, events[name]);
+               }
+               dijit.setWaiRole(this.displayNode, "button");
+               if(!this.displayNode.getAttribute("tabIndex")){
+                       this.displayNode.setAttribute("tabIndex", 0);
+               }
+
+               if(!this.value && !("value" in this.params)){ // "" is a good value if specified directly so check params){
+                  this.value = dojo.trim(this.renderAsHtml ? this.displayNode.innerHTML :
+                     (this.displayNode.innerText||this.displayNode.textContent||""));
+               }
+               if(!this.value){
+                   this.displayNode.innerHTML = this.noValueIndicator;
+               }
+
+               dojo.addClass(this.displayNode, 'dijitInlineEditBoxDisplayMode');
+       },
+
+       setDisabled: function(/*Boolean*/ disabled){
+               // summary:
+               //              Deprecated.   Use set('disabled', ...) instead.
+               // tags:
+               //              deprecated
+               dojo.deprecated("dijit.InlineEditBox.setDisabled() is deprecated.  Use set('disabled', bool) instead.", "", "2.0");
+               this.set('disabled', disabled);
+       },
+
+       _setDisabledAttr: function(/*Boolean*/ disabled){
+               // summary:
+               //              Hook to make set("disabled", ...) work.
+               //              Set disabled state of widget.
+               this.disabled = disabled;
+               dijit.setWaiState(this.domNode, "disabled", disabled);
+               if(disabled){
+                       this.displayNode.removeAttribute("tabIndex");
+               }else{
+                       this.displayNode.setAttribute("tabIndex", 0);
+               }
+               dojo.toggleClass(this.displayNode, "dijitInlineEditBoxDisplayModeDisabled", disabled);
+       },
+
+       _onMouseOver: function(){
+               // summary:
+               //              Handler for onmouseover and onfocus event.
+               // tags:
+               //              private
+               if(!this.disabled){
+                       dojo.addClass(this.displayNode, "dijitInlineEditBoxDisplayModeHover");
+               }
+       },
+
+       _onMouseOut: function(){
+               // summary:
+               //              Handler for onmouseout and onblur event.
+               // tags:
+               //              private
+               dojo.removeClass(this.displayNode, "dijitInlineEditBoxDisplayModeHover");
+       },
+
+       _onClick: function(/*Event*/ e){
+               // summary:
+               //              Handler for onclick event.
+               // tags:
+               //              private
+               if(this.disabled){ return; }
+               if(e){ dojo.stopEvent(e); }
+               this._onMouseOut();
+
+               // Since FF gets upset if you move a node while in an event handler for that node...
+               setTimeout(dojo.hitch(this, "edit"), 0);
+       },
+
+       edit: function(){
+               // summary:
+               //              Display the editor widget in place of the original (read only) markup.
+               // tags:
+               //              private
+
+               if(this.disabled || this.editing){ return; }
+               this.editing = true;
+
+               // save some display node values that can be restored later
+               this._savedPosition = dojo.style(this.displayNode, "position") || "static";
+               this._savedOpacity = dojo.style(this.displayNode, "opacity") || "1";
+               this._savedTabIndex = dojo.attr(this.displayNode, "tabIndex") || "0";
+
+               if(this.wrapperWidget){
+                       var ew = this.wrapperWidget.editWidget;
+                       ew.set("displayedValue" in ew ? "displayedValue" : "value", this.value);
+               }else{
+                       // Placeholder for edit widget
+                       // Put place holder (and eventually editWidget) before the display node so that it's positioned correctly
+                       // when Calendar dropdown appears, which happens automatically on focus.
+                       var placeholder = dojo.create("span", null, this.domNode, "before");
+
+                       // Create the editor wrapper (the thing that holds the editor widget and the save/cancel buttons)
+                       var ewc = dojo.getObject(this.editorWrapper);
+                       this.wrapperWidget = new ewc({
+                               value: this.value,
+                               buttonSave: this.buttonSave,
+                               buttonCancel: this.buttonCancel,
+                               dir: this.dir,
+                               lang: this.lang,
+                               tabIndex: this._savedTabIndex,
+                               editor: this.editor,
+                               inlineEditBox: this,
+                               sourceStyle: dojo.getComputedStyle(this.displayNode),
+                               save: dojo.hitch(this, "save"),
+                               cancel: dojo.hitch(this, "cancel")
+                       }, placeholder);
+               }
+               var ww = this.wrapperWidget;
+
+               if(dojo.isIE){
+                       dijit.focus(dijit.getFocus()); // IE (at least 8) needs help with tab order changes
+               }
+               // to avoid screen jitter, we first create the editor with position:absolute, visibility:hidden,
+               // and then when it's finished rendering, we switch from display mode to editor
+               // position:absolute releases screen space allocated to the display node
+               // opacity:0 is the same as visibility:hidden but is still focusable
+               // visiblity:hidden removes focus outline
+
+               dojo.style(this.displayNode, { position: "absolute", opacity: "0", display: "none" }); // makes display node invisible, display style used for focus-ability
+               dojo.style(ww.domNode, { position: this._savedPosition, visibility: "visible", opacity: "1" });
+               dojo.attr(this.displayNode, "tabIndex", "-1"); // needed by WebKit for TAB from editor to skip displayNode
+
+               // Replace the display widget with edit widget, leaving them both displayed for a brief time so that
+               // focus can be shifted without incident.  (browser may needs some time to render the editor.)
+               setTimeout(dojo.hitch(this, function(){
+                       ww.focus(); // both nodes are showing, so we can switch focus safely
+                       ww._resetValue = ww.getValue();
+               }), 0);
+       },
+
+       _onBlur: function(){
+               // summary:
+               //              Called when focus moves outside the InlineEditBox.
+               //              Performs garbage collection.
+               // tags:
+               //              private
+
+               this.inherited(arguments);
+               if(!this.editing){
+                       /* causes IE focus problems, see TooltipDialog_a11y.html...
+                       setTimeout(dojo.hitch(this, function(){
+                               if(this.wrapperWidget){
+                                       this.wrapperWidget.destroy();
+                                       delete this.wrapperWidget;
+                               }
+                       }), 0);
+                       */
+               }
+       },
+
+       destroy: function(){
+               if(this.wrapperWidget){
+                       this.wrapperWidget.destroy();
+                       delete this.wrapperWidget;
+               }
+               this.inherited(arguments);
+       },
+
+       _showText: function(/*Boolean*/ focus){
+               // summary:
+               //              Revert to display mode, and optionally focus on display node
+               // tags:
+               //              private
+
+               var ww = this.wrapperWidget;
+               dojo.style(ww.domNode, { position: "absolute", visibility: "hidden", opacity: "0" }); // hide the editor from mouse/keyboard events
+               dojo.style(this.displayNode, { position: this._savedPosition, opacity: this._savedOpacity, display: "" }); // make the original text visible
+               dojo.attr(this.displayNode, "tabIndex", this._savedTabIndex);
+               if(focus){
+                       dijit.focus(this.displayNode);
+               }
+       },
+
+       save: function(/*Boolean*/ focus){
+               // summary:
+               //              Save the contents of the editor and revert to display mode.
+               // focus: Boolean
+               //              Focus on the display mode text
+               // tags:
+               //              private
+
+               if(this.disabled || !this.editing){ return; }
+               this.editing = false;
+
+               var ww = this.wrapperWidget;
+               var value = ww.getValue();
+               this.set('value', value); // display changed, formatted value
+
+               // tell the world that we have changed
+               setTimeout(dojo.hitch(this, "onChange", value), 0); // setTimeout prevents browser freeze for long-running event handlers
+
+               this._showText(focus); // set focus as needed
+       },
+
+       setValue: function(/*String*/ val){
+               // summary:
+               //              Deprecated.   Use set('value', ...) instead.
+               // tags:
+               //              deprecated
+               dojo.deprecated("dijit.InlineEditBox.setValue() is deprecated.  Use set('value', ...) instead.", "", "2.0");
+               return this.set("value", val);
+       },
+
+       _setValueAttr: function(/*String*/ val){
+               // summary:
+               //              Hook to make set("value", ...) work.
+               //              Inserts specified HTML value into this node, or an "input needed" character if node is blank.
+
+               this.value = val = dojo.trim(val);
+               if(!this.renderAsHtml){
+                       val = val.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;").replace(/"/gm, "&quot;").replace(/\n/g, "<br>");
+               }
+               this.displayNode.innerHTML = val || this.noValueIndicator;
+       },
+
+       getValue: function(){
+               // summary:
+               //              Deprecated.   Use get('value') instead.
+               // tags:
+               //              deprecated
+               dojo.deprecated("dijit.InlineEditBox.getValue() is deprecated.  Use get('value') instead.", "", "2.0");
+               return this.get("value");
+       },
+
+       cancel: function(/*Boolean*/ focus){
+               // summary:
+               //              Revert to display mode, discarding any changes made in the editor
+               // tags:
+               //              private
+
+               if(this.disabled || !this.editing){ return; }
+               this.editing = false;
+
+               // tell the world that we have no changes
+               setTimeout(dojo.hitch(this, "onCancel"), 0); // setTimeout prevents browser freeze for long-running event handlers
+
+               this._showText(focus);
+       }
+});
+
+dojo.declare(
+       "dijit._InlineEditor",
+        [dijit._Widget, dijit._Templated],
+{
+       // summary:
+       //              Internal widget used by InlineEditBox, displayed when in editing mode
+       //              to display the editor and maybe save/cancel buttons.  Calling code should
+       //              connect to save/cancel methods to detect when editing is finished
+       //
+       //              Has mainly the same parameters as InlineEditBox, plus these values:
+       //
+       // style: Object
+       //              Set of CSS attributes of display node, to replicate in editor
+       //
+       // value: String
+       //              Value as an HTML string or plain text string, depending on renderAsHTML flag
+
+       templateString: dojo.cache("dijit", "templates/InlineEditBox.html", "<span dojoAttachPoint=\"editNode\" waiRole=\"presentation\" style=\"position: absolute; visibility:hidden\" class=\"dijitReset dijitInline\"\n\tdojoAttachEvent=\"onkeypress: _onKeyPress\"\n\t><span dojoAttachPoint=\"editorPlaceholder\"></span\n\t><span dojoAttachPoint=\"buttonContainer\"\n\t\t><button class='saveButton' dojoAttachPoint=\"saveButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:save\" label=\"${buttonSave}\"></button\n\t\t><button class='cancelButton' dojoAttachPoint=\"cancelButton\" dojoType=\"dijit.form.Button\" dojoAttachEvent=\"onClick:cancel\" label=\"${buttonCancel}\"></button\n\t></span\n></span>\n"),
+       widgetsInTemplate: true,
+
+       postMixInProperties: function(){
+               this.inherited(arguments);
+               this.messages = dojo.i18n.getLocalization("dijit", "common", this.lang);
+               dojo.forEach(["buttonSave", "buttonCancel"], function(prop){
+                       if(!this[prop]){ this[prop] = this.messages[prop]; }
+               }, this);
+       },
+
+       postCreate: function(){
+               // Create edit widget in place in the template
+               var cls = dojo.getObject(this.editor);
+
+               // Copy the style from the source
+               // Don't copy ALL properties though, just the necessary/applicable ones.
+               // wrapperStyle/destStyle code is to workaround IE bug where getComputedStyle().fontSize
+               // is a relative value like 200%, rather than an absolute value like 24px, and
+               // the 200% can refer *either* to a setting on the node or it's ancestor (see #11175)
+               var srcStyle = this.sourceStyle,
+                       editStyle = "line-height:" + srcStyle.lineHeight + ";",
+                       destStyle = dojo.getComputedStyle(this.domNode);
+               dojo.forEach(["Weight","Family","Size","Style"], function(prop){
+                       var textStyle = srcStyle["font"+prop],
+                               wrapperStyle = destStyle["font"+prop];
+                       if(wrapperStyle != textStyle){
+                               editStyle += "font-"+prop+":"+srcStyle["font"+prop]+";";
+                       }
+               }, this);
+               dojo.forEach(["marginTop","marginBottom","marginLeft", "marginRight"], function(prop){
+                       this.domNode.style[prop] = srcStyle[prop];
+               }, this);
+               var width = this.inlineEditBox.width;
+               if(width == "100%"){
+                       // block mode
+                       editStyle += "width:100%;";
+                       this.domNode.style.display = "block";
+               }else{
+                       // inline-block mode
+                       editStyle += "width:" + (width + (Number(width) == width ? "px" : "")) + ";";
+               }
+               var editorParams = dojo.delegate(this.inlineEditBox.editorParams, {
+                       style: editStyle,
+                       dir: this.dir,
+                       lang: this.lang
+               });
+               editorParams[ "displayedValue" in cls.prototype ? "displayedValue" : "value"] = this.value;
+               var ew = (this.editWidget = new cls(editorParams, this.editorPlaceholder));
+
+               if(this.inlineEditBox.autoSave){
+                       // Remove the save/cancel buttons since saving is done by simply tabbing away or
+                       // selecting a value from the drop down list
+                       dojo.destroy(this.buttonContainer);
+
+                       // Selecting a value from a drop down list causes an onChange event and then we save
+                       this.connect(ew, "onChange", "_onChange");
+
+                       // ESC and TAB should cancel and save.  Note that edit widgets do a stopEvent() on ESC key (to
+                       // prevent Dialog from closing when the user just wants to revert the value in the edit widget),
+                       // so this is the only way we can see the key press event.
+                       this.connect(ew, "onKeyPress", "_onKeyPress");
+               }else{
+                       // If possible, enable/disable save button based on whether the user has changed the value
+                       if("intermediateChanges" in cls.prototype){
+                               ew.set("intermediateChanges", true);
+                               this.connect(ew, "onChange", "_onIntermediateChange");
+                               this.saveButton.set("disabled", true);
+                       }
+               }
+       },
+
+       _onIntermediateChange: function(val){
+               // summary:
+               //              Called for editor widgets that support the intermediateChanges=true flag as a way
+               //              to detect when to enable/disabled the save button
+               this.saveButton.set("disabled", (this.getValue() == this._resetValue) || !this.enableSave());
+       },
+
+       destroy: function(){
+               this.editWidget.destroy(true); // let the parent wrapper widget clean up the DOM
+               this.inherited(arguments);
+       },
+
+       getValue: function(){
+               // summary:
+               //              Return the [display] value of the edit widget
+               var ew = this.editWidget;
+               return String(ew.get("displayedValue" in ew ? "displayedValue" : "value"));
+       },
+
+       _onKeyPress: function(e){
+               // summary:
+               //              Handler for keypress in the edit box in autoSave mode.
+               // description:
+               //              For autoSave widgets, if Esc/Enter, call cancel/save.
+               // tags:
+               //              private
+
+               if(this.inlineEditBox.autoSave && this.inlineEditBox.editing){
+                       if(e.altKey || e.ctrlKey){ return; }
+                       // If Enter/Esc pressed, treat as save/cancel.
+                       if(e.charOrCode == dojo.keys.ESCAPE){
+                               dojo.stopEvent(e);
+                               this.cancel(true); // sets editing=false which short-circuits _onBlur processing
+                       }else if(e.charOrCode == dojo.keys.ENTER && e.target.tagName == "INPUT"){
+                               dojo.stopEvent(e);
+                               this._onChange(); // fire _onBlur and then save
+                       }
+
+                       // _onBlur will handle TAB automatically by allowing
+                       // the TAB to change focus before we mess with the DOM: #6227
+                       // Expounding by request:
+                       //      The current focus is on the edit widget input field.
+                       //      save() will hide and destroy this widget.
+                       //      We want the focus to jump from the currently hidden
+                       //      displayNode, but since it's hidden, it's impossible to
+                       //      unhide it, focus it, and then have the browser focus
+                       //      away from it to the next focusable element since each
+                       //      of these events is asynchronous and the focus-to-next-element
+                       //      is already queued.
+                       //      So we allow the browser time to unqueue the move-focus event
+                       //      before we do all the hide/show stuff.
+               }
+       },
+
+       _onBlur: function(){
+               // summary:
+               //              Called when focus moves outside the editor
+               // tags:
+               //              private
+
+               this.inherited(arguments);
+               if(this.inlineEditBox.autoSave && this.inlineEditBox.editing){
+                       if(this.getValue() == this._resetValue){
+                               this.cancel(false);
+                       }else if(this.enableSave()){
+                               this.save(false);
+                       }
+               }
+       },
+
+       _onChange: function(){
+               // summary:
+               //              Called when the underlying widget fires an onChange event,
+               //              such as when the user selects a value from the drop down list of a ComboBox,
+               //              which means that the user has finished entering the value and we should save.
+               // tags:
+               //              private
+
+               if(this.inlineEditBox.autoSave && this.inlineEditBox.editing && this.enableSave()){
+                       dojo.style(this.inlineEditBox.displayNode, { display: "" });
+                       dijit.focus(this.inlineEditBox.displayNode); // fires _onBlur which will save the formatted value
+               }
+       },
+
+       enableSave: function(){
+               // summary:
+               //              User overridable function returning a Boolean to indicate
+               //              if the Save button should be enabled or not - usually due to invalid conditions
+               // tags:
+               //              extension
+               return (
+                       this.editWidget.isValid
+                       ? this.editWidget.isValid()
+                       : true
+               );
+       },
+
+       focus: function(){
+               // summary:
+               //              Focus the edit widget.
+               // tags:
+               //              protected
+
+               this.editWidget.focus();
+               setTimeout(dojo.hitch(this, function(){
+                       if(this.editWidget.focusNode && this.editWidget.focusNode.tagName == "INPUT"){
+                               dijit.selectInputText(this.editWidget.focusNode);
+                       }
+               }), 0);
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.form.Form"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.Form"] = true;
+dojo.provide("dijit.form.Form");
+
+
+
+
+
+dojo.declare(
+       "dijit.form.Form",
+       [dijit._Widget, dijit._Templated, dijit.form._FormMixin],
+       {
+               // summary:
+               //              Widget corresponding to HTML form tag, for validation and serialization
+               //
+               // example:
+               //      |       <form dojoType="dijit.form.Form" id="myForm">
+               //      |               Name: <input type="text" name="name" />
+               //      |       </form>
+               //      |       myObj = {name: "John Doe"};
+               //      |       dijit.byId('myForm').set('value', myObj);
+               //      |
+               //      |       myObj=dijit.byId('myForm').get('value');
+
+               // HTML <FORM> attributes
+
+               // name: String?
+               //              Name of form for scripting.
+               name: "",
+
+               // action: String?
+               //              Server-side form handler.
+               action: "",
+
+               // method: String?
+               //              HTTP method used to submit the form, either "GET" or "POST".
+               method: "",
+
+               // encType: String?
+               //              Encoding type for the form, ex: application/x-www-form-urlencoded.
+               encType: "",
+
+               // accept-charset: String?
+               //              List of supported charsets.
+               "accept-charset": "",
+
+               // accept: String?
+               //              List of MIME types for file upload.
+               accept: "",
+
+               // target: String?
+               //              Target frame for the document to be opened in.
+               target: "",
+
+               templateString: "<form dojoAttachPoint='containerNode' dojoAttachEvent='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",
+
+               attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
+                       action: "",
+                       method: "",
+                       encType: "",
+                       "accept-charset": "",
+                       accept: "",
+                       target: ""
+               }),
+
+               postMixInProperties: function(){
+                       // Setup name=foo string to be referenced from the template (but only if a name has been specified)
+                       // Unfortunately we can't use attributeMap to set the name due to IE limitations, see #8660
+                       this.nameAttrSetting = this.name ? ("name='" + this.name + "'") : "";
+                       this.inherited(arguments);
+               },
+
+               execute: function(/*Object*/ formContents){
+                       // summary:
+                       //              Deprecated: use submit()
+                       // tags:
+                       //              deprecated
+               },
+
+               onExecute: function(){
+                       // summary:
+                       //              Deprecated: use onSubmit()
+                       // tags:
+                       //              deprecated
+               },
+
+               _setEncTypeAttr: function(/*String*/ value){
+                       this.encType = value;
+                       dojo.attr(this.domNode, "encType", value);
+                       if(dojo.isIE){ this.domNode.encoding = value; }
+               },
+
+               postCreate: function(){
+                       // IE tries to hide encType
+                       // TODO: this code should be in parser, not here.
+                       if(dojo.isIE && this.srcNodeRef && this.srcNodeRef.attributes){
+                               var item = this.srcNodeRef.attributes.getNamedItem('encType');
+                               if(item && !item.specified && (typeof item.value == "string")){
+                                       this.set('encType', item.value);
+                               }
+                       }
+                       this.inherited(arguments);
+               },
+
+               reset: function(/*Event?*/ e){
+                       // summary:
+                       //              restores all widget values back to their init values,
+                       //              calls onReset() which can cancel the reset by returning false
+
+                       // create fake event so we can know if preventDefault() is called
+                       var faux = {
+                               returnValue: true, // the IE way
+                               preventDefault: function(){ // not IE
+                                                       this.returnValue = false;
+                                               },
+                               stopPropagation: function(){}, 
+                               currentTarget: e ? e.target : this.domNode, 
+                               target: e ? e.target : this.domNode
+                       };
+                       // if return value is not exactly false, and haven't called preventDefault(), then reset
+                       if(!(this.onReset(faux) === false) && faux.returnValue){
+                               this.inherited(arguments, []);
+                       }
+               },
+
+               onReset: function(/*Event?*/ e){
+                       // summary:
+                       //              Callback when user resets the form. This method is intended
+                       //              to be over-ridden. When the `reset` method is called
+                       //              programmatically, the return value from `onReset` is used
+                       //              to compute whether or not resetting should proceed
+                       // tags:
+                       //              callback
+                       return true; // Boolean
+               },
+
+               _onReset: function(e){
+                       this.reset(e);
+                       dojo.stopEvent(e);
+                       return false;
+               },
+
+               _onSubmit: function(e){
+                       var fp = dijit.form.Form.prototype;
+                       // TODO: remove this if statement beginning with 2.0
+                       if(this.execute != fp.execute || this.onExecute != fp.onExecute){
+                               dojo.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.", "", "2.0");
+                               this.onExecute();
+                               this.execute(this.getValues());
+                       }
+                       if(this.onSubmit(e) === false){ // only exactly false stops submit
+                               dojo.stopEvent(e);
+                       }
+               },
+
+               onSubmit: function(/*Event?*/e){
+                       // summary:
+                       //              Callback when user submits the form.
+                       // description:
+                       //              This method is intended to be over-ridden, but by default it checks and
+                       //              returns the validity of form elements. When the `submit`
+                       //              method is called programmatically, the return value from
+                       //              `onSubmit` is used to compute whether or not submission
+                       //              should proceed
+                       // tags:
+                       //              extension
+
+                       return this.isValid(); // Boolean
+               },
+
+               submit: function(){
+                       // summary:
+                       //              programmatically submit form if and only if the `onSubmit` returns true
+                       if(!(this.onSubmit() === false)){
+                               this.containerNode.submit();
+                       }
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.form.DropDownButton"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.DropDownButton"] = true;
+dojo.provide("dijit.form.DropDownButton");
+
+
+
+}
+
+if(!dojo._hasResource["dijit.form.ComboButton"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.ComboButton"] = true;
+dojo.provide("dijit.form.ComboButton");
+
+
+}
+
+if(!dojo._hasResource["dijit.form.ToggleButton"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.ToggleButton"] = true;
+dojo.provide("dijit.form.ToggleButton");
+
+
+}
+
+if(!dojo._hasResource["dijit.form.CheckBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.CheckBox"] = true;
+dojo.provide("dijit.form.CheckBox");
+
+
+
+dojo.declare(
+       "dijit.form.CheckBox",
+       dijit.form.ToggleButton,
+       {
+               // summary:
+               //              Same as an HTML checkbox, but with fancy styling.
+               //
+               // description:
+               //              User interacts with real html inputs.
+               //              On onclick (which occurs by mouse click, space-bar, or
+               //              using the arrow keys to switch the selected radio button),
+               //              we update the state of the checkbox/radio.
+               //
+               //              There are two modes:
+               //                      1. High contrast mode
+               //                      2. Normal mode
+               //
+               //              In case 1, the regular html inputs are shown and used by the user.
+               //              In case 2, the regular html inputs are invisible but still used by
+               //              the user. They are turned quasi-invisible and overlay the background-image.
+
+               templateString: dojo.cache("dijit.form", "templates/CheckBox.html", "<div class=\"dijit dijitReset dijitInline\" waiRole=\"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: [private] String
+               //              type attribute on <input> node.
+               //              Overrides `dijit.form.Button.type`.   Users should not change this value.
+               type: "checkbox",
+
+               // value: String
+               //              As an initialization parameter, equivalent to value field on normal checkbox
+               //              (if checked, the value is passed as the value when form is submitted).
+               //
+               //              However, attr('value') will return either the string or false depending on
+               //              whether or not the checkbox is checked.
+               //
+               //              attr('value', string) will check the checkbox and change the value to the
+               //              specified string
+               //
+               //              attr('value', boolean) will change the checked state.
+               value: "on",
+
+               // readOnly: Boolean
+               //              Should this widget respond to user input?
+               //              In markup, this is specified as "readOnly".
+               //              Similar to disabled except readOnly form values are submitted.
+               readOnly: false,
+               
+               // the attributeMap should inherit from dijit.form._FormWidget.prototype.attributeMap 
+               // instead of ToggleButton as the icon mapping has no meaning for a CheckBox
+               attributeMap: dojo.delegate(dijit.form._FormWidget.prototype.attributeMap, {
+                       readOnly: "focusNode"
+               }),
+
+               _setReadOnlyAttr: function(/*Boolean*/ value){
+                       this.readOnly = value;
+                       dojo.attr(this.focusNode, 'readOnly', value);
+                       dijit.setWaiState(this.focusNode, "readonly", value);
+               },
+
+               _setValueAttr: function(/*String or Boolean*/ newValue, /*Boolean*/ priorityChange){
+                       // summary:
+                       //              Handler for value= attribute to constructor, and also calls to
+                       //              attr('value', val).
+                       // description:
+                       //              During initialization, just saves as attribute to the <input type=checkbox>.
+                       //
+                       //              After initialization,
+                       //              when passed a boolean, controls whether or not the CheckBox is checked.
+                       //              If passed a string, changes the value attribute of the CheckBox (the one
+                       //              specified as "value" when the CheckBox was constructed (ex: <input
+                       //              dojoType="dijit.CheckBox" value="chicken">)
+                       if(typeof newValue == "string"){
+                               this.value = newValue;
+                               dojo.attr(this.focusNode, 'value', newValue);
+                               newValue = true;
+                       }
+                       if(this._created){
+                               this.set('checked', newValue, priorityChange);
+                       }
+               },
+               _getValueAttr: function(){
+                       // summary:
+                       //              Hook so attr('value') works.
+                       // description:
+                       //              If the CheckBox is checked, returns the value attribute.
+                       //              Otherwise returns false.
+                       return (this.checked ? this.value : false);
+               },
+
+               // Override dijit.form.Button._setLabelAttr() since we don't even have a containerNode.
+               // Normally users won't try to set label, except when CheckBox or RadioButton is the child of a dojox.layout.TabContainer
+               _setLabelAttr: undefined,
+
+               postMixInProperties: function(){
+                       if(this.value == ""){
+                               this.value = "on";
+                       }
+
+                       // Need to set initial checked state as part of template, so that form submit works.
+                       // dojo.attr(node, "checked", bool) doesn't work on IEuntil node has been attached
+                       // to <body>, see #8666
+                       this.checkedAttrSetting = this.checked ? "checked" : "";
+
+                       this.inherited(arguments);
+               },
+
+                _fillContent: function(/*DomNode*/ source){
+                       // Override Button::_fillContent() since it doesn't make sense for CheckBox,
+                       // since CheckBox doesn't even have a container
+               },
+
+               reset: function(){
+                       // Override ToggleButton.reset()
+
+                       this._hasBeenBlurred = false;
+
+                       this.set('checked', this.params.checked || false);
+
+                       // Handle unlikely event that the <input type=checkbox> value attribute has changed
+                       this.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(/*Event*/ e){
+                       // summary:
+                       //              Internal function to handle click actions - need to check
+                       //              readOnly, since button no longer does that check.
+                       if(this.readOnly){
+                               return false;
+                       }
+                       return this.inherited(arguments);
+               }
+       }
+);
+
+dojo.declare(
+       "dijit.form.RadioButton",
+       dijit.form.CheckBox,
+       {
+               // summary:
+               //              Same as an HTML radio, but with fancy styling.
+
+               type: "radio",
+               baseClass: "dijitRadio",
+
+               _setCheckedAttr: function(/*Boolean*/ value){
+                       // If I am being checked then have to deselect currently checked radio button
+                       this.inherited(arguments);
+                       if(!this._created){ return; }
+                       if(value){
+                               var _this = this;
+                               // search for radio buttons with the same name that need to be unchecked
+                               dojo.query("INPUT[type=radio]", this.focusNode.form || dojo.doc).forEach( // can't use name= since dojo.query doesn't support [] in the name
+                                       function(inputNode){
+                                               if(inputNode.name == _this.name && inputNode != _this.focusNode && inputNode.form == _this.focusNode.form){
+                                                       var widget = dijit.getEnclosingWidget(inputNode);
+                                                       if(widget && widget.checked){
+                                                               widget.set('checked', false);
+                                                       }
+                                               }
+                                       }
+                               );
+                       }
+               },
+
+               _clicked: function(/*Event*/ e){
+                       if(!this.checked){
+                               this.set('checked', true);
+                       }
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.form.RadioButton"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.RadioButton"] = true;
+dojo.provide("dijit.form.RadioButton");
+
+
+// TODO: for 2.0, move the RadioButton code into this file
+
+}
+
+if(!dojo._hasResource["dojo.cldr.monetary"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.cldr.monetary"] = true;
+dojo.provide("dojo.cldr.monetary");
+
+dojo.cldr.monetary.getData = function(/*String*/code){
+// summary: A mapping of currency code to currency-specific formatting information. Returns a unique object with properties: places, round.
+// code: an [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code
+
+// from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/currencyData/fractions
+
+       var placesData = {
+               ADP:0,AFN:0,ALL:0,AMD:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,
+               COP:0,CRC:0,DJF:0,ESP:0,GNF:0,GYD:0,HUF:0,IDR:0,IQD:0,
+               IRR:3,ISK:0,ITL:0,JOD:3,JPY:0,KMF:0,KPW:0,KRW:0,KWD:3,
+               LAK:0,LBP:0,LUF:0,LYD:3,MGA:0,MGF:0,MMK:0,MNT:0,MRO:0,
+               MUR:0,OMR:3,PKR:0,PYG:0,RSD:0,RWF:0,SLL:0,SOS:0,STD:0,
+               SYP:0,TMM:0,TND:3,TRL:0,TZS:0,UGX:0,UZS:0,VND:0,VUV:0,
+               XAF:0,XOF:0,XPF:0,YER:0,ZMK:0,ZWD:0
+       };
+
+       var roundingData = {CHF:5};
+
+       var places = placesData[code], round = roundingData[code];
+       if(typeof places == "undefined"){ places = 2; }
+       if(typeof round == "undefined"){ round = 0; }
+
+       return {places: places, round: round}; // Object
+};
+
+}
+
+if(!dojo._hasResource["dojo.currency"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.currency"] = true;
+dojo.provide("dojo.currency");
+
+
+
+
+
+
+/*=====
+dojo.currency = {
+       // summary: localized formatting and parsing routines for currencies
+       //
+       // description: extends dojo.number to provide culturally-appropriate formatting of values
+       //      in various world currencies, including use of a currency symbol.  The currencies are specified
+       //      by a three-letter international symbol in all uppercase, and support for the currencies is
+       //      provided by the data in `dojo.cldr`.  The scripts generating dojo.cldr specify which
+       //      currency support is included.  A fixed number of decimal places is determined based
+       //      on the currency type and is not determined by the 'pattern' argument.  The fractional
+       //      portion is optional, by default, and variable length decimals are not supported.
+}
+=====*/
+
+dojo.currency._mixInDefaults = function(options){
+       options = options || {};
+       options.type = "currency";
+
+       // Get locale-dependent currency data, like the symbol
+       var bundle = dojo.i18n.getLocalization("dojo.cldr", "currency", options.locale) || {};
+
+       // Mixin locale-independent currency data, like # of places
+       var iso = options.currency;
+       var data = dojo.cldr.monetary.getData(iso);
+
+       dojo.forEach(["displayName","symbol","group","decimal"], function(prop){
+               data[prop] = bundle[iso+"_"+prop];
+       });
+
+       data.fractional = [true, false];
+
+       // Mixin with provided options
+       return dojo.mixin(data, options);
+}
+
+/*=====
+dojo.declare("dojo.currency.__FormatOptions", [dojo.number.__FormatOptions], {
+       //      type: String?
+       //              Should not be set.  Value is assumed to be "currency".
+       //      symbol: String?
+       //              localized currency symbol. The default will be looked up in table of supported currencies in `dojo.cldr`
+       //              A [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code will be used if not found.
+       //      currency: String?
+       //              an [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD".
+       //              For use with dojo.currency only.
+       //      places: Number?
+       //              number of decimal places to show.  Default is defined based on which currency is used.
+       type: "",
+       symbol: "",
+       currency: "",
+       places: ""
+});
+=====*/
+
+dojo.currency.format = function(/*Number*/value, /*dojo.currency.__FormatOptions?*/options){
+// summary:
+//             Format a Number as a currency, using locale-specific settings
+//
+// description:
+//             Create a string from a Number using a known, localized pattern.
+//             [Formatting patterns](http://www.unicode.org/reports/tr35/#Number_Elements)
+//             appropriate to the locale are chosen from the [CLDR](http://unicode.org/cldr)
+//             as well as the appropriate symbols and delimiters and number of decimal places.
+//
+// value:
+//             the number to be formatted.
+
+       return dojo.number.format(value, dojo.currency._mixInDefaults(options));
+}
+
+dojo.currency.regexp = function(/*dojo.number.__RegexpOptions?*/options){
+//
+// summary:
+//             Builds the regular needed to parse a currency value
+//
+// description:
+//             Returns regular expression with positive and negative match, group and decimal separators
+//             Note: the options.places default, the number of decimal places to accept, is defined by the currency type.
+       return dojo.number.regexp(dojo.currency._mixInDefaults(options)); // String
+}
+
+/*=====
+dojo.declare("dojo.currency.__ParseOptions", [dojo.number.__ParseOptions], {
+       //      type: String?
+       //              Should not be set.  Value is assumed to be currency.
+       //      currency: String?
+       //              an [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD".
+       //              For use with dojo.currency only.
+       //      symbol: String?
+       //              localized currency symbol. The default will be looked up in table of supported currencies in `dojo.cldr`
+       //              A [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code will be used if not found.
+       //      places: Number?
+       //              fixed number of decimal places to accept.  The default is determined based on which currency is used.
+       //      fractional: Boolean?|Array?
+       //              Whether to include the fractional portion, where the number of decimal places are implied by the currency
+       //              or explicit 'places' parameter.  The value [true,false] makes the fractional portion optional.
+       //              By default for currencies, it the fractional portion is optional.
+       type: "",
+       currency: "",
+       symbol: "",
+       places: "",
+       fractional: ""
+});
+=====*/
+
+dojo.currency.parse = function(/*String*/expression, /*dojo.currency.__ParseOptions?*/options){
+       //
+       // summary:
+       //              Convert a properly formatted currency string to a primitive Number,
+       //              using locale-specific settings.
+       //
+       // description:
+       //              Create a Number from a string using a known, localized pattern.
+       //              [Formatting patterns](http://www.unicode.org/reports/tr35/#Number_Format_Patterns)
+       //              are chosen appropriate to the locale, as well as the appropriate symbols and delimiters
+       //              and number of decimal places.
+       //
+       // expression: A string representation of a currency value
+
+       return dojo.number.parse(expression, dojo.currency._mixInDefaults(options));
+}
+
+}
+
+if(!dojo._hasResource["dijit.form.NumberTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.NumberTextBox"] = true;
+dojo.provide("dijit.form.NumberTextBox");
+
+
+
+
+/*=====
+dojo.declare(
+       "dijit.form.NumberTextBox.__Constraints",
+       [dijit.form.RangeBoundTextBox.__Constraints, dojo.number.__FormatOptions, dojo.number.__ParseOptions], {
+       // summary:
+       //              Specifies both the rules on valid/invalid values (minimum, maximum,
+       //              number of required decimal places), and also formatting options for
+       //              displaying the value when the field is not focused.
+       // example:
+       //              Minimum/maximum:
+       //              To specify a field between 0 and 120:
+       //      |               {min:0,max:120}
+       //              To specify a field that must be an integer:
+       //      |               {fractional:false}
+       //              To specify a field where 0 to 3 decimal places are allowed on input,
+       //              but after the field is blurred the value is displayed with 3 decimal places:
+       //      |               {places:'0,3'}
+});
+=====*/
+
+dojo.declare("dijit.form.NumberTextBoxMixin",
+       null,
+       {
+               // summary:
+               //              A mixin for all number textboxes
+               // tags:
+               //              protected
+
+               // Override ValidationTextBox.regExpGen().... we use a reg-ex generating function rather
+               // than a straight regexp to deal with locale (plus formatting options too?)
+               regExpGen: dojo.number.regexp,
+
+               /*=====
+               // constraints: dijit.form.NumberTextBox.__Constraints
+               //              Despite the name, this parameter specifies both constraints on the input
+               //              (including minimum/maximum allowed values) as well as
+               //              formatting options like places (the number of digits to display after
+               //              the decimal point).   See `dijit.form.NumberTextBox.__Constraints` for details.
+               constraints: {},
+               ======*/
+
+               // value: Number
+               //              The value of this NumberTextBox as a Javascript Number (i.e., not a String).
+               //              If the displayed value is blank, the value is NaN, and if the user types in
+               //              an gibberish value (like "hello world"), the value is undefined
+               //              (i.e. attr('value') returns undefined).
+               //
+               //              Symmetrically, attr('value', NaN) will clear the displayed value,
+               //              whereas attr('value', undefined) will have no effect.
+               value: NaN,
+
+               // editOptions: [protected] Object
+               //              Properties to mix into constraints when the value is being edited.
+               //              This is here because we edit the number in the format "12345", which is
+               //              different than the display value (ex: "12,345")
+               editOptions: { pattern: '#.######' },
+
+               /*=====
+               _formatter: function(value, options){
+                       // summary:
+                       //              _formatter() is called by format().   It's the base routine for formatting a number,
+                       //              as a string, for example converting 12345 into "12,345".
+                       // value: Number
+                       //              The number to be converted into a string.
+                       // options: dojo.number.__FormatOptions?
+                       //              Formatting options
+                       // tags:
+                       //              protected extension
+
+                       return "12345";         // String
+               },
+                =====*/
+               _formatter: dojo.number.format,
+
+               _setConstraintsAttr: function(/* Object */ constraints){
+                       var places = typeof constraints.places == "number"? constraints.places : 0;
+                       if(places){ places++; } // decimal rounding errors take away another digit of precision
+                       if(typeof constraints.max != "number"){
+                               constraints.max = 9 * Math.pow(10, 15-places);
+                       }
+                       if(typeof constraints.min != "number"){
+                               constraints.min = -9 * Math.pow(10, 15-places);
+                       }
+                       this.inherited(arguments, [ constraints ]);
+                       if(this.focusNode && this.focusNode.value && !isNaN(this.value)){
+                               this.set('value', this.value);
+                       }
+               },
+
+               _onFocus: function(){
+                       if(this.disabled){ return; }
+                       var val = this.get('value');
+                       if(typeof val == "number" && !isNaN(val)){
+                               var formattedValue = this.format(val, this.constraints);
+                               if(formattedValue !== undefined){
+                                       this.textbox.value = formattedValue;
+                               }
+                       }
+                       this.inherited(arguments);
+               },
+
+               format: function(/*Number*/ value, /*dojo.number.__FormatOptions*/ constraints){
+                       // summary:
+                       //              Formats the value as a Number, according to constraints.
+                       // tags:
+                       //              protected
+
+                       var formattedValue = String(value);
+                       if(typeof value != "number"){ return formattedValue; }
+                       if(isNaN(value)){ return ""; }
+                       // check for exponential notation that dojo.number.format chokes on
+                       if(!("rangeCheck" in this && this.rangeCheck(value, constraints)) && constraints.exponent !== false && /\de[-+]?\d/i.test(formattedValue)){
+                               return formattedValue;
+                       }
+                       if(this.editOptions && this._focused){
+                               constraints = dojo.mixin({}, constraints, this.editOptions);
+                       }
+                       return this._formatter(value, constraints);
+               },
+
+               /*=====
+               parse: function(value, constraints){
+                       // summary:
+                       //              Parses the string value as a Number, according to constraints.
+                       // value: String
+                       //              String representing a number
+                       // constraints: dojo.number.__ParseOptions
+                       //              Formatting options
+                       // tags:
+                       //              protected
+
+                       return 123.45;          // Number
+               },
+               =====*/
+               parse: dojo.number.parse,
+
+               _getDisplayedValueAttr: function(){
+                       var v = this.inherited(arguments);
+                       return isNaN(v) ? this.textbox.value : v;
+               },
+
+               filter: function(/*Number*/ value){
+                       // summary:
+                       //              This is called with both the display value (string), and the actual value (a number).
+                       //              When called with the actual value it does corrections so that '' etc. are represented as NaN.
+                       //              Otherwise it dispatches to the superclass's filter() method.
+                       //
+                       //              See `dijit.form.TextBox.filter` for more details.
+                       return (value === null || value === '' || value === undefined) ? NaN : this.inherited(arguments); // attr('value', null||''||undefined) should fire onChange(NaN)
+               },
+
+               serialize: function(/*Number*/ value, /*Object?*/options){
+                       // summary:
+                       //              Convert value (a Number) into a canonical string (ie, how the number literal is written in javascript/java/C/etc.)
+                       // tags:
+                       //              protected
+                       return (typeof value != "number" || isNaN(value)) ? '' : this.inherited(arguments);
+               },
+
+               _setValueAttr: function(/*Number*/ value, /*Boolean?*/ priorityChange, /*String?*/formattedValue){
+                       // summary:
+                       //              Hook so attr('value', ...) works.
+                       if(value !== undefined && formattedValue === undefined){
+                               formattedValue = String(value);
+                               if(typeof value == "number"){
+                                       if(isNaN(value)){ formattedValue = '' }
+                                       // check for exponential notation that dojo.number.format chokes on
+                                       else if(("rangeCheck" in this && this.rangeCheck(value, this.constraints)) || this.constraints.exponent === false || !/\de[-+]?\d/i.test(formattedValue)){
+                                               formattedValue = undefined; // lets format comnpute a real string value
+                                       }
+                               }else if(!value){ // 0 processed in if branch above, ''|null|undefined flow thru here
+                                       formattedValue = '';
+                                       value = NaN;
+                               }else{ // non-numeric values
+                                       value = undefined;
+                               }
+                       }
+                       this.inherited(arguments, [value, priorityChange, formattedValue]);
+               },
+
+               _getValueAttr: function(){
+                       // summary:
+                       //              Hook so attr('value') works.
+                       //              Returns Number, NaN for '', or undefined for unparsable text
+                       var v = this.inherited(arguments); // returns Number for all values accepted by parse() or NaN for all other displayed values
+
+                       // If the displayed value of the textbox is gibberish (ex: "hello world"), this.inherited() above
+                       // returns NaN; this if() branch converts the return value to undefined.
+                       // Returning undefined prevents user text from being overwritten when doing _setValueAttr(_getValueAttr()).
+                       // A blank displayed value is still returned as NaN.
+                       if(isNaN(v) && this.textbox.value !== ''){
+                               if(this.constraints.exponent !== false && /\de[-+]?\d/i.test(this.textbox.value) && (new RegExp("^"+dojo.number._realNumberRegexp(dojo.mixin({}, this.constraints))+"$").test(this.textbox.value))){    // check for exponential notation that parse() rejected (erroneously?)
+                                       var n = Number(this.textbox.value);
+                                       return isNaN(n) ? undefined : n; // return exponential Number or undefined for random text (may not be possible to do with the above RegExp check)
+                               }else{
+                                       return undefined; // gibberish
+                               }
+                       }else{
+                               return v; // Number or NaN for ''
+                       }
+               },
+
+               isValid: function(/*Boolean*/ isFocused){
+                       // Overrides dijit.form.RangeBoundTextBox.isValid to check that the editing-mode value is valid since
+                       // it may not be formatted according to the regExp vaidation rules
+                       if(!this._focused || this._isEmpty(this.textbox.value)){
+                               return this.inherited(arguments);
+                       }else{
+                               var v = this.get('value');
+                               if(!isNaN(v) && this.rangeCheck(v, this.constraints)){
+                                       if(this.constraints.exponent !== false && /\de[-+]?\d/i.test(this.textbox.value)){ // exponential, parse doesn't like it
+                                               return true; // valid exponential number in range
+                                       }else{
+                                               return this.inherited(arguments);
+                                       }
+                               }else{
+                                       return false;
+                               }
+                       }
+               }
+       }
+);
+
+dojo.declare("dijit.form.NumberTextBox",
+       [dijit.form.RangeBoundTextBox,dijit.form.NumberTextBoxMixin],
+       {
+               // summary:
+               //              A TextBox for entering numbers, with formatting and range checking
+               // description:
+               //              NumberTextBox is a textbox for entering and displaying numbers, supporting
+               //              the following main features:
+               //
+               //                      1. Enforce minimum/maximum allowed values (as well as enforcing that the user types
+               //                              a number rather than a random string)
+               //                      2. NLS support (altering roles of comma and dot as "thousands-separator" and "decimal-point"
+               //                              depending on locale).
+               //                      3. Separate modes for editing the value and displaying it, specifically that
+               //                              the thousands separator character (typically comma) disappears when editing
+               //                              but reappears after the field is blurred.
+               //                      4. Formatting and constraints regarding the number of places (digits after the decimal point)
+               //                              allowed on input, and number of places displayed when blurred (see `constraints` parameter).
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.form.CurrencyTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.CurrencyTextBox"] = true;
+dojo.provide("dijit.form.CurrencyTextBox");
+
+
+
+
+/*=====
+dojo.declare(
+       "dijit.form.CurrencyTextBox.__Constraints",
+       [dijit.form.NumberTextBox.__Constraints, dojo.currency.__FormatOptions, dojo.currency.__ParseOptions], {
+       // summary:
+       //              Specifies both the rules on valid/invalid values (minimum, maximum,
+       //              number of required decimal places), and also formatting options for
+       //              displaying the value when the field is not focused (currency symbol,
+       //              etc.)
+       // description:
+       //              Follows the pattern of `dijit.form.NumberTextBox.constraints`.
+       //              In general developers won't need to set this parameter
+       // example:
+       //              To ensure that the user types in the cents (for example, 1.00 instead of just 1):
+       //      |               {fractional:true}
+});
+=====*/
+
+dojo.declare(
+       "dijit.form.CurrencyTextBox",
+       dijit.form.NumberTextBox,
+       {
+               // summary:
+               //              A validating currency textbox
+               // description:
+               //              CurrencyTextBox is similar to `dijit.form.NumberTextBox` but has a few
+               //              extra features related to currency:
+               //
+               //              1. After specifying the currency type (american dollars, euros, etc.) it automatically
+               //                      sets parse/format options such as how many decimal places to show.
+               //              2. The currency mark (dollar sign, euro mark, etc.) is displayed when the field is blurred
+               //                      but erased during editing, so that the user can just enter a plain number.
+
+               // currency: [const] String
+               //              the [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD"
+               currency: "",
+
+               // constraints: dijit.form.CurrencyTextBox.__Constraints
+               //              Despite the name, this parameter specifies both constraints on the input
+               //              (including minimum/maximum allowed values) as well as
+               //              formatting options.   See `dijit.form.CurrencyTextBox.__Constraints` for details.
+               /*=====
+               constraints: {},
+               ======*/
+               
+               baseClass: "dijitTextBox dijitCurrencyTextBox",
+
+               // Override regExpGen ValidationTextBox.regExpGen().... we use a reg-ex generating function rather
+               // than a straight regexp to deal with locale  (plus formatting options too?)
+               regExpGen: function(constraints){
+                       // if focused, accept either currency data or NumberTextBox format
+                       return '(' + (this._focused? this.inherited(arguments, [ dojo.mixin({}, constraints, this.editOptions) ]) + '|' : '')
+                               + dojo.currency.regexp(constraints) + ')';
+               },
+
+               // Override NumberTextBox._formatter to deal with currencies, ex: converts "123.45" to "$123.45"
+               _formatter: dojo.currency.format,
+
+               parse: function(/* String */ value, /* Object */ constraints){
+                       // summary:
+                       //              Parses string value as a Currency, according to the constraints object
+                       // tags:
+                       //              protected extension
+                       var v = dojo.currency.parse(value, constraints);
+                       if(isNaN(v) && /\d+/.test(value)){ // currency parse failed, but it could be because they are using NumberTextBox format so try its parse
+                               return this.inherited(arguments, [ value, dojo.mixin({}, constraints, this.editOptions) ]);
+                       }
+                       return v;
+               },
+
+               _setConstraintsAttr: function(/* Object */ constraints){
+                       if(!constraints.currency && this.currency){
+                               constraints.currency = this.currency;
+                       }
+                       this.inherited(arguments, [ dojo.currency._mixInDefaults(dojo.mixin(constraints, { exponent: false })) ]); // get places
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dojo.cldr.supplemental"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.cldr.supplemental"] = true;
+dojo.provide("dojo.cldr.supplemental");
+
+
+
+dojo.cldr.supplemental.getFirstDayOfWeek = function(/*String?*/locale){
+// summary: Returns a zero-based index for first day of the week
+// description:
+//             Returns a zero-based index for first day of the week, as used by the local (Gregorian) calendar.
+//             e.g. Sunday (returns 0), or Monday (returns 1)
+
+       // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/firstDay
+       var firstDay = {/*default is 1=Monday*/
+               mv:5,
+               af:6,bh:6,dj:6,dz:6,eg:6,er:6,et:6,iq:6,ir:6,jo:6,ke:6,kw:6,
+               ly:6,ma:6,om:6,qa:6,sa:6,sd:6,so:6,tn:6,ye:6,
+               ar:0,as:0,az:0,bw:0,ca:0,cn:0,fo:0,ge:0,gl:0,gu:0,hk:0,ie:0,
+               il:0,'in':0,is:0,jm:0,jp:0,kg:0,kr:0,la:0,mh:0,mn:0,mo:0,mp:0,
+               mt:0,nz:0,ph:0,pk:0,sg:0,sy:0,th:0,tt:0,tw:0,um:0,us:0,uz:0,
+               vi:0,zw:0
+// variant. do not use?                gb:0,
+       };
+
+       var country = dojo.cldr.supplemental._region(locale);
+       var dow = firstDay[country];
+       return (dow === undefined) ? 1 : dow; /*Number*/
+};
+
+dojo.cldr.supplemental._region = function(/*String?*/locale){
+       locale = dojo.i18n.normalizeLocale(locale);
+       var tags = locale.split('-');
+       var region = tags[1];
+       if(!region){
+               // IE often gives language only (#2269)
+               // Arbitrary mappings of language-only locales to a country:
+               region = {de:"de", en:"us", es:"es", fi:"fi", fr:"fr", he:"il", hu:"hu", it:"it",
+                       ja:"jp", ko:"kr", nl:"nl", pt:"br", sv:"se", zh:"cn"}[tags[0]];
+       }else if(region.length == 4){
+               // The ISO 3166 country code is usually in the second position, unless a
+               // 4-letter script is given. See http://www.ietf.org/rfc/rfc4646.txt
+               region = tags[2];
+       }
+       return region;
+}
+
+dojo.cldr.supplemental.getWeekend = function(/*String?*/locale){
+// summary: Returns a hash containing the start and end days of the weekend
+// description:
+//             Returns a hash containing the start and end days of the weekend according to local custom using locale,
+//             or by default in the user's locale.
+//             e.g. {start:6, end:0}
+
+       // from http://www.unicode.org/cldr/data/common/supplemental/supplementalData.xml:supplementalData/weekData/weekend{Start,End}
+       var weekendStart = {/*default is 6=Saturday*/
+               'in':0,
+               af:4,dz:4,ir:4,om:4,sa:4,ye:4,
+               ae:5,bh:5,eg:5,il:5,iq:5,jo:5,kw:5,ly:5,ma:5,qa:5,sd:5,sy:5,tn:5
+       };
+
+       var weekendEnd = {/*default is 0=Sunday*/
+               af:5,dz:5,ir:5,om:5,sa:5,ye:5,
+               ae:6,bh:5,eg:6,il:6,iq:6,jo:6,kw:6,ly:6,ma:6,qa:6,sd:6,sy:6,tn:6
+       };
+
+       var country = dojo.cldr.supplemental._region(locale);
+       var start = weekendStart[country];
+       var end = weekendEnd[country];
+       if(start === undefined){start=6;}
+       if(end === undefined){end=0;}
+       return {start:start, end:end}; /*Object {start,end}*/
+};
+
+}
+
+if(!dojo._hasResource["dojo.date"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.date"] = true;
+dojo.provide("dojo.date");
+
+/*=====
+dojo.date = {
+       // summary: Date manipulation utilities
+}
+=====*/
+
+dojo.date.getDaysInMonth = function(/*Date*/dateObject){
+       //      summary:
+       //              Returns the number of days in the month used by dateObject
+       var month = dateObject.getMonth();
+       var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
+       if(month == 1 && dojo.date.isLeapYear(dateObject)){ return 29; } // Number
+       return days[month]; // Number
+}
+
+dojo.date.isLeapYear = function(/*Date*/dateObject){
+       //      summary:
+       //              Determines if the year of the dateObject is a leap year
+       //      description:
+       //              Leap years are years with an additional day YYYY-02-29, where the
+       //              year number is a multiple of four with the following exception: If
+       //              a year is a multiple of 100, then it is only a leap year if it is
+       //              also a multiple of 400. For example, 1900 was not a leap year, but
+       //              2000 is one.
+
+       var year = dateObject.getFullYear();
+       return !(year%400) || (!(year%4) && !!(year%100)); // Boolean
+}
+
+// FIXME: This is not localized
+dojo.date.getTimezoneName = function(/*Date*/dateObject){
+       //      summary:
+       //              Get the user's time zone as provided by the browser
+       // dateObject:
+       //              Needed because the timezone may vary with time (daylight savings)
+       //      description:
+       //              Try to get time zone info from toString or toLocaleString method of
+       //              the Date object -- UTC offset is not a time zone.  See
+       //              http://www.twinsun.com/tz/tz-link.htm Note: results may be
+       //              inconsistent across browsers.
+
+       var str = dateObject.toString(); // Start looking in toString
+       var tz = ''; // The result -- return empty string if nothing found
+       var match;
+
+       // First look for something in parentheses -- fast lookup, no regex
+       var pos = str.indexOf('(');
+       if(pos > -1){
+               tz = str.substring(++pos, str.indexOf(')'));
+       }else{
+               // If at first you don't succeed ...
+               // If IE knows about the TZ, it appears before the year
+               // Capital letters or slash before a 4-digit year 
+               // at the end of string
+               var pat = /([A-Z\/]+) \d{4}$/;
+               if((match = str.match(pat))){
+                       tz = match[1];
+               }else{
+               // Some browsers (e.g. Safari) glue the TZ on the end
+               // of toLocaleString instead of putting it in toString
+                       str = dateObject.toLocaleString();
+                       // Capital letters or slash -- end of string, 
+                       // after space
+                       pat = / ([A-Z\/]+)$/;
+                       if((match = str.match(pat))){
+                               tz = match[1];
+                       }
+               }
+       }
+
+       // Make sure it doesn't somehow end up return AM or PM
+       return (tz == 'AM' || tz == 'PM') ? '' : tz; // String
+}
+
+// Utility methods to do arithmetic calculations with Dates
+
+dojo.date.compare = function(/*Date*/date1, /*Date?*/date2, /*String?*/portion){
+       //      summary:
+       //              Compare two date objects by date, time, or both.
+       //      description:
+       //      Returns 0 if equal, positive if a > b, else negative.
+       //      date1:
+       //              Date object
+       //      date2:
+       //              Date object.  If not specified, the current Date is used.
+       //      portion:
+       //              A string indicating the "date" or "time" portion of a Date object.
+       //              Compares both "date" and "time" by default.  One of the following:
+       //              "date", "time", "datetime"
+
+       // Extra step required in copy for IE - see #3112
+       date1 = new Date(+date1);
+       date2 = new Date(+(date2 || new Date()));
+
+       if(portion == "date"){
+               // Ignore times and compare dates.
+               date1.setHours(0, 0, 0, 0);
+               date2.setHours(0, 0, 0, 0);
+       }else if(portion == "time"){
+               // Ignore dates and compare times.
+               date1.setFullYear(0, 0, 0);
+               date2.setFullYear(0, 0, 0);
+       }
+       
+       if(date1 > date2){ return 1; } // int
+       if(date1 < date2){ return -1; } // int
+       return 0; // int
+};
+
+dojo.date.add = function(/*Date*/date, /*String*/interval, /*int*/amount){
+       //      summary:
+       //              Add to a Date in intervals of different size, from milliseconds to years
+       //      date: Date
+       //              Date object to start with
+       //      interval:
+       //              A string representing the interval.  One of the following:
+       //                      "year", "month", "day", "hour", "minute", "second",
+       //                      "millisecond", "quarter", "week", "weekday"
+       //      amount:
+       //              How much to add to the date.
+
+       var sum = new Date(+date); // convert to Number before copying to accomodate IE (#3112)
+       var fixOvershoot = false;
+       var property = "Date";
+
+       switch(interval){
+               case "day":
+                       break;
+               case "weekday":
+                       //i18n FIXME: assumes Saturday/Sunday weekend, but this is not always true.  see dojo.cldr.supplemental
+
+                       // Divide the increment time span into weekspans plus leftover days
+                       // e.g., 8 days is one 5-day weekspan / and two leftover days
+                       // Can't have zero leftover days, so numbers divisible by 5 get
+                       // a days value of 5, and the remaining days make up the number of weeks
+                       var days, weeks;
+                       var mod = amount % 5;
+                       if(!mod){
+                               days = (amount > 0) ? 5 : -5;
+                               weeks = (amount > 0) ? ((amount-5)/5) : ((amount+5)/5);
+                       }else{
+                               days = mod;
+                               weeks = parseInt(amount/5);
+                       }
+                       // Get weekday value for orig date param
+                       var strt = date.getDay();
+                       // Orig date is Sat / positive incrementer
+                       // Jump over Sun
+                       var adj = 0;
+                       if(strt == 6 && amount > 0){
+                               adj = 1;
+                       }else if(strt == 0 && amount < 0){
+                       // Orig date is Sun / negative incrementer
+                       // Jump back over Sat
+                               adj = -1;
+                       }
+                       // Get weekday val for the new date
+                       var trgt = strt + days;
+                       // New date is on Sat or Sun
+                       if(trgt == 0 || trgt == 6){
+                               adj = (amount > 0) ? 2 : -2;
+                       }
+                       // Increment by number of weeks plus leftover days plus
+                       // weekend adjustments
+                       amount = (7 * weeks) + days + adj;
+                       break;
+               case "year":
+                       property = "FullYear";
+                       // Keep increment/decrement from 2/29 out of March
+                       fixOvershoot = true;
+                       break;
+               case "week":
+                       amount *= 7;
+                       break;
+               case "quarter":
+                       // Naive quarter is just three months
+                       amount *= 3;
+                       // fallthrough...
+               case "month":
+                       // Reset to last day of month if you overshoot
+                       fixOvershoot = true;
+                       property = "Month";
+                       break;
+//             case "hour":
+//             case "minute":
+//             case "second":
+//             case "millisecond":
+               default:
+                       property = "UTC"+interval.charAt(0).toUpperCase() + interval.substring(1) + "s";
+       }
+
+       if(property){
+               sum["set"+property](sum["get"+property]()+amount);
+       }
+
+       if(fixOvershoot && (sum.getDate() < date.getDate())){
+               sum.setDate(0);
+       }
+
+       return sum; // Date
+};
+
+dojo.date.difference = function(/*Date*/date1, /*Date?*/date2, /*String?*/interval){
+       //      summary:
+       //              Get the difference in a specific unit of time (e.g., number of
+       //              months, weeks, days, etc.) between two dates, rounded to the
+       //              nearest integer.
+       //      date1:
+       //              Date object
+       //      date2:
+       //              Date object.  If not specified, the current Date is used.
+       //      interval:
+       //              A string representing the interval.  One of the following:
+       //                      "year", "month", "day", "hour", "minute", "second",
+       //                      "millisecond", "quarter", "week", "weekday"
+       //              Defaults to "day".
+
+       date2 = date2 || new Date();
+       interval = interval || "day";
+       var yearDiff = date2.getFullYear() - date1.getFullYear();
+       var delta = 1; // Integer return value
+
+       switch(interval){
+               case "quarter":
+                       var m1 = date1.getMonth();
+                       var m2 = date2.getMonth();
+                       // Figure out which quarter the months are in
+                       var q1 = Math.floor(m1/3) + 1;
+                       var q2 = Math.floor(m2/3) + 1;
+                       // Add quarters for any year difference between the dates
+                       q2 += (yearDiff * 4);
+                       delta = q2 - q1;
+                       break;
+               case "weekday":
+                       var days = Math.round(dojo.date.difference(date1, date2, "day"));
+                       var weeks = parseInt(dojo.date.difference(date1, date2, "week"));
+                       var mod = days % 7;
+
+                       // Even number of weeks
+                       if(mod == 0){
+                               days = weeks*5;
+                       }else{
+                               // Weeks plus spare change (< 7 days)
+                               var adj = 0;
+                               var aDay = date1.getDay();
+                               var bDay = date2.getDay();
+
+                               weeks = parseInt(days/7);
+                               mod = days % 7;
+                               // Mark the date advanced by the number of
+                               // round weeks (may be zero)
+                               var dtMark = new Date(date1);
+                               dtMark.setDate(dtMark.getDate()+(weeks*7));
+                               var dayMark = dtMark.getDay();
+
+                               // Spare change days -- 6 or less
+                               if(days > 0){
+                                       switch(true){
+                                               // Range starts on Sat
+                                               case aDay == 6:
+                                                       adj = -1;
+                                                       break;
+                                               // Range starts on Sun
+                                               case aDay == 0:
+                                                       adj = 0;
+                                                       break;
+                                               // Range ends on Sat
+                                               case bDay == 6:
+                                                       adj = -1;
+                                                       break;
+                                               // Range ends on Sun
+                                               case bDay == 0:
+                                                       adj = -2;
+                                                       break;
+                                               // Range contains weekend
+                                               case (dayMark + mod) > 5:
+                                                       adj = -2;
+                                       }
+                               }else if(days < 0){
+                                       switch(true){
+                                               // Range starts on Sat
+                                               case aDay == 6:
+                                                       adj = 0;
+                                                       break;
+                                               // Range starts on Sun
+                                               case aDay == 0:
+                                                       adj = 1;
+                                                       break;
+                                               // Range ends on Sat
+                                               case bDay == 6:
+                                                       adj = 2;
+                                                       break;
+                                               // Range ends on Sun
+                                               case bDay == 0:
+                                                       adj = 1;
+                                                       break;
+                                               // Range contains weekend
+                                               case (dayMark + mod) < 0:
+                                                       adj = 2;
+                                       }
+                               }
+                               days += adj;
+                               days -= (weeks*2);
+                       }
+                       delta = days;
+                       break;
+               case "year":
+                       delta = yearDiff;
+                       break;
+               case "month":
+                       delta = (date2.getMonth() - date1.getMonth()) + (yearDiff * 12);
+                       break;
+               case "week":
+                       // Truncate instead of rounding
+                       // Don't use Math.floor -- value may be negative
+                       delta = parseInt(dojo.date.difference(date1, date2, "day")/7);
+                       break;
+               case "day":
+                       delta /= 24;
+                       // fallthrough
+               case "hour":
+                       delta /= 60;
+                       // fallthrough
+               case "minute":
+                       delta /= 60;
+                       // fallthrough
+               case "second":
+                       delta /= 1000;
+                       // fallthrough
+               case "millisecond":
+                       delta *= date2.getTime() - date1.getTime();
+       }
+
+       // Round for fractional values and DST leaps
+       return Math.round(delta); // Number (integer)
+};
+
+}
+
+if(!dojo._hasResource["dojo.date.locale"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.date.locale"] = true;
+dojo.provide("dojo.date.locale");
+
+// Localization methods for Date.   Honor local customs using locale-dependent dojo.cldr data.
+
+
+
+
+
+
+
+// Load the bundles containing localization information for
+// names and formats
+
+
+//NOTE: Everything in this module assumes Gregorian calendars.
+// Other calendars will be implemented in separate modules.
+
+(function(){
+       // Format a pattern without literals
+       function formatPattern(dateObject, bundle, options, pattern){
+               return pattern.replace(/([a-z])\1*/ig, function(match){
+                       var s, pad,
+                               c = match.charAt(0),
+                               l = match.length,
+                               widthList = ["abbr", "wide", "narrow"];
+                       switch(c){
+                               case 'G':
+                                       s = bundle[(l < 4) ? "eraAbbr" : "eraNames"][dateObject.getFullYear() < 0 ? 0 : 1];
+                                       break;
+                               case 'y':
+                                       s = dateObject.getFullYear();
+                                       switch(l){
+                                               case 1:
+                                                       break;
+                                               case 2:
+                                                       if(!options.fullYear){
+                                                               s = String(s); s = s.substr(s.length - 2);
+                                                               break;
+                                                       }
+                                                       // fallthrough
+                                               default:
+                                                       pad = true;
+                                       }
+                                       break;
+                               case 'Q':
+                               case 'q':
+                                       s = Math.ceil((dateObject.getMonth()+1)/3);
+//                                     switch(l){
+//                                             case 1: case 2:
+                                                       pad = true;
+//                                                     break;
+//                                             case 3: case 4: // unimplemented
+//                                     }
+                                       break;
+                               case 'M':
+                                       var m = dateObject.getMonth();
+                                       if(l<3){
+                                               s = m+1; pad = true;
+                                       }else{
+                                               var propM = ["months", "format", widthList[l-3]].join("-");
+                                               s = bundle[propM][m];
+                                       }
+                                       break;
+                               case 'w':
+                                       var firstDay = 0;
+                                       s = dojo.date.locale._getWeekOfYear(dateObject, firstDay); pad = true;
+                                       break;
+                               case 'd':
+                                       s = dateObject.getDate(); pad = true;
+                                       break;
+                               case 'D':
+                                       s = dojo.date.locale._getDayOfYear(dateObject); pad = true;
+                                       break;
+                               case 'E':
+                                       var d = dateObject.getDay();
+                                       if(l<3){
+                                               s = d+1; pad = true;
+                                       }else{
+                                               var propD = ["days", "format", widthList[l-3]].join("-");
+                                               s = bundle[propD][d];
+                                       }
+                                       break;
+                               case 'a':
+                                       var timePeriod = (dateObject.getHours() < 12) ? 'am' : 'pm';
+                                       s = bundle['dayPeriods-format-wide-' + timePeriod];
+                                       break;
+                               case 'h':
+                               case 'H':
+                               case 'K':
+                               case 'k':
+                                       var h = dateObject.getHours();
+                                       // strange choices in the date format make it impossible to write this succinctly
+                                       switch (c){
+                                               case 'h': // 1-12
+                                                       s = (h % 12) || 12;
+                                                       break;
+                                               case 'H': // 0-23
+                                                       s = h;
+                                                       break;
+                                               case 'K': // 0-11
+                                                       s = (h % 12);
+                                                       break;
+                                               case 'k': // 1-24
+                                                       s = h || 24;
+                                                       break;
+                                       }
+                                       pad = true;
+                                       break;
+                               case 'm':
+                                       s = dateObject.getMinutes(); pad = true;
+                                       break;
+                               case 's':
+                                       s = dateObject.getSeconds(); pad = true;
+                                       break;
+                               case 'S':
+                                       s = Math.round(dateObject.getMilliseconds() * Math.pow(10, l-3)); pad = true;
+                                       break;
+                               case 'v': // FIXME: don't know what this is. seems to be same as z?
+                               case 'z':
+                                       // We only have one timezone to offer; the one from the browser
+                                       s = dojo.date.locale._getZone(dateObject, true, options);
+                                       if(s){break;}
+                                       l=4;
+                                       // fallthrough... use GMT if tz not available
+                               case 'Z':
+                                       var offset = dojo.date.locale._getZone(dateObject, false, options);
+                                       var tz = [
+                                               (offset<=0 ? "+" : "-"),
+                                               dojo.string.pad(Math.floor(Math.abs(offset)/60), 2),
+                                               dojo.string.pad(Math.abs(offset)% 60, 2)
+                                       ];
+                                       if(l==4){
+                                               tz.splice(0, 0, "GMT");
+                                               tz.splice(3, 0, ":");
+                                       }
+                                       s = tz.join("");
+                                       break;
+//                             case 'Y': case 'u': case 'W': case 'F': case 'g': case 'A': case 'e':
+//                                     console.log(match+" modifier unimplemented");
+                               default:
+                                       throw new Error("dojo.date.locale.format: invalid pattern char: "+pattern);
+                       }
+                       if(pad){ s = dojo.string.pad(s, l); }
+                       return s;
+               });
+       }
+
+/*=====
+       dojo.date.locale.__FormatOptions = function(){
+       //      selector: String
+       //              choice of 'time','date' (default: date and time)
+       //      formatLength: String
+       //              choice of long, short, medium or full (plus any custom additions).  Defaults to 'short'
+       //      datePattern:String
+       //              override pattern with this string
+       //      timePattern:String
+       //              override pattern with this string
+       //      am: String
+       //              override strings for am in times
+       //      pm: String
+       //              override strings for pm in times
+       //      locale: String
+       //              override the locale used to determine formatting rules
+       //      fullYear: Boolean
+       //              (format only) use 4 digit years whenever 2 digit years are called for
+       //      strict: Boolean
+       //              (parse only) strict parsing, off by default
+               this.selector = selector;
+               this.formatLength = formatLength;
+               this.datePattern = datePattern;
+               this.timePattern = timePattern;
+               this.am = am;
+               this.pm = pm;
+               this.locale = locale;
+               this.fullYear = fullYear;
+               this.strict = strict;
+       }
+=====*/
+
+dojo.date.locale._getZone = function(/*Date*/dateObject, /*boolean*/getName, /*dojo.date.locale.__FormatOptions?*/options){
+       // summary:
+       //              Returns the zone (or offset) for the given date and options.  This
+       //              is broken out into a separate function so that it can be overridden
+       //              by timezone-aware code.
+       //
+       // dateObject:
+       //              the date and/or time being formatted.
+       //
+       // getName:
+       //              Whether to return the timezone string (if true), or the offset (if false)
+       //
+       // options:
+       //              The options being used for formatting
+       if(getName){
+               return dojo.date.getTimezoneName(dateObject);
+       }else{
+               return dateObject.getTimezoneOffset();
+       }
+};
+
+
+dojo.date.locale.format = function(/*Date*/dateObject, /*dojo.date.locale.__FormatOptions?*/options){
+       // summary:
+       //              Format a Date object as a String, using locale-specific settings.
+       //
+       // description:
+       //              Create a string from a Date object using a known localized pattern.
+       //              By default, this method formats both date and time from dateObject.
+       //              Formatting patterns are chosen appropriate to the locale.  Different
+       //              formatting lengths may be chosen, with "full" used by default.
+       //              Custom patterns may be used or registered with translations using
+       //              the dojo.date.locale.addCustomFormats method.
+       //              Formatting patterns are implemented using [the syntax described at
+       //              unicode.org](http://www.unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns)
+       //
+       // dateObject:
+       //              the date and/or time to be formatted.  If a time only is formatted,
+       //              the values in the year, month, and day fields are irrelevant.  The
+       //              opposite is true when formatting only dates.
+
+       options = options || {};
+
+       var locale = dojo.i18n.normalizeLocale(options.locale),
+               formatLength = options.formatLength || 'short',
+               bundle = dojo.date.locale._getGregorianBundle(locale),
+               str = [],
+               sauce = dojo.hitch(this, formatPattern, dateObject, bundle, options);
+       if(options.selector == "year"){
+               return _processPattern(bundle["dateFormatItem-yyyy"] || "yyyy", sauce);
+       }
+       var pattern;
+       if(options.selector != "date"){
+               pattern = options.timePattern || bundle["timeFormat-"+formatLength];
+               if(pattern){str.push(_processPattern(pattern, sauce));}
+       }
+       if(options.selector != "time"){
+               pattern = options.datePattern || bundle["dateFormat-"+formatLength];
+               if(pattern){str.push(_processPattern(pattern, sauce));}
+       }
+
+       return str.length == 1 ? str[0] : bundle["dateTimeFormat-"+formatLength].replace(/\{(\d+)\}/g,
+               function(match, key){ return str[key]; }); // String
+};
+
+dojo.date.locale.regexp = function(/*dojo.date.locale.__FormatOptions?*/options){
+       // summary:
+       //              Builds the regular needed to parse a localized date
+
+       return dojo.date.locale._parseInfo(options).regexp; // String
+};
+
+dojo.date.locale._parseInfo = function(/*dojo.date.locale.__FormatOptions?*/options){
+       options = options || {};
+       var locale = dojo.i18n.normalizeLocale(options.locale),
+               bundle = dojo.date.locale._getGregorianBundle(locale),
+               formatLength = options.formatLength || 'short',
+               datePattern = options.datePattern || bundle["dateFormat-" + formatLength],
+               timePattern = options.timePattern || bundle["timeFormat-" + formatLength],
+               pattern;
+       if(options.selector == 'date'){
+               pattern = datePattern;
+       }else if(options.selector == 'time'){
+               pattern = timePattern;
+       }else{
+               pattern = bundle["dateTimeFormat-"+formatLength].replace(/\{(\d+)\}/g,
+                       function(match, key){ return [timePattern, datePattern][key]; });
+       }
+
+       var tokens = [],
+               re = _processPattern(pattern, dojo.hitch(this, _buildDateTimeRE, tokens, bundle, options));
+       return {regexp: re, tokens: tokens, bundle: bundle};
+};
+
+dojo.date.locale.parse = function(/*String*/value, /*dojo.date.locale.__FormatOptions?*/options){
+       // summary:
+       //              Convert a properly formatted string to a primitive Date object,
+       //              using locale-specific settings.
+       //
+       // description:
+       //              Create a Date object from a string using a known localized pattern.
+       //              By default, this method parses looking for both date and time in the string.
+       //              Formatting patterns are chosen appropriate to the locale.  Different
+       //              formatting lengths may be chosen, with "full" used by default.
+       //              Custom patterns may be used or registered with translations using
+       //              the dojo.date.locale.addCustomFormats method.
+       //      
+       //              Formatting patterns are implemented using [the syntax described at
+       //              unicode.org](http://www.unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns)
+       //              When two digit years are used, a century is chosen according to a sliding 
+       //              window of 80 years before and 20 years after present year, for both `yy` and `yyyy` patterns.
+       //              year < 100CE requires strict mode.
+       //
+       // value:
+       //              A string representation of a date
+
+       var info = dojo.date.locale._parseInfo(options),
+               tokens = info.tokens, bundle = info.bundle,
+               re = new RegExp("^" + info.regexp + "$", info.strict ? "" : "i"),
+               match = re.exec(value);
+
+       if(!match){ return null; } // null
+
+       var widthList = ['abbr', 'wide', 'narrow'],
+               result = [1970,0,1,0,0,0,0], // will get converted to a Date at the end
+               amPm = "",
+               valid = dojo.every(match, function(v, i){
+               if(!i){return true;}
+               var token=tokens[i-1];
+               var l=token.length;
+               switch(token.charAt(0)){
+                       case 'y':
+                               if(l != 2 && options.strict){
+                                       //interpret year literally, so '5' would be 5 A.D.
+                                       result[0] = v;
+                               }else{
+                                       if(v<100){
+                                               v = Number(v);
+                                               //choose century to apply, according to a sliding window
+                                               //of 80 years before and 20 years after present year
+                                               var year = '' + new Date().getFullYear(),
+                                                       century = year.substring(0, 2) * 100,
+                                                       cutoff = Math.min(Number(year.substring(2, 4)) + 20, 99),
+                                                       num = (v < cutoff) ? century + v : century - 100 + v;
+                                               result[0] = num;
+                                       }else{
+                                               //we expected 2 digits and got more...
+                                               if(options.strict){
+                                                       return false;
+                                               }
+                                               //interpret literally, so '150' would be 150 A.D.
+                                               //also tolerate '1950', if 'yyyy' input passed to 'yy' format
+                                               result[0] = v;
+                                       }
+                               }
+                               break;
+                       case 'M':
+                               if(l>2){
+                                       var months = bundle['months-format-' + widthList[l-3]].concat();
+                                       if(!options.strict){
+                                               //Tolerate abbreviating period in month part
+                                               //Case-insensitive comparison
+                                               v = v.replace(".","").toLowerCase();
+                                               months = dojo.map(months, function(s){ return s.replace(".","").toLowerCase(); } );
+                                       }
+                                       v = dojo.indexOf(months, v);
+                                       if(v == -1){
+//                                             console.log("dojo.date.locale.parse: Could not parse month name: '" + v + "'.");
+                                               return false;
+                                       }
+                               }else{
+                                       v--;
+                               }
+                               result[1] = v;
+                               break;
+                       case 'E':
+                       case 'e':
+                               var days = bundle['days-format-' + widthList[l-3]].concat();
+                               if(!options.strict){
+                                       //Case-insensitive comparison
+                                       v = v.toLowerCase();
+                                       days = dojo.map(days, function(d){return d.toLowerCase();});
+                               }
+                               v = dojo.indexOf(days, v);
+                               if(v == -1){
+//                                     console.log("dojo.date.locale.parse: Could not parse weekday name: '" + v + "'.");
+                                       return false;
+                               }
+
+                               //TODO: not sure what to actually do with this input,
+                               //in terms of setting something on the Date obj...?
+                               //without more context, can't affect the actual date
+                               //TODO: just validate?
+                               break;
+                       case 'D':
+                               result[1] = 0;
+                               // fallthrough...
+                       case 'd':
+                               result[2] = v;
+                               break;
+                       case 'a': //am/pm
+                               var am = options.am || bundle['dayPeriods-format-wide-am'],
+                                       pm = options.pm || bundle['dayPeriods-format-wide-pm'];
+                               if(!options.strict){
+                                       var period = /\./g;
+                                       v = v.replace(period,'').toLowerCase();
+                                       am = am.replace(period,'').toLowerCase();
+                                       pm = pm.replace(period,'').toLowerCase();
+                               }
+                               if(options.strict && v != am && v != pm){
+//                                     console.log("dojo.date.locale.parse: Could not parse am/pm part.");
+                                       return false;
+                               }
+
+                               // we might not have seen the hours field yet, so store the state and apply hour change later
+                               amPm = (v == pm) ? 'p' : (v == am) ? 'a' : '';
+                               break;
+                       case 'K': //hour (1-24)
+                               if(v == 24){ v = 0; }
+                               // fallthrough...
+                       case 'h': //hour (1-12)
+                       case 'H': //hour (0-23)
+                       case 'k': //hour (0-11)
+                               //TODO: strict bounds checking, padding
+                               if(v > 23){
+//                                     console.log("dojo.date.locale.parse: Illegal hours value");
+                                       return false;
+                               }
+
+                               //in the 12-hour case, adjusting for am/pm requires the 'a' part
+                               //which could come before or after the hour, so we will adjust later
+                               result[3] = v;
+                               break;
+                       case 'm': //minutes
+                               result[4] = v;
+                               break;
+                       case 's': //seconds
+                               result[5] = v;
+                               break;
+                       case 'S': //milliseconds
+                               result[6] = v;
+//                             break;
+//                     case 'w':
+//TODO                         var firstDay = 0;
+//                     default:
+//TODO: throw?
+//                             console.log("dojo.date.locale.parse: unsupported pattern char=" + token.charAt(0));
+               }
+               return true;
+       });
+
+       var hours = +result[3];
+       if(amPm === 'p' && hours < 12){
+               result[3] = hours + 12; //e.g., 3pm -> 15
+       }else if(amPm === 'a' && hours == 12){
+               result[3] = 0; //12am -> 0
+       }
+
+       //TODO: implement a getWeekday() method in order to test 
+       //validity of input strings containing 'EEE' or 'EEEE'...
+
+       var dateObject = new Date(result[0], result[1], result[2], result[3], result[4], result[5], result[6]); // Date
+       if(options.strict){
+               dateObject.setFullYear(result[0]);
+       }
+
+       // Check for overflow.  The Date() constructor normalizes things like April 32nd...
+       //TODO: why isn't this done for times as well?
+       var allTokens = tokens.join(""),
+               dateToken = allTokens.indexOf('d') != -1,
+               monthToken = allTokens.indexOf('M') != -1;
+
+       if(!valid ||
+               (monthToken && dateObject.getMonth() > result[1]) ||
+               (dateToken && dateObject.getDate() > result[2])){
+               return null;
+       }
+
+       // Check for underflow, due to DST shifts.  See #9366
+       // This assumes a 1 hour dst shift correction at midnight
+       // We could compare the timezone offset after the shift and add the difference instead.
+       if((monthToken && dateObject.getMonth() < result[1]) ||
+               (dateToken && dateObject.getDate() < result[2])){
+               dateObject = dojo.date.add(dateObject, "hour", 1);
+       }
+
+       return dateObject; // Date
+};
+
+function _processPattern(pattern, applyPattern, applyLiteral, applyAll){
+       //summary: Process a pattern with literals in it
+
+       // Break up on single quotes, treat every other one as a literal, except '' which becomes '
+       var identity = function(x){return x;};
+       applyPattern = applyPattern || identity;
+       applyLiteral = applyLiteral || identity;
+       applyAll = applyAll || identity;
+
+       //split on single quotes (which escape literals in date format strings) 
+       //but preserve escaped single quotes (e.g., o''clock)
+       var chunks = pattern.match(/(''|[^'])+/g),
+               literal = pattern.charAt(0) == "'";
+
+       dojo.forEach(chunks, function(chunk, i){
+               if(!chunk){
+                       chunks[i]='';
+               }else{
+                       chunks[i]=(literal ? applyLiteral : applyPattern)(chunk.replace(/''/g, "'"));
+                       literal = !literal;
+               }
+       });
+       return applyAll(chunks.join(''));
+}
+
+function _buildDateTimeRE(tokens, bundle, options, pattern){
+       pattern = dojo.regexp.escapeString(pattern);
+       if(!options.strict){ pattern = pattern.replace(" a", " ?a"); } // kludge to tolerate no space before am/pm
+       return pattern.replace(/([a-z])\1*/ig, function(match){
+               // Build a simple regexp.  Avoid captures, which would ruin the tokens list
+               var s,
+                       c = match.charAt(0),
+                       l = match.length,
+                       p2 = '', p3 = '';
+               if(options.strict){
+                       if(l > 1){ p2 = '0' + '{'+(l-1)+'}'; }
+                       if(l > 2){ p3 = '0' + '{'+(l-2)+'}'; }
+               }else{
+                       p2 = '0?'; p3 = '0{0,2}';
+               }
+               switch(c){
+                       case 'y':
+                               s = '\\d{2,4}';
+                               break;
+                       case 'M':
+                               s = (l>2) ? '\\S+?' : p2+'[1-9]|1[0-2]';
+                               break;
+                       case 'D':
+                               s = p2+'[1-9]|'+p3+'[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6]';
+                               break;
+                       case 'd':
+                               s = '3[01]|[12]\\d|'+p2+'[1-9]';
+                               break;
+                       case 'w':
+                               s = p2+'[1-9]|[1-4][0-9]|5[0-3]';
+                               break;
+                       case 'E':
+                               s = '\\S+';
+                               break;
+                       case 'h': //hour (1-12)
+                               s = p2+'[1-9]|1[0-2]';
+                               break;
+                       case 'k': //hour (0-11)
+                               s = p2+'\\d|1[01]';
+                               break;
+                       case 'H': //hour (0-23)
+                               s = p2+'\\d|1\\d|2[0-3]';
+                               break;
+                       case 'K': //hour (1-24)
+                               s = p2+'[1-9]|1\\d|2[0-4]';
+                               break;
+                       case 'm':
+                       case 's':
+                               s = '[0-5]\\d';
+                               break;
+                       case 'S':
+                               s = '\\d{'+l+'}';
+                               break;
+                       case 'a':
+                               var am = options.am || bundle['dayPeriods-format-wide-am'],
+                                       pm = options.pm || bundle['dayPeriods-format-wide-pm'];
+                               if(options.strict){
+                                       s = am + '|' + pm;
+                               }else{
+                                       s = am + '|' + pm;
+                                       if(am != am.toLowerCase()){ s += '|' + am.toLowerCase(); }
+                                       if(pm != pm.toLowerCase()){ s += '|' + pm.toLowerCase(); }
+                                       if(s.indexOf('.') != -1){ s += '|' + s.replace(/\./g, ""); }
+                               }
+                               s = s.replace(/\./g, "\\.");
+                               break;
+                       default:
+                       // case 'v':
+                       // case 'z':
+                       // case 'Z':
+                               s = ".*";
+//                             console.log("parse of date format, pattern=" + pattern);
+               }
+
+               if(tokens){ tokens.push(match); }
+
+               return "(" + s + ")"; // add capture
+       }).replace(/[\xa0 ]/g, "[\\s\\xa0]"); // normalize whitespace.  Need explicit handling of \xa0 for IE.
+}
+})();
+
+(function(){
+var _customFormats = [];
+dojo.date.locale.addCustomFormats = function(/*String*/packageName, /*String*/bundleName){
+       // summary:
+       //              Add a reference to a bundle containing localized custom formats to be
+       //              used by date/time formatting and parsing routines.
+       //
+       // description:
+       //              The user may add custom localized formats where the bundle has properties following the
+       //              same naming convention used by dojo.cldr: `dateFormat-xxxx` / `timeFormat-xxxx`
+       //              The pattern string should match the format used by the CLDR.
+       //              See dojo.date.locale.format() for details.
+       //              The resources must be loaded by dojo.requireLocalization() prior to use
+
+       _customFormats.push({pkg:packageName,name:bundleName});
+};
+
+dojo.date.locale._getGregorianBundle = function(/*String*/locale){
+       var gregorian = {};
+       dojo.forEach(_customFormats, function(desc){
+               var bundle = dojo.i18n.getLocalization(desc.pkg, desc.name, locale);
+               gregorian = dojo.mixin(gregorian, bundle);
+       }, this);
+       return gregorian; /*Object*/
+};
+})();
+
+dojo.date.locale.addCustomFormats("dojo.cldr","gregorian");
+
+dojo.date.locale.getNames = function(/*String*/item, /*String*/type, /*String?*/context, /*String?*/locale){
+       // summary:
+       //              Used to get localized strings from dojo.cldr for day or month names.
+       //
+       // item:
+       //      'months' || 'days'
+       // type:
+       //      'wide' || 'narrow' || 'abbr' (e.g. "Monday", "Mon", or "M" respectively, in English)
+       // context:
+       //      'standAlone' || 'format' (default)
+       // locale:
+       //      override locale used to find the names
+
+       var label,
+               lookup = dojo.date.locale._getGregorianBundle(locale),
+               props = [item, context, type];
+       if(context == 'standAlone'){
+               var key = props.join('-');
+               label = lookup[key];
+               // Fall back to 'format' flavor of name
+               if(label[0] == 1){ label = undefined; } // kludge, in the absence of real aliasing support in dojo.cldr
+       }
+       props[1] = 'format';
+
+       // return by copy so changes won't be made accidentally to the in-memory model
+       return (label || lookup[props.join('-')]).concat(); /*Array*/
+};
+
+dojo.date.locale.isWeekend = function(/*Date?*/dateObject, /*String?*/locale){
+       // summary:
+       //      Determines if the date falls on a weekend, according to local custom.
+
+       var weekend = dojo.cldr.supplemental.getWeekend(locale),
+               day = (dateObject || new Date()).getDay();
+       if(weekend.end < weekend.start){
+               weekend.end += 7;
+               if(day < weekend.start){ day += 7; }
+       }
+       return day >= weekend.start && day <= weekend.end; // Boolean
+};
+
+// These are used only by format and strftime.  Do they need to be public?  Which module should they go in?
+
+dojo.date.locale._getDayOfYear = function(/*Date*/dateObject){
+       // summary: gets the day of the year as represented by dateObject
+       return dojo.date.difference(new Date(dateObject.getFullYear(), 0, 1, dateObject.getHours()), dateObject) + 1; // Number
+};
+
+dojo.date.locale._getWeekOfYear = function(/*Date*/dateObject, /*Number*/firstDayOfWeek){
+       if(arguments.length == 1){ firstDayOfWeek = 0; } // Sunday
+
+       var firstDayOfYear = new Date(dateObject.getFullYear(), 0, 1).getDay(),
+               adj = (firstDayOfYear - firstDayOfWeek + 7) % 7,
+               week = Math.floor((dojo.date.locale._getDayOfYear(dateObject) + adj - 1) / 7);
+
+       // if year starts on the specified day, start counting weeks at 1
+       if(firstDayOfYear == firstDayOfWeek){ week++; }
+
+       return week; // Number
+};
+
+}
+
+if(!dojo._hasResource["dijit.Calendar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.Calendar"] = true;
+dojo.provide("dijit.Calendar");
+
+
+
+
+
+
+
+
+
+dojo.declare(
+       "dijit.Calendar",
+       [dijit._Widget, dijit._Templated, dijit._CssStateMixin],
+       {
+               // summary:
+               //              A simple GUI for choosing a date in the context of a monthly calendar.
+               //
+               // description:
+               //              A simple GUI for choosing a date in the context of a monthly calendar.
+               //              This widget can't be used in a form because it doesn't serialize the date to an
+               //              `<input>` field.  For a form element, use dijit.form.DateTextBox instead.
+               //
+               //              Note that the parser takes all dates attributes passed in the
+               //              [RFC 3339 format](http://www.faqs.org/rfcs/rfc3339.html), e.g. `2005-06-30T08:05:00-07:00`
+               //              so that they are serializable and locale-independent.
+               //
+               // example:
+               //      |       var calendar = new dijit.Calendar({}, dojo.byId("calendarNode"));
+               //
+               // example:
+               //      |       <div dojoType="dijit.Calendar"></div>
+
+               templateString: dojo.cache("dijit", "templates/Calendar.html", "<table cellspacing=\"0\" cellpadding=\"0\" class=\"dijitCalendarContainer\" role=\"grid\" dojoAttachEvent=\"onkeypress: _onKeyPress\">\n\t<thead>\n\t\t<tr class=\"dijitReset dijitCalendarMonthContainer\" valign=\"top\">\n\t\t\t<th class='dijitReset dijitCalendarArrow' dojoAttachPoint=\"decrementMonth\">\n\t\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitCalendarIncrementControl dijitCalendarDecrease\" waiRole=\"presentation\"/>\n\t\t\t\t<span dojoAttachPoint=\"decreaseArrowNode\" class=\"dijitA11ySideArrow\">-</span>\n\t\t\t</th>\n\t\t\t<th class='dijitReset' colspan=\"5\">\n\t\t\t\t<div class=\"dijitVisible\">\n\t\t\t\t\t<div class=\"dijitPopup dijitMenu dijitMenuPassive dijitHidden\" dojoAttachPoint=\"monthDropDown\" dojoAttachEvent=\"onmouseup: _onMonthSelect, onmouseover: _onMenuHover, onmouseout: _onMenuHover\">\n\t\t\t\t\t\t<div class=\"dijitCalendarMonthLabelTemplate dijitCalendarMonthLabel\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div dojoAttachPoint=\"monthLabelSpacer\" class=\"dijitSpacer\"></div>\n\t\t\t\t<div dojoAttachPoint=\"monthLabelNode\" class=\"dijitCalendarMonthLabel dijitInline dijitVisible\" dojoAttachEvent=\"onmousedown: _onMonthToggle\"></div>\n\t\t\t</th>\n\t\t\t<th class='dijitReset dijitCalendarArrow' dojoAttachPoint=\"incrementMonth\">\n\t\t\t\t<img src=\"${_blankGif}\" alt=\"\" class=\"dijitCalendarIncrementControl dijitCalendarIncrease\" waiRole=\"presentation\"/>\n\t\t\t\t<span dojoAttachPoint=\"increaseArrowNode\" class=\"dijitA11ySideArrow\">+</span>\n\t\t\t</th>\n\t\t</tr>\n\t\t<tr>\n\t\t\t<th class=\"dijitReset dijitCalendarDayLabelTemplate\" role=\"columnheader\"><span class=\"dijitCalendarDayLabel\"></span></th>\n\t\t</tr>\n\t</thead>\n\t<tbody dojoAttachEvent=\"onclick: _onDayClick, onmouseover: _onDayMouseOver, onmouseout: _onDayMouseOut, onmousedown: _onDayMouseDown, onmouseup: _onDayMouseUp\" class=\"dijitReset dijitCalendarBodyContainer\">\n\t\t<tr class=\"dijitReset dijitCalendarWeekTemplate\" role=\"row\">\n\t\t\t<td class=\"dijitReset dijitCalendarDateTemplate\" role=\"gridcell\"><span class=\"dijitCalendarDateLabel\"></span></td>\n\t\t</tr>\n\t</tbody>\n\t<tfoot class=\"dijitReset dijitCalendarYearContainer\">\n\t\t<tr>\n\t\t\t<td class='dijitReset' valign=\"top\" colspan=\"7\">\n\t\t\t\t<h3 class=\"dijitCalendarYearLabel\">\n\t\t\t\t\t<span dojoAttachPoint=\"previousYearLabelNode\" class=\"dijitInline dijitCalendarPreviousYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"currentYearLabelNode\" class=\"dijitInline dijitCalendarSelectedYear\"></span>\n\t\t\t\t\t<span dojoAttachPoint=\"nextYearLabelNode\" class=\"dijitInline dijitCalendarNextYear\"></span>\n\t\t\t\t</h3>\n\t\t\t</td>\n\t\t</tr>\n\t</tfoot>\n</table>\n"),
+
+               // value: Date
+               //              The currently selected Date
+               value: new Date(),
+
+               // datePackage: String
+               //              JavaScript namespace to find Calendar routines.  Uses Gregorian Calendar routines
+               //              at dojo.date by default.
+               datePackage: "dojo.date",
+
+               // dayWidth: String
+               //              How to represent the days of the week in the calendar header. See dojo.date.locale
+               dayWidth: "narrow",
+
+               // tabIndex: Integer
+               //              Order fields are traversed when user hits the tab key
+               tabIndex: "0",
+               
+               baseClass:"dijitCalendar",
+
+               // Set node classes for various mouse events, see dijit._CssStateMixin for more details 
+               cssStateNodes: {
+                       "decrementMonth": "dijitCalendarArrow",
+                       "incrementMonth": "dijitCalendarArrow",
+                       "previousYearLabelNode": "dijitCalendarPreviousYear",
+                       "nextYearLabelNode": "dijitCalendarNextYear"                    
+               },
+
+               attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
+                       tabIndex: "domNode"
+               }),
+
+               setValue: function(/*Date*/ value){
+                       // summary:
+                       //      Deprecated.   Used attr('value', ...) instead.
+                       // tags:
+                       //      deprecated
+                       dojo.deprecated("dijit.Calendar:setValue() is deprecated.  Use set('value', ...) instead.", "", "2.0");
+                       this.set('value', value);
+               },
+
+               _getValueAttr: function(){
+                       // summary:
+                       //              Support getter attr('value')
+                       var value = new this.dateClassObj(this.value);
+                       value.setHours(0, 0, 0, 0); // return midnight, local time for back-compat
+
+                       // If daylight savings pushes midnight to the previous date, fix the Date
+                       // object to point at 1am so it will represent the correct day. See #9366
+                       if(value.getDate() < this.value.getDate()){
+                               value = this.dateFuncObj.add(value, "hour", 1);
+                       }
+                       return value;
+               },
+
+               _setValueAttr: function(/*Date*/ value){
+                       // summary:
+                       //              Support setter attr("value", ...)
+                       // description:
+                       //              Set the current date and update the UI.  If the date is disabled, the value will
+                       //              not change, but the display will change to the corresponding month.
+                       // tags:
+                       //      protected
+                       if(!this.value || this.dateFuncObj.compare(value, this.value)){
+                               value = new this.dateClassObj(value);
+                               value.setHours(1); // to avoid issues when DST shift occurs at midnight, see #8521, #9366
+                               this.displayMonth = new this.dateClassObj(value);
+                               if(!this.isDisabledDate(value, this.lang)){
+                                       this.value = value;
+                                       this.onChange(this.get('value'));
+                               }
+                               dojo.attr(this.domNode, "aria-label",
+                                       this.dateLocaleModule.format(value,
+                                               {selector:"date", formatLength:"full"}));
+                               this._populateGrid();
+                       }
+               },
+
+               _setText: function(node, text){
+                       // summary:
+                       //              This just sets the content of node to the specified text.
+                       //              Can't do "node.innerHTML=text" because of an IE bug w/tables, see #3434.
+                       // tags:
+                       //      private
+                       while(node.firstChild){
+                               node.removeChild(node.firstChild);
+                       }
+                       node.appendChild(dojo.doc.createTextNode(text));
+               },
+
+               _populateGrid: function(){
+                       // summary:
+                       //      Fills in the calendar grid with each day (1-31)
+                       // tags:
+                       //      private
+                       var month = this.displayMonth;
+                       month.setDate(1);
+                       var firstDay = month.getDay(),
+                               daysInMonth = this.dateFuncObj.getDaysInMonth(month),
+                               daysInPreviousMonth = this.dateFuncObj.getDaysInMonth(this.dateFuncObj.add(month, "month", -1)),
+                               today = new this.dateClassObj(),
+                               dayOffset = dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);
+                       if(dayOffset > firstDay){ dayOffset -= 7; }
+
+                       // Iterate through dates in the calendar and fill in date numbers and style info
+                       dojo.query(".dijitCalendarDateTemplate", this.domNode).forEach(function(template, i){
+                               i += dayOffset;
+                               var date = new this.dateClassObj(month),
+                                       number, clazz = "dijitCalendar", adj = 0;
+
+                               if(i < firstDay){
+                                       number = daysInPreviousMonth - firstDay + i + 1;
+                                       adj = -1;
+                                       clazz += "Previous";
+                               }else if(i >= (firstDay + daysInMonth)){
+                                       number = i - firstDay - daysInMonth + 1;
+                                       adj = 1;
+                                       clazz += "Next";
+                               }else{
+                                       number = i - firstDay + 1;
+                                       clazz += "Current";
+                               }
+
+                               if(adj){
+                                       date = this.dateFuncObj.add(date, "month", adj);
+                               }
+                               date.setDate(number);
+
+                               if(!this.dateFuncObj.compare(date, today, "date")){
+                                       clazz = "dijitCalendarCurrentDate " + clazz;
+                               }
+
+                               if(this._isSelectedDate(date, this.lang)){
+                                       clazz = "dijitCalendarSelectedDate " + clazz;
+                               }
+
+                               if(this.isDisabledDate(date, this.lang)){
+                                       clazz = "dijitCalendarDisabledDate " + clazz;
+                               }
+
+                               var clazz2 = this.getClassForDate(date, this.lang);
+                               if(clazz2){
+                                       clazz = clazz2 + " " + clazz;
+                               }
+
+                               template.className = clazz + "Month dijitCalendarDateTemplate";
+                               template.dijitDateValue = date.valueOf();
+                               var label = dojo.query(".dijitCalendarDateLabel", template)[0],
+                                       text = date.getDateLocalized ? date.getDateLocalized(this.lang) : date.getDate();
+                               this._setText(label, text);
+                       }, this);
+
+                       // Fill in localized month name
+                       var monthNames = this.dateLocaleModule.getNames('months', 'wide', 'standAlone', this.lang, month);
+                       this._setText(this.monthLabelNode, monthNames[month.getMonth()]);
+                       // Repopulate month list based on current year (Hebrew calendar)
+                       dojo.query(".dijitCalendarMonthLabelTemplate", this.domNode).forEach(function(node, i){
+                               dojo.toggleClass(node, "dijitHidden", !(i in monthNames)); // hide leap months (Hebrew)
+                               this._setText(node, monthNames[i]);
+                       }, this);
+
+                       // Fill in localized prev/current/next years
+                       var y = month.getFullYear() - 1;
+                       var d = new this.dateClassObj();
+                       dojo.forEach(["previous", "current", "next"], function(name){
+                               d.setFullYear(y++);
+                               this._setText(this[name+"YearLabelNode"],
+                                       this.dateLocaleModule.format(d, {selector:'year', locale:this.lang}));
+                       }, this);
+
+                       // Set up repeating mouse behavior
+                       var _this = this;
+                       var typematic = function(nodeProp, dateProp, adj){
+//FIXME: leaks (collects) listeners if populateGrid is called multiple times.  Do this once?
+                               _this._connects.push(
+                                       dijit.typematic.addMouseListener(_this[nodeProp], _this, function(count){
+                                               if(count >= 0){ _this._adjustDisplay(dateProp, adj); }
+                                       }, 0.8, 500)
+                               );
+                       };
+                       typematic("incrementMonth", "month", 1);
+                       typematic("decrementMonth", "month", -1);
+                       typematic("nextYearLabelNode", "year", 1);
+                       typematic("previousYearLabelNode", "year", -1);
+               },
+
+               goToToday: function(){
+                       // summary:
+                       //      Sets calendar's value to today's date
+                       this.set('value', new this.dateClassObj());
+               },
+
+               constructor: function(/*Object*/args){
+                       var dateClass = (args.datePackage && (args.datePackage != "dojo.date"))? args.datePackage + ".Date" : "Date";
+                       this.dateClassObj = dojo.getObject(dateClass, false);
+                       this.datePackage = args.datePackage || this.datePackage;
+                       this.dateFuncObj = dojo.getObject(this.datePackage, false);
+                       this.dateLocaleModule = dojo.getObject(this.datePackage + ".locale", false);
+               },
+
+               postMixInProperties: function(){
+                       // parser.instantiate sometimes passes in NaN for IE.  Use default value in prototype instead.
+                       if(isNaN(this.value)){ delete this.value; }
+                       this.inherited(arguments);
+               },
+
+               postCreate: function(){
+                       this.inherited(arguments);
+                       dojo.setSelectable(this.domNode, false);
+
+                       var cloneClass = dojo.hitch(this, function(clazz, n){
+                               var template = dojo.query(clazz, this.domNode)[0];
+                               for(var i=0; i<n; i++){
+                                       template.parentNode.appendChild(template.cloneNode(true));
+                               }
+                       });
+
+                       // clone the day label and calendar day templates 6 times to make 7 columns
+                       cloneClass(".dijitCalendarDayLabelTemplate", 6);
+                       cloneClass(".dijitCalendarDateTemplate", 6);
+
+                       // now make 6 week rows
+                       cloneClass(".dijitCalendarWeekTemplate", 5);
+
+                       // insert localized day names in the header
+                       var dayNames = this.dateLocaleModule.getNames('days', this.dayWidth, 'standAlone', this.lang);
+                       var dayOffset = dojo.cldr.supplemental.getFirstDayOfWeek(this.lang);
+                       dojo.query(".dijitCalendarDayLabel", this.domNode).forEach(function(label, i){
+                               this._setText(label, dayNames[(i + dayOffset) % 7]);
+                       }, this);
+
+                       var dateObj = new this.dateClassObj(this.value);
+                       // Fill in spacer/month dropdown element with all the month names (invisible) so that the maximum width will affect layout
+                       var monthNames = this.dateLocaleModule.getNames('months', 'wide', 'standAlone', this.lang, dateObj);
+                       cloneClass(".dijitCalendarMonthLabelTemplate", monthNames.length-1);
+                       dojo.query(".dijitCalendarMonthLabelTemplate", this.domNode).forEach(function(node, i){
+                               dojo.attr(node, "month", i);
+                               if(i in monthNames){ this._setText(node, monthNames[i]); }
+                               dojo.place(node.cloneNode(true), this.monthLabelSpacer);
+                       }, this);
+
+                       this.value = null;
+                       this.set('value', dateObj);
+               },
+
+               _onMenuHover: function(e){
+                       dojo.stopEvent(e);
+                       dojo.toggleClass(e.target, "dijitMenuItemHover");
+               },
+
+               _adjustDisplay: function(/*String*/ part, /*int*/ amount){
+                       // summary:
+                       //      Moves calendar forwards or backwards by months or years
+                       // part:
+                       //      "month" or "year"
+                       // amount:
+                       //      Number of months or years
+                       // tags:
+                       //      private
+                       this.displayMonth = this.dateFuncObj.add(this.displayMonth, part, amount);
+                       this._populateGrid();
+               },
+
+               _onMonthToggle: function(/*Event*/ evt){
+                       // summary:
+                       //      Handler for when user triggers or dismisses the month list
+                       // tags:
+                       //      protected
+                       dojo.stopEvent(evt);
+
+                       if(evt.type == "mousedown"){
+                               var coords = dojo.position(this.monthLabelNode);
+//                             coords.y -= dojo.position(this.domNode, true).y;
+                               // Size the dropdown's width to match the label in the widget
+                               // so that they are horizontally aligned
+                               var dim = {
+                                       width: coords.w + "px",
+                                       top: -this.displayMonth.getMonth() * coords.h + "px"
+                               };
+                               if((dojo.isIE && dojo.isQuirks) || dojo.isIE < 7){
+                                       dim.left = -coords.w/2 + "px";
+                               }
+                               dojo.style(this.monthDropDown, dim);
+                               this._popupHandler = this.connect(document, "onmouseup", "_onMonthToggle");
+                       }else{
+                               this.disconnect(this._popupHandler);
+                               delete this._popupHandler;
+                       }
+
+                       dojo.toggleClass(this.monthDropDown, "dijitHidden");
+                       dojo.toggleClass(this.monthLabelNode, "dijitVisible");
+               },
+
+               _onMonthSelect: function(/*Event*/ evt){
+                       // summary:
+                       //      Handler for when user selects a month from a list
+                       // tags:
+                       //      protected
+                       this._onMonthToggle(evt);
+                       this.displayMonth.setMonth(dojo.attr(evt.target, "month"));
+                       this._populateGrid();
+               },
+
+               _onDayClick: function(/*Event*/ evt){
+                       // summary:
+                       //      Handler for day clicks, selects the date if appropriate
+                       // tags:
+                       //      protected
+                       dojo.stopEvent(evt);
+                       for(var node = evt.target; node && !node.dijitDateValue; node = node.parentNode);
+                       if(node && !dojo.hasClass(node, "dijitCalendarDisabledDate")){
+                               this.set('value', node.dijitDateValue);
+                               this.onValueSelected(this.get('value'));
+                       }
+               },
+
+               _onDayMouseOver: function(/*Event*/ evt){
+                       // summary:
+                       //      Handler for mouse over events on days, sets hovered style
+                       // tags:
+                       //      protected
+
+                       // event can occur on <td> or the <span> inside the td,
+                       // set node to the <td>.
+                       var node =
+                               dojo.hasClass(evt.target, "dijitCalendarDateLabel") ?
+                               evt.target.parentNode :
+                               evt.target;
+
+                       if(node && (node.dijitDateValue || node == this.previousYearLabelNode || node == this.nextYearLabelNode) ){
+                               dojo.addClass(node, "dijitCalendarHoveredDate");
+                               this._currentNode = node;
+                       }
+               },
+
+               _onDayMouseOut: function(/*Event*/ evt){
+                       // summary:
+                       //      Handler for mouse out events on days, clears hovered style
+                       // tags:
+                       //      protected
+       
+                       if(!this._currentNode){ return; }
+                       
+                       // if mouse out occurs moving from <td> to <span> inside <td>, ignore it
+                       if(evt.relatedTarget && evt.relatedTarget.parentNode == this._currentNode){ return; }
+
+                       dojo.removeClass(this._currentNode, "dijitCalendarHoveredDate");
+                       if(dojo.hasClass(this._currentNode, "dijitCalendarActiveDate")) {
+                               dojo.removeClass(this._currentNode, "dijitCalendarActiveDate");
+                       }
+                       this._currentNode = null;
+               },
+               
+               _onDayMouseDown: function(/*Event*/ evt){
+                       var node = evt.target.parentNode;
+                       if(node && node.dijitDateValue){
+                               dojo.addClass(node, "dijitCalendarActiveDate");
+                               this._currentNode = node;
+                       }
+               },
+               
+               _onDayMouseUp: function(/*Event*/ evt){
+                       var node = evt.target.parentNode;
+                       if(node && node.dijitDateValue){
+                               dojo.removeClass(node, "dijitCalendarActiveDate");
+                       }
+               },
+
+//TODO: use typematic
+//TODO: skip disabled dates without ending up in a loop
+//TODO: could optimize by avoiding populate grid when month does not change
+               _onKeyPress: function(/*Event*/evt){
+                       // summary:
+                       //              Provides keyboard navigation of calendar
+                       // tags:
+                       //              protected
+                       var dk = dojo.keys,
+                               increment = -1,
+                               interval,
+                               newValue = this.value;
+                       switch(evt.keyCode){
+                               case dk.RIGHT_ARROW:
+                                       increment = 1;
+                                       //fallthrough...
+                               case dk.LEFT_ARROW:
+                                       interval = "day";
+                                       if(!this.isLeftToRight()){ increment *= -1; }
+                                       break;
+                               case dk.DOWN_ARROW:
+                                       increment = 1;
+                                       //fallthrough...
+                               case dk.UP_ARROW:
+                                       interval = "week";
+                                       break;
+                               case dk.PAGE_DOWN:
+                                       increment = 1;
+                                       //fallthrough...
+                               case dk.PAGE_UP:
+                                       interval = evt.ctrlKey ? "year" : "month";
+                                       break;
+                               case dk.END:
+                                       // go to the next month
+                                       newValue = this.dateFuncObj.add(newValue, "month", 1);
+                                       // subtract a day from the result when we're done
+                                       interval = "day";
+                                       //fallthrough...
+                               case dk.HOME:
+                                       newValue = new Date(newValue).setDate(1);
+                                       break;
+                               case dk.ENTER:
+                                       this.onValueSelected(this.get('value'));
+                                       break;
+                               case dk.ESCAPE:
+                                       //TODO
+                               default:
+                                       return;
+                       }
+                       dojo.stopEvent(evt);
+
+                       if(interval){
+                               newValue = this.dateFuncObj.add(newValue, interval, increment);
+                       }
+
+                       this.set("value", newValue);
+               },
+
+               onValueSelected: function(/*Date*/ date){
+                       // summary:
+                       //              Notification that a date cell was selected.  It may be the same as the previous value.
+                       // description:
+                       //      Used by `dijit.form._DateTimeTextBox` (and thus `dijit.form.DateTextBox`)
+                       //      to get notification when the user has clicked a date.
+                       // tags:
+                       //      protected
+               },
+
+               onChange: function(/*Date*/ date){
+                       // summary:
+                       //              Called only when the selected date has changed
+               },
+
+               _isSelectedDate: function(/*Date*/ dateObject, /*String?*/ locale){
+                       // summary:
+                       //              Extension point so developers can subclass Calendar to
+                       //              support multiple (concurrently) selected dates
+                       // tags:
+                       //              protected extension
+                       return !this.dateFuncObj.compare(dateObject, this.value, "date")
+               },
+
+               isDisabledDate: function(/*Date*/ dateObject, /*String?*/ locale){
+                       // summary:
+                       //              May be overridden to disable certain dates in the calendar e.g. `isDisabledDate=dojo.date.locale.isWeekend`
+                       // tags:
+                       //      extension
+/*=====
+                       return false; // Boolean
+=====*/
+               },
+
+               getClassForDate: function(/*Date*/ dateObject, /*String?*/ locale){
+                       // summary:
+                       //              May be overridden to return CSS classes to associate with the date entry for the given dateObject,
+                       //              for example to indicate a holiday in specified locale.
+                       // tags:
+                       //      extension
+
+/*=====
+                       return ""; // String
+=====*/
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.form._DateTimeTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form._DateTimeTextBox"] = true;
+dojo.provide("dijit.form._DateTimeTextBox");
+
+
+
+
+
+
+new Date("X"); // workaround for #11279, new Date("") == NaN
+
+/*=====
+dojo.declare(
+       "dijit.form._DateTimeTextBox.__Constraints",
+       [dijit.form.RangeBoundTextBox.__Constraints, dojo.date.locale.__FormatOptions], {
+       // summary:
+       //              Specifies both the rules on valid/invalid values (first/last date/time allowed),
+       //              and also formatting options for how the date/time is displayed.
+       // example:
+       //              To restrict to dates within 2004, displayed in a long format like "December 25, 2005":
+       //      |               {min:'2004-01-01',max:'2004-12-31', formatLength:'long'}
+});
+=====*/
+
+dojo.declare(
+       "dijit.form._DateTimeTextBox",
+       dijit.form.RangeBoundTextBox,
+       {
+               // summary:
+               //              Base class for validating, serializable, range-bound date or time text box.
+
+               // constraints: dijit.form._DateTimeTextBox.__Constraints
+               //              Despite the name, this parameter specifies both constraints on the input
+               //              (including starting/ending dates/times allowed) as well as
+               //              formatting options like whether the date is displayed in long (ex: December 25, 2005)
+               //              or short (ex: 12/25/2005) format.   See `dijit.form._DateTimeTextBox.__Constraints` for details.
+               /*=====
+               constraints: {},
+               ======*/
+
+               // Override ValidationTextBox.regExpGen().... we use a reg-ex generating function rather
+               // than a straight regexp to deal with locale  (plus formatting options too?)
+               regExpGen: dojo.date.locale.regexp,
+
+               // datePackage: String
+               //      JavaScript namespace to find calendar routines.  Uses Gregorian calendar routines
+               //      at dojo.date, by default.
+               datePackage: "dojo.date",
+
+               // Override _FormWidget.compare() to work for dates/times
+               compare: dojo.date.compare,
+
+               format: function(/*Date*/ value, /*dojo.date.locale.__FormatOptions*/ constraints){
+                       // summary:
+                       //              Formats the value as a Date, according to specified locale (second argument)
+                       // tags:
+                       //              protected
+                       if(!value){ return ''; }
+                       return this.dateLocaleModule.format(value, constraints);
+               },
+
+               parse: function(/*String*/ value, /*dojo.date.locale.__FormatOptions*/ constraints){
+                       // summary:
+                       //              Parses as string as a Date, according to constraints
+                       // tags:
+                       //              protected
+
+                       return this.dateLocaleModule.parse(value, constraints) || (this._isEmpty(value) ? null : undefined);     // Date
+               },
+
+               // Overrides ValidationTextBox.serialize() to serialize a date in canonical ISO format.
+               serialize: function(/*anything*/val, /*Object?*/options){
+                       if(val.toGregorian){
+                               val = val.toGregorian();
+                       }
+                       return dojo.date.stamp.toISOString(val, options);
+               },
+
+               // value: Date
+               //              The value of this widget as a JavaScript Date object.  Use get("value") / set("value", val) to manipulate.
+               //              When passed to the parser in markup, must be specified according to `dojo.date.stamp.fromISOString`
+               value: new Date(""),    // value.toString()="NaN"
+               _blankValue: null,      // used by filter() when the textbox is blank
+
+               //      popupClass: [protected extension] String
+               //              Name of the popup widget class used to select a date/time.
+               //              Subclasses should specify this.
+               popupClass: "", // default is no popup = text only
+
+
+               // _selector: [protected extension] String
+               //              Specifies constraints.selector passed to dojo.date functions, should be either
+               //              "date" or "time".
+               //              Subclass must specify this.
+               _selector: "",
+
+               constructor: function(/*Object*/args){
+                       var dateClass = args.datePackage ? args.datePackage + ".Date" : "Date";
+                       this.dateClassObj = dojo.getObject(dateClass, false);
+                       this.value = new this.dateClassObj("");
+
+                       this.datePackage = args.datePackage || this.datePackage;
+                       this.dateLocaleModule = dojo.getObject(this.datePackage + ".locale", false);
+                       this.regExpGen = this.dateLocaleModule.regexp;
+               },
+
+               _setConstraintsAttr: function(/* Object */ constraints){
+                       constraints.selector = this._selector;
+                       constraints.fullYear = true; // see #5465 - always format with 4-digit years
+                       var fromISO = dojo.date.stamp.fromISOString;
+                       if(typeof constraints.min == "string"){ constraints.min = fromISO(constraints.min); }
+                       if(typeof constraints.max == "string"){ constraints.max = fromISO(constraints.max); }
+                       this.inherited(arguments, [constraints]);
+               },
+
+               _onFocus: function(/*Event*/ evt){
+                       // summary:
+                       //              open the popup
+                       this._open();
+                       this.inherited(arguments);
+               },
+
+               _setValueAttr: function(/*Date*/ value, /*Boolean?*/ priorityChange, /*String?*/ formattedValue){
+                       // summary:
+                       //              Sets the date on this textbox.  Note that `value` must be like a Javascript Date object.
+                       if(value !== undefined){
+                               if(!value || value.toString() == dijit.form._DateTimeTextBox.prototype.value.toString()){
+                                       value = null;
+                               }
+                               if(value instanceof Date && !(this.dateClassObj instanceof Date)){
+                                       value = new this.dateClassObj(value);
+                               }
+                       }
+                       this.inherited(arguments, [value, priorityChange, formattedValue]);
+                       if(this._picker){
+                               // #3948: fix blank date on popup only
+                               if(!value){value = new this.dateClassObj();}
+                               this._picker.set('value', value);
+                       }
+               },
+
+               _open: function(){
+                       // summary:
+                       //              opens the TimePicker, and sets the onValueSelected value
+
+                       if(this.disabled || this.readOnly || !this.popupClass){return;}
+
+                       var textBox = this;
+
+                       if(!this._picker){
+                               var PopupProto = dojo.getObject(this.popupClass, false);
+                               this._picker = new PopupProto({
+                                       onValueSelected: function(value){
+                                               if(textBox._tabbingAway){
+                                                       delete textBox._tabbingAway;
+                                               }else{
+                                                       textBox.focus(); // focus the textbox before the popup closes to avoid reopening the popup
+                                               }
+                                               setTimeout(dojo.hitch(textBox, "_close"), 1); // allow focus time to take
+
+                                               // this will cause InlineEditBox and other handlers to do stuff so make sure it's last
+                                               dijit.form._DateTimeTextBox.superclass._setValueAttr.call(textBox, value, true);
+                                       },
+                                       id: this.id + "_popup",
+                                       dir: textBox.dir,
+                                       lang: textBox.lang,
+                                       value: this.get('value') || new this.dateClassObj(),
+                                       constraints: textBox.constraints,
+
+                                       datePackage: textBox.datePackage,
+
+                                       isDisabledDate: function(/*Date*/ date){
+                                               // summary:
+                                               //      disables dates outside of the min/max of the _DateTimeTextBox
+                                               var compare = dojo.date.compare;
+                                               var constraints = textBox.constraints;
+                                               return constraints && (
+                                                       (constraints.min && compare(constraints.min, date, textBox._selector) > 0) ||
+                                                       (constraints.max && compare(constraints.max, date, textBox._selector) < 0)
+                                               );
+                                       }
+                               });
+                       }
+                       if(!this._opened){
+                               // Open drop down.  Align left sides of input box and drop down, even in RTL mode,
+                               // otherwise positioning thrown off when the drop down width is changed in marginBox call below (#10676)
+                               dijit.popup.open({
+                                       parent: this,
+                                       popup: this._picker,
+                                       orient: {'BL':'TL', 'TL':'BL'},
+                                       around: this.domNode,
+                                       onCancel: dojo.hitch(this, this._close),
+                                       onClose: function(){ textBox._opened=false; }
+                               });
+                               this._opened=true;
+                       }
+
+                       dojo.marginBox(this._picker.domNode,{ w:this.domNode.offsetWidth });
+               },
+
+               _close: function(){
+                       if(this._opened){
+                               dijit.popup.close(this._picker);
+                               this._opened=false;
+                       }
+               },
+
+               _onBlur: function(){
+                       // summary:
+                       //              Called magically when focus has shifted away from this widget and it's dropdown
+                       this._close();
+                       if(this._picker){
+                               // teardown so that constraints will be rebuilt next time (redundant reference: #6002)
+                               this._picker.destroy();
+                               delete this._picker;
+                       }
+                       this.inherited(arguments);
+                       // don't focus on <input>.  the user has explicitly focused on something else.
+               },
+
+               _getDisplayedValueAttr: function(){
+                       return this.textbox.value;
+               },
+
+               _setDisplayedValueAttr: function(/*String*/ value, /*Boolean?*/ priorityChange){
+                       this._setValueAttr(this.parse(value, this.constraints), priorityChange, value);
+               },
+
+               destroy: function(){
+                       if(this._picker){
+                               this._picker.destroy();
+                               delete this._picker;
+                       }
+                       this.inherited(arguments);
+               },
+
+               postCreate: function(){
+                       this.inherited(arguments);
+                       this.connect(this.focusNode, 'onkeypress', this._onKeyPress);
+                       this.connect(this.focusNode, 'onclick', this._open);
+               },
+
+               _onKeyPress: function(/*Event*/ e){
+                       // summary:
+                       //              Handler for keypress events
+
+                       var p = this._picker, dk = dojo.keys;
+                       // Handle the key in the picker, if it has a handler.  If the handler
+                       // returns false, then don't handle any other keys.
+                       if(p && this._opened && p.handleKey){
+                               if(p.handleKey(e) === false){ return; }
+                       }
+                       if(this._opened && e.charOrCode == dk.ESCAPE && !(e.shiftKey || e.ctrlKey || e.altKey || e.metaKey)){
+                               this._close();
+                               dojo.stopEvent(e);
+                       }else if(!this._opened && e.charOrCode == dk.DOWN_ARROW){
+                               this._open();
+                               dojo.stopEvent(e);
+                       }else if(e.charOrCode === dk.TAB){
+                               this._tabbingAway = true;
+                       }else if(this._opened && (e.keyChar || e.charOrCode === dk.BACKSPACE || e.charOrCode == dk.DELETE)){
+                               // Replace the element - but do it after a delay to allow for
+                               // filtering to occur
+                               setTimeout(dojo.hitch(this, function(){
+                                       if(this._picker && this._opened){
+                                               dijit.placeOnScreenAroundElement(p.domNode.parentNode, this.domNode, {'BL':'TL', 'TL':'BL'}, p.orient ? dojo.hitch(p, "orient") : null);
+                                       }
+                               }), 1);
+                       }
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.form.DateTextBox"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.DateTextBox"] = true;
+dojo.provide("dijit.form.DateTextBox");
+
+
+
+
+dojo.declare(
+       "dijit.form.DateTextBox",
+       dijit.form._DateTimeTextBox,
+       {
+               // summary:
+               //              A validating, serializable, range-bound date text box with a drop down calendar
+               //
+               //              Example:
+               // |    new dijit.form.DateTextBox({value: new Date(2009, 0, 20)})
+               //
+               //              Example:
+               // |    <input dojotype='dijit.form.DateTextBox' value='2009-01-20'>
+
+               baseClass: "dijitTextBox dijitDateTextBox",
+               popupClass: "dijit.Calendar",
+               _selector: "date",
+
+               // value: Date
+               //              The value of this widget as a JavaScript Date object, with only year/month/day specified.
+               //              If specified in markup, use the format specified in `dojo.date.stamp.fromISOString`
+               value: new Date("")     // value.toString()="NaN"
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.form._Spinner"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form._Spinner"] = true;
+dojo.provide("dijit.form._Spinner");
+
+
+
+dojo.declare(
+       "dijit.form._Spinner",
+       dijit.form.RangeBoundTextBox,
+       {
+               // summary:
+               //              Mixin for validation widgets with a spinner.
+               // description:
+               //              This class basically (conceptually) extends `dijit.form.ValidationTextBox`.
+               //              It modifies the template to have up/down arrows, and provides related handling code.
+
+               // defaultTimeout: Number
+               //              Number of milliseconds before a held arrow key or up/down button becomes typematic
+               defaultTimeout: 500,
+
+               // minimumTimeout: Number
+               //       minimum number of milliseconds that typematic event fires when held key or button is held
+               minimumTimeout: 10,
+
+               // timeoutChangeRate: Number
+               //              Fraction of time used to change the typematic timer between events.
+               //              1.0 means that each typematic event fires at defaultTimeout intervals.
+               //              < 1.0 means that each typematic event fires at an increasing faster rate.
+               timeoutChangeRate: 0.90,
+
+               // smallDelta: Number
+               //        Adjust the value by this much when spinning using the arrow keys/buttons
+               smallDelta: 1,
+
+               // largeDelta: Number
+               //        Adjust the value by this much when spinning using the PgUp/Dn keys
+               largeDelta: 10,
+
+               templateString: dojo.cache("dijit.form", "templates/Spinner.html", "<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\" waiRole=\"presentation\"\n\t><div class=\"dijitReset dijitButtonNode dijitSpinnerButtonContainer\"\n\t\t><input class=\"dijitReset dijitInputField dijitSpinnerButtonInner\" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t\t/><div class=\"dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitUpArrowButton\"\n\t\t\tdojoAttachPoint=\"upArrowNode\"\n\t\t\t><div class=\"dijitArrowButtonInner\"\n\t\t\t\t><input class=\"dijitReset dijitInputField\" value=\"&#9650;\" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t\t\t\t\t${_buttonInputDisabled}\n\t\t\t/></div\n\t\t></div\n\t\t><div class=\"dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitDownArrowButton\"\n\t\t\tdojoAttachPoint=\"downArrowNode\"\n\t\t\t><div class=\"dijitArrowButtonInner\"\n\t\t\t\t><input class=\"dijitReset dijitInputField\" value=\"&#9660;\" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t\t\t\t\t${_buttonInputDisabled}\n\t\t\t/></div\n\t\t></div\n\t></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&Chi; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' dojoAttachPoint=\"textbox,focusNode\" type=\"${type}\" dojoAttachEvent=\"onkeypress:_onKeyPress\"\n\t\t\twaiRole=\"spinbutton\" autocomplete=\"off\" ${!nameAttrSetting}\n\t/></div\n></div>\n"),
+
+               baseClass: "dijitTextBox dijitSpinner",
+
+               // Set classes like dijitUpArrowButtonHover or dijitDownArrowButtonActive depending on
+               // mouse action over specified node
+               cssStateNodes: {
+                       "upArrowNode": "dijitUpArrowButton",
+                       "downArrowNode": "dijitDownArrowButton"
+               },
+
+               adjust: function(/* Object */ val, /*Number*/ delta){
+                       // summary:
+                       //              Overridable function used to adjust a primitive value(Number/Date/...) by the delta amount specified.
+                       //              The val is adjusted in a way that makes sense to the object type.
+                       // tags:
+                       //              protected extension
+                       return val;
+               },
+
+               _arrowPressed: function(/*Node*/ nodePressed, /*Number*/ direction, /*Number*/ increment){
+                       // summary:
+                       //              Handler for arrow button or arrow key being pressed
+                       if(this.disabled || this.readOnly){ return; }
+                       this._setValueAttr(this.adjust(this.get('value'), direction*increment), false);
+                       dijit.selectInputText(this.textbox, this.textbox.value.length);
+               },
+
+               _arrowReleased: function(/*Node*/ node){
+                       // summary:
+                       //              Handler for arrow button or arrow key being released
+                       this._wheelTimer = null;
+                       if(this.disabled || this.readOnly){ return; }
+               },
+
+               _typematicCallback: function(/*Number*/ count, /*DOMNode*/ node, /*Event*/ evt){
+                       var inc=this.smallDelta;
+                       if(node == this.textbox){
+                               var k=dojo.keys;
+                               var key = evt.charOrCode;
+                               inc = (key == k.PAGE_UP || key == k.PAGE_DOWN) ? this.largeDelta : this.smallDelta;
+                               node = (key == k.UP_ARROW || key == k.PAGE_UP) ? this.upArrowNode : this.downArrowNode;
+                       }
+                       if(count == -1){ this._arrowReleased(node); }
+                       else{ this._arrowPressed(node, (node == this.upArrowNode) ? 1 : -1, inc); }
+               },
+
+               _wheelTimer: null,
+               _mouseWheeled: function(/*Event*/ evt){
+                       // summary:
+                       //              Mouse wheel listener where supported
+
+                       dojo.stopEvent(evt);
+                       // FIXME: Safari bubbles
+
+                       // be nice to DOH and scroll as much as the event says to
+                       var scrollAmount = evt.detail ? (evt.detail * -1) : (evt.wheelDelta / 120);
+                       if(scrollAmount !== 0){
+                               var node = this[(scrollAmount > 0 ? "upArrowNode" : "downArrowNode" )];
+
+                               this._arrowPressed(node, scrollAmount, this.smallDelta);
+
+                               if(!this._wheelTimer){
+                                       clearTimeout(this._wheelTimer);
+                               }
+                               this._wheelTimer = setTimeout(dojo.hitch(this,"_arrowReleased",node), 50);
+                       }
+
+               },
+
+               postCreate: function(){
+                       this.inherited(arguments);
+
+                       // extra listeners
+                       this.connect(this.domNode, !dojo.isMozilla ? "onmousewheel" : 'DOMMouseScroll', "_mouseWheeled");
+                       this._connects.push(dijit.typematic.addListener(this.upArrowNode, this.textbox, {charOrCode:dojo.keys.UP_ARROW,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false}, this, "_typematicCallback", this.timeoutChangeRate, this.defaultTimeout, this.minimumTimeout));
+                       this._connects.push(dijit.typematic.addListener(this.downArrowNode, this.textbox, {charOrCode:dojo.keys.DOWN_ARROW,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false}, this, "_typematicCallback", this.timeoutChangeRate, this.defaultTimeout, this.minimumTimeout));
+                       this._connects.push(dijit.typematic.addListener(this.upArrowNode, this.textbox, {charOrCode:dojo.keys.PAGE_UP,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false}, this, "_typematicCallback", this.timeoutChangeRate, this.defaultTimeout, this.minimumTimeout));
+                       this._connects.push(dijit.typematic.addListener(this.downArrowNode, this.textbox, {charOrCode:dojo.keys.PAGE_DOWN,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false}, this, "_typematicCallback", this.timeoutChangeRate, this.defaultTimeout, this.minimumTimeout));
+               }
+});
+
+}
+
+if(!dojo._hasResource["dijit.form.NumberSpinner"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.NumberSpinner"] = true;
+dojo.provide("dijit.form.NumberSpinner");
+
+
+
+
+dojo.declare("dijit.form.NumberSpinner",
+       [dijit.form._Spinner, dijit.form.NumberTextBoxMixin],
+       {
+       // summary:
+       //              Extends NumberTextBox to add up/down arrows and pageup/pagedown for incremental change to the value
+       //
+       // description:
+       //              A `dijit.form.NumberTextBox` extension to provide keyboard accessible value selection
+       //              as well as icons for spinning direction. When using the keyboard, the typematic rules
+       //              apply, meaning holding the key will gradually increase or decrease the value and
+       //              accelerate.
+       //
+       // example:
+       //      | new dijit.form.NumberSpinner({ constraints:{ max:300, min:100 }}, "someInput");
+
+       adjust: function(/* Object */val, /* Number*/delta){
+               // summary:
+               //              Change Number val by the given amount
+               // tags:
+               //              protected
+
+               var tc = this.constraints,
+                       v = isNaN(val),
+                       gotMax = !isNaN(tc.max),
+                       gotMin = !isNaN(tc.min)
+               ;
+               if(v && delta != 0){ // blank or invalid value and they want to spin, so create defaults
+                       val = (delta > 0) ?
+                               gotMin ? tc.min : gotMax ? tc.max : 0 :
+                               gotMax ? this.constraints.max : gotMin ? tc.min : 0
+                       ;
+               }
+               var newval = val + delta;
+               if(v || isNaN(newval)){ return val; }
+               if(gotMax && (newval > tc.max)){
+                       newval = tc.max;
+               }
+               if(gotMin && (newval < tc.min)){
+                       newval = tc.min;
+               }
+               return newval;
+       },
+
+       _onKeyPress: function(e){
+               if((e.charOrCode == dojo.keys.HOME || e.charOrCode == dojo.keys.END) && !(e.ctrlKey || e.altKey || e.metaKey)
+               && typeof this.get('value') != 'undefined' /* gibberish, so HOME and END are default editing keys*/){
+                       var value = this.constraints[(e.charOrCode == dojo.keys.HOME ? "min" : "max")];
+                       if(typeof value == "number"){
+                               this._setValueAttr(value, false);
+                       }
+                       // eat home or end key whether we change the value or not
+                       dojo.stopEvent(e);
+               }
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.form.MultiSelect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.MultiSelect"] = true;
+dojo.provide("dijit.form.MultiSelect");
+
+
+
+dojo.declare("dijit.form.MultiSelect", dijit.form._FormValueWidget, {
+       // summary:
+       //              Widget version of a <select multiple=true> element,
+       //              for selecting multiple options.
+
+       // size: Number
+       //              Number of elements to display on a page
+       //              NOTE: may be removed in version 2.0, since elements may have variable height;
+       //              set the size via style="..." or CSS class names instead.
+       size: 7,
+
+       templateString: "<select multiple='true' ${!nameAttrSetting} dojoAttachPoint='containerNode,focusNode' dojoAttachEvent='onchange: _onChange'></select>",
+
+       attributeMap: dojo.delegate(dijit.form._FormWidget.prototype.attributeMap, {
+               size: "focusNode"
+       }),
+
+       reset: function(){
+               // summary:
+               //              Reset the widget's value to what it was at initialization time
+
+               // TODO: once we inherit from FormValueWidget this won't be needed
+               this._hasBeenBlurred = false;
+               this._setValueAttr(this._resetValue, true);
+       },
+
+       addSelected: function(/* dijit.form.MultiSelect */ select){
+               // summary:
+               //              Move the selected nodes of a passed Select widget
+               //              instance to this Select widget.
+               //
+               // example:
+               // |    // move all the selected values from "bar" to "foo"
+               // |    dijit.byId("foo").addSelected(dijit.byId("bar"));
+
+               select.getSelected().forEach(function(n){
+                       this.containerNode.appendChild(n);
+                       // scroll to bottom to see item
+                       // cannot use scrollIntoView since <option> tags don't support all attributes
+                       // does not work on IE due to a bug where <select> always shows scrollTop = 0
+                       this.domNode.scrollTop = this.domNode.offsetHeight; // overshoot will be ignored
+                       // scrolling the source select is trickier esp. on safari who forgets to change the scrollbar size
+                       var oldscroll = select.domNode.scrollTop;
+                       select.domNode.scrollTop = 0;
+                       select.domNode.scrollTop = oldscroll;
+               },this);
+       },
+
+       getSelected: function(){
+               // summary:
+               //              Access the NodeList of the selected options directly
+               return dojo.query("option",this.containerNode).filter(function(n){
+                       return n.selected; // Boolean
+               }); // dojo.NodeList
+       },
+
+       _getValueAttr: function(){
+               // summary:
+               //              Hook so attr('value') works.
+               // description:
+               //              Returns an array of the selected options' values.
+               return this.getSelected().map(function(n){
+                       return n.value;
+               });
+       },
+
+       multiple: true, // for Form
+
+       _setValueAttr: function(/* Array */values){
+               // summary:
+               //              Hook so attr('value', values) works.
+               // description:
+               //              Set the value(s) of this Select based on passed values
+               dojo.query("option",this.containerNode).forEach(function(n){
+                       n.selected = (dojo.indexOf(values,n.value) != -1);
+               });
+       },
+
+       invertSelection: function(onChange){
+               // summary:
+               //              Invert the selection
+               // onChange: Boolean
+               //              If null, onChange is not fired.
+               dojo.query("option",this.containerNode).forEach(function(n){
+                       n.selected = !n.selected;
+               });
+               this._handleOnChange(this.get('value'), onChange == true);
+       },
+
+       _onChange: function(/*Event*/ e){
+               this._handleOnChange(this.get('value'), true);
+       },
+
+       // for layout widgets:
+       resize: function(/* Object */size){
+               if(size){
+                       dojo.marginBox(this.domNode, size);
+               }
+       },
+
+       postCreate: function(){
+               this._onChange();
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.form.HorizontalSlider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.HorizontalSlider"] = true;
+dojo.provide("dijit.form.HorizontalSlider");
+
+
+
+
+
+
+
+
+dojo.declare(
+       "dijit.form.HorizontalSlider",
+       [dijit.form._FormValueWidget, dijit._Container],
+{
+       // summary:
+       //              A form widget that allows one to select a value with a horizontally draggable handle
+
+       templateString: dojo.cache("dijit.form", "templates/HorizontalSlider.html", "<table class=\"dijit dijitReset dijitSlider dijitSliderH\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\" dojoAttachEvent=\"onkeypress:_onKeyPress,onkeyup:_onKeyUp\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"topDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationT dijitSliderDecorationH\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n\t\t\t><div class=\"dijitSliderDecrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderLeftBumper\" dojoAttachEvent=\"onmousedown:_onClkDecBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" ${!nameAttrSetting}\n\t\t\t/><div class=\"dijitReset dijitSliderBarContainerH\" waiRole=\"presentation\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH\" dojoAttachEvent=\"onmousedown:_onBarClick\"\n\t\t\t\t\t><div class=\"dijitSliderMoveable dijitSliderMoveableH\"\n\t\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderImageHandle dijitSliderImageHandleH\" dojoAttachEvent=\"onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH\" dojoAttachEvent=\"onmousedown:_onBarClick\"></div\n\t\t\t></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderRightBumper\" dojoAttachEvent=\"onmousedown:_onClkIncBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n\t\t\t><div class=\"dijitSliderIncrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"containerNode,bottomDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationB dijitSliderDecorationH\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n></table>\n"),
+
+       // Overrides FormValueWidget.value to indicate numeric value
+       value: 0,
+
+       // showButtons: Boolean
+       //              Show increment/decrement buttons at the ends of the slider?
+       showButtons: true,
+
+       // minimum:: Integer
+       //              The minimum value the slider can be set to.
+       minimum: 0,
+
+       // maximum: Integer
+       //              The maximum value the slider can be set to.
+       maximum: 100,
+
+       // discreteValues: Integer
+       //              If specified, indicates that the slider handle has only 'discreteValues' possible positions,
+       //      and that after dragging the handle, it will snap to the nearest possible position.
+       //      Thus, the slider has only 'discreteValues' possible values.
+       //
+       //              For example, if minimum=10, maxiumum=30, and discreteValues=3, then the slider handle has
+       //              three possible positions, representing values 10, 20, or 30.
+       //
+       //              If discreteValues is not specified or if it's value is higher than the number of pixels
+       //              in the slider bar, then the slider handle can be moved freely, and the slider's value will be
+       //              computed/reported based on pixel position (in this case it will likely be fractional,
+       //      such as 123.456789).
+       discreteValues: Infinity,
+
+       // pageIncrement: Integer
+       //              If discreteValues is also specified, this indicates the amount of clicks (ie, snap positions)
+       //      that the slider handle is moved via pageup/pagedown keys.
+       //      If discreteValues is not specified, it indicates the number of pixels.
+       pageIncrement: 2,
+
+       // clickSelect: Boolean
+       //              If clicking the slider bar changes the value or not
+       clickSelect: true,
+
+       // slideDuration: Number
+       //              The time in ms to take to animate the slider handle from 0% to 100%,
+       //              when clicking the slider bar to make the handle move.
+       slideDuration: dijit.defaultDuration,
+
+       // Flag to _Templated  (TODO: why is this here?   I see no widgets in the template.)
+       widgetsInTemplate: true,
+
+       attributeMap: dojo.delegate(dijit.form._FormWidget.prototype.attributeMap, {
+               id: ""
+       }),
+
+       baseClass: "dijitSlider",
+
+       // Apply CSS classes to up/down arrows and handle per mouse state
+       cssStateNodes: {
+               incrementButton: "dijitSliderIncrementButton",
+               decrementButton: "dijitSliderDecrementButton",
+               focusNode: "dijitSliderThumb"
+       },
+
+       _mousePixelCoord: "pageX",
+       _pixelCount: "w",
+       _startingPixelCoord: "x",
+       _startingPixelCount: "l",
+       _handleOffsetCoord: "left",
+       _progressPixelSize: "width",
+
+       _onKeyUp: function(/*Event*/ e){
+               if(this.disabled || this.readOnly || e.altKey || e.ctrlKey || e.metaKey){ return; }
+               this._setValueAttr(this.value, true);
+       },
+
+       _onKeyPress: function(/*Event*/ e){
+               if(this.disabled || this.readOnly || e.altKey || e.ctrlKey || e.metaKey){ return; }
+               switch(e.charOrCode){
+                       case dojo.keys.HOME:
+                               this._setValueAttr(this.minimum, false);
+                               break;
+                       case dojo.keys.END:
+                               this._setValueAttr(this.maximum, false);
+                               break;
+                       // this._descending === false: if ascending vertical (min on top)
+                       // (this._descending || this.isLeftToRight()): if left-to-right horizontal or descending vertical
+                       case ((this._descending || this.isLeftToRight()) ? dojo.keys.RIGHT_ARROW : dojo.keys.LEFT_ARROW):
+                       case (this._descending === false ? dojo.keys.DOWN_ARROW : dojo.keys.UP_ARROW):
+                       case (this._descending === false ? dojo.keys.PAGE_DOWN : dojo.keys.PAGE_UP):
+                               this.increment(e);
+                               break;
+                       case ((this._descending || this.isLeftToRight()) ? dojo.keys.LEFT_ARROW : dojo.keys.RIGHT_ARROW):
+                       case (this._descending === false ? dojo.keys.UP_ARROW : dojo.keys.DOWN_ARROW):
+                       case (this._descending === false ? dojo.keys.PAGE_UP : dojo.keys.PAGE_DOWN):
+                               this.decrement(e);
+                               break;
+                       default:
+                               return;
+               }
+               dojo.stopEvent(e);
+       },
+
+       _onHandleClick: function(e){
+               if(this.disabled || this.readOnly){ return; }
+               if(!dojo.isIE){
+                       // make sure you get focus when dragging the handle
+                       // (but don't do on IE because it causes a flicker on mouse up (due to blur then focus)
+                       dijit.focus(this.sliderHandle);
+               }
+               dojo.stopEvent(e);
+       },
+
+       _isReversed: function(){
+               // summary:
+               //              Returns true if direction is from right to left
+               // tags:
+               //              protected extension
+               return !this.isLeftToRight();
+       },
+
+       _onBarClick: function(e){
+               if(this.disabled || this.readOnly || !this.clickSelect){ return; }
+               dijit.focus(this.sliderHandle);
+               dojo.stopEvent(e);
+               var abspos = dojo.position(this.sliderBarContainer, true);
+               var pixelValue = e[this._mousePixelCoord] - abspos[this._startingPixelCoord];
+               this._setPixelValue(this._isReversed() ? (abspos[this._pixelCount] - pixelValue) : pixelValue, abspos[this._pixelCount], true);
+               this._movable.onMouseDown(e);
+       },
+
+       _setPixelValue: function(/*Number*/ pixelValue, /*Number*/ maxPixels, /*Boolean, optional*/ priorityChange){
+               if(this.disabled || this.readOnly){ return; }
+               pixelValue = pixelValue < 0 ? 0 : maxPixels < pixelValue ? maxPixels : pixelValue;
+               var count = this.discreteValues;
+               if(count <= 1 || count == Infinity){ count = maxPixels; }
+               count--;
+               var pixelsPerValue = maxPixels / count;
+               var wholeIncrements = Math.round(pixelValue / pixelsPerValue);
+               this._setValueAttr((this.maximum-this.minimum)*wholeIncrements/count + this.minimum, priorityChange);
+       },
+
+       _setValueAttr: function(/*Number*/ value, /*Boolean, optional*/ priorityChange){
+               // summary:
+               //              Hook so attr('value', value) works.
+               this.valueNode.value = this.value = value;
+               dijit.setWaiState(this.focusNode, "valuenow", value);
+               this.inherited(arguments);
+               var percent = (value - this.minimum) / (this.maximum - this.minimum);
+               var progressBar = (this._descending === false) ? this.remainingBar : this.progressBar;
+               var remainingBar = (this._descending === false) ? this.progressBar : this.remainingBar;
+               if(this._inProgressAnim && this._inProgressAnim.status != "stopped"){
+                       this._inProgressAnim.stop(true);
+               }
+               if(priorityChange && this.slideDuration > 0 && progressBar.style[this._progressPixelSize]){
+                       // animate the slider
+                       var _this = this;
+                       var props = {};
+                       var start = parseFloat(progressBar.style[this._progressPixelSize]);
+                       var duration = this.slideDuration * (percent-start/100);
+                       if(duration == 0){ return; }
+                       if(duration < 0){ duration = 0 - duration; }
+                       props[this._progressPixelSize] = { start: start, end: percent*100, units:"%" };
+                       this._inProgressAnim = dojo.animateProperty({ node: progressBar, duration: duration,
+                               onAnimate: function(v){ remainingBar.style[_this._progressPixelSize] = (100-parseFloat(v[_this._progressPixelSize])) + "%"; },
+                               onEnd: function(){ delete _this._inProgressAnim; },
+                               properties: props
+                       })
+                       this._inProgressAnim.play();
+               }
+               else{
+                       progressBar.style[this._progressPixelSize] = (percent*100) + "%";
+                       remainingBar.style[this._progressPixelSize] = ((1-percent)*100) + "%";
+               }
+       },
+
+       _bumpValue: function(signedChange, /*Boolean, optional*/ priorityChange){
+               if(this.disabled || this.readOnly){ return; }
+               var s = dojo.getComputedStyle(this.sliderBarContainer);
+               var c = dojo._getContentBox(this.sliderBarContainer, s);
+               var count = this.discreteValues;
+               if(count <= 1 || count == Infinity){ count = c[this._pixelCount]; }
+               count--;
+               var value = (this.value - this.minimum) * count / (this.maximum - this.minimum) + signedChange;
+               if(value < 0){ value = 0; }
+               if(value > count){ value = count; }
+               value = value * (this.maximum - this.minimum) / count + this.minimum;
+               this._setValueAttr(value, priorityChange);
+       },
+
+       _onClkBumper: function(val){
+               if(this.disabled || this.readOnly || !this.clickSelect){ return; }
+               this._setValueAttr(val, true);
+       },
+
+       _onClkIncBumper: function(){
+               this._onClkBumper(this._descending === false ? this.minimum : this.maximum);
+       },
+
+       _onClkDecBumper: function(){
+               this._onClkBumper(this._descending === false ? this.maximum : this.minimum);
+       },
+
+       decrement: function(/*Event*/ e){
+               // summary:
+               //              Decrement slider
+               // tags:
+               //              private
+               this._bumpValue(e.charOrCode == dojo.keys.PAGE_DOWN ? -this.pageIncrement : -1);
+       },
+
+       increment: function(/*Event*/ e){
+               // summary:
+               //              Increment slider
+               // tags:
+               //              private
+               this._bumpValue(e.charOrCode == dojo.keys.PAGE_UP ? this.pageIncrement : 1);
+       },
+
+       _mouseWheeled: function(/*Event*/ evt){
+               // summary:
+               //              Event handler for mousewheel where supported
+               dojo.stopEvent(evt);
+               var janky = !dojo.isMozilla;
+               var scroll = evt[(janky ? "wheelDelta" : "detail")] * (janky ? 1 : -1);
+               this._bumpValue(scroll < 0 ? -1 : 1, true); // negative scroll acts like a decrement
+       },
+
+       startup: function(){
+               if(this._started){ return; }
+
+               dojo.forEach(this.getChildren(), function(child){
+                       if(this[child.container] != this.containerNode){
+                               this[child.container].appendChild(child.domNode);
+                       }
+               }, this);
+
+               this.inherited(arguments);
+       },
+
+       _typematicCallback: function(/*Number*/ count, /*Object*/ button, /*Event*/ e){
+               if(count == -1){
+                       this._setValueAttr(this.value, true);
+               }else{
+                       this[(button == (this._descending? this.incrementButton : this.decrementButton)) ? "decrement" : "increment"](e);
+               }
+       },
+
+       postCreate: function(){
+               if(this.showButtons){
+                       this.incrementButton.style.display="";
+                       this.decrementButton.style.display="";
+                       this._connects.push(dijit.typematic.addMouseListener(
+                               this.decrementButton, this, "_typematicCallback", 25, 500));
+                       this._connects.push(dijit.typematic.addMouseListener(
+                               this.incrementButton, this, "_typematicCallback", 25, 500));
+               }
+               this.connect(this.domNode, !dojo.isMozilla ? "onmousewheel" : "DOMMouseScroll", "_mouseWheeled");
+
+               // define a custom constructor for a SliderMover that points back to me
+               var mover = dojo.declare(dijit.form._SliderMover, {
+                       widget: this
+               });
+
+               this._movable = new dojo.dnd.Moveable(this.sliderHandle, {mover: mover});
+               // find any associated label element and add to slider focusnode.
+               var label=dojo.query('label[for="'+this.id+'"]');
+               if(label.length){
+                       label[0].id = (this.id+"_label");
+                       dijit.setWaiState(this.focusNode, "labelledby", label[0].id);
+               }
+               dijit.setWaiState(this.focusNode, "valuemin", this.minimum);
+               dijit.setWaiState(this.focusNode, "valuemax", this.maximum);
+
+               this.inherited(arguments);
+               this._layoutHackIE7();
+       },
+
+       destroy: function(){
+               this._movable.destroy();
+               if(this._inProgressAnim && this._inProgressAnim.status != "stopped"){
+                       this._inProgressAnim.stop(true);
+               }
+               this._supportingWidgets = dijit.findWidgets(this.domNode); // tells destroy about pseudo-child widgets (ruler/labels)
+               this.inherited(arguments);
+       }
+});
+
+dojo.declare("dijit.form._SliderMover",
+       dojo.dnd.Mover,
+{
+       onMouseMove: function(e){
+               var widget = this.widget;
+               var abspos = widget._abspos;
+               if(!abspos){
+                       abspos = widget._abspos = dojo.position(widget.sliderBarContainer, true);
+                       widget._setPixelValue_ = dojo.hitch(widget, "_setPixelValue");
+                       widget._isReversed_ = widget._isReversed();
+               }
+               var pixelValue = e[widget._mousePixelCoord] - abspos[widget._startingPixelCoord];
+               widget._setPixelValue_(widget._isReversed_ ? (abspos[widget._pixelCount]-pixelValue) : pixelValue, abspos[widget._pixelCount], false);
+       },
+
+       destroy: function(e){
+               dojo.dnd.Mover.prototype.destroy.apply(this, arguments);
+               var widget = this.widget;
+               widget._abspos = null;
+               widget._setValueAttr(widget.value, true);
+       }
+});
+
+
+
+}
+
+if(!dojo._hasResource["dijit.form.VerticalSlider"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.VerticalSlider"] = true;
+dojo.provide("dijit.form.VerticalSlider");
+
+
+
+dojo.declare(
+       "dijit.form.VerticalSlider",
+       dijit.form.HorizontalSlider,
+{
+       // summary:
+       //              A form widget that allows one to select a value with a vertically draggable handle
+
+       templateString: dojo.cache("dijit.form", "templates/VerticalSlider.html", "<table class=\"dijit dijitReset dijitSlider dijitSliderV\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\" dojoAttachEvent=\"onkeypress:_onKeyPress,onkeyup:_onKeyUp\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderIncrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderTopBumper\" dojoAttachEvent=\"onmousedown:_onClkIncBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td dojoAttachPoint=\"leftDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationL dijitSliderDecorationV\"></td\n\t\t><td class=\"dijitReset\" style=\"height:100%;\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" ${!nameAttrSetting}\n\t\t\t/><center class=\"dijitReset dijitSliderBarContainerV\" waiRole=\"presentation\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderRemainingBar dijitSliderRemainingBarV\" dojoAttachEvent=\"onmousedown:_onBarClick\"><!--#5629--></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderProgressBar dijitSliderProgressBarV\" dojoAttachEvent=\"onmousedown:_onBarClick\"\n\t\t\t\t\t><div class=\"dijitSliderMoveable dijitSliderMoveableV\" style=\"vertical-align:top;\"\n\t\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderImageHandle dijitSliderImageHandleV\" dojoAttachEvent=\"onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t></center\n\t\t></td\n\t\t><td dojoAttachPoint=\"containerNode,rightDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationR dijitSliderDecorationV\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderBottomBumper\" dojoAttachEvent=\"onmousedown:_onClkDecBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderDecrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n></table>\n"),
+       _mousePixelCoord: "pageY",
+       _pixelCount: "h",
+       _startingPixelCoord: "y",
+       _startingPixelCount: "t",
+       _handleOffsetCoord: "top",
+       _progressPixelSize: "height",
+
+       // _descending: Boolean
+       //         Specifies if the slider values go from high-on-top (true), or low-on-top (false)
+       //      TODO: expose this in 1.2 - the css progress/remaining bar classes need to be reversed
+       _descending: true,
+
+       _isReversed: function(){
+               // summary:
+               //              Overrides HorizontalSlider._isReversed.
+               //              Indicates if values are high on top (with low numbers on the bottom).
+               return this._descending;
+       }
+});
+
+
+}
+
+if(!dojo._hasResource["dijit.form.HorizontalRule"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.HorizontalRule"] = true;
+dojo.provide("dijit.form.HorizontalRule");
+
+
+
+
+dojo.declare("dijit.form.HorizontalRule", [dijit._Widget, dijit._Templated],
+{
+       // summary:
+       //              Hash marks for `dijit.form.HorizontalSlider`
+
+       templateString: '<div class="dijitRuleContainer dijitRuleContainerH"></div>',
+
+       // count: Integer
+       //              Number of hash marks to generate
+       count: 3,
+
+       // container: String
+       //              For HorizontalSlider, this is either "topDecoration" or "bottomDecoration",
+       //              and indicates whether this rule goes above or below the slider.
+       container: "containerNode",
+
+       // ruleStyle: String
+       //              CSS style to apply to individual hash marks
+       ruleStyle: "",
+
+       _positionPrefix: '<div class="dijitRuleMark dijitRuleMarkH" style="left:',
+       _positionSuffix: '%;',
+       _suffix: '"></div>',
+
+       _genHTML: function(pos, ndx){
+               return this._positionPrefix + pos + this._positionSuffix + this.ruleStyle + this._suffix;
+       },
+
+       // _isHorizontal: [protected extension] Boolean
+       //              VerticalRule will override this...
+       _isHorizontal: true,
+
+       postCreate: function(){
+               var innerHTML;
+               if(this.count == 1){
+                       innerHTML = this._genHTML(50, 0);
+               }else{
+                       var i;
+                       var interval = 100 / (this.count-1);
+                       if(!this._isHorizontal || this.isLeftToRight()){
+                               innerHTML = this._genHTML(0, 0);
+                               for(i=1; i < this.count-1; i++){
+                                       innerHTML += this._genHTML(interval*i, i);
+                               }
+                               innerHTML += this._genHTML(100, this.count-1);
+                       }else{
+                               innerHTML = this._genHTML(100, 0);
+                               for(i=1; i < this.count-1; i++){
+                                       innerHTML += this._genHTML(100-interval*i, i);
+                               }
+                               innerHTML += this._genHTML(0, this.count-1);
+                       }
+               }
+               this.domNode.innerHTML = innerHTML;
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.form.VerticalRule"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.VerticalRule"] = true;
+dojo.provide("dijit.form.VerticalRule");
+
+
+
+dojo.declare("dijit.form.VerticalRule", dijit.form.HorizontalRule,
+{
+       // summary:
+       //              Hash marks for the `dijit.form.VerticalSlider`
+
+       templateString: '<div class="dijitRuleContainer dijitRuleContainerV"></div>',
+       _positionPrefix: '<div class="dijitRuleMark dijitRuleMarkV" style="top:',
+
+/*=====
+       // container: String
+       //              This is either "leftDecoration" or "rightDecoration",
+       //              to indicate whether this rule goes to the left or to the right of the slider.
+       //              Note that on RTL system, "leftDecoration" would actually go to the right, and vice-versa.
+       container: "",
+=====*/
+
+       // Overrides HorizontalRule._isHorizontal
+       _isHorizontal: false
+
+});
+
+
+}
+
+if(!dojo._hasResource["dijit.form.HorizontalRuleLabels"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.HorizontalRuleLabels"] = true;
+dojo.provide("dijit.form.HorizontalRuleLabels");
+
+
+
+dojo.declare("dijit.form.HorizontalRuleLabels", dijit.form.HorizontalRule,
+{
+       // summary:
+       //              Labels for `dijit.form.HorizontalSlider`
+
+       templateString: '<div class="dijitRuleContainer dijitRuleContainerH dijitRuleLabelsContainer dijitRuleLabelsContainerH"></div>',
+
+       // labelStyle: String
+       //              CSS style to apply to individual text labels
+       labelStyle: "",
+
+       // labels: String[]?
+       //              Array of text labels to render - evenly spaced from left-to-right or bottom-to-top.
+       //              Alternately, minimum and maximum can be specified, to get numeric labels.
+       labels: [],
+
+       // numericMargin: Integer
+       //              Number of generated numeric labels that should be rendered as '' on the ends when labels[] are not specified
+       numericMargin: 0,
+
+       // numericMinimum: Integer
+       //              Leftmost label value for generated numeric labels when labels[] are not specified
+       minimum: 0,
+
+       // numericMaximum: Integer
+       //              Rightmost label value for generated numeric labels when labels[] are not specified
+       maximum: 1,
+
+       // constraints: Object
+       //              pattern, places, lang, et al (see dojo.number) for generated numeric labels when labels[] are not specified
+       constraints: {pattern:"#%"},
+
+       _positionPrefix: '<div class="dijitRuleLabelContainer dijitRuleLabelContainerH" style="left:',
+       _labelPrefix: '"><div class="dijitRuleLabel dijitRuleLabelH">',
+       _suffix: '</div></div>',
+
+       _calcPosition: function(pos){
+               // summary:
+               //              Returns the value to be used in HTML for the label as part of the left: attribute
+               // tags:
+               //              protected extension
+               return pos;
+       },
+
+       _genHTML: function(pos, ndx){
+               return this._positionPrefix + this._calcPosition(pos) + this._positionSuffix + this.labelStyle + this._labelPrefix + this.labels[ndx] + this._suffix;
+       },
+
+       getLabels: function(){
+               // summary:
+               //              Overridable function to return array of labels to use for this slider.
+               //              Can specify a getLabels() method instead of a labels[] array, or min/max attributes.
+               // tags:
+               //              protected extension
+
+               // if the labels array was not specified directly, then see if <li> children were
+               var labels = this.labels;
+               if(!labels.length){
+                       // for markup creation, labels are specified as child elements
+                       labels = dojo.query("> li", this.srcNodeRef).map(function(node){
+                               return String(node.innerHTML);
+                       });
+               }
+               this.srcNodeRef.innerHTML = '';
+               // if the labels were not specified directly and not as <li> children, then calculate numeric labels
+               if(!labels.length && this.count > 1){
+                       var start = this.minimum;
+                       var inc = (this.maximum - start) / (this.count-1);
+                       for(var i=0; i < this.count; i++){
+                               labels.push((i < this.numericMargin || i >= (this.count-this.numericMargin)) ? '' : dojo.number.format(start, this.constraints));
+                               start += inc;
+                       }
+               }
+               return labels;
+       },
+
+       postMixInProperties: function(){
+               this.inherited(arguments);
+               this.labels = this.getLabels();
+               this.count = this.labels.length;
+       }
+});
+
+
+
+}
+
+if(!dojo._hasResource["dijit.form.VerticalRuleLabels"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.VerticalRuleLabels"] = true;
+dojo.provide("dijit.form.VerticalRuleLabels");
+
+
+
+dojo.declare("dijit.form.VerticalRuleLabels", dijit.form.HorizontalRuleLabels,
+{
+       // summary:
+       //              Labels for the `dijit.form.VerticalSlider`
+
+       templateString: '<div class="dijitRuleContainer dijitRuleContainerV dijitRuleLabelsContainer dijitRuleLabelsContainerV"></div>',
+
+       _positionPrefix: '<div class="dijitRuleLabelContainer dijitRuleLabelContainerV" style="top:',
+       _labelPrefix: '"><span class="dijitRuleLabel dijitRuleLabelV">',
+
+       _calcPosition: function(pos){
+               // Overrides HorizontalRuleLabel._calcPosition()
+               return 100-pos;
+       },
+
+       // needed to prevent labels from being reversed in RTL mode
+       _isHorizontal: false
+});
+
+}
+
+if(!dojo._hasResource["dijit.form.SimpleTextarea"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.SimpleTextarea"] = true;
+dojo.provide("dijit.form.SimpleTextarea");
+
+
+
+dojo.declare("dijit.form.SimpleTextarea",
+       dijit.form.TextBox,
+       {
+       // summary:
+       //              A simple textarea that degrades, and responds to
+       //              minimal LayoutContainer usage, and works with dijit.form.Form.
+       //              Doesn't automatically size according to input, like Textarea.
+       //
+       // example:
+       //      |       <textarea dojoType="dijit.form.SimpleTextarea" name="foo" value="bar" rows=30 cols=40></textarea>
+       //
+       // example:
+       //      |       new dijit.form.SimpleTextarea({ rows:20, cols:30 }, "foo");
+
+       baseClass: "dijitTextBox dijitTextArea",
+
+       attributeMap: dojo.delegate(dijit.form._FormValueWidget.prototype.attributeMap, {
+               rows:"textbox", cols: "textbox"
+       }),
+
+       // rows: Number
+       //              The number of rows of text.
+       rows: "3",
+
+       // rows: Number
+       //              The number of characters per line.
+       cols: "20",
+
+       templateString: "<textarea ${!nameAttrSetting} dojoAttachPoint='focusNode,containerNode,textbox' autocomplete='off'></textarea>",
+
+       postMixInProperties: function(){
+               // Copy value from srcNodeRef, unless user specified a value explicitly (or there is no srcNodeRef)
+               if(!this.value && this.srcNodeRef){
+                       this.value = this.srcNodeRef.value;
+               }
+               this.inherited(arguments);
+       },
+
+       filter: function(/*String*/ value){
+               // Override TextBox.filter to deal with newlines... specifically (IIRC) this is for IE which writes newlines
+               // as \r\n instead of just \n
+               if(value){
+                       value = value.replace(/\r/g,"");
+               }
+               return this.inherited(arguments);
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+               if(dojo.isIE && this.cols){ // attribute selectors is not supported in IE6
+                       dojo.addClass(this.textbox, "dijitTextAreaCols");
+               }
+       },
+
+       _previousValue: "",
+       _onInput: function(/*Event?*/ e){
+               // Override TextBox._onInput() to enforce maxLength restriction
+               if(this.maxLength){
+                       var maxLength = parseInt(this.maxLength);
+                       var value = this.textbox.value.replace(/\r/g,'');
+                       var overflow = value.length - maxLength;
+                       if(overflow > 0){
+                               if(e){ dojo.stopEvent(e); }
+                               var textarea = this.textbox;
+                               if(textarea.selectionStart){
+                                       var pos = textarea.selectionStart;
+                                       var cr = 0;
+                                       if(dojo.isOpera){
+                                               cr = (this.textbox.value.substring(0,pos).match(/\r/g) || []).length;
+                                       }
+                                       this.textbox.value = value.substring(0,pos-overflow-cr)+value.substring(pos-cr);
+                                       textarea.setSelectionRange(pos-overflow, pos-overflow);
+                               }else if(dojo.doc.selection){ //IE
+                                       textarea.focus();
+                                       var range = dojo.doc.selection.createRange();
+                                       // delete overflow characters
+                                       range.moveStart("character", -overflow);
+                                       range.text = '';
+                                       // show cursor
+                                       range.select();
+                               }
+                       }
+                       this._previousValue = this.textbox.value;
+               }
+               this.inherited(arguments);
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.form.Textarea"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.Textarea"] = true;
+dojo.provide("dijit.form.Textarea");
+
+
+
+dojo.declare(
+       "dijit.form.Textarea",
+       dijit.form.SimpleTextarea,
+       {
+       // summary:
+       //              A textarea widget that adjusts it's height according to the amount of data.
+       //
+       // description:
+       //              A textarea that dynamically expands/contracts (changing it's height) as
+       //              the user types, to display all the text without requiring a scroll bar.
+       //
+       //              Takes nearly all the parameters (name, value, etc.) that a vanilla textarea takes.
+       //              Rows is not supported since this widget adjusts the height.
+       //
+       // example:
+       // |    <textarea dojoType="dijit.form.TextArea">...</textarea>
+
+
+       // Override SimpleTextArea.cols to default to width:100%, for backward compatibility
+       cols: "",
+
+       _previousNewlines: 0,
+       _strictMode: (dojo.doc.compatMode != 'BackCompat'), // not the same as !dojo.isQuirks
+
+       _getHeight: function(textarea){
+               var newH = textarea.scrollHeight;
+               if(dojo.isIE){
+                       newH += textarea.offsetHeight - textarea.clientHeight - ((dojo.isIE < 8 && this._strictMode) ? dojo._getPadBorderExtents(textarea).h : 0);
+               }else if(dojo.isMoz){
+                       newH += textarea.offsetHeight - textarea.clientHeight; // creates room for horizontal scrollbar
+               }else if(dojo.isWebKit && !(dojo.isSafari < 4)){ // Safari 4.0 && Chrome
+                       newH += dojo._getBorderExtents(textarea).h;
+               }else{ // Safari 3.x and Opera 9.6
+                       newH += dojo._getPadBorderExtents(textarea).h;
+               }
+               return newH;
+       },
+
+       _estimateHeight: function(textarea){
+               // summary:
+               //              Approximate the height when the textarea is invisible with the number of lines in the text.
+               //              Fails when someone calls setValue with a long wrapping line, but the layout fixes itself when the user clicks inside so . . .
+               //              In IE, the resize event is supposed to fire when the textarea becomes visible again and that will correct the size automatically.
+               //
+               textarea.style.maxHeight = "";
+               textarea.style.height = "auto";
+               // #rows = #newlines+1
+               // Note: on Moz, the following #rows appears to be 1 too many.
+               // Actually, Moz is reserving room for the scrollbar.
+               // If you increase the font size, this behavior becomes readily apparent as the last line gets cut off without the +1.
+               textarea.rows = (textarea.value.match(/\n/g) || []).length + 1;
+       },
+
+       _needsHelpShrinking: dojo.isMoz || dojo.isWebKit,
+
+       _onInput: function(){
+               // Override SimpleTextArea._onInput() to deal with height adjustment
+               this.inherited(arguments);
+               if(this._busyResizing){ return; }
+               this._busyResizing = true;
+               var textarea = this.textbox;
+               if(textarea.scrollHeight && textarea.offsetHeight && textarea.clientHeight){
+                       var newH = this._getHeight(textarea) + "px";
+                       if(textarea.style.height != newH){
+                               textarea.style.maxHeight = textarea.style.height = newH;
+                       }
+                       if(this._needsHelpShrinking){
+                               if(this._setTimeoutHandle){
+                                       clearTimeout(this._setTimeoutHandle);
+                               }
+                               this._setTimeoutHandle = setTimeout(dojo.hitch(this, "_shrink"), 0); // try to collapse multiple shrinks into 1
+                       }
+               }else{
+                       // hidden content of unknown size
+                       this._estimateHeight(textarea);
+               }
+               this._busyResizing = false;
+       },
+
+       _busyResizing: false,
+       _shrink: function(){
+               // grow paddingBottom to see if scrollHeight shrinks (when it is unneccesarily big)
+               this._setTimeoutHandle = null;
+               if(this._needsHelpShrinking && !this._busyResizing){
+                       this._busyResizing = true;
+                       var textarea = this.textbox;
+                       var empty = false;
+                       if(textarea.value == ''){
+                               textarea.value = ' '; // prevent collapse all the way back to 0
+                               empty = true;
+                       }
+                       var scrollHeight = textarea.scrollHeight;
+                       if(!scrollHeight){
+                               this._estimateHeight(textarea);
+                       }else{
+                               var oldPadding = textarea.style.paddingBottom;
+                               var newPadding = dojo._getPadExtents(textarea);
+                               newPadding = newPadding.h - newPadding.t;
+                               textarea.style.paddingBottom = newPadding + 1 + "px"; // tweak padding to see if height can be reduced
+                               var newH = this._getHeight(textarea) - 1 + "px"; // see if the height changed by the 1px added
+                               if(textarea.style.maxHeight != newH){ // if can be reduced, so now try a big chunk
+                                       textarea.style.paddingBottom = newPadding + scrollHeight + "px";
+                                       textarea.scrollTop = 0;
+                                       textarea.style.maxHeight = this._getHeight(textarea) - scrollHeight + "px"; // scrollHeight is the added padding
+                               }
+                               textarea.style.paddingBottom = oldPadding;
+                       }
+                       if(empty){
+                               textarea.value = '';
+                       }
+                       this._busyResizing = false;
+               }
+       },
+
+       resize: function(){
+               // summary:
+               //              Resizes the textarea vertically (should be called after a style/value change)
+               this._onInput();
+       },
+
+       _setValueAttr: function(){
+               this.inherited(arguments);
+               this.resize();
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+               // tweak textarea style to reduce browser differences
+               dojo.style(this.textbox, { overflowY: 'hidden', overflowX: 'auto', boxSizing: 'border-box', MsBoxSizing: 'border-box', WebkitBoxSizing: 'border-box', MozBoxSizing: 'border-box' });
+               this.connect(this.textbox, "onscroll", this._onInput);
+               this.connect(this.textbox, "onresize", this._onInput);
+               this.connect(this.textbox, "onfocus", this._onInput); // useful when a previous estimate was off a bit
+               this._setTimeoutHandle = setTimeout(dojo.hitch(this, "resize"), 0);
+       },
+
+       uninitialize: function(){
+               if(this._setTimeoutHandle){
+                       clearTimeout(this._setTimeoutHandle);
+               }
+               this.inherited(arguments);
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.layout.StackController"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.StackController"] = true;
+dojo.provide("dijit.layout.StackController");
+
+
+
+
+
+
+
+dojo.declare(
+               "dijit.layout.StackController",
+               [dijit._Widget, dijit._Templated, dijit._Container],
+               {
+                       // summary:
+                       //              Set of buttons to select a page in a page list.
+                       // description:
+                       //              Monitors the specified StackContainer, and whenever a page is
+                       //              added, deleted, or selected, updates itself accordingly.
+
+                       templateString: "<span wairole='tablist' dojoAttachEvent='onkeypress' class='dijitStackController'></span>",
+
+                       // containerId: [const] String
+                       //              The id of the page container that I point to
+                       containerId: "",
+
+                       // buttonWidget: [const] String
+                       //              The name of the button widget to create to correspond to each page
+                       buttonWidget: "dijit.layout._StackButton",
+
+                       postCreate: function(){
+                               dijit.setWaiRole(this.domNode, "tablist");
+
+                               this.pane2button = {};          // mapping from pane id to buttons
+                               this.pane2handles = {};         // mapping from pane id to this.connect() handles
+
+                               // Listen to notifications from StackContainer
+                               this.subscribe(this.containerId+"-startup", "onStartup");
+                               this.subscribe(this.containerId+"-addChild", "onAddChild");
+                               this.subscribe(this.containerId+"-removeChild", "onRemoveChild");
+                               this.subscribe(this.containerId+"-selectChild", "onSelectChild");
+                               this.subscribe(this.containerId+"-containerKeyPress", "onContainerKeyPress");
+                       },
+
+                       onStartup: function(/*Object*/ info){
+                               // summary:
+                               //              Called after StackContainer has finished initializing
+                               // tags:
+                               //              private
+                               dojo.forEach(info.children, this.onAddChild, this);
+                               if(info.selected){
+                                       // Show button corresponding to selected pane (unless selected
+                                       // is null because there are no panes)
+                                       this.onSelectChild(info.selected);
+                               }
+                       },
+
+                       destroy: function(){
+                               for(var pane in this.pane2button){
+                                       this.onRemoveChild(dijit.byId(pane));
+                               }
+                               this.inherited(arguments);
+                       },
+
+                       onAddChild: function(/*dijit._Widget*/ page, /*Integer?*/ insertIndex){
+                               // summary:
+                               //              Called whenever a page is added to the container.
+                               //              Create button corresponding to the page.
+                               // tags:
+                               //              private
+
+                               // create an instance of the button widget
+                               var cls = dojo.getObject(this.buttonWidget);
+                               var button = new cls({
+                                       id: this.id + "_" + page.id,
+                                       label: page.title,
+                                       dir: page.dir,
+                                       lang: page.lang,
+                                       showLabel: page.showTitle,
+                                       iconClass: page.iconClass,
+                                       closeButton: page.closable,
+                                       title: page.tooltip
+                               });
+                               dijit.setWaiState(button.focusNode,"selected", "false");
+                               this.pane2handles[page.id] = [
+                                       this.connect(page, 'set', function(name, value){
+                                               var buttonAttr = {
+                                                       title: 'label',
+                                                       showTitle: 'showLabel',
+                                                       iconClass: 'iconClass',
+                                                       closable: 'closeButton',
+                                                       tooltip: 'title'
+                                               }[name];
+                                               if(buttonAttr){
+                                                       button.set(buttonAttr, value);
+                                               }
+                                       }),
+                                       this.connect(button, 'onClick', dojo.hitch(this,"onButtonClick", page)),
+                                       this.connect(button, 'onClickCloseButton', dojo.hitch(this,"onCloseButtonClick", page))
+                               ];
+                               this.addChild(button, insertIndex);
+                               this.pane2button[page.id] = button;
+                               page.controlButton = button;    // this value might be overwritten if two tabs point to same container
+                               if(!this._currentChild){ // put the first child into the tab order
+                                       button.focusNode.setAttribute("tabIndex", "0");
+                                       dijit.setWaiState(button.focusNode, "selected", "true");
+                                       this._currentChild = page;
+                               }
+                               // make sure all tabs have the same length
+                               if(!this.isLeftToRight() && dojo.isIE && this._rectifyRtlTabList){
+                                       this._rectifyRtlTabList();
+                               }
+                       },
+
+                       onRemoveChild: function(/*dijit._Widget*/ page){
+                               // summary:
+                               //              Called whenever a page is removed from the container.
+                               //              Remove the button corresponding to the page.
+                               // tags:
+                               //              private
+
+                               if(this._currentChild === page){ this._currentChild = null; }
+                               dojo.forEach(this.pane2handles[page.id], this.disconnect, this);
+                               delete this.pane2handles[page.id];
+                               var button = this.pane2button[page.id];
+                               if(button){
+                                       this.removeChild(button);
+                                       delete this.pane2button[page.id];
+                                       button.destroy();
+                               }
+                               delete page.controlButton;
+                       },
+
+                       onSelectChild: function(/*dijit._Widget*/ page){
+                               // summary:
+                               //              Called when a page has been selected in the StackContainer, either by me or by another StackController
+                               // tags:
+                               //              private
+
+                               if(!page){ return; }
+
+                               if(this._currentChild){
+                                       var oldButton=this.pane2button[this._currentChild.id];
+                                       oldButton.set('checked', false);
+                                       dijit.setWaiState(oldButton.focusNode, "selected", "false");
+                                       oldButton.focusNode.setAttribute("tabIndex", "-1");
+                               }
+
+                               var newButton=this.pane2button[page.id];
+                               newButton.set('checked', true);
+                               dijit.setWaiState(newButton.focusNode, "selected", "true");
+                               this._currentChild = page;
+                               newButton.focusNode.setAttribute("tabIndex", "0");
+                               var container = dijit.byId(this.containerId);
+                               dijit.setWaiState(container.containerNode, "labelledby", newButton.id);
+                       },
+
+                       onButtonClick: function(/*dijit._Widget*/ page){
+                               // summary:
+                               //              Called whenever one of my child buttons is pressed in an attempt to select a page
+                               // tags:
+                               //              private
+
+                               var container = dijit.byId(this.containerId);
+                               container.selectChild(page);
+                       },
+
+                       onCloseButtonClick: function(/*dijit._Widget*/ page){
+                               // summary:
+                               //              Called whenever one of my child buttons [X] is pressed in an attempt to close a page
+                               // tags:
+                               //              private
+
+                               var container = dijit.byId(this.containerId);
+                               container.closeChild(page);
+                               if(this._currentChild){
+                                       var b = this.pane2button[this._currentChild.id];
+                                       if(b){
+                                               dijit.focus(b.focusNode || b.domNode);
+                                       }
+                               }
+                       },
+
+                       // TODO: this is a bit redundant with forward, back api in StackContainer
+                       adjacent: function(/*Boolean*/ forward){
+                               // summary:
+                               //              Helper for onkeypress to find next/previous button
+                               // tags:
+                               //              private
+
+                               if(!this.isLeftToRight() && (!this.tabPosition || /top|bottom/.test(this.tabPosition))){ forward = !forward; }
+                               // find currently focused button in children array
+                               var children = this.getChildren();
+                               var current = dojo.indexOf(children, this.pane2button[this._currentChild.id]);
+                               // pick next button to focus on
+                               var offset = forward ? 1 : children.length - 1;
+                               return children[ (current + offset) % children.length ]; // dijit._Widget
+                       },
+
+                       onkeypress: function(/*Event*/ e){
+                               // summary:
+                               //              Handle keystrokes on the page list, for advancing to next/previous button
+                               //              and closing the current page if the page is closable.
+                               // tags:
+                               //              private
+
+                               if(this.disabled || e.altKey ){ return; }
+                               var forward = null;
+                               if(e.ctrlKey || !e._djpage){
+                                       var k = dojo.keys;
+                                       switch(e.charOrCode){
+                                               case k.LEFT_ARROW:
+                                               case k.UP_ARROW:
+                                                       if(!e._djpage){ forward = false; }
+                                                       break;
+                                               case k.PAGE_UP:
+                                                       if(e.ctrlKey){ forward = false; }
+                                                       break;
+                                               case k.RIGHT_ARROW:
+                                               case k.DOWN_ARROW:
+                                                       if(!e._djpage){ forward = true; }
+                                                       break;
+                                               case k.PAGE_DOWN:
+                                                       if(e.ctrlKey){ forward = true; }
+                                                       break;
+                                               case k.DELETE:
+                                                       if(this._currentChild.closable){
+                                                               this.onCloseButtonClick(this._currentChild);
+                                                       }
+                                                       dojo.stopEvent(e);
+                                                       break;
+                                               default:
+                                                       if(e.ctrlKey){
+                                                               if(e.charOrCode === k.TAB){
+                                                                       this.adjacent(!e.shiftKey).onClick();
+                                                                       dojo.stopEvent(e);
+                                                               }else if(e.charOrCode == "w"){
+                                                                       if(this._currentChild.closable){
+                                                                               this.onCloseButtonClick(this._currentChild);
+                                                                       }
+                                                                       dojo.stopEvent(e); // avoid browser tab closing.
+                                                               }
+                                                       }
+                                       }
+                                       // handle page navigation
+                                       if(forward !== null){
+                                               this.adjacent(forward).onClick();
+                                               dojo.stopEvent(e);
+                                       }
+                               }
+                       },
+
+                       onContainerKeyPress: function(/*Object*/ info){
+                               // summary:
+                               //              Called when there was a keypress on the container
+                               // tags:
+                               //              private
+                               info.e._djpage = info.page;
+                               this.onkeypress(info.e);
+                       }
+       });
+
+
+dojo.declare("dijit.layout._StackButton",
+               dijit.form.ToggleButton,
+               {
+               // summary:
+               //              Internal widget used by StackContainer.
+               // description:
+               //              The button-like or tab-like object you click to select or delete a page
+               // tags:
+               //              private
+
+               // Override _FormWidget.tabIndex.
+               // StackContainer buttons are not in the tab order by default.
+               // Probably we should be calling this.startupKeyNavChildren() instead.
+               tabIndex: "-1",
+
+               postCreate: function(/*Event*/ evt){
+                       dijit.setWaiRole((this.focusNode || this.domNode), "tab");
+                       this.inherited(arguments);
+               },
+
+               onClick: function(/*Event*/ evt){
+                       // summary:
+                       //              This is for TabContainer where the tabs are <span> rather than button,
+                       //              so need to set focus explicitly (on some browsers)
+                       //              Note that you shouldn't override this method, but you can connect to it.
+                       dijit.focus(this.focusNode);
+
+                       // ... now let StackController catch the event and tell me what to do
+               },
+
+               onClickCloseButton: function(/*Event*/ evt){
+                       // summary:
+                       //              StackContainer connects to this function; if your widget contains a close button
+                       //              then clicking it should call this function.
+                       //              Note that you shouldn't override this method, but you can connect to it.
+                       evt.stopPropagation();
+               }
+       });
+
+
+}
+
+if(!dojo._hasResource["dijit.layout.StackContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.StackContainer"] = true;
+dojo.provide("dijit.layout.StackContainer");
+
+
+
+
+
+
+dojo.declare(
+       "dijit.layout.StackContainer",
+       dijit.layout._LayoutWidget,
+       {
+       // summary:
+       //              A container that has multiple children, but shows only
+       //              one child at a time
+       //
+       // description:
+       //              A container for widgets (ContentPanes, for example) That displays
+       //              only one Widget at a time.
+       //
+       //              Publishes topics [widgetId]-addChild, [widgetId]-removeChild, and [widgetId]-selectChild
+       //
+       //              Can be base class for container, Wizard, Show, etc.
+
+       // doLayout: Boolean
+       //              If true, change the size of my currently displayed child to match my size
+       doLayout: true,
+
+       // persist: Boolean
+       //              Remembers the selected child across sessions
+       persist: false,
+
+       baseClass: "dijitStackContainer",
+
+/*=====
+       // selectedChildWidget: [readonly] dijit._Widget
+       //              References the currently selected child widget, if any.
+       //              Adjust selected child with selectChild() method.
+       selectedChildWidget: null,
+=====*/
+
+       postCreate: function(){
+               this.inherited(arguments);
+               dojo.addClass(this.domNode, "dijitLayoutContainer");
+               dijit.setWaiRole(this.containerNode, "tabpanel");
+               this.connect(this.domNode, "onkeypress", this._onKeyPress);
+       },
+
+       startup: function(){
+               if(this._started){ return; }
+
+               var children = this.getChildren();
+
+               // Setup each page panel to be initially hidden
+               dojo.forEach(children, this._setupChild, this);
+
+               // Figure out which child to initially display, defaulting to first one
+               if(this.persist){
+                       this.selectedChildWidget = dijit.byId(dojo.cookie(this.id + "_selectedChild"));
+               }else{
+                       dojo.some(children, function(child){
+                               if(child.selected){
+                                       this.selectedChildWidget = child;
+                               }
+                               return child.selected;
+                       }, this);
+               }
+               var selected = this.selectedChildWidget;
+               if(!selected && children[0]){
+                       selected = this.selectedChildWidget = children[0];
+                       selected.selected = true;
+               }
+
+               // Publish information about myself so any StackControllers can initialize.
+               // This needs to happen before this.inherited(arguments) so that for
+               // TabContainer, this._contentBox doesn't include the space for the tab labels.
+               dojo.publish(this.id+"-startup", [{children: children, selected: selected}]);
+
+               // Startup each child widget, and do initial layout like setting this._contentBox,
+               // then calls this.resize() which does the initial sizing on the selected child.
+               this.inherited(arguments);
+       },
+
+       resize: function(){
+               // Resize is called when we are first made visible (it's called from startup()
+               // if we are initially visible).   If this is the first time we've been made
+               // visible then show our first child.
+               var selected = this.selectedChildWidget;
+               if(selected && !this._hasBeenShown){
+                       this._hasBeenShown = true;
+                       this._showChild(selected);
+               }
+               this.inherited(arguments);
+       },
+
+       _setupChild: function(/*dijit._Widget*/ child){
+               // Overrides _LayoutWidget._setupChild()
+
+               this.inherited(arguments);
+
+               dojo.removeClass(child.domNode, "dijitVisible");
+               dojo.addClass(child.domNode, "dijitHidden");
+
+               // remove the title attribute so it doesn't show up when i hover
+               // over a node
+               child.domNode.title = "";
+       },
+
+       addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
+               // Overrides _Container.addChild() to do layout and publish events
+
+               this.inherited(arguments);
+
+               if(this._started){
+                       dojo.publish(this.id+"-addChild", [child, insertIndex]);
+
+                       // in case the tab titles have overflowed from one line to two lines
+                       // (or, if this if first child, from zero lines to one line)
+                       // TODO: w/ScrollingTabController this is no longer necessary, although
+                       // ScrollTabController.resize() does need to get called to show/hide
+                       // the navigation buttons as appropriate, but that's handled in ScrollingTabController.onAddChild()
+                       this.layout();
+
+                       // if this is the first child, then select it
+                       if(!this.selectedChildWidget){
+                               this.selectChild(child);
+                       }
+               }
+       },
+
+       removeChild: function(/*dijit._Widget*/ page){
+               // Overrides _Container.removeChild() to do layout and publish events
+
+               this.inherited(arguments);
+
+               if(this._started){
+                       // this will notify any tablists to remove a button; do this first because it may affect sizing
+                       dojo.publish(this.id + "-removeChild", [page]);
+               }
+
+               // If we are being destroyed than don't run the code below (to select another page), because we are deleting
+               // every page one by one
+               if(this._beingDestroyed){ return; }
+
+               // Select new page to display, also updating TabController to show the respective tab.
+               // Do this before layout call because it can affect the height of the TabController.
+               if(this.selectedChildWidget === page){
+                       this.selectedChildWidget = undefined;
+                       if(this._started){
+                               var children = this.getChildren();
+                               if(children.length){
+                                       this.selectChild(children[0]);
+                               }
+                       }
+               }
+
+               if(this._started){
+                       // In case the tab titles now take up one line instead of two lines
+                       // (note though that ScrollingTabController never overflows to multiple lines),
+                       // or the height has changed slightly because of addition/removal of tab which close icon
+                       this.layout();
+               }
+       },
+
+       selectChild: function(/*dijit._Widget|String*/ page, /*Boolean*/ animate){
+               // summary:
+               //              Show the given widget (which must be one of my children)
+               // page:
+               //              Reference to child widget or id of child widget
+
+               page = dijit.byId(page);
+
+               if(this.selectedChildWidget != page){
+                       // Deselect old page and select new one
+                       this._transition(page, this.selectedChildWidget, animate);
+                       this.selectedChildWidget = page;
+                       dojo.publish(this.id+"-selectChild", [page]);
+
+                       if(this.persist){
+                               dojo.cookie(this.id + "_selectedChild", this.selectedChildWidget.id);
+                       }
+               }
+       },
+
+       _transition: function(/*dijit._Widget*/newWidget, /*dijit._Widget*/oldWidget){
+               // summary:
+               //              Hide the old widget and display the new widget.
+               //              Subclasses should override this.
+               // tags:
+               //              protected extension
+               if(oldWidget){
+                       this._hideChild(oldWidget);
+               }
+               this._showChild(newWidget);
+
+               // Size the new widget, in case this is the first time it's being shown,
+               // or I have been resized since the last time it was shown.
+               // Note that page must be visible for resizing to work.
+               if(newWidget.resize){
+                       if(this.doLayout){
+                               newWidget.resize(this._containerContentBox || this._contentBox);
+                       }else{
+                               // the child should pick it's own size but we still need to call resize()
+                               // (with no arguments) to let the widget lay itself out
+                               newWidget.resize();
+                       }
+               }
+       },
+
+       _adjacent: function(/*Boolean*/ forward){
+               // summary:
+               //              Gets the next/previous child widget in this container from the current selection.
+               var children = this.getChildren();
+               var index = dojo.indexOf(children, this.selectedChildWidget);
+               index += forward ? 1 : children.length - 1;
+               return children[ index % children.length ]; // dijit._Widget
+       },
+
+       forward: function(){
+               // summary:
+               //              Advance to next page.
+               this.selectChild(this._adjacent(true), true);
+       },
+
+       back: function(){
+               // summary:
+               //              Go back to previous page.
+               this.selectChild(this._adjacent(false), true);
+       },
+
+       _onKeyPress: function(e){
+               dojo.publish(this.id+"-containerKeyPress", [{ e: e, page: this}]);
+       },
+
+       layout: function(){
+               // Implement _LayoutWidget.layout() virtual method.
+               if(this.doLayout && this.selectedChildWidget && this.selectedChildWidget.resize){
+                       this.selectedChildWidget.resize(this._containerContentBox || this._contentBox);
+               }
+       },
+
+       _showChild: function(/*dijit._Widget*/ page){
+               // summary:
+               //              Show the specified child by changing it's CSS, and call _onShow()/onShow() so
+               //              it can do any updates it needs regarding loading href's etc.
+               var children = this.getChildren();
+               page.isFirstChild = (page == children[0]);
+               page.isLastChild = (page == children[children.length-1]);
+               page.selected = true;
+
+               dojo.removeClass(page.domNode, "dijitHidden");
+               dojo.addClass(page.domNode, "dijitVisible");
+
+               page._onShow();
+       },
+
+       _hideChild: function(/*dijit._Widget*/ page){
+               // summary:
+               //              Hide the specified child by changing it's CSS, and call _onHide() so
+               //              it's notified.
+               page.selected=false;
+               dojo.removeClass(page.domNode, "dijitVisible");
+               dojo.addClass(page.domNode, "dijitHidden");
+
+               page.onHide();
+       },
+
+       closeChild: function(/*dijit._Widget*/ page){
+               // summary:
+               //              Callback when user clicks the [X] to remove a page.
+               //              If onClose() returns true then remove and destroy the child.
+               // tags:
+               //              private
+               var remove = page.onClose(this, page);
+               if(remove){
+                       this.removeChild(page);
+                       // makes sure we can clean up executeScripts in ContentPane onUnLoad
+                       page.destroyRecursive();
+               }
+       },
+
+       destroyDescendants: function(/*Boolean*/preserveDom){
+               dojo.forEach(this.getChildren(), function(child){
+                       this.removeChild(child);
+                       child.destroyRecursive(preserveDom);
+               }, this);
+       }
+});
+
+// For back-compat, remove for 2.0
+
+
+
+// These arguments can be specified for the children of a StackContainer.
+// Since any widget can be specified as a StackContainer child, mix them
+// into the base widget class.  (This is a hack, but it's effective.)
+dojo.extend(dijit._Widget, {
+       // selected: Boolean
+       //              Parameter for children of `dijit.layout.StackContainer` or subclasses.
+       //              Specifies that this widget should be the initially displayed pane.
+       //              Note: to change the selected child use `dijit.layout.StackContainer.selectChild`
+       selected: false,
+
+       // closable: Boolean
+       //              Parameter for children of `dijit.layout.StackContainer` or subclasses.
+       //              True if user can close (destroy) this child, such as (for example) clicking the X on the tab.
+       closable: false,
+
+       // iconClass: String
+       //              Parameter for children of `dijit.layout.StackContainer` or subclasses.
+       //              CSS Class specifying icon to use in label associated with this pane.
+       iconClass: "",
+
+       // showTitle: Boolean
+       //              Parameter for children of `dijit.layout.StackContainer` or subclasses.
+       //              When true, display title of this widget as tab label etc., rather than just using
+       //              icon specified in iconClass
+       showTitle: true
+});
+
+}
+
+if(!dojo._hasResource["dijit.layout.AccordionPane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.AccordionPane"] = true;
+dojo.provide("dijit.layout.AccordionPane");
+
+
+
+dojo.declare("dijit.layout.AccordionPane", dijit.layout.ContentPane, {
+       // summary:
+       //              Deprecated widget.   Use `dijit.layout.ContentPane` instead.
+       // tags:
+       //              deprecated
+
+       constructor: function(){
+               dojo.deprecated("dijit.layout.AccordionPane deprecated, use ContentPane instead", "", "2.0");
+       },
+
+       onSelected: function(){
+               // summary:
+               //              called when this pane is selected
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.layout.AccordionContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.AccordionContainer"] = true;
+dojo.provide("dijit.layout.AccordionContainer");
+
+
+
+
+
+
+
+
+
+       // for back compat, remove for 2.0
+
+dojo.declare(
+       "dijit.layout.AccordionContainer",
+       dijit.layout.StackContainer,
+       {
+               // summary:
+               //              Holds a set of panes where every pane's title is visible, but only one pane's content is visible at a time,
+               //              and switching between panes is visualized by sliding the other panes up/down.
+               // example:
+               //      |       <div dojoType="dijit.layout.AccordionContainer">
+               //      |               <div dojoType="dijit.layout.ContentPane" title="pane 1">
+               //      |               </div>
+               //      |               <div dojoType="dijit.layout.ContentPane" title="pane 2">
+               //      |                       <p>This is some text</p>
+               //      |               </div>
+               //      |       </div>
+
+               // duration: Integer
+               //              Amount of time (in ms) it takes to slide panes
+               duration: dijit.defaultDuration,
+
+               // buttonWidget: [const] String
+               //              The name of the widget used to display the title of each pane
+               buttonWidget: "dijit.layout._AccordionButton",
+
+               // _verticalSpace: Number
+               //              Pixels of space available for the open pane
+               //              (my content box size minus the cumulative size of all the title bars)
+               _verticalSpace: 0,
+
+               baseClass: "dijitAccordionContainer",
+
+               postCreate: function(){
+                       this.domNode.style.overflow = "hidden";
+                       this.inherited(arguments);
+                       dijit.setWaiRole(this.domNode, "tablist");
+               },
+
+               startup: function(){
+                       if(this._started){ return; }
+                       this.inherited(arguments);
+                       if(this.selectedChildWidget){
+                               var style = this.selectedChildWidget.containerNode.style;
+                               style.display = "";
+                               style.overflow = "auto";
+                               this.selectedChildWidget._wrapperWidget.set("selected", true);
+                       }
+               },
+
+               _getTargetHeight: function(/* Node */ node){
+                       // summary:
+                       //              For the given node, returns the height that should be
+                       //              set to achieve our vertical space (subtract any padding
+                       //              we may have).
+                       //
+                       //              This is used by the animations.
+                       //
+                       //              TODO: I don't think this works correctly in IE quirks when an elements
+                       //              style.height including padding and borders
+                       var cs = dojo.getComputedStyle(node);
+                       return Math.max(this._verticalSpace - dojo._getPadBorderExtents(node, cs).h - dojo._getMarginExtents(node, cs).h, 0);
+               },
+
+               layout: function(){
+                       // Implement _LayoutWidget.layout() virtual method.
+                       // Set the height of the open pane based on what room remains.
+
+                       var openPane = this.selectedChildWidget;
+                       
+                       if(!openPane){ return;}
+
+                       var openPaneContainer = openPane._wrapperWidget.domNode,
+                               openPaneContainerMargin = dojo._getMarginExtents(openPaneContainer),
+                               openPaneContainerPadBorder = dojo._getPadBorderExtents(openPaneContainer),
+                               mySize = this._contentBox;
+
+                       // get cumulative height of all the unselected title bars
+                       var totalCollapsedHeight = 0;
+                       dojo.forEach(this.getChildren(), function(child){
+                   if(child != openPane){
+                                       totalCollapsedHeight += dojo.marginBox(child._wrapperWidget.domNode).h;
+                               }
+                       });
+                       this._verticalSpace = mySize.h - totalCollapsedHeight - openPaneContainerMargin.h 
+                               - openPaneContainerPadBorder.h - openPane._buttonWidget.getTitleHeight();
+
+                       // Memo size to make displayed child
+                       this._containerContentBox = {
+                               h: this._verticalSpace,
+                               w: this._contentBox.w - openPaneContainerMargin.w - openPaneContainerPadBorder.w
+                       };
+
+                       if(openPane){
+                               openPane.resize(this._containerContentBox);
+                       }
+               },
+
+               _setupChild: function(child){
+                       // Overrides _LayoutWidget._setupChild().
+                       // Put wrapper widget around the child widget, showing title
+
+                       child._wrapperWidget = new dijit.layout._AccordionInnerContainer({
+                               contentWidget: child,
+                               buttonWidget: this.buttonWidget,
+                               id: child.id + "_wrapper",
+                               dir: child.dir,
+                               lang: child.lang,
+                               parent: this
+                       });
+
+                       this.inherited(arguments);
+               },
+
+               addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){  
+                       if(this._started){
+                               // Adding a child to a started Accordion is complicated because children have
+                               // wrapper widgets.  Default code path (calling this.inherited()) would add
+                               // the new child inside another child's wrapper.
+
+                               // First add in child as a direct child of this AccordionContainer
+                               dojo.place(child.domNode, this.containerNode, insertIndex);
+
+                               if(!child._started){
+                                       child.startup();
+                               }
+                               
+                               // Then stick the wrapper widget around the child widget
+                               this._setupChild(child);
+
+                               // Code below copied from StackContainer        
+                               dojo.publish(this.id+"-addChild", [child, insertIndex]);
+                               this.layout();
+                               if(!this.selectedChildWidget){
+                                       this.selectChild(child);
+                               }
+                       }else{
+                               // We haven't been started yet so just add in the child widget directly,
+                               // and the wrapper will be created on startup()
+                               this.inherited(arguments);
+                       }
+               },
+
+               removeChild: function(child){
+                       // Overrides _LayoutWidget.removeChild().
+
+                       // destroy wrapper widget first, before StackContainer.getChildren() call
+                       child._wrapperWidget.destroy();
+                       delete child._wrapperWidget;
+                       dojo.removeClass(child.domNode, "dijitHidden");
+
+                       this.inherited(arguments);
+               },
+
+               getChildren: function(){
+                       // Overrides _Container.getChildren() to return content panes rather than internal AccordionInnerContainer panes
+                       return dojo.map(this.inherited(arguments), function(child){
+                               return child.declaredClass == "dijit.layout._AccordionInnerContainer" ? child.contentWidget : child;
+                       }, this);
+               },
+
+               destroy: function(){
+                       dojo.forEach(this.getChildren(), function(child){
+                               child._wrapperWidget.destroy();
+                       });
+                       this.inherited(arguments);
+               },
+
+               _transition: function(/*dijit._Widget?*/newWidget, /*dijit._Widget?*/oldWidget, /*Boolean*/ animate){
+                       // Overrides StackContainer._transition() to provide sliding of title bars etc.
+
+//TODO: should be able to replace this with calls to slideIn/slideOut
+                       if(this._inTransition){ return; }
+                       var animations = [];
+                       var paneHeight = this._verticalSpace;
+                       if(newWidget){
+                               newWidget._wrapperWidget.set("selected", true);
+
+                               this._showChild(newWidget);     // prepare widget to be slid in
+
+                               // Size the new widget, in case this is the first time it's being shown,
+                               // or I have been resized since the last time it was shown.
+                               // Note that page must be visible for resizing to work.
+                               if(this.doLayout && newWidget.resize){
+                                       newWidget.resize(this._containerContentBox);
+                               }
+
+                               var newContents = newWidget.domNode;
+                               dojo.addClass(newContents, "dijitVisible");
+                               dojo.removeClass(newContents, "dijitHidden");
+                               
+                               if(animate){
+                                       var newContentsOverflow = newContents.style.overflow;
+                                       newContents.style.overflow = "hidden";
+                                       animations.push(dojo.animateProperty({
+                                               node: newContents,
+                                               duration: this.duration,
+                                               properties: {
+                                                       height: { start: 1, end: this._getTargetHeight(newContents) }
+                                               },
+                                               onEnd: function(){
+                                                       newContents.style.overflow = newContentsOverflow;
+
+                                                       // Kick IE to workaround layout bug, see #11415
+                                                       if(dojo.isIE){
+                                                               setTimeout(function(){
+                                                                       dojo.removeClass(newContents.parentNode, "dijitAccordionInnerContainerFocused");
+                                                                       setTimeout(function(){
+                                                                               dojo.addClass(newContents.parentNode, "dijitAccordionInnerContainerFocused");
+                                                                       }, 0);
+                                                               }, 0);
+                                                       }
+                                               }
+                                       }));
+                               }
+                       }
+                       if(oldWidget){
+                               oldWidget._wrapperWidget.set("selected", false);
+                               var oldContents = oldWidget.domNode;
+                               if(animate){
+                                       var oldContentsOverflow = oldContents.style.overflow;
+                                       oldContents.style.overflow = "hidden";
+                                       animations.push(dojo.animateProperty({
+                                               node: oldContents,
+                                               duration: this.duration,
+                                               properties: {
+                                                       height: { start: this._getTargetHeight(oldContents), end: 1 }
+                                               },
+                                               onEnd: function(){
+                                                       dojo.addClass(oldContents, "dijitHidden");
+                                                       dojo.removeClass(oldContents, "dijitVisible");
+                                                       oldContents.style.overflow = oldContentsOverflow;
+                                                       if(oldWidget.onHide){
+                                                               oldWidget.onHide();
+                                                       }
+                                               }
+                                       }));
+                               }else{
+                                       dojo.addClass(oldContents, "dijitHidden");
+                                       dojo.removeClass(oldContents, "dijitVisible");
+                                       if(oldWidget.onHide){
+                                               oldWidget.onHide();
+                                       }
+                               }
+                       }
+
+                       if(animate){
+                               this._inTransition = true;
+                               var combined = dojo.fx.combine(animations);
+                               combined.onEnd = dojo.hitch(this, function(){
+                                       delete this._inTransition;
+                               });
+                               combined.play();
+                       }                       
+               },
+
+               // note: we are treating the container as controller here
+               _onKeyPress: function(/*Event*/ e, /*dijit._Widget*/ fromTitle){
+                       // summary:
+                       //              Handle keypress events
+                       // description:
+                       //              This is called from a handler on AccordionContainer.domNode
+                       //              (setup in StackContainer), and is also called directly from
+                       //              the click handler for accordion labels
+                       if(this._inTransition || this.disabled || e.altKey || !(fromTitle || e.ctrlKey)){
+                               if(this._inTransition){
+                                       dojo.stopEvent(e);
+                               }
+                               return;
+                       }
+                       var k = dojo.keys,
+                               c = e.charOrCode;
+                       if((fromTitle && (c == k.LEFT_ARROW || c == k.UP_ARROW)) ||
+                                       (e.ctrlKey && c == k.PAGE_UP)){
+                               this._adjacent(false)._buttonWidget._onTitleClick();
+                               dojo.stopEvent(e);
+                       }else if((fromTitle && (c == k.RIGHT_ARROW || c == k.DOWN_ARROW)) ||
+                                       (e.ctrlKey && (c == k.PAGE_DOWN || c == k.TAB))){
+                               this._adjacent(true)._buttonWidget._onTitleClick();
+                               dojo.stopEvent(e);
+                       }
+               }
+       }
+);
+
+dojo.declare("dijit.layout._AccordionInnerContainer",
+       [dijit._Widget, dijit._CssStateMixin], {
+               // summary:
+               //              Internal widget placed as direct child of AccordionContainer.containerNode.
+               //              When other widgets are added as children to an AccordionContainer they are wrapped in
+               //              this widget.
+               
+               // buttonWidget: String
+               //              Name of class to use to instantiate title
+               //              (Wish we didn't have a separate widget for just the title but maintaining it
+               //              for backwards compatibility, is it worth it?)
+/*=====
+                buttonWidget: null,
+=====*/
+               // contentWidget: dijit._Widget
+               //              Pointer to the real child widget
+/*=====
+               contentWidget: null,
+=====*/
+
+               baseClass: "dijitAccordionInnerContainer",
+
+               // tell nested layout widget that we will take care of sizing
+               isContainer: true,
+               isLayoutContainer: true,
+
+               buildRendering: function(){                     
+                       // Create wrapper div, placed where the child is now
+                       this.domNode = dojo.place("<div class='" + this.baseClass + "'>", this.contentWidget.domNode, "after");
+                       
+                       // wrapper div's first child is the button widget (ie, the title bar)
+                       var child = this.contentWidget,
+                               cls = dojo.getObject(this.buttonWidget);
+                       this.button = child._buttonWidget = (new cls({
+                               contentWidget: child,
+                               label: child.title,
+                               title: child.tooltip,
+                               dir: child.dir,
+                               lang: child.lang,
+                               iconClass: child.iconClass,
+                               id: child.id + "_button",
+                               parent: this.parent
+                       })).placeAt(this.domNode);
+                       
+                       // and then the actual content widget (changing it from prior-sibling to last-child)
+                       dojo.place(this.contentWidget.domNode, this.domNode);
+               },
+
+               postCreate: function(){
+                       this.inherited(arguments);
+                       this.connect(this.contentWidget, 'set', function(name, value){
+                               var mappedName = {title: "label", tooltip: "title", iconClass: "iconClass"}[name];
+                               if(mappedName){
+                                       this.button.set(mappedName, value);
+                               }
+                       }, this);
+               },
+
+               _setSelectedAttr: function(/*Boolean*/ isSelected){
+                       this.selected = isSelected;
+                       this.button.set("selected", isSelected);
+                       if(isSelected){
+                               var cw = this.contentWidget;
+                               if(cw.onSelected){ cw.onSelected(); }
+                       }
+               },
+
+               startup: function(){
+                       // Called by _Container.addChild()
+                       this.contentWidget.startup();
+               },
+
+               destroy: function(){
+                       this.button.destroyRecursive();
+                       
+                       delete this.contentWidget._buttonWidget;
+                       delete this.contentWidget._wrapperWidget;
+
+                       this.inherited(arguments);
+               },
+               
+               destroyDescendants: function(){
+                       // since getChildren isn't working for me, have to code this manually
+                       this.contentWidget.destroyRecursive();
+               }
+});
+
+dojo.declare("dijit.layout._AccordionButton",
+       [dijit._Widget, dijit._Templated, dijit._CssStateMixin],
+       {
+       // summary:
+       //              The title bar to click to open up an accordion pane.
+       //              Internal widget used by AccordionContainer.
+       // tags:
+       //              private
+
+       templateString: dojo.cache("dijit.layout", "templates/AccordionButton.html", "<div dojoAttachEvent='onclick:_onTitleClick' class='dijitAccordionTitle'>\n\t<div dojoAttachPoint='titleNode,focusNode' dojoAttachEvent='onkeypress:_onTitleKeyPress'\n\t\t\tclass='dijitAccordionTitleFocus' wairole=\"tab\" waiState=\"expanded-false\"\n\t\t><span class='dijitInline dijitAccordionArrow' waiRole=\"presentation\"></span\n\t\t><span class='arrowTextUp' waiRole=\"presentation\">+</span\n\t\t><span class='arrowTextDown' waiRole=\"presentation\">-</span\n\t\t><img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon\" dojoAttachPoint='iconNode' style=\"vertical-align: middle\" waiRole=\"presentation\"/>\n\t\t<span waiRole=\"presentation\" dojoAttachPoint='titleTextNode' class='dijitAccordionText'></span>\n\t</div>\n</div>\n"),
+       attributeMap: dojo.mixin(dojo.clone(dijit.layout.ContentPane.prototype.attributeMap), {
+               label: {node: "titleTextNode", type: "innerHTML" },
+               title: {node: "titleTextNode", type: "attribute", attribute: "title"},
+               iconClass: { node: "iconNode", type: "class" }
+       }),
+
+       baseClass: "dijitAccordionTitle",
+
+       getParent: function(){
+               // summary:
+               //              Returns the AccordionContainer parent.
+               // tags:
+               //              private
+               return this.parent;
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+               dojo.setSelectable(this.domNode, false);
+               var titleTextNodeId = dojo.attr(this.domNode,'id').replace(' ','_');
+               dojo.attr(this.titleTextNode, "id", titleTextNodeId+"_title");
+               dijit.setWaiState(this.focusNode, "labelledby", dojo.attr(this.titleTextNode, "id"));
+       },
+
+       getTitleHeight: function(){
+               // summary:
+               //              Returns the height of the title dom node.
+               return dojo.marginBox(this.domNode).h;  // Integer
+       },
+
+       // TODO: maybe the parent should set these methods directly rather than forcing the code
+       // into the button widget?
+       _onTitleClick: function(){
+               // summary:
+               //              Callback when someone clicks my title.
+               var parent = this.getParent();
+               if(!parent._inTransition){
+                       parent.selectChild(this.contentWidget, true);
+                       dijit.focus(this.focusNode);
+               }
+       },
+
+       _onTitleKeyPress: function(/*Event*/ evt){
+               return this.getParent()._onKeyPress(evt, this.contentWidget);
+       },
+
+       _setSelectedAttr: function(/*Boolean*/ isSelected){
+               this.selected = isSelected;
+               dijit.setWaiState(this.focusNode, "expanded", isSelected);
+               dijit.setWaiState(this.focusNode, "selected", isSelected);
+               this.focusNode.setAttribute("tabIndex", isSelected ? "0" : "-1");
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.layout.BorderContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.BorderContainer"] = true;
+dojo.provide("dijit.layout.BorderContainer");
+
+
+
+
+dojo.declare(
+       "dijit.layout.BorderContainer",
+       dijit.layout._LayoutWidget,
+{
+       // summary:
+       //              Provides layout in up to 5 regions, a mandatory center with optional borders along its 4 sides.
+       //
+       // description:
+       //              A BorderContainer is a box with a specified size, such as style="width: 500px; height: 500px;",
+       //              that contains a child widget marked region="center" and optionally children widgets marked
+       //              region equal to "top", "bottom", "leading", "trailing", "left" or "right".
+       //              Children along the edges will be laid out according to width or height dimensions and may
+       //              include optional splitters (splitter="true") to make them resizable by the user.  The remaining
+       //              space is designated for the center region.
+       //
+       //              NOTE: Splitters must not be more than 50 pixels in width.
+       //
+       //              The outer size must be specified on the BorderContainer node.  Width must be specified for the sides
+       //              and height for the top and bottom, respectively.  No dimensions should be specified on the center;
+       //              it will fill the remaining space.  Regions named "leading" and "trailing" may be used just like
+       //              "left" and "right" except that they will be reversed in right-to-left environments.
+       //
+       // example:
+       // |    <div dojoType="dijit.layout.BorderContainer" design="sidebar" gutters="false"
+       // |            style="width: 400px; height: 300px;">
+       // |            <div dojoType="ContentPane" region="top">header text</div>
+       // |            <div dojoType="ContentPane" region="right" splitter="true" style="width: 200px;">table of contents</div>
+       // |            <div dojoType="ContentPane" region="center">client area</div>
+       // |    </div>
+
+       // design: String
+       //              Which design is used for the layout:
+       //                      - "headline" (default) where the top and bottom extend
+       //                              the full width of the container
+       //                      - "sidebar" where the left and right sides extend from top to bottom.
+       design: "headline",
+
+       // gutters: Boolean
+       //              Give each pane a border and margin.
+       //              Margin determined by domNode.paddingLeft.
+       //              When false, only resizable panes have a gutter (i.e. draggable splitter) for resizing.
+       gutters: true,
+
+       // liveSplitters: Boolean
+       //              Specifies whether splitters resize as you drag (true) or only upon mouseup (false)
+       liveSplitters: true,
+
+       // persist: Boolean
+       //              Save splitter positions in a cookie.
+       persist: false,
+
+       baseClass: "dijitBorderContainer",
+
+       // _splitterClass: String
+       //              Optional hook to override the default Splitter widget used by BorderContainer
+       _splitterClass: "dijit.layout._Splitter",
+
+       postMixInProperties: function(){
+               // change class name to indicate that BorderContainer is being used purely for
+               // layout (like LayoutContainer) rather than for pretty formatting.
+               if(!this.gutters){
+                       this.baseClass += "NoGutter";
+               }
+               this.inherited(arguments);
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+
+               this._splitters = {};
+               this._splitterThickness = {};
+       },
+
+       startup: function(){
+               if(this._started){ return; }
+               dojo.forEach(this.getChildren(), this._setupChild, this);
+               this.inherited(arguments);
+       },
+
+       _setupChild: function(/*dijit._Widget*/ child){
+               // Override _LayoutWidget._setupChild().
+
+               var region = child.region;
+               if(region){
+                       this.inherited(arguments);
+
+                       dojo.addClass(child.domNode, this.baseClass+"Pane");
+
+                       var ltr = this.isLeftToRight();
+                       if(region == "leading"){ region = ltr ? "left" : "right"; }
+                       if(region == "trailing"){ region = ltr ? "right" : "left"; }
+
+                       //FIXME: redundant?
+                       this["_"+region] = child.domNode;
+                       this["_"+region+"Widget"] = child;
+
+                       // Create draggable splitter for resizing pane,
+                       // or alternately if splitter=false but BorderContainer.gutters=true then
+                       // insert dummy div just for spacing
+                       if((child.splitter || this.gutters) && !this._splitters[region]){
+                               var _Splitter = dojo.getObject(child.splitter ? this._splitterClass : "dijit.layout._Gutter");
+                               var splitter = new _Splitter({
+                                       id: child.id + "_splitter",
+                                       container: this,
+                                       child: child,
+                                       region: region,
+                                       live: this.liveSplitters
+                               });
+                               splitter.isSplitter = true;
+                               this._splitters[region] = splitter.domNode;
+                               dojo.place(this._splitters[region], child.domNode, "after");
+
+                               // Splitters arent added as Contained children, so we need to call startup explicitly
+                               splitter.startup();
+                       }
+                       child.region = region;
+               }
+       },
+
+       _computeSplitterThickness: function(region){
+               this._splitterThickness[region] = this._splitterThickness[region] ||
+                       dojo.marginBox(this._splitters[region])[(/top|bottom/.test(region) ? 'h' : 'w')];
+       },
+
+       layout: function(){
+               // Implement _LayoutWidget.layout() virtual method.
+               for(var region in this._splitters){ this._computeSplitterThickness(region); }
+               this._layoutChildren();
+       },
+
+       addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
+               // Override _LayoutWidget.addChild().
+               this.inherited(arguments);
+               if(this._started){
+                       this.layout(); //OPT
+               }
+       },
+
+       removeChild: function(/*dijit._Widget*/ child){
+               // Override _LayoutWidget.removeChild().
+               var region = child.region;
+               var splitter = this._splitters[region];
+               if(splitter){
+                       dijit.byNode(splitter).destroy();
+                       delete this._splitters[region];
+                       delete this._splitterThickness[region];
+               }
+               this.inherited(arguments);
+               delete this["_"+region];
+               delete this["_" +region+"Widget"];
+               if(this._started){
+                       this._layoutChildren();
+               }
+               dojo.removeClass(child.domNode, this.baseClass+"Pane");
+       },
+
+       getChildren: function(){
+               // Override _LayoutWidget.getChildren() to only return real children, not the splitters.
+               return dojo.filter(this.inherited(arguments), function(widget){
+                       return !widget.isSplitter;
+               });
+       },
+
+       getSplitter: function(/*String*/region){
+               // summary:
+               //              Returns the widget responsible for rendering the splitter associated with region
+               var splitter = this._splitters[region];
+               return splitter ? dijit.byNode(splitter) : null;
+       },
+
+       resize: function(newSize, currentSize){
+               // Overrides _LayoutWidget.resize().
+
+               // resetting potential padding to 0px to provide support for 100% width/height + padding
+               // TODO: this hack doesn't respect the box model and is a temporary fix
+               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(/*String?*/changedRegion, /*Number?*/ changedRegionSize){
+               // summary:
+               //              This is the main routine for setting size/position of each child.
+               // description:
+               //              With no arguments, measures the height of top/bottom panes, the width
+               //              of left/right panes, and then sizes all panes accordingly.
+               //
+               //              With changedRegion specified (as "left", "top", "bottom", or "right"),
+               //              it changes that region's width/height to changedRegionSize and
+               //              then resizes other regions that were affected.
+               // changedRegion:
+               //              The region should be changed because splitter was dragged.
+               //              "left", "right", "top", or "bottom".
+               // changedRegionSize:
+               //              The new width/height (in pixels) to make changedRegion
+
+               if(!this._borderBox || !this._borderBox.h){
+                       // We are currently hidden, or we haven't been sized by our parent yet.
+                       // Abort.   Someone will resize us later.
+                       return;
+               }
+
+               var sidebarLayout = (this.design == "sidebar");
+               var topHeight = 0, bottomHeight = 0, leftWidth = 0, rightWidth = 0;
+               var topStyle = {}, leftStyle = {}, rightStyle = {}, bottomStyle = {},
+                       centerStyle = (this._center && this._center.style) || {};
+
+               var changedSide = /left|right/.test(changedRegion);
+
+               var layoutSides = !changedRegion || (!changedSide && !sidebarLayout);
+               var layoutTopBottom = !changedRegion || (changedSide && sidebarLayout);
+
+               // Ask browser for width/height of side panes.
+               // Would be nice to cache this but height can change according to width
+               // (because words wrap around).  I don't think width will ever change though
+               // (except when the user drags a splitter).
+               if(this._top){
+                       topStyle = (changedRegion == "top" || layoutTopBottom) && this._top.style;
+                       topHeight = changedRegion == "top" ? changedRegionSize : dojo.marginBox(this._top).h;
+               }
+               if(this._left){
+                       leftStyle = (changedRegion == "left" || layoutSides) && this._left.style;
+                       leftWidth = changedRegion == "left" ? changedRegionSize : dojo.marginBox(this._left).w;
+               }
+               if(this._right){
+                       rightStyle = (changedRegion == "right" || layoutSides) && this._right.style;
+                       rightWidth = changedRegion == "right" ? changedRegionSize : dojo.marginBox(this._right).w;
+               }
+               if(this._bottom){
+                       bottomStyle = (changedRegion == "bottom" || layoutTopBottom) && this._bottom.style;
+                       bottomHeight = changedRegion == "bottom" ? changedRegionSize : dojo.marginBox(this._bottom).h;
+               }
+
+               var splitters = this._splitters;
+               var topSplitter = splitters.top, bottomSplitter = splitters.bottom,
+                       leftSplitter = splitters.left, rightSplitter = splitters.right;
+               var splitterThickness = this._splitterThickness;
+               var topSplitterThickness = splitterThickness.top || 0,
+                       leftSplitterThickness = splitterThickness.left || 0,
+                       rightSplitterThickness = splitterThickness.right || 0,
+                       bottomSplitterThickness = splitterThickness.bottom || 0;
+
+               // Check for race condition where CSS hasn't finished loading, so
+               // the splitter width == the viewport width (#5824)
+               if(leftSplitterThickness > 50 || rightSplitterThickness > 50){
+                       setTimeout(dojo.hitch(this, function(){
+                               // Results are invalid.  Clear them out.
+                               this._splitterThickness = {};
+
+                               for(var region in this._splitters){
+                                       this._computeSplitterThickness(region);
+                               }
+                               this._layoutChildren();
+                       }), 50);
+                       return false;
+               }
+
+               var pe = this.pe;
+
+               var splitterBounds = {
+                       left: (sidebarLayout ? leftWidth + leftSplitterThickness: 0) + pe.l + "px",
+                       right: (sidebarLayout ? rightWidth + rightSplitterThickness: 0) + pe.r + "px"
+               };
+
+               if(topSplitter){
+                       dojo.mixin(topSplitter.style, splitterBounds);
+                       topSplitter.style.top = topHeight + pe.t + "px";
+               }
+
+               if(bottomSplitter){
+                       dojo.mixin(bottomSplitter.style, splitterBounds);
+                       bottomSplitter.style.bottom = bottomHeight + pe.b + "px";
+               }
+
+               splitterBounds = {
+                       top: (sidebarLayout ? 0 : topHeight + topSplitterThickness) + pe.t + "px",
+                       bottom: (sidebarLayout ? 0 : bottomHeight + bottomSplitterThickness) + pe.b + "px"
+               };
+
+               if(leftSplitter){
+                       dojo.mixin(leftSplitter.style, splitterBounds);
+                       leftSplitter.style.left = leftWidth + pe.l + "px";
+               }
+
+               if(rightSplitter){
+                       dojo.mixin(rightSplitter.style, splitterBounds);
+                       rightSplitter.style.right = rightWidth + pe.r + "px";
+               }
+
+               dojo.mixin(centerStyle, {
+                       top: pe.t + topHeight + topSplitterThickness + "px",
+                       left: pe.l + leftWidth + leftSplitterThickness + "px",
+                       right: pe.r + rightWidth + rightSplitterThickness + "px",
+                       bottom: pe.b + bottomHeight + bottomSplitterThickness + "px"
+               });
+
+               var bounds = {
+                       top: sidebarLayout ? pe.t + "px" : centerStyle.top,
+                       bottom: sidebarLayout ? pe.b + "px" : centerStyle.bottom
+               };
+               dojo.mixin(leftStyle, bounds);
+               dojo.mixin(rightStyle, bounds);
+               leftStyle.left = pe.l + "px"; rightStyle.right = pe.r + "px"; topStyle.top = pe.t + "px"; bottomStyle.bottom = pe.b + "px";
+               if(sidebarLayout){
+                       topStyle.left = bottomStyle.left = leftWidth + leftSplitterThickness + pe.l + "px";
+                       topStyle.right = bottomStyle.right = rightWidth + rightSplitterThickness + pe.r + "px";
+               }else{
+                       topStyle.left = bottomStyle.left = pe.l + "px";
+                       topStyle.right = bottomStyle.right = pe.r + "px";
+               }
+
+               // More calculations about sizes of panes
+               var containerHeight = this._borderBox.h - pe.t - pe.b,
+                       middleHeight = containerHeight - ( topHeight + topSplitterThickness + bottomHeight + bottomSplitterThickness),
+                       sidebarHeight = sidebarLayout ? containerHeight : middleHeight;
+
+               var containerWidth = this._borderBox.w - pe.l - pe.r,
+                       middleWidth = containerWidth - (leftWidth + leftSplitterThickness + rightWidth + rightSplitterThickness),
+                       sidebarWidth = sidebarLayout ? middleWidth : containerWidth;
+
+               // New margin-box size of each pane
+               var dim = {
+                       top:    { w: sidebarWidth, h: topHeight },
+                       bottom: { w: sidebarWidth, h: bottomHeight },
+                       left:   { w: leftWidth, h: sidebarHeight },
+                       right:  { w: rightWidth, h: sidebarHeight },
+                       center: { h: middleHeight, w: middleWidth }
+               };
+
+               if(changedRegion){
+                       // Respond to splitter drag event by changing changedRegion's width or height
+                       var child = this["_" + changedRegion + "Widget"],
+                               mb = {};
+                               mb[ /top|bottom/.test(changedRegion) ? "h" : "w"] = changedRegionSize;
+                       child.resize ? child.resize(mb, dim[child.region]) : dojo.marginBox(child.domNode, mb);
+               }
+
+               // Nodes in IE<8 don't respond to t/l/b/r, and TEXTAREA doesn't respond in any browser
+               var janky = dojo.isIE < 8 || (dojo.isIE && dojo.isQuirks) || dojo.some(this.getChildren(), function(child){
+                       return child.domNode.tagName == "TEXTAREA" || child.domNode.tagName == "INPUT";
+               });
+               if(janky){
+                       // Set the size of the children the old fashioned way, by setting
+                       // CSS width and height
+
+                       var resizeWidget = function(widget, changes, result){
+                               if(widget){
+                                       (widget.resize ? widget.resize(changes, result) : dojo.marginBox(widget.domNode, changes));
+                               }
+                       };
+
+                       if(leftSplitter){ leftSplitter.style.height = sidebarHeight; }
+                       if(rightSplitter){ rightSplitter.style.height = sidebarHeight; }
+                       resizeWidget(this._leftWidget, {h: sidebarHeight}, dim.left);
+                       resizeWidget(this._rightWidget, {h: sidebarHeight}, dim.right);
+
+                       if(topSplitter){ topSplitter.style.width = sidebarWidth; }
+                       if(bottomSplitter){ bottomSplitter.style.width = sidebarWidth; }
+                       resizeWidget(this._topWidget, {w: sidebarWidth}, dim.top);
+                       resizeWidget(this._bottomWidget, {w: sidebarWidth}, dim.bottom);
+
+                       resizeWidget(this._centerWidget, dim.center);
+               }else{
+                       // Calculate which panes need a notification that their size has been changed
+                       // (we've already set style.top/bottom/left/right on those other panes).
+                       var notifySides = !changedRegion || (/top|bottom/.test(changedRegion) && this.design != "sidebar"),
+                               notifyTopBottom = !changedRegion || (/left|right/.test(changedRegion) && this.design == "sidebar"),
+                               notifyList = {
+                                       center: true,
+                                       left: notifySides,
+                                       right: notifySides,
+                                       top: notifyTopBottom,
+                                       bottom: notifyTopBottom
+                               };
+                       
+                       // Send notification to those panes that have changed size
+                       dojo.forEach(this.getChildren(), function(child){
+                               if(child.resize && notifyList[child.region]){
+                                       child.resize(null, dim[child.region]);
+                               }
+                       }, this);
+               }
+       },
+
+       destroy: function(){
+               for(var region in this._splitters){
+                       var splitter = this._splitters[region];
+                       dijit.byNode(splitter).destroy();
+                       dojo.destroy(splitter);
+               }
+               delete this._splitters;
+               delete this._splitterThickness;
+               this.inherited(arguments);
+       }
+});
+
+// This argument can be specified for the children of a BorderContainer.
+// Since any widget can be specified as a LayoutContainer child, mix it
+// into the base widget class.  (This is a hack, but it's effective.)
+dojo.extend(dijit._Widget, {
+       // region: [const] String
+       //              Parameter for children of `dijit.layout.BorderContainer`.
+       //              Values: "top", "bottom", "leading", "trailing", "left", "right", "center".
+       //              See the `dijit.layout.BorderContainer` description for details.
+       region: '',
+
+       // splitter: [const] Boolean
+       //              Parameter for child of `dijit.layout.BorderContainer` where region != "center".
+       //              If true, enables user to resize the widget by putting a draggable splitter between
+       //              this widget and the region=center widget.
+       splitter: false,
+
+       // minSize: [const] Number
+       //              Parameter for children of `dijit.layout.BorderContainer`.
+       //              Specifies a minimum size (in pixels) for this widget when resized by a splitter.
+       minSize: 0,
+
+       // maxSize: [const] Number
+       //              Parameter for children of `dijit.layout.BorderContainer`.
+       //              Specifies a maximum size (in pixels) for this widget when resized by a splitter.
+       maxSize: Infinity
+});
+
+
+
+dojo.declare("dijit.layout._Splitter", [ dijit._Widget, dijit._Templated ],
+{
+       // summary:
+       //              A draggable spacer between two items in a `dijit.layout.BorderContainer`.
+       // description:
+       //              This is instantiated by `dijit.layout.BorderContainer`.  Users should not
+       //              create it directly.
+       // tags:
+       //              private
+
+/*=====
+       // container: [const] dijit.layout.BorderContainer
+       //              Pointer to the parent BorderContainer
+       container: null,
+
+       // child: [const] dijit.layout._LayoutWidget
+       //              Pointer to the pane associated with this splitter
+       child: null,
+
+       // region: String
+       //              Region of pane associated with this splitter.
+       //              "top", "bottom", "left", "right".
+       region: null,
+=====*/
+
+       // live: [const] Boolean
+       //              If true, the child's size changes and the child widget is redrawn as you drag the splitter;
+       //              otherwise, the size doesn't change until you drop the splitter (by mouse-up)
+       live: true,
+
+       templateString: '<div class="dijitSplitter" dojoAttachEvent="onkeypress:_onKeyPress,onmousedown:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse" tabIndex="0" waiRole="separator"><div class="dijitSplitterThumb"></div></div>',
+
+       postCreate: function(){
+               this.inherited(arguments);
+               this.horizontal = /top|bottom/.test(this.region);
+               dojo.addClass(this.domNode, "dijitSplitter" + (this.horizontal ? "H" : "V"));
+//             dojo.addClass(this.child.domNode, "dijitSplitterPane");
+//             dojo.setSelectable(this.domNode, false); //TODO is this necessary?
+
+               this._factor = /top|left/.test(this.region) ? 1 : -1;
+
+               this._cookieName = this.container.id + "_" + this.region;
+               if(this.container.persist){
+                       // restore old size
+                       var persistSize = dojo.cookie(this._cookieName);
+                       if(persistSize){
+                               this.child.domNode.style[this.horizontal ? "height" : "width"] = persistSize;
+                       }
+               }
+       },
+
+       _computeMaxSize: function(){
+               // summary:
+               //              Compute the maximum size that my corresponding pane can be set to
+
+               var dim = this.horizontal ? 'h' : 'w',
+                       thickness = this.container._splitterThickness[this.region];
+                       
+               // Get DOMNode of opposite pane, if an opposite pane exists.
+               // Ex: if I am the _Splitter for the left pane, then get the right pane.
+               var flip = {left:'right', right:'left', top:'bottom', bottom:'top', leading:'trailing', trailing:'leading'},
+                       oppNode = this.container["_" + flip[this.region]];
+               
+               // I can expand up to the edge of the opposite pane, or if there's no opposite pane, then to
+               // edge of BorderContainer
+               var available = dojo.contentBox(this.container.domNode)[dim] -
+                               (oppNode ? dojo.marginBox(oppNode)[dim] : 0) -
+                               20 - thickness * 2;
+
+               return Math.min(this.child.maxSize, available);
+       },
+
+       _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");
+
+               // Safeguard in case the stop event was missed.  Shouldn't be necessary if we always get the mouse up.
+               if(this.fake){ dojo.destroy(this.fake); }
+               if(!(this._resize = this.live)){ //TODO: disable live for IE6?
+                       // create fake splitter to display at old position while we drag
+                       (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");
+               dojo.addClass(this.domNode, "dijitSplitter" + (this.horizontal ? "H" : "V") + "Active");
+               if(this.fake){
+                       dojo.removeClass(this.fake, "dijitSplitterHover");
+                       dojo.removeClass(this.fake, "dijitSplitter" + (this.horizontal ? "H" : "V") + "Hover");
+               }
+
+               //Performance: load data info local vars for onmousevent function closure
+               var factor = this._factor,
+                       max = this._computeMaxSize(),
+                       min = this.child.minSize || 20,
+                       isHorizontal = this.horizontal,
+                       axis = isHorizontal ? "pageY" : "pageX",
+                       pageStart = e[axis],
+                       splitterStyle = this.domNode.style,
+                       dim = isHorizontal ? 'h' : 'w',
+                       childStart = dojo.marginBox(this.child.domNode)[dim],
+                       region = this.region,
+                       splitterStart = parseInt(this.domNode.style[region], 10),
+                       resize = this._resize,
+                       childNode = this.child.domNode,
+                       layoutFunc = dojo.hitch(this.container, this.container._layoutChildren),
+                       de = dojo.doc;
+
+               this._handlers = (this._handlers || []).concat([
+                       dojo.connect(de, "onmousemove", this._drag = function(e, forceResize){
+                               var delta = e[axis] - pageStart,
+                                       childSize = factor * delta + childStart,
+                                       boundChildSize = Math.max(Math.min(childSize, max), min);
+
+                               if(resize || forceResize){
+                                       layoutFunc(region, boundChildSize);
+                               }
+                               splitterStyle[region] = factor * delta + splitterStart + (boundChildSize - childSize) + "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");
+                       dojo.removeClass(this.domNode, "dijitSplitter" + (this.horizontal ? "H" : "V") + "Active");
+                       dojo.removeClass(this.domNode, "dijitSplitterShadow");
+                       this._drag(e); //TODO: redundant with onmousemove?
+                       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(/*Event*/ e){
+               // should we apply typematic to this?
+               this._resize = true;
+               var horizontal = this.horizontal;
+               var tick = 1;
+               var dk = dojo.keys;
+               switch(e.charOrCode){
+                       case horizontal ? dk.UP_ARROW : dk.LEFT_ARROW:
+                               tick *= -1;
+//                             break;
+                       case horizontal ? dk.DOWN_ARROW : dk.RIGHT_ARROW:
+                               break;
+                       default:
+//                             this.inherited(arguments);
+                               return;
+               }
+               var childSize = dojo.marginBox(this.child.domNode)[ horizontal ? 'h' : 'w' ] + this._factor * tick;
+               this.container._layoutChildren(this.region, Math.max(Math.min(childSize, 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 ],
+{
+       // summary:
+       //              Just a spacer div to separate side pane from center pane.
+       //              Basically a trick to lookup the gutter/splitter width from the theme.
+       // description:
+       //              Instantiated by `dijit.layout.BorderContainer`.  Users should not
+       //              create directly.
+       // tags:
+       //              private
+
+       templateString: '<div class="dijitGutter" waiRole="presentation"></div>',
+
+       postCreate: function(){
+               this.horizontal = /top|bottom/.test(this.region);
+               dojo.addClass(this.domNode, "dijitGutter" + (this.horizontal ? "H" : "V"));
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.layout.LayoutContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.LayoutContainer"] = true;
+dojo.provide("dijit.layout.LayoutContainer");
+
+
+
+dojo.declare("dijit.layout.LayoutContainer",
+       dijit.layout._LayoutWidget,
+       {
+       // summary:
+       //              Deprecated.  Use `dijit.layout.BorderContainer` instead.
+       //
+       // description:
+       //              Provides Delphi-style panel layout semantics.
+       //
+       //              A LayoutContainer is a box with a specified size (like style="width: 500px; height: 500px;"),
+       //              that contains children widgets marked with "layoutAlign" of "left", "right", "bottom", "top", and "client".
+       //              It takes it's children marked as left/top/bottom/right, and lays them out along the edges of the box,
+       //              and then it takes the child marked "client" and puts it into the remaining space in the middle.
+       //
+       //              Left/right positioning is similar to CSS's "float: left" and "float: right",
+       //              and top/bottom positioning would be similar to "float: top" and "float: bottom", if there were such
+       //              CSS.
+       //
+       //              Note that there can only be one client element, but there can be multiple left, right, top,
+       //              or bottom elements.
+       //
+       // example:
+       // |    <style>
+       // |            html, body{ height: 100%; width: 100%; }
+       // |    </style>
+       // |    <div dojoType="dijit.layout.LayoutContainer" style="width: 100%; height: 100%">
+       // |            <div dojoType="dijit.layout.ContentPane" layoutAlign="top">header text</div>
+       // |            <div dojoType="dijit.layout.ContentPane" layoutAlign="left" style="width: 200px;">table of contents</div>
+       // |            <div dojoType="dijit.layout.ContentPane" layoutAlign="client">client area</div>
+       // |    </div>
+       //
+       //              Lays out each child in the natural order the children occur in.
+       //              Basically each child is laid out into the "remaining space", where "remaining space" is initially
+       //              the content area of this widget, but is reduced to a smaller rectangle each time a child is added.
+       // tags:
+       //              deprecated
+
+       baseClass: "dijitLayoutContainer",
+
+       constructor: function(){
+               dojo.deprecated("dijit.layout.LayoutContainer is deprecated", "use BorderContainer instead", 2.0);
+       },
+
+       layout: function(){
+               dijit.layout.layoutChildren(this.domNode, this._contentBox, this.getChildren());
+       },
+
+       addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
+               this.inherited(arguments);
+               if(this._started){
+                       dijit.layout.layoutChildren(this.domNode, this._contentBox, this.getChildren());
+               }
+       },
+
+       removeChild: function(/*dijit._Widget*/ widget){
+               this.inherited(arguments);
+               if(this._started){
+                       dijit.layout.layoutChildren(this.domNode, this._contentBox, this.getChildren());
+               }
+       }
+});
+
+// This argument can be specified for the children of a LayoutContainer.
+// Since any widget can be specified as a LayoutContainer child, mix it
+// into the base widget class.  (This is a hack, but it's effective.)
+dojo.extend(dijit._Widget, {
+       // layoutAlign: String
+       //              "none", "left", "right", "bottom", "top", and "client".
+       //              See the LayoutContainer description for details on this parameter.
+       layoutAlign: 'none'
+});
+
+}
+
+if(!dojo._hasResource["dijit.layout.LinkPane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.LinkPane"] = true;
+dojo.provide("dijit.layout.LinkPane");
+
+
+
+
+dojo.declare("dijit.layout.LinkPane",
+       [dijit.layout.ContentPane, dijit._Templated],
+       {
+       // summary:
+       //              A ContentPane with an href where (when declared in markup)
+       //              the title is specified as innerHTML rather than as a title attribute.
+       // description:
+       //              LinkPane is just a ContentPane that is declared in markup similarly
+       //              to an anchor.  The anchor's body (the words between `<a>` and `</a>`)
+       //              become the title of the widget (used for TabContainer, AccordionContainer, etc.)
+       // example:
+       //      | <a href="foo.html">my title</a>
+
+       // I'm using a template because the user may specify the input as
+       // <a href="foo.html">title</a>, in which case we need to get rid of the
+       // <a> because we don't want a link.
+       templateString: '<div class="dijitLinkPane" dojoAttachPoint="containerNode"></div>',
+
+       postMixInProperties: function(){
+               // If user has specified node contents, they become the title
+               // (the link must be plain text)
+               if(this.srcNodeRef){
+                       this.title += this.srcNodeRef.innerHTML;
+               }
+               this.inherited(arguments);
+       },
+
+       _fillContent: function(/*DomNode*/ source){
+               // Overrides _Templated._fillContent().
+
+               // _Templated._fillContent() relocates srcNodeRef innerHTML to templated container node,
+               // but in our case the srcNodeRef innerHTML is the title, so shouldn't be
+               // copied
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.layout.SplitContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.SplitContainer"] = true;
+dojo.provide("dijit.layout.SplitContainer");
+
+//
+// FIXME: make it prettier
+// FIXME: active dragging upwards doesn't always shift other bars (direction calculation is wrong in this case)
+//
+
+
+
+
+dojo.declare("dijit.layout.SplitContainer",
+       dijit.layout._LayoutWidget,
+       {
+       // summary:
+       //              Deprecated.  Use `dijit.layout.BorderContainer` instead.
+       // description:
+       //              A Container widget with sizing handles in-between each child.
+       //              Contains multiple children widgets, all of which are displayed side by side
+       //              (either horizontally or vertically); there's a bar between each of the children,
+       //              and you can adjust the relative size of each child by dragging the bars.
+       //
+       //              You must specify a size (width and height) for the SplitContainer.
+       // tags:
+       //              deprecated
+
+       constructor: function(){
+               dojo.deprecated("dijit.layout.SplitContainer is deprecated", "use BorderContainer with splitter instead", 2.0);
+       },
+
+       // activeSizing: Boolean
+       //              If true, the children's size changes as you drag the bar;
+       //              otherwise, the sizes don't change until you drop the bar (by mouse-up)
+       activeSizing: false,
+
+       // sizerWidth: Integer
+       //              Size in pixels of the bar between each child
+       sizerWidth: 7, // FIXME: this should be a CSS attribute (at 7 because css wants it to be 7 until we fix to css)
+
+       // orientation: String
+       //              either 'horizontal' or vertical; indicates whether the children are
+       //              arranged side-by-side or up/down.
+       orientation: 'horizontal',
+
+       // persist: Boolean
+       //              Save splitter positions in a cookie
+       persist: true,
+
+       baseClass: "dijitSplitContainer",
+
+       postMixInProperties: function(){
+               this.inherited("postMixInProperties",arguments);
+               this.isHorizontal = (this.orientation == 'horizontal');
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+               this.sizers = [];
+
+               // overflow has to be explicitly hidden for splitContainers using gekko (trac #1435)
+               // to keep other combined css classes from inadvertantly making the overflow visible
+               if(dojo.isMozilla){
+                       this.domNode.style.overflow = '-moz-scrollbars-none'; // hidden doesn't work
+               }
+
+               // create the fake dragger
+               if(typeof this.sizerWidth == "object"){
+                       try{ //FIXME: do this without a try/catch
+                               this.sizerWidth = parseInt(this.sizerWidth.toString());
+                       }catch(e){ this.sizerWidth = 7; }
+               }
+               var sizer = dojo.doc.createElement('div');
+               this.virtualSizer = sizer;
+               sizer.style.position = 'relative';
+
+               // #1681: work around the dreaded 'quirky percentages in IE' layout bug
+               // If the splitcontainer's dimensions are specified in percentages, it
+               // will be resized when the virtualsizer is displayed in _showSizingLine
+               // (typically expanding its bounds unnecessarily). This happens because
+               // we use position: relative for .dijitSplitContainer.
+               // The workaround: instead of changing the display style attribute,
+               // switch to changing the zIndex (bring to front/move to back)
+
+               sizer.style.zIndex = 10;
+               sizer.className = this.isHorizontal ? 'dijitSplitContainerVirtualSizerH' : 'dijitSplitContainerVirtualSizerV';
+               this.domNode.appendChild(sizer);
+               dojo.setSelectable(sizer, false);
+       },
+
+       destroy: function(){
+               delete this.virtualSizer;
+               dojo.forEach(this._ownconnects, dojo.disconnect);
+               this.inherited(arguments);
+       },
+       startup: function(){
+               if(this._started){ return; }
+
+               dojo.forEach(this.getChildren(), function(child, i, children){
+                       // attach the children and create the draggers
+                       this._setupChild(child);
+
+                       if(i < children.length-1){
+                               this._addSizer();
+                       }
+               }, this);
+
+               if(this.persist){
+                       this._restoreState();
+               }
+
+               this.inherited(arguments);
+       },
+
+       _setupChild: function(/*dijit._Widget*/ child){
+               this.inherited(arguments);
+               child.domNode.style.position = "absolute";
+               dojo.addClass(child.domNode, "dijitSplitPane");
+       },
+
+       _onSizerMouseDown: function(e){
+               if(e.target.id){
+                       for(var i=0;i<this.sizers.length;i++){
+                               if(this.sizers[i].id == e.target.id){
+                                       break;
+                               }
+                       }
+                       if(i<this.sizers.length){
+                               this.beginSizing(e,i);
+                       }
+               }
+       },
+       _addSizer: function(index){
+               index = index === undefined ? this.sizers.length : index;
+
+               // TODO: use a template for this!!!
+               var sizer = dojo.doc.createElement('div');
+               sizer.id=dijit.getUniqueId('dijit_layout_SplitterContainer_Splitter');
+               this.sizers.splice(index,0,sizer);
+               this.domNode.appendChild(sizer);
+
+               sizer.className = this.isHorizontal ? 'dijitSplitContainerSizerH' : 'dijitSplitContainerSizerV';
+
+               // add the thumb div
+               var thumb = dojo.doc.createElement('div');
+               thumb.className = 'thumb';
+               sizer.appendChild(thumb);
+
+               // FIXME: are you serious? why aren't we using mover start/stop combo?
+               this.connect(sizer, "onmousedown", '_onSizerMouseDown');
+
+               dojo.setSelectable(sizer, false);
+       },
+
+       removeChild: function(widget){
+               // summary:
+               //              Remove sizer, but only if widget is really our child and
+               // we have at least one sizer to throw away
+               if(this.sizers.length){
+                       var i=dojo.indexOf(this.getChildren(), widget)
+                       if(i != -1){
+                               if(i == this.sizers.length){
+                                       i--;
+                               }
+                               dojo.destroy(this.sizers[i]);
+                               this.sizers.splice(i,1);
+                       }
+               }
+
+               // Remove widget and repaint
+               this.inherited(arguments);
+               if(this._started){
+                       this.layout();
+               }
+       },
+
+       addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
+               // summary:
+               //              Add a child widget to the container
+               // child:
+               //              a widget to add
+               // insertIndex:
+               //              postion in the "stack" to add the child widget
+
+               this.inherited(arguments);
+
+               if(this._started){
+                       // Do the stuff that startup() does for each widget
+                       var children = this.getChildren();
+                       if(children.length > 1){
+                               this._addSizer(insertIndex);
+                       }
+
+                       // and then reposition (ie, shrink) every pane to make room for the new guy
+                       this.layout();
+               }
+       },
+
+       layout: function(){
+               // summary:
+               //              Do layout of panels
+
+               // base class defines this._contentBox on initial creation and also
+               // on resize
+               this.paneWidth = this._contentBox.w;
+               this.paneHeight = this._contentBox.h;
+
+               var children = this.getChildren();
+               if(!children.length){ return; }
+
+               //
+               // calculate space
+               //
+
+               var space = this.isHorizontal ? this.paneWidth : this.paneHeight;
+               if(children.length > 1){
+                       space -= this.sizerWidth * (children.length - 1);
+               }
+
+               //
+               // calculate total of SizeShare values
+               //
+               var outOf = 0;
+               dojo.forEach(children, function(child){
+                       outOf += child.sizeShare;
+               });
+
+               //
+               // work out actual pixels per sizeshare unit
+               //
+               var pixPerUnit = space / outOf;
+
+               //
+               // set the SizeActual member of each pane
+               //
+               var totalSize = 0;
+               dojo.forEach(children.slice(0, children.length - 1), function(child){
+                       var size = Math.round(pixPerUnit * child.sizeShare);
+                       child.sizeActual = size;
+                       totalSize += size;
+               });
+
+               children[children.length-1].sizeActual = space - totalSize;
+
+               //
+               // make sure the sizes are ok
+               //
+               this._checkSizes();
+
+               //
+               // now loop, positioning each pane and letting children resize themselves
+               //
+
+               var pos = 0;
+               var size = children[0].sizeActual;
+               this._movePanel(children[0], pos, size);
+               children[0].position = pos;
+               pos += size;
+
+               // if we don't have any sizers, our layout method hasn't been called yet
+               // so bail until we are called..TODO: REVISIT: need to change the startup
+               // algorithm to guaranteed the ordering of calls to layout method
+               if(!this.sizers){
+                       return;
+               }
+
+               dojo.some(children.slice(1), function(child, i){
+                       // error-checking
+                       if(!this.sizers[i]){
+                               return true;
+                       }
+                       // first we position the sizing handle before this pane
+                       this._moveSlider(this.sizers[i], pos, this.sizerWidth);
+                       this.sizers[i].position = pos;
+                       pos += this.sizerWidth;
+
+                       size = child.sizeActual;
+                       this._movePanel(child, pos, size);
+                       child.position = pos;
+                       pos += size;
+               }, this);
+       },
+
+       _movePanel: function(panel, pos, size){
+               if(this.isHorizontal){
+                       panel.domNode.style.left = pos + 'px';  // TODO: resize() takes l and t parameters too, don't need to set manually
+                       panel.domNode.style.top = 0;
+                       var box = {w: size, h: this.paneHeight};
+                       if(panel.resize){
+                               panel.resize(box);
+                       }else{
+                               dojo.marginBox(panel.domNode, box);
+                       }
+               }else{
+                       panel.domNode.style.left = 0;   // TODO: resize() takes l and t parameters too, don't need to set manually
+                       panel.domNode.style.top = pos + 'px';
+                       var box = {w: this.paneWidth, h: size};
+                       if(panel.resize){
+                               panel.resize(box);
+                       }else{
+                               dojo.marginBox(panel.domNode, box);
+                       }
+               }
+       },
+
+       _moveSlider: function(slider, pos, size){
+               if(this.isHorizontal){
+                       slider.style.left = pos + 'px';
+                       slider.style.top = 0;
+                       dojo.marginBox(slider, { w: size, h: this.paneHeight });
+               }else{
+                       slider.style.left = 0;
+                       slider.style.top = pos + 'px';
+                       dojo.marginBox(slider, { w: this.paneWidth, h: size });
+               }
+       },
+
+       _growPane: function(growth, pane){
+               if(growth > 0){
+                       if(pane.sizeActual > pane.sizeMin){
+                               if((pane.sizeActual - pane.sizeMin) > growth){
+
+                                       // stick all the growth in this pane
+                                       pane.sizeActual = pane.sizeActual - growth;
+                                       growth = 0;
+                               }else{
+                                       // put as much growth in here as we can
+                                       growth -= pane.sizeActual - pane.sizeMin;
+                                       pane.sizeActual = pane.sizeMin;
+                               }
+                       }
+               }
+               return growth;
+       },
+
+       _checkSizes: function(){
+
+               var totalMinSize = 0;
+               var totalSize = 0;
+               var children = this.getChildren();
+
+               dojo.forEach(children, function(child){
+                       totalSize += child.sizeActual;
+                       totalMinSize += child.sizeMin;
+               });
+
+               // only make adjustments if we have enough space for all the minimums
+
+               if(totalMinSize <= totalSize){
+
+                       var growth = 0;
+
+                       dojo.forEach(children, function(child){
+                               if(child.sizeActual < child.sizeMin){
+                                       growth += child.sizeMin - child.sizeActual;
+                                       child.sizeActual = child.sizeMin;
+                               }
+                       });
+
+                       if(growth > 0){
+                               var list = this.isDraggingLeft ? children.reverse() : children;
+                               dojo.forEach(list, function(child){
+                                       growth = this._growPane(growth, child);
+                               }, this);
+                       }
+               }else{
+                       dojo.forEach(children, function(child){
+                               child.sizeActual = Math.round(totalSize * (child.sizeMin / totalMinSize));
+                       });
+               }
+       },
+
+       beginSizing: function(e, i){
+               var children = this.getChildren();
+               this.paneBefore = children[i];
+               this.paneAfter = children[i+1];
+
+               this.isSizing = true;
+               this.sizingSplitter = this.sizers[i];
+
+               if(!this.cover){
+                       this.cover = dojo.create('div', {
+                                       style: {
+                                               position:'absolute',
+                                               zIndex:5,
+                                               top: 0,
+                                               left: 0,
+                                               width: "100%",
+                                               height: "100%"
+                                       }
+                               }, this.domNode);
+               }else{
+                       this.cover.style.zIndex = 5;
+               }
+               this.sizingSplitter.style.zIndex = 6;
+
+               // TODO: REVISIT - we want MARGIN_BOX and core hasn't exposed that yet (but can't we use it anyway if we pay attention? we do elsewhere.)
+               this.originPos = dojo.position(children[0].domNode, true);
+               if(this.isHorizontal){
+                       var client = e.layerX || e.offsetX || 0;
+                       var screen = e.pageX;
+                       this.originPos = this.originPos.x;
+               }else{
+                       var client = e.layerY || e.offsetY || 0;
+                       var screen = e.pageY;
+                       this.originPos = this.originPos.y;
+               }
+               this.startPoint = this.lastPoint = screen;
+               this.screenToClientOffset = screen - client;
+               this.dragOffset = this.lastPoint - this.paneBefore.sizeActual - this.originPos - this.paneBefore.position;
+
+               if(!this.activeSizing){
+                       this._showSizingLine();
+               }
+
+               //
+               // attach mouse events
+               //
+               this._ownconnects = [];
+               this._ownconnects.push(dojo.connect(dojo.doc.documentElement, "onmousemove", this, "changeSizing"));
+               this._ownconnects.push(dojo.connect(dojo.doc.documentElement, "onmouseup", this, "endSizing"));
+
+               dojo.stopEvent(e);
+       },
+
+       changeSizing: function(e){
+               if(!this.isSizing){ return; }
+               this.lastPoint = this.isHorizontal ? e.pageX : e.pageY;
+               this.movePoint();
+               if(this.activeSizing){
+                       this._updateSize();
+               }else{
+                       this._moveSizingLine();
+               }
+               dojo.stopEvent(e);
+       },
+
+       endSizing: function(e){
+               if(!this.isSizing){ return; }
+               if(this.cover){
+                       this.cover.style.zIndex = -1;
+               }
+               if(!this.activeSizing){
+                       this._hideSizingLine();
+               }
+
+               this._updateSize();
+
+               this.isSizing = false;
+
+               if(this.persist){
+                       this._saveState(this);
+               }
+
+               dojo.forEach(this._ownconnects, dojo.disconnect);
+       },
+
+       movePoint: function(){
+
+               // make sure lastPoint is a legal point to drag to
+               var p = this.lastPoint - this.screenToClientOffset;
+
+               var a = p - this.dragOffset;
+               a = this.legaliseSplitPoint(a);
+               p = a + this.dragOffset;
+
+               this.lastPoint = p + this.screenToClientOffset;
+       },
+
+       legaliseSplitPoint: function(a){
+
+               a += this.sizingSplitter.position;
+
+               this.isDraggingLeft = !!(a > 0);
+
+               if(!this.activeSizing){
+                       var min = this.paneBefore.position + this.paneBefore.sizeMin;
+                       if(a < min){
+                               a = min;
+                       }
+
+                       var max = this.paneAfter.position + (this.paneAfter.sizeActual - (this.sizerWidth + this.paneAfter.sizeMin));
+                       if(a > max){
+                               a = max;
+                       }
+               }
+
+               a -= this.sizingSplitter.position;
+
+               this._checkSizes();
+
+               return a;
+       },
+
+       _updateSize: function(){
+       //FIXME: sometimes this.lastPoint is NaN
+               var pos = this.lastPoint - this.dragOffset - this.originPos;
+
+               var start_region = this.paneBefore.position;
+               var end_region = this.paneAfter.position + this.paneAfter.sizeActual;
+
+               this.paneBefore.sizeActual = pos - start_region;
+               this.paneAfter.position = pos + this.sizerWidth;
+               this.paneAfter.sizeActual = end_region - this.paneAfter.position;
+
+               dojo.forEach(this.getChildren(), function(child){
+                       child.sizeShare = child.sizeActual;
+               });
+
+               if(this._started){
+                       this.layout();
+               }
+       },
+
+       _showSizingLine: function(){
+
+               this._moveSizingLine();
+
+               dojo.marginBox(this.virtualSizer,
+                       this.isHorizontal ? { w: this.sizerWidth, h: this.paneHeight } : { w: this.paneWidth, h: this.sizerWidth });
+
+               this.virtualSizer.style.display = 'block';
+       },
+
+       _hideSizingLine: function(){
+               this.virtualSizer.style.display = 'none';
+       },
+
+       _moveSizingLine: function(){
+               var pos = (this.lastPoint - this.startPoint) + this.sizingSplitter.position;
+               dojo.style(this.virtualSizer,(this.isHorizontal ? "left" : "top"),pos+"px");
+               // this.virtualSizer.style[ this.isHorizontal ? "left" : "top" ] = pos + 'px'; // FIXME: remove this line if the previous is better
+       },
+
+       _getCookieName: function(i){
+               return this.id + "_" + i;
+       },
+
+       _restoreState: function(){
+               dojo.forEach(this.getChildren(), function(child, i){
+                       var cookieName = this._getCookieName(i);
+                       var cookieValue = dojo.cookie(cookieName);
+                       if(cookieValue){
+                               var pos = parseInt(cookieValue);
+                               if(typeof pos == "number"){
+                                       child.sizeShare = pos;
+                               }
+                       }
+               }, this);
+       },
+
+       _saveState: function(){
+               if(!this.persist){
+                       return;
+               }
+               dojo.forEach(this.getChildren(), function(child, i){
+                       dojo.cookie(this._getCookieName(i), child.sizeShare, {expires:365});
+               }, this);
+       }
+});
+
+// These arguments can be specified for the children of a SplitContainer.
+// Since any widget can be specified as a SplitContainer child, mix them
+// into the base widget class.  (This is a hack, but it's effective.)
+dojo.extend(dijit._Widget, {
+       // sizeMin: [deprecated] Integer
+       //              Deprecated.  Parameter for children of `dijit.layout.SplitContainer`.
+       //              Minimum size (width or height) of a child of a SplitContainer.
+       //              The value is relative to other children's sizeShare properties.
+       sizeMin: 10,
+
+       // sizeShare: [deprecated] Integer
+       //              Deprecated.  Parameter for children of `dijit.layout.SplitContainer`.
+       //              Size (width or height) of a child of a SplitContainer.
+       //              The value is relative to other children's sizeShare properties.
+       //              For example, if there are two children and each has sizeShare=10, then
+       //              each takes up 50% of the available space.
+       sizeShare: 10
+});
+
+}
+
+if(!dojo._hasResource["dijit.layout._TabContainerBase"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout._TabContainerBase"] = true;
+dojo.provide("dijit.layout._TabContainerBase");
+
+
+
+
+dojo.declare("dijit.layout._TabContainerBase",
+       [dijit.layout.StackContainer, dijit._Templated],
+       {
+       // summary:
+       //              Abstract base class for TabContainer.   Must define _makeController() to instantiate
+       //              and return the widget that displays the tab labels
+       // description:
+       //              A TabContainer is a container that has multiple panes, but shows only
+       //              one pane at a time.  There are a set of tabs corresponding to each pane,
+       //              where each tab has the name (aka title) of the pane, and optionally a close button.
+
+       // tabPosition: String
+       //              Defines where tabs go relative to tab content.
+       //              "top", "bottom", "left-h", "right-h"
+       tabPosition: "top",
+
+       baseClass: "dijitTabContainer",
+
+       // tabStrip: Boolean
+       //              Defines whether the tablist gets an extra class for layouting, putting a border/shading
+       //              around the set of tabs.
+       tabStrip: false,
+
+       // nested: Boolean
+       //              If true, use styling for a TabContainer nested inside another TabContainer.
+       //              For tundra etc., makes tabs look like links, and hides the outer
+       //              border since the outer TabContainer already has a border.
+       nested: false,
+
+       templateString: dojo.cache("dijit.layout", "templates/TabContainer.html", "<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" dojoAttachPoint=\"tablistNode\"></div>\n\t<div dojoAttachPoint=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" dojoAttachPoint=\"containerNode\"></div>\n</div>\n"),
+
+       postMixInProperties: function(){
+               // set class name according to tab position, ex: dijitTabContainerTop
+               this.baseClass += this.tabPosition.charAt(0).toUpperCase() + this.tabPosition.substr(1).replace(/-.*/, "");
+
+               this.srcNodeRef && dojo.style(this.srcNodeRef, "visibility", "hidden");
+
+               this.inherited(arguments);
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+
+               // Create the tab list that will have a tab (a.k.a. tab button) for each tab panel
+               this.tablist = this._makeController(this.tablistNode);
+
+               if(!this.doLayout){ dojo.addClass(this.domNode, "dijitTabContainerNoLayout"); }
+
+               if(this.nested){
+                       /* workaround IE's lack of support for "a > b" selectors by
+                        * tagging each node in the template.
+                        */
+                       dojo.addClass(this.domNode, "dijitTabContainerNested");
+                       dojo.addClass(this.tablist.containerNode, "dijitTabContainerTabListNested");
+                       dojo.addClass(this.tablistSpacer, "dijitTabContainerSpacerNested");
+                       dojo.addClass(this.containerNode, "dijitTabPaneWrapperNested");
+               }else{
+                       dojo.addClass(this.domNode, "tabStrip-" + (this.tabStrip ? "enabled" : "disabled"));
+               }
+       },
+
+       _setupChild: function(/*dijit._Widget*/ tab){
+               // Overrides StackContainer._setupChild().
+               dojo.addClass(tab.domNode, "dijitTabPane");
+               this.inherited(arguments);
+       },
+
+       startup: function(){
+               if(this._started){ return; }
+
+               // wire up the tablist and its tabs
+               this.tablist.startup();
+
+               this.inherited(arguments);
+       },
+
+       layout: function(){
+               // Overrides StackContainer.layout().
+               // Configure the content pane to take up all the space except for where the tabs are
+
+               if(!this._contentBox || typeof(this._contentBox.l) == "undefined"){return;}
+
+               var sc = this.selectedChildWidget;
+
+               if(this.doLayout){
+                       // position and size the titles and the container node
+                       var titleAlign = this.tabPosition.replace(/-h/, "");
+                       this.tablist.layoutAlign = titleAlign;
+                       var children = [this.tablist, {
+                               domNode: this.tablistSpacer,
+                               layoutAlign: titleAlign
+                       }, {
+                               domNode: this.containerNode,
+                               layoutAlign: "client"
+                       }];
+                       dijit.layout.layoutChildren(this.domNode, this._contentBox, children);
+
+                       // Compute size to make each of my children.
+                       // children[2] is the margin-box size of this.containerNode, set by layoutChildren() call above
+                       this._containerContentBox = dijit.layout.marginBox2contentBox(this.containerNode, children[2]);
+
+                       if(sc && sc.resize){
+                               sc.resize(this._containerContentBox);
+                       }
+               }else{
+                       // just layout the tab controller, so it can position left/right buttons etc.
+                       if(this.tablist.resize){
+                               this.tablist.resize({w: dojo.contentBox(this.domNode).w});
+                       }
+
+                       // and call resize() on the selected pane just to tell it that it's been made visible
+                       if(sc && sc.resize){
+                               sc.resize();
+                       }
+               }
+       },
+
+       destroy: function(){
+               if(this.tablist){
+                       this.tablist.destroy();
+               }
+               this.inherited(arguments);
+       }
+});
+
+
+}
+
+if(!dojo._hasResource["dijit.layout.TabController"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.TabController"] = true;
+dojo.provide("dijit.layout.TabController");
+
+
+
+// Menu is used for an accessible close button, would be nice to have a lighter-weight solution
+
+
+
+
+
+dojo.declare("dijit.layout.TabController",
+       dijit.layout.StackController,
+{
+       // summary:
+       //              Set of tabs (the things with titles and a close button, that you click to show a tab panel).
+       //              Used internally by `dijit.layout.TabContainer`.
+       // description:
+       //              Lets the user select the currently shown pane in a TabContainer or StackContainer.
+       //              TabController also monitors the TabContainer, and whenever a pane is
+       //              added or deleted updates itself accordingly.
+       // tags:
+       //              private
+
+       templateString: "<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'></div>",
+
+       // tabPosition: String
+       //              Defines where tabs go relative to the content.
+       //              "top", "bottom", "left-h", "right-h"
+       tabPosition: "top",
+
+       // buttonWidget: String
+       //              The name of the tab widget to create to correspond to each page
+       buttonWidget: "dijit.layout._TabButton",
+
+       _rectifyRtlTabList: function(){
+               // summary:
+               //              For left/right TabContainer when page is RTL mode, rectify the width of all tabs to be equal, otherwise the tab widths are different in IE
+
+               if(0 >= this.tabPosition.indexOf('-h')){ return; }
+               if(!this.pane2button){ return; }
+
+               var maxWidth = 0;
+               for(var pane in this.pane2button){
+                       var ow = this.pane2button[pane].innerDiv.scrollWidth;
+                       maxWidth = Math.max(maxWidth, ow);
+               }
+               //unify the length of all the tabs
+               for(pane in this.pane2button){
+                       this.pane2button[pane].innerDiv.style.width = maxWidth + 'px';
+               }
+       }
+});
+
+dojo.declare("dijit.layout._TabButton",
+       dijit.layout._StackButton,
+       {
+       // summary:
+       //              A tab (the thing you click to select a pane).
+       // description:
+       //              Contains the title of the pane, and optionally a close-button to destroy the pane.
+       //              This is an internal widget and should not be instantiated directly.
+       // tags:
+       //              private
+
+       // baseClass: String
+       //              The CSS class applied to the domNode.
+       baseClass: "dijitTab",
+
+       // Apply dijitTabCloseButtonHover when close button is hovered
+       cssStateNodes: {
+               closeNode: "dijitTabCloseButton"
+       },
+
+       templateString: dojo.cache("dijit.layout", "templates/_TabButton.html", "<div waiRole=\"presentation\" dojoAttachPoint=\"titleNode\" dojoAttachEvent='onclick:onClick'>\n    <div waiRole=\"presentation\" class='dijitTabInnerDiv' dojoAttachPoint='innerDiv'>\n        <div waiRole=\"presentation\" class='dijitTabContent' dojoAttachPoint='tabContent'>\n        \t<div waiRole=\"presentation\" dojoAttachPoint='focusNode'>\n\t\t        <img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon\" dojoAttachPoint='iconNode' />\n\t\t        <span dojoAttachPoint='containerNode' class='tabLabel'></span>\n\t\t        <span class=\"dijitInline dijitTabCloseButton dijitTabCloseIcon\" dojoAttachPoint='closeNode'\n\t\t        \t\tdojoAttachEvent='onclick: onClickCloseButton' waiRole=\"presentation\">\n\t\t            <span dojoAttachPoint='closeText' class='dijitTabCloseText'>x</span\n\t\t        ></span>\n\t\t\t</div>\n        </div>\n    </div>\n</div>\n"),
+
+       // Override _FormWidget.scrollOnFocus.
+       // Don't scroll the whole tab container into view when the button is focused.
+       scrollOnFocus: false,
+
+       postMixInProperties: function(){
+               // Override blank iconClass from Button to do tab height adjustment on IE6,
+               // to make sure that tabs with and w/out close icons are same height
+               if(!this.iconClass){
+                       this.iconClass = "dijitTabButtonIcon";
+               }
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+               dojo.setSelectable(this.containerNode, false);
+
+               // If a custom icon class has not been set for the
+               // tab icon, set its width to one pixel. This ensures
+               // that the height styling of the tab is maintained,
+               // as it is based on the height of the icon.
+               // TODO: I still think we can just set dijitTabButtonIcon to 1px in CSS <Bill>
+               if(this.iconNode.className == "dijitTabButtonIcon"){
+                       dojo.style(this.iconNode, "width", "1px");
+               }
+       },
+
+       startup: function(){
+               this.inherited(arguments);
+               var n = this.domNode;
+
+               // Required to give IE6 a kick, as it initially hides the
+               // tabs until they are focused on.
+               setTimeout(function(){
+                       n.className = n.className;
+               }, 1);
+       },
+
+       _setCloseButtonAttr: function(disp){
+               this.closeButton = disp;
+               dojo.toggleClass(this.innerDiv, "dijitClosable", disp);
+               this.closeNode.style.display = disp ? "" : "none";
+               if(disp){
+                       var _nlsResources = dojo.i18n.getLocalization("dijit", "common");
+                       if(this.closeNode){
+                               dojo.attr(this.closeNode,"title", _nlsResources.itemClose);
+                       }
+                       // add context menu onto title button
+                       var _nlsResources = dojo.i18n.getLocalization("dijit", "common");
+                       this._closeMenu = new dijit.Menu({
+                               id: this.id+"_Menu",
+                               dir: this.dir,
+                               lang: this.lang,
+                               targetNodeIds: [this.domNode]
+                       });
+
+                       this._closeMenu.addChild(new dijit.MenuItem({
+                               label: _nlsResources.itemClose,
+                               dir: this.dir,
+                               lang: this.lang,
+                               onClick: dojo.hitch(this, "onClickCloseButton")
+                       }));
+               }else{
+                       if(this._closeMenu){
+                               this._closeMenu.destroyRecursive();
+                               delete this._closeMenu;
+                       }
+               }
+       },
+       _setLabelAttr: function(/*String*/ content){
+               // summary:
+               //              Hook for attr('label', ...) to work.
+               // description:
+               //              takes an HTML string.
+               //              Inherited ToggleButton implementation will Set the label (text) of the button; 
+               //              Need to set the alt attribute of icon on tab buttons if no label displayed
+                       this.inherited(arguments);
+                       if(this.showLabel == false && !this.params.title){
+                               this.iconNode.alt = dojo.trim(this.containerNode.innerText || this.containerNode.textContent || '');
+                       }
+               },
+
+       destroy: function(){
+               if(this._closeMenu){
+                       this._closeMenu.destroyRecursive();
+                       delete this._closeMenu;
+               }
+               this.inherited(arguments);
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.layout.ScrollingTabController"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.ScrollingTabController"] = true;
+dojo.provide("dijit.layout.ScrollingTabController");
+
+
+
+
+dojo.declare("dijit.layout.ScrollingTabController",
+       dijit.layout.TabController,
+       {
+       // summary:
+       //              Set of tabs with left/right arrow keys and a menu to switch between tabs not
+       //              all fitting on a single row.
+       //              Works only for horizontal tabs (either above or below the content, not to the left
+       //              or right).
+       // tags:
+       //              private
+
+       templateString: dojo.cache("dijit.layout", "templates/ScrollingTabController.html", "<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_menuBtn\" iconClass=\"dijitTabStripMenuIcon\"\n\t\t\tdojoAttachPoint=\"_menuBtn\" showLabel=false>&#9660;</div>\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_leftBtn\" iconClass=\"dijitTabStripSlideLeftIcon\"\n\t\t\tdojoAttachPoint=\"_leftBtn\" dojoAttachEvent=\"onClick: doSlideLeft\" showLabel=false>&#9664;</div>\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_rightBtn\" iconClass=\"dijitTabStripSlideRightIcon\"\n\t\t\tdojoAttachPoint=\"_rightBtn\" dojoAttachEvent=\"onClick: doSlideRight\" showLabel=false>&#9654;</div>\n\t<div class='dijitTabListWrapper' dojoAttachPoint='tablistWrapper'>\n\t\t<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'\n\t\t\t\tdojoAttachPoint='containerNode' class='nowrapTabStrip'></div>\n\t</div>\n</div>\n"),
+
+       // useMenu:[const] Boolean
+       //              True if a menu should be used to select tabs when they are too
+       //              wide to fit the TabContainer, false otherwise.
+       useMenu: true,
+
+       // useSlider: [const] Boolean
+       //              True if a slider should be used to select tabs when they are too
+       //              wide to fit the TabContainer, false otherwise.
+       useSlider: true,
+
+       // tabStripClass: String
+       //              The css class to apply to the tab strip, if it is visible.
+       tabStripClass: "",
+
+       widgetsInTemplate: true,
+
+       // _minScroll: Number
+       //              The distance in pixels from the edge of the tab strip which,
+       //              if a scroll animation is less than, forces the scroll to
+       //              go all the way to the left/right.
+       _minScroll: 5,
+
+       attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
+               "class": "containerNode"
+       }),
+
+       postCreate: function(){
+               this.inherited(arguments);
+               var n = this.domNode;
+
+               this.scrollNode = this.tablistWrapper;
+               this._initButtons();
+
+               if(!this.tabStripClass){
+                       this.tabStripClass = "dijitTabContainer" +
+                               this.tabPosition.charAt(0).toUpperCase() +
+                               this.tabPosition.substr(1).replace(/-.*/, "") +
+                               "None";
+                       dojo.addClass(n, "tabStrip-disabled")
+               }
+
+               dojo.addClass(this.tablistWrapper, this.tabStripClass);
+       },
+
+       onStartup: function(){
+               this.inherited(arguments);
+
+               // Do not show the TabController until the related
+               // StackController has added it's children.  This gives
+               // a less visually jumpy instantiation.
+               dojo.style(this.domNode, "visibility", "visible");
+               this._postStartup = true;
+       },
+
+       onAddChild: function(page, insertIndex){
+               this.inherited(arguments);
+               var menuItem;
+               if(this.useMenu){
+                       var containerId = this.containerId;
+                       menuItem = new dijit.MenuItem({
+                               id: page.id + "_stcMi",
+                               label: page.title,
+                               dir: page.dir,
+                               lang: page.lang,
+                               onClick: dojo.hitch(this, function(){
+                                       var container = dijit.byId(containerId);
+                                       container.selectChild(page);
+                               })
+                       });
+                       this._menuChildren[page.id] = menuItem;
+                       this._menu.addChild(menuItem, insertIndex);
+               }
+
+               // update the menuItem label when the button label is updated
+               this.pane2handles[page.id].push(
+                       this.connect(this.pane2button[page.id], "set", function(name, value){
+                               if(this._postStartup){
+                                       if(name == "label"){
+                                               if(menuItem){
+                                                       menuItem.set(name, value);
+                                               }
+       
+                                               // The changed label will have changed the width of the
+                                               // buttons, so do a resize
+                                               if(this._dim){
+                                                       this.resize(this._dim);
+                                               }
+                                       }
+                               }
+                       })
+               );
+
+               // Increment the width of the wrapper when a tab is added
+               // This makes sure that the buttons never wrap.
+               // The value 200 is chosen as it should be bigger than most
+               // Tab button widths.
+               dojo.style(this.containerNode, "width",
+                       (dojo.style(this.containerNode, "width") + 200) + "px");
+       },
+
+       onRemoveChild: function(page, insertIndex){
+               // null out _selectedTab because we are about to delete that dom node
+               var button = this.pane2button[page.id];
+               if(this._selectedTab === button.domNode){
+                       this._selectedTab = null;
+               }
+
+               // delete menu entry corresponding to pane that was removed from TabContainer
+               if(this.useMenu && page && page.id && this._menuChildren[page.id]){
+                       this._menu.removeChild(this._menuChildren[page.id]);
+                       this._menuChildren[page.id].destroy();
+                       delete this._menuChildren[page.id];
+               }
+
+               this.inherited(arguments);
+       },
+
+       _initButtons: function(){
+               // summary:
+               //              Creates the buttons used to scroll to view tabs that
+               //              may not be visible if the TabContainer is too narrow.
+               this._menuChildren = {};
+
+               // Make a list of the buttons to display when the tab labels become
+               // wider than the TabContainer, and hide the other buttons.
+               // Also gets the total width of the displayed buttons.
+               this._btnWidth = 0;
+               this._buttons = dojo.query("> .tabStripButton", this.domNode).filter(function(btn){
+                       if((this.useMenu && btn == this._menuBtn.domNode) ||
+                               (this.useSlider && (btn == this._rightBtn.domNode || btn == this._leftBtn.domNode))){
+                               this._btnWidth += dojo.marginBox(btn).w;
+                               return true;
+                       }else{
+                               dojo.style(btn, "display", "none");
+                               return false;
+                       }
+               }, this);
+
+               if(this.useMenu){
+                       // Create the menu that is used to select tabs.
+                       this._menu = new dijit.Menu({
+                               id: this.id + "_menu",
+                               dir: this.dir,
+                               lang: this.lang,
+                               targetNodeIds: [this._menuBtn.domNode],
+                               leftClickToOpen: true,
+                               refocus: false  // selecting a menu item sets focus to a TabButton
+                       });
+                       this._supportingWidgets.push(this._menu);
+               }
+       },
+
+       _getTabsWidth: function(){
+               var children = this.getChildren();
+               if(children.length){
+                       var leftTab = children[this.isLeftToRight() ? 0 : children.length - 1].domNode,
+                               rightTab = children[this.isLeftToRight() ? children.length - 1 : 0].domNode;
+                       return rightTab.offsetLeft + dojo.style(rightTab, "width") - leftTab.offsetLeft;
+               }else{
+                       return 0;
+               }
+       },
+
+       _enableBtn: function(width){
+               // summary:
+               //              Determines if the tabs are wider than the width of the TabContainer, and
+               //              thus that we need to display left/right/menu navigation buttons.
+               var tabsWidth = this._getTabsWidth();
+               width = width || dojo.style(this.scrollNode, "width");
+               return tabsWidth > 0 && width < tabsWidth;
+       },
+
+       resize: function(dim){
+               // summary:
+               //              Hides or displays the buttons used to scroll the tab list and launch the menu
+               //              that selects tabs.
+
+               if(this.domNode.offsetWidth == 0){
+                       return;
+               }
+
+               // Save the dimensions to be used when a child is renamed.
+               this._dim = dim;
+
+               // Set my height to be my natural height (tall enough for one row of tab labels),
+               // and my content-box width based on margin-box width specified in dim parameter.
+               // But first reset scrollNode.height in case it was set by layoutChildren() call
+               // in a previous run of this method.
+               this.scrollNode.style.height = "auto";
+               this._contentBox = dijit.layout.marginBox2contentBox(this.domNode, {h: 0, w: dim.w});
+               this._contentBox.h = this.scrollNode.offsetHeight;
+               dojo.contentBox(this.domNode, this._contentBox);
+
+               // Show/hide the left/right/menu navigation buttons depending on whether or not they
+               // are needed.
+               var enable = this._enableBtn(this._contentBox.w);
+               this._buttons.style("display", enable ? "" : "none");
+
+               // Position and size the navigation buttons and the tablist
+               this._leftBtn.layoutAlign = "left";
+               this._rightBtn.layoutAlign = "right";
+               this._menuBtn.layoutAlign = this.isLeftToRight() ? "right" : "left";
+               dijit.layout.layoutChildren(this.domNode, this._contentBox,
+                       [this._menuBtn, this._leftBtn, this._rightBtn, {domNode: this.scrollNode, layoutAlign: "client"}]);
+
+               // set proper scroll so that selected tab is visible
+               if(this._selectedTab){
+                       if(this._anim && this._anim.status() == "playing"){
+                               this._anim.stop();
+                       }
+                       var w = this.scrollNode,
+                               sl = this._convertToScrollLeft(this._getScrollForSelectedTab());
+                       w.scrollLeft = sl;
+               }
+
+               // Enable/disabled left right buttons depending on whether or not user can scroll to left or right
+               this._setButtonClass(this._getScroll());
+               
+               this._postResize = true;
+       },
+
+       _getScroll: function(){
+               // summary:
+               //              Returns the current scroll of the tabs where 0 means
+               //              "scrolled all the way to the left" and some positive number, based on #
+               //              of pixels of possible scroll (ex: 1000) means "scrolled all the way to the right"
+               var sl = (this.isLeftToRight() || dojo.isIE < 8 || (dojo.isIE && dojo.isQuirks) || dojo.isWebKit) ? this.scrollNode.scrollLeft :
+                               dojo.style(this.containerNode, "width") - dojo.style(this.scrollNode, "width")
+                                        + (dojo.isIE == 8 ? -1 : 1) * this.scrollNode.scrollLeft;
+               return sl;
+       },
+
+       _convertToScrollLeft: function(val){
+               // summary:
+               //              Given a scroll value where 0 means "scrolled all the way to the left"
+               //              and some positive number, based on # of pixels of possible scroll (ex: 1000)
+               //              means "scrolled all the way to the right", return value to set this.scrollNode.scrollLeft
+               //              to achieve that scroll.
+               //
+               //              This method is to adjust for RTL funniness in various browsers and versions.
+               if(this.isLeftToRight() || dojo.isIE < 8 || (dojo.isIE && dojo.isQuirks) || dojo.isWebKit){
+                       return val;
+               }else{
+                       var maxScroll = dojo.style(this.containerNode, "width") - dojo.style(this.scrollNode, "width");
+                       return (dojo.isIE == 8 ? -1 : 1) * (val - maxScroll);
+               }
+       },
+
+       onSelectChild: function(/*dijit._Widget*/ page){
+               // summary:
+               //              Smoothly scrolls to a tab when it is selected.
+
+               var tab = this.pane2button[page.id];
+               if(!tab || !page){return;}
+
+               // Scroll to the selected tab, except on startup, when scrolling is handled in resize()
+               var node = tab.domNode;
+               if(this._postResize && node != this._selectedTab){
+                       this._selectedTab = node;
+
+                       var sl = this._getScroll();
+
+                       if(sl > node.offsetLeft ||
+                                       sl + dojo.style(this.scrollNode, "width") <
+                                       node.offsetLeft + dojo.style(node, "width")){
+                               this.createSmoothScroll().play();
+                       }
+               }
+
+               this.inherited(arguments);
+       },
+
+       _getScrollBounds: function(){
+               // summary:
+               //              Returns the minimum and maximum scroll setting to show the leftmost and rightmost
+               //              tabs (respectively)
+               var children = this.getChildren(),
+                       scrollNodeWidth = dojo.style(this.scrollNode, "width"),         // about 500px
+                       containerWidth = dojo.style(this.containerNode, "width"),       // 50,000px
+                       maxPossibleScroll = containerWidth - scrollNodeWidth,   // scrolling until right edge of containerNode visible
+                       tabsWidth = this._getTabsWidth();
+
+               if(children.length && tabsWidth > scrollNodeWidth){
+                       // Scrolling should happen
+                       return {
+                               min: this.isLeftToRight() ? 0 : children[children.length-1].domNode.offsetLeft,
+                               max: this.isLeftToRight() ?
+                                       (children[children.length-1].domNode.offsetLeft + dojo.style(children[children.length-1].domNode, "width")) - scrollNodeWidth :
+                                       maxPossibleScroll
+                       };
+               }else{
+                       // No scrolling needed, all tabs visible, we stay either scrolled to far left or far right (depending on dir)
+                       var onlyScrollPosition = this.isLeftToRight() ? 0 : maxPossibleScroll;
+                       return {
+                               min: onlyScrollPosition,
+                               max: onlyScrollPosition
+                       };
+               }
+       },
+
+       _getScrollForSelectedTab: function(){
+               // summary:
+               //              Returns the scroll value setting so that the selected tab
+               //              will appear in the center
+               var w = this.scrollNode,
+                       n = this._selectedTab,
+                       scrollNodeWidth = dojo.style(this.scrollNode, "width"),
+                       scrollBounds = this._getScrollBounds();
+
+               // TODO: scroll minimal amount (to either right or left) so that
+               // selected tab is fully visible, and just return if it's already visible?
+               var pos = (n.offsetLeft + dojo.style(n, "width")/2) - scrollNodeWidth/2;
+               pos = Math.min(Math.max(pos, scrollBounds.min), scrollBounds.max);
+
+               // TODO:
+               // If scrolling close to the left side or right side, scroll
+               // all the way to the left or right.  See this._minScroll.
+               // (But need to make sure that doesn't scroll the tab out of view...)
+               return pos;
+       },
+
+       createSmoothScroll : function(x){
+               // summary:
+               //              Creates a dojo._Animation object that smoothly scrolls the tab list
+               //              either to a fixed horizontal pixel value, or to the selected tab.
+               // description:
+               //              If an number argument is passed to the function, that horizontal
+               //              pixel position is scrolled to.  Otherwise the currently selected
+               //              tab is scrolled to.
+               // x: Integer?
+               //              An optional pixel value to scroll to, indicating distance from left.
+
+               // Calculate position to scroll to
+               if(arguments.length > 0){
+                       // position specified by caller, just make sure it's within bounds
+                       var scrollBounds = this._getScrollBounds();
+                       x = Math.min(Math.max(x, scrollBounds.min), scrollBounds.max);
+               }else{
+                       // scroll to center the current tab
+                       x = this._getScrollForSelectedTab();
+               }
+
+               if(this._anim && this._anim.status() == "playing"){
+                       this._anim.stop();
+               }
+
+               var self = this,
+                       w = this.scrollNode,
+                       anim = new dojo._Animation({
+                               beforeBegin: function(){
+                                       if(this.curve){ delete this.curve; }
+                                       var oldS = w.scrollLeft,
+                                               newS = self._convertToScrollLeft(x);
+                                       anim.curve = new dojo._Line(oldS, newS);
+                               },
+                               onAnimate: function(val){
+                                       w.scrollLeft = val;
+                               }
+                       });
+               this._anim = anim;
+
+               // Disable/enable left/right buttons according to new scroll position
+               this._setButtonClass(x);
+
+               return anim; // dojo._Animation
+       },
+
+       _getBtnNode: function(e){
+               // summary:
+               //              Gets a button DOM node from a mouse click event.
+               // e:
+               //              The mouse click event.
+               var n = e.target;
+               while(n && !dojo.hasClass(n, "tabStripButton")){
+                       n = n.parentNode;
+               }
+               return n;
+       },
+
+       doSlideRight: function(e){
+               // summary:
+               //              Scrolls the menu to the right.
+               // e:
+               //              The mouse click event.
+               this.doSlide(1, this._getBtnNode(e));
+       },
+
+       doSlideLeft: function(e){
+               // summary:
+               //              Scrolls the menu to the left.
+               // e:
+               //              The mouse click event.
+               this.doSlide(-1,this._getBtnNode(e));
+       },
+
+       doSlide: function(direction, node){
+               // summary:
+               //              Scrolls the tab list to the left or right by 75% of the widget width.
+               // direction:
+               //              If the direction is 1, the widget scrolls to the right, if it is
+               //              -1, it scrolls to the left.
+
+               if(node && dojo.hasClass(node, "dijitTabDisabled")){return;}
+
+               var sWidth = dojo.style(this.scrollNode, "width");
+               var d = (sWidth * 0.75) * direction;
+
+               var to = this._getScroll() + d;
+
+               this._setButtonClass(to);
+
+               this.createSmoothScroll(to).play();
+       },
+
+       _setButtonClass: function(scroll){
+               // summary:
+               //              Disables the left scroll button if the tabs are scrolled all the way to the left,
+               //              or the right scroll button in the opposite case.
+               // scroll: Integer
+               //              amount of horizontal scroll
+
+               var scrollBounds = this._getScrollBounds();
+               this._leftBtn.set("disabled", scroll <= scrollBounds.min);
+               this._rightBtn.set("disabled", scroll >= scrollBounds.max);
+       }
+});
+
+dojo.declare("dijit.layout._ScrollingTabControllerButton",
+       dijit.form.Button,
+       {
+               baseClass: "dijitTab tabStripButton",
+
+               templateString: dojo.cache("dijit.layout", "templates/_ScrollingTabControllerButton.html", "<div dojoAttachEvent=\"onclick:_onButtonClick\">\n\t<div waiRole=\"presentation\" class=\"dijitTabInnerDiv\" dojoattachpoint=\"innerDiv,focusNode\">\n\t\t<div waiRole=\"presentation\" class=\"dijitTabContent dijitButtonContents\" dojoattachpoint=\"tabContent\">\n\t\t\t<img waiRole=\"presentation\" alt=\"\" src=\"${_blankGif}\" class=\"dijitTabStripIcon\" dojoAttachPoint=\"iconNode\"/>\n\t\t\t<span dojoAttachPoint=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n\t\t</div>\n\t</div>\n</div>\n"),
+
+               // Override inherited tabIndex: 0 from dijit.form.Button, because user shouldn't be
+               // able to tab to the left/right/menu buttons
+               tabIndex: "-1"
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit.layout.TabContainer"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout.TabContainer"] = true;
+dojo.provide("dijit.layout.TabContainer");
+
+
+
+
+
+dojo.declare("dijit.layout.TabContainer",
+       dijit.layout._TabContainerBase,
+       {
+               // summary:
+               //              A Container with tabs to select each child (only one of which is displayed at a time).
+               // description:
+               //              A TabContainer is a container that has multiple panes, but shows only
+               //              one pane at a time.  There are a set of tabs corresponding to each pane,
+               //              where each tab has the name (aka title) of the pane, and optionally a close button.
+
+               // useMenu: [const] Boolean
+               //              True if a menu should be used to select tabs when they are too
+               //              wide to fit the TabContainer, false otherwise.
+               useMenu: true,
+
+               // useSlider: [const] Boolean
+               //              True if a slider should be used to select tabs when they are too
+               //              wide to fit the TabContainer, false otherwise.
+               useSlider: true,
+
+               // controllerWidget: String
+               //              An optional parameter to override the widget used to display the tab labels
+               controllerWidget: "",
+
+               _makeController: function(/*DomNode*/ srcNode){
+                       // summary:
+                       //              Instantiate tablist controller widget and return reference to it.
+                       //              Callback from _TabContainerBase.postCreate().
+                       // tags:
+                       //              protected extension
+
+                       var cls = this.baseClass + "-tabs" + (this.doLayout ? "" : " dijitTabNoLayout"),
+                               TabController = dojo.getObject(this.controllerWidget);
+
+                       return new TabController({
+                               id: this.id + "_tablist",
+                               dir: this.dir,
+                               lang: this.lang,
+                               tabPosition: this.tabPosition,
+                               doLayout: this.doLayout,
+                               containerId: this.id,
+                               "class": cls,
+                               nested: this.nested,
+                               useMenu: this.useMenu,
+                               useSlider: this.useSlider,
+                               tabStripClass: this.tabStrip ? this.baseClass + (this.tabStrip ? "":"No") + "Strip": null
+                       }, srcNode);
+               },
+
+               postMixInProperties: function(){
+                       this.inherited(arguments);
+
+                       // Scrolling controller only works for horizontal non-nested tabs
+                       if(!this.controllerWidget){
+                               this.controllerWidget = (this.tabPosition == "top" || this.tabPosition == "bottom") && !this.nested ?
+                                                       "dijit.layout.ScrollingTabController" : "dijit.layout.TabController";
+                       }
+               }
+});
+
+
+}
+
+if(!dojo._hasResource["dijit.dijit-all"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.dijit-all"] = true;
+console.warn("dijit-all may include much more code than your application actually requires. We strongly recommend that you investigate a custom build or the web build tool");
+dojo.provide("dijit.dijit-all");
+
+/*=====
+dijit["dijit-all"] = {
+       // summary:
+       //              A rollup that includes every dijit. You probably don't need this.
+};
+=====*/
+
+
+
+
+
+
+
+
+
+
+// Editor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// Form widgets
+
+
+// Button widgets
+
+
+
+
+
+
+
+// TextBox widgets
+
+
+
+
+
+
+
+// Select widgets
+
+
+
+
+
+// Slider widgets
+
+
+
+
+
+
+
+// Textarea widgets
+
+
+
+// Layout widgets
+
+
+
+ //deprecated
+
+ //deprecated
+
+
+
+}
+
+
+dojo.i18n._preloadLocalizations("dijit.nls.dijit-all", ["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/lib/dijit/dijit.js b/lib/dijit/dijit.js
new file mode 100644 (file)
index 0000000..77b70ab
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+if(!dojo._hasResource["dojo.window"]){dojo._hasResource["dojo.window"]=true;dojo.provide("dojo.window");dojo.window.getBox=function(){var _1=(dojo.doc.compatMode=="BackCompat")?dojo.body():dojo.doc.documentElement;var _2=dojo._docScroll();return {w:_1.clientWidth,h:_1.clientHeight,l:_2.x,t:_2.y};};dojo.window.get=function(_3){if(dojo.isIE&&window!==document.parentWindow){_3.parentWindow.execScript("document._parentWindow = window;","Javascript");var _4=_3._parentWindow;_3._parentWindow=null;return _4;}return _3.parentWindow||_3.defaultView;};dojo.window.scrollIntoView=function(_5,_6){try{_5=dojo.byId(_5);var _7=_5.ownerDocument||dojo.doc,_8=_7.body||dojo.body(),_9=_7.documentElement||_8.parentNode,_a=dojo.isIE,_b=dojo.isWebKit;if((!(dojo.isMoz||_a||_b||dojo.isOpera)||_5==_8||_5==_9)&&(typeof _5.scrollIntoView!="undefined")){_5.scrollIntoView(false);return;}var _c=_7.compatMode=="BackCompat",_d=_c?_8:_9,_e=_b?_8:_d,_f=_d.clientWidth,_10=_d.clientHeight,rtl=!dojo._isBodyLtr(),_11=_6||dojo.position(_5),el=_5.parentNode,_12=function(el){return ((_a<=6||(_a&&_c))?false:(dojo.style(el,"position").toLowerCase()=="fixed"));};if(_12(_5)){return;}while(el){if(el==_8){el=_e;}var _13=dojo.position(el),_14=_12(el);if(el==_e){_13.w=_f;_13.h=_10;if(_e==_9&&_a&&rtl){_13.x+=_e.offsetWidth-_13.w;}if(_13.x<0||!_a){_13.x=0;}if(_13.y<0||!_a){_13.y=0;}}else{var pb=dojo._getPadBorderExtents(el);_13.w-=pb.w;_13.h-=pb.h;_13.x+=pb.l;_13.y+=pb.t;}if(el!=_e){var _15=el.clientWidth,_16=_13.w-_15;if(_15>0&&_16>0){_13.w=_15;if(_a&&rtl){_13.x+=_16;}}_15=el.clientHeight;_16=_13.h-_15;if(_15>0&&_16>0){_13.h=_15;}}if(_14){if(_13.y<0){_13.h+=_13.y;_13.y=0;}if(_13.x<0){_13.w+=_13.x;_13.x=0;}if(_13.y+_13.h>_10){_13.h=_10-_13.y;}if(_13.x+_13.w>_f){_13.w=_f-_13.x;}}var l=_11.x-_13.x,t=_11.y-Math.max(_13.y,0),r=l+_11.w-_13.w,bot=t+_11.h-_13.h;if(r*l>0){var s=Math[l<0?"max":"min"](l,r);_11.x+=el.scrollLeft;el.scrollLeft+=(_a>=8&&!_c&&rtl)?-s:s;_11.x-=el.scrollLeft;}if(bot*t>0){_11.y+=el.scrollTop;el.scrollTop+=Math[t<0?"max":"min"](t,bot);_11.y-=el.scrollTop;}el=(el!=_e)&&!_14&&el.parentNode;}}catch(error){console.error("scrollIntoView: "+error);_5.scrollIntoView(false);}};}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(_17){if(this._hash[_17.id]){throw new Error("Tried to register widget with id=="+_17.id+" but that id is already registered");}this._hash[_17.id]=_17;this.length++;},remove:function(id){if(this._hash[id]){delete this._hash[id];this.length--;}},forEach:function(_18,_19){_19=_19||dojo.global;var i=0,id;for(id in this._hash){_18.call(_19,this._hash[id],i++,this._hash);}return this;},filter:function(_1a,_1b){_1b=_1b||dojo.global;var res=new dijit.WidgetSet(),i=0,id;for(id in this._hash){var w=this._hash[id];if(_1a.call(_1b,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,_1c;for(id in this._hash){_1c=this._hash[id];if(_1c.declaredClass==cls){res.add(_1c);}}return res;},toArray:function(){var ar=[];for(var id in this._hash){ar.push(this._hash[id]);}return ar;},map:function(_1d,_1e){return dojo.map(this.toArray(),_1d,_1e);},every:function(_1f,_20){_20=_20||dojo.global;var x=0,i;for(i in this._hash){if(!_1f.call(_20,this._hash[i],x++,this._hash)){return false;}}return true;},some:function(_21,_22){_22=_22||dojo.global;var x=0,i;for(i in this._hash){if(_21.call(_22,this._hash[i],x++,this._hash)){return true;}}return false;}});(function(){dijit.registry=new dijit.WidgetSet();var _23=dijit.registry._hash,_24=dojo.attr,_25=dojo.hasAttr,_26=dojo.style;dijit.byId=function(id){return typeof id=="string"?_23[id]:id;};var _27={};dijit.getUniqueId=function(_28){var id;do{id=_28+"_"+(_28 in _27?++_27[_28]:_27[_28]=0);}while(_23[id]);return dijit._scopeName=="dijit"?id:dijit._scopeName+"_"+id;};dijit.findWidgets=function(_29){var _2a=[];function _2b(_2c){for(var _2d=_2c.firstChild;_2d;_2d=_2d.nextSibling){if(_2d.nodeType==1){var _2e=_2d.getAttribute("widgetId");if(_2e){_2a.push(_23[_2e]);}else{_2b(_2d);}}}};_2b(_29);return _2a;};dijit._destroyAll=function(){dijit._curFocus=null;dijit._prevFocus=null;dijit._activeStack=[];dojo.forEach(dijit.findWidgets(dojo.body()),function(_2f){if(!_2f._destroyed){if(_2f.destroyRecursive){_2f.destroyRecursive();}else{if(_2f.destroy){_2f.destroy();}}}});};if(dojo.isIE){dojo.addOnWindowUnload(function(){dijit._destroyAll();});}dijit.byNode=function(_30){return _23[_30.getAttribute("widgetId")];};dijit.getEnclosingWidget=function(_31){while(_31){var id=_31.getAttribute&&_31.getAttribute("widgetId");if(id){return _23[id];}_31=_31.parentNode;}return null;};var _32=(dijit._isElementShown=function(_33){var s=_26(_33);return (s.visibility!="hidden")&&(s.visibility!="collapsed")&&(s.display!="none")&&(_24(_33,"type")!="hidden");});dijit.hasDefaultTabStop=function(_34){switch(_34.nodeName.toLowerCase()){case "a":return _25(_34,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return true;case "iframe":if(dojo.isMoz){try{return _34.contentDocument.designMode=="on";}catch(err){return false;}}else{if(dojo.isWebKit){var doc=_34.contentDocument,_35=doc&&doc.body;return _35&&_35.contentEditable=="true";}else{try{doc=_34.contentWindow.document;_35=doc&&doc.body;return _35&&_35.firstChild&&_35.firstChild.contentEditable=="true";}catch(e){return false;}}}default:return _34.contentEditable=="true";}};var _36=(dijit.isTabNavigable=function(_37){if(_24(_37,"disabled")){return false;}else{if(_25(_37,"tabIndex")){return _24(_37,"tabIndex")>=0;}else{return dijit.hasDefaultTabStop(_37);}}});dijit._getTabNavigable=function(_38){var _39,_3a,_3b,_3c,_3d,_3e;var _3f=function(_40){dojo.query("> *",_40).forEach(function(_41){if((dojo.isIE&&_41.scopeName!=="HTML")||!_32(_41)){return;}if(_36(_41)){var _42=_24(_41,"tabIndex");if(!_25(_41,"tabIndex")||_42==0){if(!_39){_39=_41;}_3a=_41;}else{if(_42>0){if(!_3b||_42<_3c){_3c=_42;_3b=_41;}if(!_3d||_42>=_3e){_3e=_42;_3d=_41;}}}}if(_41.nodeName.toUpperCase()!="SELECT"){_3f(_41);}});};if(_32(_38)){_3f(_38);}return {first:_39,last:_3a,lowest:_3b,highest:_3d};};dijit.getFirstInTabbingOrder=function(_43){var _44=dijit._getTabNavigable(dojo.byId(_43));return _44.lowest?_44.lowest:_44.first;};dijit.getLastInTabbingOrder=function(_45){var _46=dijit._getTabNavigable(dojo.byId(_45));return _46.last?_46.last:_46.highest;};dijit.defaultDuration=dojo.config["defaultDuration"]||200;})();}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};}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(_47){var _48=dojo.doc,_49=_47.mark;if(_49){if(dojo.global.getSelection){var sel=dojo.global.getSelection();if(sel&&sel.removeAllRanges){if(_49.pRange){var r=_49;var n=r.node;n.selectionStart=r.start;n.selectionEnd=r.end;}else{sel.removeAllRanges();sel.addRange(_49);}}else{console.warn("No idea how to restore selection for this browser!");}}else{if(_48.selection&&_49){var rg;if(_49.pRange){rg=_49.range;}else{if(dojo.isArray(_49)){rg=_48.body.createControlRange();dojo.forEach(_49,function(n){rg.addElement(n);});}else{rg=_48.body.createTextRange();rg.moveToBookmark(_49);}}rg.select();}}}},getFocus:function(_4a,_4b){var _4c=!dijit._curFocus||(_4a&&dojo.isDescendant(dijit._curFocus,_4a.domNode))?dijit._prevFocus:dijit._curFocus;return {node:_4c,bookmark:(_4c==dijit._curFocus)&&dojo.withGlobal(_4b||dojo.global,dijit.getBookmark),openedForWindow:_4b};},focus:function(_4d){if(!_4d){return;}var _4e="node" in _4d?_4d.node:_4d,_4f=_4d.bookmark,_50=_4d.openedForWindow,_51=_4f?_4f.isCollapsed:false;if(_4e){var _52=(_4e.tagName.toLowerCase()=="iframe")?_4e.contentWindow:_4e;if(_52&&_52.focus){try{_52.focus();}catch(e){}}dijit._onFocusNode(_4e);}if(_4f&&dojo.withGlobal(_50||dojo.global,dijit.isCollapsed)&&!_51){if(_50){_50.focus();}try{dojo.withGlobal(_50||dojo.global,dijit.moveToBookmark,null,[_4f]);}catch(e2){}}},_activeStack:[],registerIframe:function(_53){return dijit.registerWin(_53.contentWindow,_53);},unregisterIframe:function(_54){dijit.unregisterWin(_54);},registerWin:function(_55,_56){var _57=function(evt){dijit._justMouseDowned=true;setTimeout(function(){dijit._justMouseDowned=false;},0);if(dojo.isIE&&evt&&evt.srcElement&&evt.srcElement.parentNode==null){return;}dijit._onTouchNode(_56||evt.target||evt.srcElement,"mouse");};var doc=dojo.isIE?_55.document.documentElement:_55.document;if(doc){if(dojo.isIE){doc.attachEvent("onmousedown",_57);var _58=function(evt){if(evt.srcElement.tagName.toLowerCase()!="#document"&&dijit.isTabNavigable(evt.srcElement)){dijit._onFocusNode(_56||evt.srcElement);}else{dijit._onTouchNode(_56||evt.srcElement);}};doc.attachEvent("onactivate",_58);var _59=function(evt){dijit._onBlurNode(_56||evt.srcElement);};doc.attachEvent("ondeactivate",_59);return function(){doc.detachEvent("onmousedown",_57);doc.detachEvent("onactivate",_58);doc.detachEvent("ondeactivate",_59);doc=null;};}else{doc.addEventListener("mousedown",_57,true);var _5a=function(evt){dijit._onFocusNode(_56||evt.target);};doc.addEventListener("focus",_5a,true);var _5b=function(evt){dijit._onBlurNode(_56||evt.target);};doc.addEventListener("blur",_5b,true);return function(){doc.removeEventListener("mousedown",_57,true);doc.removeEventListener("focus",_5a,true);doc.removeEventListener("blur",_5b,true);doc=null;};}}},unregisterWin:function(_5c){_5c&&_5c();},_onBlurNode:function(_5d){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(_5e,by){if(dijit._clearActiveWidgetsTimer){clearTimeout(dijit._clearActiveWidgetsTimer);delete dijit._clearActiveWidgetsTimer;}var _5f=[];try{while(_5e){var _60=dojo.attr(_5e,"dijitPopupParent");if(_60){_5e=dijit.byId(_60).domNode;}else{if(_5e.tagName&&_5e.tagName.toLowerCase()=="body"){if(_5e===dojo.body()){break;}_5e=dojo.window.get(_5e.ownerDocument).frameElement;}else{var id=_5e.getAttribute&&_5e.getAttribute("widgetId"),_61=id&&dijit.byId(id);if(_61&&!(by=="mouse"&&_61.get("disabled"))){_5f.unshift(id);}_5e=_5e.parentNode;}}}}catch(e){}dijit._setStack(_5f,by);},_onFocusNode:function(_62){if(!_62){return;}if(_62.nodeType==9){return;}dijit._onTouchNode(_62);if(_62==dijit._curFocus){return;}if(dijit._curFocus){dijit._prevFocus=dijit._curFocus;}dijit._curFocus=_62;dojo.publish("focusNode",[_62]);},_setStack:function(_63,by){var _64=dijit._activeStack;dijit._activeStack=_63;for(var _65=0;_65<Math.min(_64.length,_63.length);_65++){if(_64[_65]!=_63[_65]){break;}}var _66;for(var i=_64.length-1;i>=_65;i--){_66=dijit.byId(_64[i]);if(_66){_66._focused=false;_66._hasBeenBlurred=true;if(_66._onBlur){_66._onBlur(by);}dojo.publish("widgetBlur",[_66,by]);}}for(i=_65;i<_63.length;i++){_66=dijit.byId(_63[i]);if(_66){_66._focused=true;if(_66._onFocus){_66._onFocus(by);}dojo.publish("widgetFocus",[_66,by]);}}}});dojo.addOnLoad(function(){var _67=dijit.registerWin(window);if(dojo.isIE){dojo.addOnWindowUnload(function(){dijit.unregisterWin(_67);_67=null;});}});}if(!dojo._hasResource["dojo.AdapterRegistry"]){dojo._hasResource["dojo.AdapterRegistry"]=true;dojo.provide("dojo.AdapterRegistry");dojo.AdapterRegistry=function(_68){this.pairs=[];this.returnWrappers=_68||false;};dojo.extend(dojo.AdapterRegistry,{register:function(_69,_6a,_6b,_6c,_6d){this.pairs[((_6d)?"unshift":"push")]([_69,_6a,_6b,_6c]);},match:function(){for(var i=0;i<this.pairs.length;i++){var _6e=this.pairs[i];if(_6e[1].apply(this,arguments)){if((_6e[3])||(this.returnWrappers)){return _6e[2];}else{return _6e[2].apply(this,arguments);}}}throw new Error("No match found");},unregister:function(_6f){for(var i=0;i<this.pairs.length;i++){var _70=this.pairs[i];if(_70[0]==_6f){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(_71,pos,_72,_73){var _74=dojo.map(_72,function(_75){var c={corner:_75,pos:{x:pos.x,y:pos.y}};if(_73){c.pos.x+=_75.charAt(1)=="L"?_73.x:-_73.x;c.pos.y+=_75.charAt(0)=="T"?_73.y:-_73.y;}return c;});return dijit._place(_71,_74);};dijit._place=function(_76,_77,_78){var _79=dojo.window.getBox();if(!_76.parentNode||String(_76.parentNode.tagName).toLowerCase()!="body"){dojo.body().appendChild(_76);}var _7a=null;dojo.some(_77,function(_7b){var _7c=_7b.corner;var pos=_7b.pos;if(_78){_78(_76,_7b.aroundCorner,_7c);}var _7d=_76.style;var _7e=_7d.display;var _7f=_7d.visibility;_7d.visibility="hidden";_7d.display="";var mb=dojo.marginBox(_76);_7d.display=_7e;_7d.visibility=_7f;var _80=Math.max(_79.l,_7c.charAt(1)=="L"?pos.x:(pos.x-mb.w)),_81=Math.max(_79.t,_7c.charAt(0)=="T"?pos.y:(pos.y-mb.h)),_82=Math.min(_79.l+_79.w,_7c.charAt(1)=="L"?(_80+mb.w):pos.x),_83=Math.min(_79.t+_79.h,_7c.charAt(0)=="T"?(_81+mb.h):pos.y),_84=_82-_80,_85=_83-_81,_86=(mb.w-_84)+(mb.h-_85);if(_7a==null||_86<_7a.overflow){_7a={corner:_7c,aroundCorner:_7b.aroundCorner,x:_80,y:_81,w:_84,h:_85,overflow:_86};}return !_86;});_76.style.left=_7a.x+"px";_76.style.top=_7a.y+"px";if(_7a.overflow&&_78){_78(_76,_7a.aroundCorner,_7a.corner);}return _7a;};dijit.placeOnScreenAroundNode=function(_87,_88,_89,_8a){_88=dojo.byId(_88);var _8b=_88.style.display;_88.style.display="";var _8c=dojo.position(_88,true);_88.style.display=_8b;return dijit._placeOnScreenAroundRect(_87,_8c.x,_8c.y,_8c.w,_8c.h,_89,_8a);};dijit.placeOnScreenAroundRectangle=function(_8d,_8e,_8f,_90){return dijit._placeOnScreenAroundRect(_8d,_8e.x,_8e.y,_8e.width,_8e.height,_8f,_90);};dijit._placeOnScreenAroundRect=function(_91,x,y,_92,_93,_94,_95){var _96=[];for(var _97 in _94){_96.push({aroundCorner:_97,corner:_94[_97],pos:{x:x+(_97.charAt(1)=="L"?0:_92),y:y+(_97.charAt(0)=="T"?0:_93)}});}return dijit._place(_91,_96,_95);};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(_98,_99,_9a,_9b){return dijit.placementRegistry.match.apply(dijit.placementRegistry,arguments);};dijit.getPopupAroundAlignment=function(_9c,_9d){var _9e={};dojo.forEach(_9c,function(pos){switch(pos){case "after":_9e[_9d?"BR":"BL"]=_9d?"BL":"BR";break;case "before":_9e[_9d?"BL":"BR"]=_9d?"BR":"BL";break;case "below":_9e[_9d?"BL":"BR"]=_9d?"TL":"TR";_9e[_9d?"BR":"BL"]=_9d?"TR":"TL";break;case "above":default:_9e[_9d?"TL":"TR"]=_9d?"BL":"BR";_9e[_9d?"TR":"TL"]=_9d?"BR":"BL";break;}});return _9e;};}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,moveOffScreen:function(_9f){var _a0=_9f.parentNode;if(!_a0||!dojo.hasClass(_a0,"dijitPopup")){_a0=dojo.create("div",{"class":"dijitPopup",style:{visibility:"hidden",top:"-9999px"}},dojo.body());dijit.setWaiRole(_a0,"presentation");_a0.appendChild(_9f);}var s=_9f.style;s.display="";s.visibility="";s.position="";s.top="0px";dojo.style(_a0,{visibility:"hidden",top:"-9999px"});},getTopPopup:function(){var _a1=this._stack;for(var pi=_a1.length-1;pi>0&&_a1[pi].parent===_a1[pi-1].widget;pi--){}return _a1[pi];},open:function(_a2){var _a3=this._stack,_a4=_a2.popup,_a5=_a2.orient||((_a2.parent?_a2.parent.isLeftToRight():dojo._isBodyLtr())?{"BL":"TL","BR":"TR","TL":"BL","TR":"BR"}:{"BR":"TR","BL":"TL","TR":"BR","TL":"BL"}),_a6=_a2.around,id=(_a2.around&&_a2.around.id)?(_a2.around.id+"_dropdown"):("popup_"+this._idGen++);var _a7=_a4.domNode.parentNode;if(!_a7||!dojo.hasClass(_a7,"dijitPopup")){this.moveOffScreen(_a4.domNode);_a7=_a4.domNode.parentNode;}dojo.attr(_a7,{id:id,style:{zIndex:this._beginZIndex+_a3.length},"class":"dijitPopup "+(_a4.baseClass||_a4["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:_a2.parent?_a2.parent.id:""});if(dojo.isIE||dojo.isMoz){var _a8=_a7.childNodes[1];if(!_a8){_a8=new dijit.BackgroundIframe(_a7);}}var _a9=_a6?dijit.placeOnScreenAroundElement(_a7,_a6,_a5,_a4.orient?dojo.hitch(_a4,"orient"):null):dijit.placeOnScreen(_a7,_a2,_a5=="R"?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],_a2.padding);_a7.style.visibility="visible";_a4.domNode.style.visibility="visible";var _aa=[];_aa.push(dojo.connect(_a7,"onkeypress",this,function(evt){if(evt.charOrCode==dojo.keys.ESCAPE&&_a2.onCancel){dojo.stopEvent(evt);_a2.onCancel();}else{if(evt.charOrCode===dojo.keys.TAB){dojo.stopEvent(evt);var _ab=this.getTopPopup();if(_ab&&_ab.onCancel){_ab.onCancel();}}}}));if(_a4.onCancel){_aa.push(dojo.connect(_a4,"onCancel",_a2.onCancel));}_aa.push(dojo.connect(_a4,_a4.onExecute?"onExecute":"onChange",this,function(){var _ac=this.getTopPopup();if(_ac&&_ac.onExecute){_ac.onExecute();}}));_a3.push({wrapper:_a7,iframe:_a8,widget:_a4,parent:_a2.parent,onExecute:_a2.onExecute,onCancel:_a2.onCancel,onClose:_a2.onClose,handlers:_aa});if(_a4.onOpen){_a4.onOpen(_a9);}return _a9;},close:function(_ad){var _ae=this._stack;while(dojo.some(_ae,function(_af){return _af.widget==_ad;})){var top=_ae.pop(),_b0=top.wrapper,_b1=top.iframe,_b2=top.widget,_b3=top.onClose;if(_b2.onClose){_b2.onClose();}dojo.forEach(top.handlers,dojo.disconnect);if(_b2&&_b2.domNode){this.moveOffScreen(_b2.domNode);}else{dojo.destroy(_b0);}if(_b3){_b3();}}}};dijit._frames=new function(){var _b4=[];this.pop=function(){var _b5;if(_b4.length){_b5=_b4.pop();_b5.style.display="";}else{if(dojo.isIE){var _b6=dojo.config["dojoBlankHtmlUrl"]||(dojo.moduleUrl("dojo","resources/blank.html")+"")||"javascript:\"\"";var _b7="<iframe src='"+_b6+"'"+" style='position: absolute; left: 0px; top: 0px;"+"z-index: -1; filter:Alpha(Opacity=\"0\");'>";_b5=dojo.doc.createElement(_b7);}else{_b5=dojo.create("iframe");_b5.src="javascript:\"\"";_b5.className="dijitBackgroundIframe";dojo.style(_b5,"opacity",0.1);}_b5.tabIndex=-1;dijit.setWaiRole(_b5,"presentation");}return _b5;};this.push=function(_b8){_b8.style.display="none";_b4.push(_b8);};}();dijit.BackgroundIframe=function(_b9){if(!_b9.id){throw new Error("no id");}if(dojo.isIE||dojo.isMoz){var _ba=dijit._frames.pop();_b9.appendChild(_ba);if(dojo.isIE<7){this.resize(_b9);this._conn=dojo.connect(_b9,"onresize",this,function(){this.resize(_b9);});}else{dojo.style(_ba,{width:"100%",height:"100%"});}this.iframe=_ba;}};dojo.extend(dijit.BackgroundIframe,{resize:function(_bb){if(this.iframe&&dojo.isIE<7){dojo.style(this.iframe,{width:_bb.offsetWidth+"px",height:_bb.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(_bc,pos){dojo.window.scrollIntoView(_bc,pos);};}if(!dojo._hasResource["dojo.uacss"]){dojo._hasResource["dojo.uacss"]=true;dojo.provide("dojo.uacss");(function(){var d=dojo,_bd=d.doc.documentElement,ie=d.isIE,_be=d.isOpera,maj=Math.floor,ff=d.isFF,_bf=d.boxModel.replace(/-/,""),_c0={dj_ie:ie,dj_ie6:maj(ie)==6,dj_ie7:maj(ie)==7,dj_ie8:maj(ie)==8,dj_quirks:d.isQuirks,dj_iequirks:ie&&d.isQuirks,dj_opera:_be,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};_c0["dj_"+_bf]=true;var _c1="";for(var clz in _c0){if(_c0[clz]){_c1+=clz+" ";}}_bd.className=d.trim(_bd.className+" "+_c1);dojo._loaders.unshift(function(){if(!dojo._isBodyLtr()){var _c2="dj_rtl dijitRtl "+_c1.replace(/ /g,"-rtl ");_bd.className=d.trim(_bd.className+" "+_c2);}});})();}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,_c3,_c4,_c5,obj,_c6,_c7,_c8){if(obj!=this._obj){this.stop();this._initialDelay=_c7||500;this._subsequentDelay=_c6||0.9;this._minDelay=_c8||10;this._obj=obj;this._evt=evt;this._node=_c4;this._currentTimeout=-1;this._count=-1;this._callback=dojo.hitch(_c3,_c5);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(_c9,_ca,_cb,_cc,_cd,_ce,_cf){if(_ca.keyCode){_ca.charOrCode=_ca.keyCode;dojo.deprecated("keyCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");}else{if(_ca.charCode){_ca.charOrCode=String.fromCharCode(_ca.charCode);dojo.deprecated("charCode attribute parameter for dijit.typematic.addKeyListener is deprecated. Use charOrCode instead.","","2.0");}}return [dojo.connect(_c9,"onkeypress",this,function(evt){if(evt.charOrCode==_ca.charOrCode&&(_ca.ctrlKey===undefined||_ca.ctrlKey==evt.ctrlKey)&&(_ca.altKey===undefined||_ca.altKey==evt.altKey)&&(_ca.metaKey===undefined||_ca.metaKey==(evt.metaKey||false))&&(_ca.shiftKey===undefined||_ca.shiftKey==evt.shiftKey)){dojo.stopEvent(evt);dijit.typematic.trigger(evt,_cb,_c9,_cc,_ca,_cd,_ce,_cf);}else{if(dijit.typematic._obj==_ca){dijit.typematic.stop();}}}),dojo.connect(_c9,"onkeyup",this,function(evt){if(dijit.typematic._obj==_ca){dijit.typematic.stop();}})];},addMouseListener:function(_d0,_d1,_d2,_d3,_d4,_d5){var dc=dojo.connect;return [dc(_d0,"mousedown",this,function(evt){dojo.stopEvent(evt);dijit.typematic.trigger(evt,_d1,_d0,_d2,_d0,_d3,_d4,_d5);}),dc(_d0,"mouseup",this,function(evt){dojo.stopEvent(evt);dijit.typematic.stop();}),dc(_d0,"mouseout",this,function(evt){dojo.stopEvent(evt);dijit.typematic.stop();}),dc(_d0,"mousemove",this,function(evt){evt.preventDefault();}),dc(_d0,"dblclick",this,function(evt){dojo.stopEvent(evt);if(dojo.isIE){dijit.typematic.trigger(evt,_d1,_d0,_d2,_d0,_d3,_d4,_d5);setTimeout(dojo.hitch(this,dijit.typematic.stop),50);}})];},addListener:function(_d6,_d7,_d8,_d9,_da,_db,_dc,_dd){return this.addKeyListener(_d7,_d8,_d9,_da,_db,_dc,_dd).concat(this.addMouseListener(_d6,_d9,_da,_db,_dc,_dd));}};}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 _de=cs.backgroundImage;var _df=(cs.borderTopColor==cs.borderRightColor)||(_de!=null&&(_de=="none"||_de=="url(invalid-url:)"));dojo[_df?"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,{_XhtmlRoles:/banner|contentinfo|definition|main|navigation|search|note|secondary|seealso/,hasWaiRole:function(_e0,_e1){var _e2=this.getWaiRole(_e0);return _e1?(_e2.indexOf(_e1)>-1):(_e2.length>0);},getWaiRole:function(_e3){return dojo.trim((dojo.attr(_e3,"role")||"").replace(this._XhtmlRoles,"").replace("wairole:",""));},setWaiRole:function(_e4,_e5){var _e6=dojo.attr(_e4,"role")||"";if(!this._XhtmlRoles.test(_e6)){dojo.attr(_e4,"role",_e5);}else{if((" "+_e6+" ").indexOf(" "+_e5+" ")<0){var _e7=dojo.trim(_e6.replace(this._XhtmlRoles,""));var _e8=dojo.trim(_e6.replace(_e7,""));dojo.attr(_e4,"role",_e8+(_e8?" ":"")+_e5);}}},removeWaiRole:function(_e9,_ea){var _eb=dojo.attr(_e9,"role");if(!_eb){return;}if(_ea){var t=dojo.trim((" "+_eb+" ").replace(" "+_ea+" "," "));dojo.attr(_e9,"role",t);}else{_e9.removeAttribute("role");}},hasWaiState:function(_ec,_ed){return _ec.hasAttribute?_ec.hasAttribute("aria-"+_ed):!!_ec.getAttribute("aria-"+_ed);},getWaiState:function(_ee,_ef){return _ee.getAttribute("aria-"+_ef)||"";},setWaiState:function(_f0,_f1,_f2){_f0.setAttribute("aria-"+_f1,_f2);},removeWaiState:function(_f3,_f4){_f3.removeAttribute("aria-"+_f4);}});}if(!dojo._hasResource["dijit._base"]){dojo._hasResource["dijit._base"]=true;dojo.provide("dijit._base");}if(!dojo._hasResource["dojo.date.stamp"]){dojo._hasResource["dojo.date.stamp"]=true;dojo.provide("dojo.date.stamp");dojo.date.stamp.fromISOString=function(_f5,_f6){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 _f7=dojo.date.stamp._isoRegExp.exec(_f5),_f8=null;if(_f7){_f7.shift();if(_f7[1]){_f7[1]--;}if(_f7[6]){_f7[6]*=1000;}if(_f6){_f6=new Date(_f6);dojo.forEach(dojo.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(_f9){return _f6["get"+_f9]();}),function(_fa,_fb){_f7[_fb]=_f7[_fb]||_fa;});}_f8=new Date(_f7[0]||1970,_f7[1]||0,_f7[2]||1,_f7[3]||0,_f7[4]||0,_f7[5]||0,_f7[6]||0);if(_f7[0]<100){_f8.setFullYear(_f7[0]||1970);}var _fc=0,_fd=_f7[7]&&_f7[7].charAt(0);if(_fd!="Z"){_fc=((_f7[8]||0)*60)+(Number(_f7[9])||0);if(_fd!="-"){_fc*=-1;}}if(_fd){_fc-=_f8.getTimezoneOffset();}if(_fc){_f8.setTime(_f8.getTime()+_fc*60000);}}return _f8;};dojo.date.stamp.toISOString=function(_fe,_ff){var _100=function(n){return (n<10)?"0"+n:n;};_ff=_ff||{};var _101=[],_102=_ff.zulu?"getUTC":"get",date="";if(_ff.selector!="time"){var year=_fe[_102+"FullYear"]();date=["0000".substr((year+"").length)+year,_100(_fe[_102+"Month"]()+1),_100(_fe[_102+"Date"]())].join("-");}_101.push(date);if(_ff.selector!="date"){var time=[_100(_fe[_102+"Hours"]()),_100(_fe[_102+"Minutes"]()),_100(_fe[_102+"Seconds"]())].join(":");var _103=_fe[_102+"Milliseconds"]();if(_ff.milliseconds){time+="."+(_103<100?"0":"")+_100(_103);}if(_ff.zulu){time+="Z";}else{if(_ff.selector!="time"){var _104=_fe.getTimezoneOffset();var _105=Math.abs(_104);time+=(_104>0?"-":"+")+_100(Math.floor(_105/60))+":"+_100(_105%60);}}_101.push(time);}return _101.join("T");};}if(!dojo._hasResource["dojo.parser"]){dojo._hasResource["dojo.parser"]=true;dojo.provide("dojo.parser");new Date("X");dojo.parser=new function(){var d=dojo;this._attrName=d._scopeName+"Type";this._query="["+this._attrName+"]";function _106(_107){if(d.isString(_107)){return "string";}if(typeof _107=="number"){return "number";}if(typeof _107=="boolean"){return "boolean";}if(d.isFunction(_107)){return "function";}if(d.isArray(_107)){return "array";}if(_107 instanceof Date){return "date";}if(_107 instanceof d._Url){return "url";}return "object";};function _108(_109,type){switch(type){case "string":return _109;case "number":return _109.length?Number(_109):NaN;case "boolean":return typeof _109=="boolean"?_109:!(_109.toLowerCase()=="false");case "function":if(d.isFunction(_109)){_109=_109.toString();_109=d.trim(_109.substring(_109.indexOf("{")+1,_109.length-1));}try{if(_109===""||_109.search(/[^\w\.]+/i)!=-1){return new Function(_109);}else{return d.getObject(_109,false)||new Function(_109);}}catch(e){return new Function();}case "array":return _109?_109.split(/\s*,\s*/):[];case "date":switch(_109){case "":return new Date("");case "now":return new Date();default:return d.date.stamp.fromISOString(_109);}case "url":return d.baseUrl+_109;default:return d.fromJson(_109);}};var _10a={};dojo.connect(dojo,"extend",function(){_10a={};});function _10b(_10c){if(!_10a[_10c]){var cls=d.getObject(_10c);if(!cls){return null;}var _10d=cls.prototype;var _10e={},_10f={};for(var name in _10d){if(name.charAt(0)=="_"){continue;}if(name in _10f){continue;}var _110=_10d[name];_10e[name]=_106(_110);}_10a[_10c]={cls:cls,params:_10e};}return _10a[_10c];};this._functionFromScript=function(_111){var _112="";var _113="";var _114=_111.getAttribute("args");if(_114){d.forEach(_114.split(/\s*,\s*/),function(part,idx){_112+="var "+part+" = arguments["+idx+"]; ";});}var _115=_111.getAttribute("with");if(_115&&_115.length){d.forEach(_115.split(/\s*,\s*/),function(part){_112+="with("+part+"){";_113+="}";});}return new Function(_112+_111.innerHTML+_113);};this.instantiate=function(_116,_117,args){var _118=[],dp=dojo.parser;_117=_117||{};args=args||{};d.forEach(_116,function(obj){if(!obj){return;}var node,type,_119,_11a,_11b;if(obj.node){node=obj.node;type=obj.type;_119=obj.clsInfo||(type&&_10b(type));_11a=_119&&_119.cls;_11b=obj.scripts;}else{node=obj;type=dp._attrName in _117?_117[dp._attrName]:node.getAttribute(dp._attrName);_119=type&&_10b(type);_11a=_119&&_119.cls;_11b=(_11a&&(_11a._noScript||_11a.prototype._noScript)?[]:d.query("> script[type^='dojo/']",node));}if(!_119){throw new Error("Could not load class '"+type);}var _11c={},_11d=node.attributes;if(args.defaults){dojo.mixin(_11c,args.defaults);}if(obj.inherited){dojo.mixin(_11c,obj.inherited);}for(var name in _119.params){var item=name in _117?{value:_117[name],specified:true}:_11d.getNamedItem(name);if(!item||(!item.specified&&(!dojo.isIE||name.toLowerCase()!="value"))){continue;}var _11e=item.value;switch(name){case "class":_11e="className" in _117?_117.className:node.className;break;case "style":_11e="style" in _117?_117.style:(node.style&&node.style.cssText);}var _11f=_119.params[name];if(typeof _11e=="string"){_11c[name]=_108(_11e,_11f);}else{_11c[name]=_11e;}}var _120=[],_121=[];d.forEach(_11b,function(_122){node.removeChild(_122);var _123=_122.getAttribute("event"),type=_122.getAttribute("type"),nf=d.parser._functionFromScript(_122);if(_123){if(type=="dojo/connect"){_120.push({event:_123,func:nf});}else{_11c[_123]=nf;}}else{_121.push(nf);}});var _124=_11a.markupFactory||_11a.prototype&&_11a.prototype.markupFactory;var _125=_124?_124(_11c,node,_11a):new _11a(_11c,node);_118.push(_125);var _126=node.getAttribute("jsId");if(_126){d.setObject(_126,_125);}d.forEach(_120,function(_127){d.connect(_125,_127.event,null,_127.func);});d.forEach(_121,function(func){func.call(_125);});});if(!_117._started){d.forEach(_118,function(_128){if(!args.noStart&&_128&&_128.startup&&!_128._started&&(!_128.getParent||!_128.getParent())){_128.startup();}});}return _118;};this.parse=function(_129,args){var root;if(!args&&_129&&_129.rootNode){args=_129;root=args.rootNode;}else{root=_129;}var _12a=this._attrName;function scan(_12b,list){var _12c=dojo.clone(_12b.inherited);dojo.forEach(["dir","lang"],function(name){var val=_12b.node.getAttribute(name);if(val){_12c[name]=val;}});var _12d=_12b.scripts;var _12e=!_12b.clsInfo||!_12b.clsInfo.cls.prototype.stopParser;for(var _12f=_12b.node.firstChild;_12f;_12f=_12f.nextSibling){if(_12f.nodeType==1){var type=_12e&&_12f.getAttribute(_12a);if(type){var _130={"type":type,clsInfo:_10b(type),node:_12f,scripts:[],inherited:_12c};list.push(_130);scan(_130,list);}else{if(_12d&&_12f.nodeName.toLowerCase()=="script"){type=_12f.getAttribute("type");if(type&&/^dojo\//i.test(type)){_12d.push(_12f);}}else{if(_12e){scan({node:_12f,inherited:_12c},list);}}}}}};var list=[];scan({node:root?dojo.byId(root):dojo.body(),inherited:(args&&args.inherited)||{dir:dojo._isBodyLtr()?"ltr":"rtl"}},list);return this.instantiate(list,null,args);};}();(function(){var _131=function(){if(dojo.config.parseOnLoad){dojo.parser.parse();}};if(dojo.exists("dijit.wai.onload")&&(dijit.wai.onload===dojo._loaders[0])){dojo._loaders.splice(1,0,_131);}else{dojo._loaders.unshift(_131);}})();}if(!dojo._hasResource["dijit._Widget"]){dojo._hasResource["dijit._Widget"]=true;dojo.provide("dijit._Widget");dojo.require("dijit._base");dojo.connect(dojo,"_connect",function(_132,_133){if(_132&&dojo.isFunction(_132._onConnect)){_132._onConnect(_133);}});dijit._connectOnUseEventHandler=function(_134){};dijit._lastKeyDownNode=null;if(dojo.isIE){(function(){var _135=function(evt){dijit._lastKeyDownNode=evt.srcElement;};dojo.doc.attachEvent("onkeydown",_135);dojo.addOnWindowUnload(function(){dojo.doc.detachEvent("onkeydown",_135);});})();}else{dojo.doc.addEventListener("keydown",function(evt){dijit._lastKeyDownNode=evt.target;},true);}(function(){var _136={},_137=function(_138){var dc=_138.declaredClass;if(!_136[dc]){var r=[],_139,_13a=_138.constructor.prototype;for(var _13b in _13a){if(dojo.isFunction(_13a[_13b])&&(_139=_13b.match(/^_set([a-zA-Z]*)Attr$/))&&_139[1]){r.push(_139[1].charAt(0).toLowerCase()+_139[1].substr(1));}}_136[dc]=r;}return _136[dc]||[];};dojo.declare("dijit._Widget",null,{id:"",lang:"",dir:"","class":"",style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,attributeMap:{id:"",dir:"",lang:"","class":"",style:"",title:""},_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,_blankGif:(dojo.config.blankGif||dojo.moduleUrl("dojo","resources/blank.gif")).toString(),postscript:function(_13c,_13d){this.create(_13c,_13d);},create:function(_13e,_13f){this.srcNodeRef=dojo.byId(_13f);this._connects=[];this._subscribes=[];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];}}if(this.srcNodeRef&&(typeof this.srcNodeRef.id=="string")){this.id=this.srcNodeRef.id;}if(_13e){this.params=_13e;dojo.mixin(this,_13e);}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 _140=this.srcNodeRef;if(_140&&_140.parentNode){_140.parentNode.replaceChild(this.domNode,_140);}for(attr in this.params){this._onConnect(attr);}}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 _141=function(attr,_142){if((_142.params&&attr in _142.params)||_142[attr]){_142.set(attr,_142[attr]);}};for(var attr in this.attributeMap){_141(attr,this);}dojo.forEach(_137(this),function(a){if(!(a in this.attributeMap)){_141(a,this);}},this);},postMixInProperties:function(){},buildRendering:function(){this.domNode=this.srcNodeRef||dojo.create("div");},postCreate:function(){if(this.baseClass){var _143=this.baseClass.split(" ");if(!this.isLeftToRight()){_143=_143.concat(dojo.map(_143,function(name){return name+"Rtl";}));}dojo.addClass(this.domNode,_143);}},startup:function(){this._started=true;},destroyRecursive:function(_144){this._beingDestroyed=true;this.destroyDescendants(_144);this.destroy(_144);},destroy:function(_145){this._beingDestroyed=true;this.uninitialize();var d=dojo,dfe=d.forEach,dun=d.unsubscribe;dfe(this._connects,function(_146){dfe(_146,d.disconnect);});dfe(this._subscribes,function(_147){dun(_147);});dfe(this._supportingWidgets||[],function(w){if(w.destroyRecursive){w.destroyRecursive();}else{if(w.destroy){w.destroy();}}});this.destroyRendering(_145);dijit.registry.remove(this.id);this._destroyed=true;},destroyRendering:function(_148){if(this.bgIframe){this.bgIframe.destroy(_148);delete this.bgIframe;}if(this.domNode){if(_148){dojo.removeAttr(this.domNode,"widgetId");}else{dojo.destroy(this.domNode);}delete this.domNode;}if(this.srcNodeRef){if(!_148){dojo.destroy(this.srcNodeRef);}delete this.srcNodeRef;}},destroyDescendants:function(_149){dojo.forEach(this.getChildren(),function(_14a){if(_14a.destroyRecursive){_14a.destroyRecursive(_149);}});},uninitialize:function(){return false;},onFocus:function(){},onBlur:function(){},_onFocus:function(e){this.onFocus();},_onBlur:function(){this.onBlur();},_onConnect:function(_14b){if(_14b in this._deferredConnects){var _14c=this[this._deferredConnects[_14b]||"domNode"];this.connect(_14c,_14b.toLowerCase(),_14b);delete this._deferredConnects[_14b];}},_setClassAttr:function(_14d){var _14e=this[this.attributeMap["class"]||"domNode"];dojo.removeClass(_14e,this["class"]);this["class"]=_14d;dojo.addClass(_14e,_14d);},_setStyleAttr:function(_14f){var _150=this[this.attributeMap.style||"domNode"];if(dojo.isObject(_14f)){dojo.style(_150,_14f);}else{if(_150.style.cssText){_150.style.cssText+="; "+_14f;}else{_150.style.cssText=_14f;}}this.style=_14f;},setAttribute:function(attr,_151){dojo.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(attr,_151);},_attrToDom:function(attr,_152){var _153=this.attributeMap[attr];dojo.forEach(dojo.isArray(_153)?_153:[_153],function(_154){var _155=this[_154.node||_154||"domNode"];var type=_154.type||"attribute";switch(type){case "attribute":if(dojo.isFunction(_152)){_152=dojo.hitch(this,_152);}var _156=_154.attribute?_154.attribute:(/^on[A-Z][a-zA-Z]*$/.test(attr)?attr.toLowerCase():attr);dojo.attr(_155,_156,_152);break;case "innerText":_155.innerHTML="";_155.appendChild(dojo.doc.createTextNode(_152));break;case "innerHTML":_155.innerHTML=_152;break;case "class":dojo.removeClass(_155,this[attr]);dojo.addClass(_155,_152);break;}},this);this[attr]=_152;},attr:function(name,_157){if(dojo.config.isDebug){var _158=arguments.callee._ach||(arguments.callee._ach={}),_159=(arguments.callee.caller||"unknown caller").toString();if(!_158[_159]){dojo.deprecated(this.declaredClass+"::attr() is deprecated. Use get() or set() instead, called from "+_159,"","2.0");_158[_159]=true;}}var args=arguments.length;if(args>=2||typeof name==="object"){return this.set.apply(this,arguments);}else{return this.get(name);}},get:function(name){var _15a=this._getAttrNames(name);return this[_15a.g]?this[_15a.g]():this[name];},set:function(name,_15b){if(typeof name==="object"){for(var x in name){this.set(x,name[x]);}return this;}var _15c=this._getAttrNames(name);if(this[_15c.s]){var _15d=this[_15c.s].apply(this,Array.prototype.slice.call(arguments,1));}else{if(name in this.attributeMap){this._attrToDom(name,_15b);}var _15e=this[name];this[name]=_15b;}return _15d||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"});},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):[];},nodesWithKeyClick:["input","button"],connect:function(obj,_15f,_160){var d=dojo,dc=d._connect,_161=[];if(_15f=="ondijitclick"){if(dojo.indexOf(this.nodesWithKeyClick,obj.nodeName.toLowerCase())==-1){var m=d.hitch(this,_160);_161.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;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);}}));}_15f="onclick";}_161.push(dc(obj,_15f,this,_160));this._connects.push(_161);return _161;},disconnect:function(_162){for(var i=0;i<this._connects.length;i++){if(this._connects[i]==_162){dojo.forEach(_162,dojo.disconnect);this._connects.splice(i,1);return;}}},subscribe:function(_163,_164){var d=dojo,_165=d.subscribe(_163,this,_164);this._subscribes.push(_165);return _165;},unsubscribe:function(_166){for(var i=0;i<this._subscribes.length;i++){if(this._subscribes[i]==_166){dojo.unsubscribe(_166);this._subscribes.splice(i,1);return;}}},isLeftToRight:function(){return this.dir?(this.dir=="ltr"):dojo._isBodyLtr();},isFocusable:function(){return this.focus&&(dojo.style(this.domNode,"display")!="none");},placeAt:function(_167,_168){if(_167.declaredClass&&_167.addChild){_167.addChild(this,_168);}else{dojo.place(this.domNode,_167,_168);}return this;},_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.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(_169,map,_16a,_16b){_16b=_16b||dojo.global;_16a=_16a?dojo.hitch(_16b,_16a):function(v){return v;};return _169.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(_16c,key,_16d){var _16e=dojo.getObject(key,false,map);if(_16d){_16e=dojo.getObject(_16d,false,_16b).call(_16b,_16e,key);}return _16a(_16e,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.cache"]){dojo._hasResource["dojo.cache"]=true;dojo.provide("dojo.cache");(function(){var _16f={};dojo.cache=function(_170,url,_171){if(typeof _170=="string"){var _172=dojo.moduleUrl(_170,url);}else{_172=_170;_171=url;}var key=_172.toString();var val=_171;if(_171!=undefined&&!dojo.isString(_171)){val=("value" in _171?_171.value:undefined);}var _173=_171&&_171.sanitize?true:false;if(typeof val=="string"){val=_16f[key]=_173?dojo.cache._sanitize(val):val;}else{if(val===null){delete _16f[key];}else{if(!(key in _16f)){val=dojo._getText(key);_16f[key]=_173?dojo.cache._sanitize(val):val;}val=_16f[key];}}return val;};dojo.cache._sanitize=function(val){if(val){val=val.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");var _174=val.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_174){val=_174[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=[];},_stringRepl:function(tmpl){var _175=this.declaredClass,_176=this;return dojo.string.substitute(tmpl,this,function(_177,key){if(key.charAt(0)=="!"){_177=dojo.getObject(key.substr(1),false,_176);}if(typeof _177=="undefined"){throw new Error(_175+" template:"+key);}if(_177==null){return "";}return key.charAt(0)=="!"?_177:_177.toString().replace(/"/g,"&quot;");},this);},buildRendering:function(){var _178=dijit._Templated.getCachedTemplate(this.templatePath,this.templateString,this._skipNodeCache);var node;if(dojo.isString(_178)){node=dojo._toDom(this._stringRepl(_178));if(node.nodeType!=1){throw new Error("Invalid template: "+_178);}}else{node=_178.cloneNode(true);}this.domNode=node;this._attachTemplateNodes(node);if(this.widgetsInTemplate){var _179=dojo.parser,qry,attr;if(_179._query!="[dojoType]"){qry=_179._query;attr=_179._attrName;_179._query="[dojoType]";_179._attrName="dojoType";}var cw=(this._startupWidgets=dojo.parser.parse(node,{noStart:!this._earlyTemplatedStartup,inherited:{dir:this.dir,lang:this.lang}}));if(qry){_179._query=qry;_179._attrName=attr;}this._supportingWidgets=dijit.findWidgets(node);this._attachTemplateNodes(cw,function(n,p){return n[p];});}this._fillContent(this.srcNodeRef);},_fillContent:function(_17a){var dest=this.containerNode;if(_17a&&dest){while(_17a.hasChildNodes()){dest.appendChild(_17a.firstChild);}}},_attachTemplateNodes:function(_17b,_17c){_17c=_17c||function(n,p){return n.getAttribute(p);};var _17d=dojo.isArray(_17b)?_17b:(_17b.all||_17b.getElementsByTagName("*"));var x=dojo.isArray(_17b)?0:-1;for(;x<_17d.length;x++){var _17e=(x==-1)?_17b:_17d[x];if(this.widgetsInTemplate&&_17c(_17e,"dojoType")){continue;}var _17f=_17c(_17e,"dojoAttachPoint");if(_17f){var _180,_181=_17f.split(/\s*,\s*/);while((_180=_181.shift())){if(dojo.isArray(this[_180])){this[_180].push(_17e);}else{this[_180]=_17e;}this._attachPoints.push(_180);}}var _182=_17c(_17e,"dojoAttachEvent");if(_182){var _183,_184=_182.split(/\s*,\s*/);var trim=dojo.trim;while((_183=_184.shift())){if(_183){var _185=null;if(_183.indexOf(":")!=-1){var _186=_183.split(":");_183=trim(_186[0]);_185=trim(_186[1]);}else{_183=trim(_183);}if(!_185){_185=_183;}this.connect(_17e,_183,_185);}}}var role=_17c(_17e,"waiRole");if(role){dijit.setWaiRole(_17e,role);}var _187=_17c(_17e,"waiState");if(_187){dojo.forEach(_187.split(/\s*,\s*/),function(_188){if(_188.indexOf("-")!=-1){var pair=_188.split("-");dijit.setWaiState(_17e,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(_189){delete this[_189];},this);this._attachPoints=[];this.inherited(arguments);}});dijit._Templated._templateCache={};dijit._Templated.getCachedTemplate=function(_18a,_18b,_18c){var _18d=dijit._Templated._templateCache;var key=_18b||_18a;var _18e=_18d[key];if(_18e){try{if(!_18e.ownerDocument||_18e.ownerDocument==dojo.doc){return _18e;}}catch(e){}dojo.destroy(_18e);}if(!_18b){_18b=dojo.cache(_18a,{sanitize:true});}_18b=dojo.string.trim(_18b);if(_18c||_18b.match(/\$\{([^\}]+)\}/g)){return (_18d[key]=_18b);}else{var node=dojo._toDom(_18b);if(node.nodeType!=1){throw new Error("Invalid template: "+_18b);}return (_18d[key]=node);}};if(dojo.isIE){dojo.addOnWindowUnload(function(){var _18f=dijit._Templated._templateCache;for(var key in _18f){var _190=_18f[key];if(typeof _190=="object"){dojo.destroy(_190);}delete _18f[key];}});}dojo.extend(dijit._Widget,{dojoAttachEvent:"",dojoAttachPoint:"",waiRole:"",waiState:""});}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(_191,_192){var _193=this.containerNode;if(_192&&typeof _192=="number"){var _194=this.getChildren();if(_194&&_194.length>=_192){_193=_194[_192-1].domNode;_192="after";}}dojo.place(_191.domNode,_193,_192);if(this._started&&!_191._started){_191.startup();}},removeChild:function(_195){if(typeof _195=="number"&&_195>0){_195=this.getChildren()[_195];}if(_195){var node=_195.domNode;if(node&&node.parentNode){node.parentNode.removeChild(node);}}},hasChildren:function(){return this.getChildren().length>0;},destroyDescendants:function(_196){dojo.forEach(this.getChildren(),function(_197){_197.destroyRecursive(_196);});},_getSiblingOfChild:function(_198,dir){var node=_198.domNode,_199=(dir>0?"nextSibling":"previousSibling");do{node=node[_199];}while(node&&(node.nodeType!=1||!dijit.byNode(node)));return node&&dijit.byNode(node);},getIndexOfChild:function(_19a){return dojo.indexOf(this.getChildren(),_19a);},startup:function(){if(this._started){return;}dojo.forEach(this.getChildren(),function(_19b){_19b.startup();});this.inherited(arguments);}});}if(!dojo._hasResource["dijit._Contained"]){dojo._hasResource["dijit._Contained"]=true;dojo.provide("dijit._Contained");dojo.declare("dijit._Contained",null,{getParent:function(){var _19c=dijit.getEnclosingWidget(this.domNode.parentNode);return _19c&&_19c.isContainer?_19c:null;},_getSibling:function(_19d){var node=this.domNode;do{node=node[_19d+"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.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,postCreate:function(){dojo.addClass(this.domNode,"dijitContainer");this.inherited(arguments);},startup:function(){if(this._started){return;}this.inherited(arguments);var _19e=this.getParent&&this.getParent();if(!(_19e&&_19e.isLayoutContainer)){this.resize();this.connect(dojo.isIE?this.domNode:dojo.global,"onresize",function(){this.resize();});}},resize:function(_19f,_1a0){var node=this.domNode;if(_19f){dojo.marginBox(node,_19f);if(_19f.t){node.style.top=_19f.t+"px";}if(_19f.l){node.style.left=_19f.l+"px";}}var mb=_1a0||{};dojo.mixin(mb,_19f||{});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(_1a1){dojo.addClass(_1a1.domNode,this.baseClass+"-child");if(_1a1.baseClass){dojo.addClass(_1a1.domNode,this.baseClass+"-"+_1a1.baseClass);}},addChild:function(_1a2,_1a3){this.inherited(arguments);if(this._started){this._setupChild(_1a2);}},removeChild:function(_1a4){dojo.removeClass(_1a4.domNode,this.baseClass+"-child");if(_1a4.baseClass){dojo.removeClass(_1a4.domNode,this.baseClass+"-"+_1a4.baseClass);}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 _1a5=function(word){return word.substring(0,1).toUpperCase()+word.substring(1);};var size=function(_1a6,dim){_1a6.resize?_1a6.resize(dim):dojo.marginBox(_1a6.domNode,dim);dojo.mixin(_1a6,dojo.marginBox(_1a6.domNode));dojo.mixin(_1a6,dim);};dijit.layout.layoutChildren=function(_1a7,dim,_1a8){dim=dojo.mixin({},dim);dojo.addClass(_1a7,"dijitLayoutContainer");_1a8=dojo.filter(_1a8,function(item){return item.layoutAlign!="client";}).concat(dojo.filter(_1a8,function(item){return item.layoutAlign=="client";}));dojo.forEach(_1a8,function(_1a9){var elm=_1a9.domNode,pos=_1a9.layoutAlign;var _1aa=elm.style;_1aa.left=dim.l+"px";_1aa.top=dim.t+"px";_1aa.bottom=_1aa.right="auto";dojo.addClass(elm,"dijitAlign"+_1a5(pos));if(pos=="top"||pos=="bottom"){size(_1a9,{w:dim.w});dim.h-=_1a9.h;if(pos=="top"){dim.t+=_1a9.h;}else{_1aa.top=dim.t+dim.h+"px";}}else{if(pos=="left"||pos=="right"){size(_1a9,{h:dim.h});dim.w-=_1a9.w;if(pos=="left"){dim.l+=_1a9.w;}else{_1aa.left=dim.l+dim.w+"px";}}else{if(pos=="client"){size(_1a9,dim);}}}});};})();}if(!dojo._hasResource["dijit._CssStateMixin"]){dojo._hasResource["dijit._CssStateMixin"]=true;dojo.provide("dijit._CssStateMixin");dojo.declare("dijit._CssStateMixin",[],{cssStateNodes:{},postCreate:function(){this.inherited(arguments);dojo.forEach(["onmouseenter","onmouseleave","onmousedown"],function(e){this.connect(this.domNode,e,"_cssMouseEvent");},this);this.connect(this,"set",function(name,_1ab){if(arguments.length>=2&&{disabled:true,readOnly:true,checked:true,selected:true}[name]){this._setStateClass();}});dojo.forEach(["_onFocus","_onBlur"],function(ap){this.connect(this,ap,"_setStateClass");},this);for(var ap in this.cssStateNodes){this._trackMouseState(this[ap],this.cssStateNodes[ap]);}this._setStateClass();},_cssMouseEvent:function(_1ac){if(!this.disabled){switch(_1ac.type){case "mouseenter":case "mouseover":this._hovering=true;this._active=this._mouseDown;break;case "mouseleave":case "mouseout":this._hovering=false;this._active=false;break;case "mousedown":this._active=true;this._mouseDown=true;var _1ad=this.connect(dojo.body(),"onmouseup",function(){this._active=false;this._mouseDown=false;this._setStateClass();this.disconnect(_1ad);});break;}this._setStateClass();}},_setStateClass:function(){var _1ae=this.baseClass.split(" ");function _1af(_1b0){_1ae=_1ae.concat(dojo.map(_1ae,function(c){return c+_1b0;}),"dijit"+_1b0);};if(!this.isLeftToRight()){_1af("Rtl");}if(this.checked){_1af("Checked");}if(this.state){_1af(this.state);}if(this.selected){_1af("Selected");}if(this.disabled){_1af("Disabled");}else{if(this.readOnly){_1af("ReadOnly");}else{if(this._active){_1af("Active");}else{if(this._hovering){_1af("Hover");}}}}if(this._focused){_1af("Focused");}var tn=this.stateNode||this.domNode,_1b1={};dojo.forEach(tn.className.split(" "),function(c){_1b1[c]=true;});if("_stateClasses" in this){dojo.forEach(this._stateClasses,function(c){delete _1b1[c];});}dojo.forEach(_1ae,function(c){_1b1[c]=true;});var _1b2=[];for(var c in _1b1){_1b2.push(c);}tn.className=_1b2.join(" ");this._stateClasses=_1ae;},_trackMouseState:function(node,_1b3){var _1b4=false,_1b5=false,_1b6=false;var self=this,cn=dojo.hitch(this,"connect",node);function _1b7(){var _1b8=("disabled" in self&&self.disabled)||("readonly" in self&&self.readonly);dojo.toggleClass(node,_1b3+"Hover",_1b4&&!_1b5&&!_1b8);dojo.toggleClass(node,_1b3+"Active",_1b5&&!_1b8);dojo.toggleClass(node,_1b3+"Focused",_1b6&&!_1b8);};cn("onmouseenter",function(){_1b4=true;_1b7();});cn("onmouseleave",function(){_1b4=false;_1b5=false;_1b7();});cn("onmousedown",function(){_1b5=true;_1b7();});cn("onmouseup",function(){_1b5=false;_1b7();});cn("onfocus",function(){_1b6=true;_1b7();});cn("onblur",function(){_1b6=false;_1b7();});this.connect(this,"set",function(name,_1b9){if(name=="disabled"||name=="readOnly"){_1b7();}});}});}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(_1ba){this.disabled=_1ba;dojo.attr(this.focusNode,"disabled",_1ba);if(this.valueNode){dojo.attr(this.valueNode,"disabled",_1ba);}dijit.setWaiState(this.focusNode,"disabled",_1ba);if(_1ba){this._hovering=false;this._active=false;var _1bb="tabIndex" in this.attributeMap?this.attributeMap.tabIndex:"focusNode";dojo.forEach(dojo.isArray(_1bb)?_1bb:[_1bb],function(_1bc){var node=this[_1bc];if(dojo.isWebKit||dijit.hasDefaultTabStop(node)){node.setAttribute("tabIndex","-1");}else{node.removeAttribute("tabIndex");}},this);}else{this.focusNode.setAttribute("tabIndex",this.tabIndex);}},setDisabled:function(_1bd){dojo.deprecated("setDisabled("+_1bd+") is deprecated. Use set('disabled',"+_1bd+") instead.","","2.0");this.set("disabled",_1bd);},_onFocus:function(e){if(this.scrollOnFocus){dojo.window.scrollIntoView(this.domNode);}this.inherited(arguments);},isFocusable:function(){return !this.disabled&&!this.readOnly&&this.focusNode&&(dojo.style(this.domNode,"display")!="none");},focus:function(){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(_1be){},_onChangeActive:false,_handleOnChange:function(_1bf,_1c0){this._lastValue=_1bf;if(this._lastValueReported==undefined&&(_1c0===null||!this._onChangeActive)){this._resetValue=this._lastValueReported=_1bf;}if((this.intermediateChanges||_1c0||_1c0===undefined)&&((typeof _1bf!=typeof this._lastValueReported)||this.compare(_1bf,this._lastValueReported)!=0)){this._lastValueReported=_1bf;if(this._onChangeActive){if(this._onChangeHandle){clearTimeout(this._onChangeHandle);}this._onChangeHandle=setTimeout(dojo.hitch(this,function(){this._onChangeHandle=null;this.onChange(_1bf);}),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(_1c1){dojo.deprecated("dijit.form._FormWidget:setValue("+_1c1+") is deprecated.  Use set('value',"+_1c1+") instead.","","2.0");this.set("value",_1c1);},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&&this.isFocusable()){var _1c2=this.connect(dojo.body(),"onmouseup",function(){if(this.isFocusable()){this.focus();}this.disconnect(_1c2);});}}});dojo.declare("dijit.form._FormValueWidget",dijit.form._FormWidget,{readOnly:false,attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{value:"",readOnly:"focusNode"}),_setReadOnlyAttr:function(_1c3){this.readOnly=_1c3;dojo.attr(this.focusNode,"readOnly",_1c3);dijit.setWaiState(this.focusNode,"readonly",_1c3);},postCreate:function(){this.inherited(arguments);if(dojo.isIE){this.connect(this.focusNode||this.domNode,"onkeydown",this._onKeyDown);}if(this._resetValue===undefined){this._resetValue=this.value;}},_setValueAttr:function(_1c4,_1c5){this.value=_1c4;this._handleOnChange(_1c4,_1c5);},_getValueAttr:function(){return this._lastValue;},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 _1c6=this.domNode;var _1c7=_1c6.parentNode;var _1c8=_1c6.firstChild||_1c6;var _1c9=_1c8.style.filter;var _1ca=this;while(_1c7&&_1c7.clientHeight==0){(function ping(){var _1cb=_1ca.connect(_1c7,"onscroll",function(e){_1ca.disconnect(_1cb);_1c8.style.filter=(new Date()).getMilliseconds();setTimeout(function(){_1c8.style.filter=_1c9;},0);});})();_1c7=_1c7.parentNode;}}}});}if(!dojo._hasResource["dijit.dijit"]){dojo._hasResource["dijit.dijit"]=true;dojo.provide("dijit.dijit");}
diff --git a/lib/dijit/dijit.js.uncompressed.js b/lib/dijit/dijit.js.uncompressed.js
new file mode 100644 (file)
index 0000000..076a032
--- /dev/null
@@ -0,0 +1,5961 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+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.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 = 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;
+                       }
+       
+                       if(el != scrollRoot){ // body, html sizes already have the scrollbar removed
+                               var clientSize = el.clientWidth,
+                                       scrollBarSize = elPos.w - clientSize;
+                               if(clientSize > 0 && scrollBarSize > 0){
+                                       elPos.w = clientSize;
+                                       if(isIE && rtl){ elPos.x += scrollBarSize; }
+                               }
+                               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);
+                               nodePos.x += el.scrollLeft;
+                               el.scrollLeft += (isIE >= 8 && !backCompat && rtl)? -s : 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["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){
+                                               outAry.push(hash[widgetId]);
+                                       }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.
+                               //TODO: feature detect "designMode" in elem.contentDocument?
+                               if(dojo.isMoz){
+                                       try{
+                                               return elem.contentDocument.designMode == "on";
+                                       }catch(err){
+                                               return false;
+                                       }
+                               }else if(dojo.isWebKit){
+                                       var doc = elem.contentDocument,
+                                               body = doc && doc.body;
+                                       return body && body.contentEditable == 'true';
+                               }else{
+                                       // 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{
+                                               doc = elem.contentWindow.document;
+                                               body = doc && doc.body;
+                                               return body && body.firstChild && body.firstChild.contentEditable == 'true';
+                                       }catch(e){
+                                               return false;
+                                       }
+                               }
+                       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;
+               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;
+                                               }
+                                       }
+                               }
+                               if(child.nodeName.toUpperCase() != 'SELECT'){
+                                       walkTree(child);
+                               }
+                       });
+               };
+               if(shown(root)){ walkTree(root) }
+               return { first: first, last: last, lowest: lowest, highest: 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["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");
+
+
+       // for dijit.isTabNavigable()
+
+// 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};
+                               }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){
+                               doc.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(){
+                                       doc.detachEvent('onmousedown', mousedownListener);
+                                       doc.detachEvent('onactivate', activateListener);
+                                       doc.detachEvent('ondeactivate', deactivateListener);
+                                       doc = null;     // prevent memory leak (apparent circular reference via closure)
+                               };
+                       }else{
+                               doc.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.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._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;
+                               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, /* Array */ choices, /* Function */ layoutNode){
+       // 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)
+       //              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.
+
+       // 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;
+
+               // 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 tooltips size changes based on position, due to triangle)
+               if(layoutNode){
+                       layoutNode(node, choice.aroundCorner, corner);
+               }
+
+               // 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
+                       };
+               }
+               return !overflow;
+       });
+
+       node.style.left = best.x + "px";
+       node.style.top = best.y + "px";
+       if(best.overflow && layoutNode){
+               layoutNode(node, best.aroundCorner, best.corner);
+       }
+       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 oldDisplay = aroundNode.style.display;
+       aroundNode.style.display="";
+       // #3172: use the slightly tighter border box instead of marginBox
+       var aroundNodePos = dojo.position(aroundNode, true);
+       aroundNode.style.display=oldDisplay;
+
+       // 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);
+};
+
+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":
+                               // 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":
+                       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,
+
+       moveOffScreen: function(/*DomNode*/ node){
+               // summary:
+               //              Initialization for nodes that will be used as popups
+               //
+               // description:
+               //              Puts node inside a wrapper <div>, and
+               //              positions wrapper div off screen, but not display:none, so that
+               //              the widget doesn't appear in the page flow and/or cause a blank
+               //              area at the bottom of the viewport (making scrollbar longer), but
+               //              initialization of contained widgets works correctly
+
+               var wrapper = node.parentNode;
+
+               // Create a wrapper widget for when this node (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
+               if(!wrapper || !dojo.hasClass(wrapper, "dijitPopup")){
+                       wrapper = dojo.create("div",{
+                               "class":"dijitPopup",
+                               style:{
+                                       visibility:"hidden",
+                                       top: "-9999px"
+                               }
+                       }, dojo.body());
+                       dijit.setWaiRole(wrapper, "presentation");
+                       wrapper.appendChild(node);
+               }
+
+
+               var s = node.style;
+               s.display = "";
+               s.visibility = "";
+               s.position = "";
+               s.top = "0px";
+
+               dojo.style(wrapper, {
+                       visibility: "hidden",
+                       // prevent transient scrollbar causing misalign (#5776), and initial flash in upper left (#10111)
+                       top: "-9999px"
+               });
+       },
+
+       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++);
+
+
+               // The wrapper may have already been created, but in case it wasn't, create here
+               var wrapper = widget.domNode.parentNode;
+               if(!wrapper || !dojo.hasClass(wrapper, "dijitPopup")){
+                       this.moveOffScreen(widget.domNode);
+                       wrapper = widget.domNode.parentNode;
+               }
+
+               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){
+                       var iframe = wrapper.childNodes[1];
+                       if(!iframe){
+                               iframe = 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.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({
+                       wrapper: wrapper,
+                       iframe: iframe,
+                       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
+
+               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(dojo.some(stack, function(elem){return elem.widget == popup;})){
+                       var top = stack.pop(),
+                               wrapper = top.wrapper,
+                               iframe = top.iframe,
+                               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);
+
+                       // Move the widget plus it's wrapper off screen, unless it has already been destroyed in above onClose() etc.
+                       if(widget && widget.domNode){
+                               this.moveOffScreen(widget.domNode);
+                       }else{
+                               dojo.destroy(wrapper);
+                       }
+                        
+                       if(onClose){
+                               onClose();
+                       }
+               }
+       }
+};
+
+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){
+                               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 didnt 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 = dijit._frames.pop();
+               node.appendChild(iframe);
+               if(dojo.isIE<7){
+                       this.resize(node);
+                       this._conn = dojo.connect(node, 'onresize', this, function(){
+                               this.resize(node);
+                       });
+               }else{
+                       dojo.style(iframe, {
+                               width: '100%',
+                               height: '100%'
+                       });
+               }
+               this.iframe = iframe;
+       }
+};
+
+dojo.extend(dijit.BackgroundIframe, {
+       resize: function(node){
+               // summary:
+               //              resize the iframe so its the same size as node
+               // description:
+               //              this function is a no-op in all browsers except
+               //              IE6, which does not support 100% width/height 
+               //              of absolute positioned iframes
+               if(this.iframe && dojo.isIE<7){
+                       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_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;
+// 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.
+
+dojo.provide("dijit._base.sniff");
+
+
+
+}
+
+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, {
+       _XhtmlRoles: /banner|contentinfo|definition|main|navigation|search|note|secondary|seealso/,
+
+       hasWaiRole: function(/*Element*/ elem, /*String*/ role){
+               // summary:
+               //              Determines if an element has a particular non-XHTML role.
+               // returns:
+               //              True if elem has the specific non-XHTML role attribute and false if not.
+               //              For backwards compatibility if role parameter not provided,
+               //              returns true if has non XHTML role
+               var waiRole = this.getWaiRole(elem);
+               return role ? (waiRole.indexOf(role) > -1) : (waiRole.length > 0);
+       },
+
+       getWaiRole: function(/*Element*/ elem){
+               // summary:
+               //              Gets the non-XHTML role for an element (which should be a wai role).
+               // returns:
+               //              The non-XHTML role of elem or an empty string if elem
+               //              does not have a role.
+                return dojo.trim((dojo.attr(elem, "role") || "").replace(this._XhtmlRoles,"").replace("wairole:",""));
+       },
+
+       setWaiRole: function(/*Element*/ elem, /*String*/ role){
+               // summary:
+               //              Sets the role on an element.
+               // description:
+               //              Replace existing role attribute with new role.
+               //              If elem already has an XHTML role, append this role to XHTML role
+               //              and remove other ARIA roles.
+
+               var curRole = dojo.attr(elem, "role") || "";
+               if(!this._XhtmlRoles.test(curRole)){
+                       dojo.attr(elem, "role", role);
+               }else{
+                       if((" "+ curRole +" ").indexOf(" " + role + " ") < 0){
+                               var clearXhtml = dojo.trim(curRole.replace(this._XhtmlRoles, ""));
+                               var cleanRole = dojo.trim(curRole.replace(clearXhtml, ""));
+                               dojo.attr(elem, "role", cleanRole + (cleanRole ? ' ' : '') + role);
+                       }
+               }
+       },
+
+       removeWaiRole: function(/*Element*/ elem, /*String*/ role){
+               // summary:
+               //              Removes the specified non-XHTML 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["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");
+
+// 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.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;
+       this._attrName = d._scopeName + "Type";
+       this._query = "[" + this._attrName + "]";
+
+       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 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).
+       dojo.connect(dojo, "extend", function(){
+               instanceClasses = {};
+       });
+
+       function getClassInfo(/*String*/ className){
+               // className:
+               //              fully qualified name (like "dijit.form.Button")
+               // returns:
+               //              structure like
+               //                      { 
+               //                              cls: dijit.Button, 
+               //                              params: { label: "string", disabled: "boolean"}
+               //                      }
+
+               if(!instanceClasses[className]){
+                       // get pointer to widget class
+                       var cls = d.getObject(className);
+                       if(!cls){ return null; }                // class not defined [yet]
+
+                       var proto = cls.prototype;
+       
+                       // get table of parameter names & types
+                       var params = {}, dummyClass = {};
+                       for(var name in proto){
+                               if(name.charAt(0)=="_"){ continue; }    // skip internal properties
+                               if(name in dummyClass){ continue; }             // skip "constructor" and "toString"
+                               var defVal = proto[name];
+                               params[name]=val2type(defVal);
+                       }
+
+                       instanceClasses[className] = { cls: cls, params: params };
+               }
+               return instanceClasses[className];
+       }
+
+       this._functionFromScript = function(script){
+               var preamble = "";
+               var suffix = "";
+               var argsStr = 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.
+               //              Supports 'noStart' and inherited.
+               var thelist = [], dp = dojo.parser;
+               mixin = mixin||{};
+               args = args||{};
+               
+               d.forEach(nodes, function(obj){
+                       if(!obj){ return; }
+
+                       // Get pointers to DOMNode, dojoType string, and clsInfo (metadata about the dojoType), etc.s
+                       var node, type, clsInfo, clazz, scripts;
+                       if(obj.node){
+                               // new format of nodes[] array, object w/lots of properties pre-computed for me
+                               node = obj.node;
+                               type = obj.type;
+                               clsInfo = obj.clsInfo || (type && getClassInfo(type));
+                               clazz = clsInfo && clsInfo.cls;
+                               scripts = obj.scripts;
+                       }else{
+                               // old (backwards compatible) format of nodes[] array, simple array of DOMNodes
+                               node = obj;
+                               type = dp._attrName in mixin ? mixin[dp._attrName] : node.getAttribute(dp._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 = {},
+                               attributes = node.attributes;
+                       if(args.defaults){
+                               // settings for the document itself (or whatever subtree is being parsed)
+                               dojo.mixin(params, args.defaults);
+                       }
+                       if(obj.inherited){
+                               // settings from dir=rtl or lang=... on a node above this node
+                               dojo.mixin(params, obj.inherited);
+                       }
+
+                       // read parameters (ie, attributes) specified on DOMNode
+                       // 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);
+                               var event = script.getAttribute("event"),
+                                       type = script.getAttribute("type"),
+                                       nf = d.parser._functionFromScript(script);
+                               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
+                       var jsname = 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  && 
+                                       instance.startup &&
+                                       !instance._started && 
+                                       (!instance.getParent || !instance.getParent())
+                               ){
+                                       instance.startup();
+                               }
+                       });
+               }
+               return thelist;
+       };
+
+       this.parse = function(/*DomNode?*/ rootNode, /* Object? */ 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
+               //              dojoType="qualified.class.name"
+               //
+               // 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:
+               //              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. 
+               //                      * 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
+               //
+               //
+               // 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;
+               }
+
+               var attrName = this._attrName;
+               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){
+                               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.scripts;
+
+                       // unless parent is a widget with the stopParser flag set, continue search for dojoType, recursively
+                       var recurse = !parent.clsInfo || !parent.clsInfo.cls.prototype.stopParser;
+
+                       // 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){
+                                       var type = recurse && child.getAttribute(attrName);
+                                       if(type){
+                                               // if dojoType specified, add to output array of nodes to instantiate
+                                               var params = {
+                                                       "type": type,
+                                                       clsInfo: getClassInfo(type),    // 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\//i.test(type)) {
+                                                       scripts.push(child);
+                                               }
+                                       }else if(recurse){
+                                               // Recurse, looking for grandchild nodes with dojoType specified
+                                               scan({
+                                                       node: child,
+                                                       inherited: inherited
+                                               }, list);
+                                       }
+                               }
+                       }
+               }
+
+               // Make list of all nodes on page w/dojoType specified
+               var list = [];
+               scan({
+                       node: root ? dojo.byId(root) : dojo.body(),
+                       inherited: (args && args.inherited) || {
+                               dir: dojo._isBodyLtr() ? "ltr" : "rtl"
+                       }
+               }, list);
+
+               // go build the object instances
+               return this.instantiate(list, null, 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.exists("dijit.wai.onload") && (dijit.wai.onload === dojo._loaders[0])){
+               dojo._loaders.splice(1, 0, parseRunner);
+       }else{
+               dojo._loaders.unshift(parseRunner);
+       }
+})();
+
+}
+
+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");
+
+dojo.require( "dijit._base" );
+
+
+// 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){};
+
+// 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(){
+
+var _attrReg = {},     // cached results from getSetterAttributes
+       getSetterAttributes = function(widget){
+               // summary:
+               //              Returns list of attributes with custom setters for specified widget
+               var dc = widget.declaredClass;
+               if(!_attrReg[dc]){
+                       var r = [],
+                               attrs,
+                               proto = widget.constructor.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));
+                               }
+                       }
+                       _attrReg[dc] = r;
+               }
+               return _attrReg[dc] || [];      // String[]
+       };
+
+dojo.declare("dijit._Widget", null, {
+       // summary:
+       //              Base class for all Dijit widgets.
+
+       // 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 attr('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:""},
+
+       // _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
+       },
+       =====*/
+
+       // Constants used in templates
+
+       // _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 = [];
+
+               // 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
+                       }
+               }
+
+               //mixin 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.
+                       this._applyAttributes();
+
+                       var source = this.srcNodeRef;
+                       if(source && source.parentNode){
+                               source.parentNode.replaceChild(this.domNode, source);
+                       }
+
+                       // 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);
+                       }
+               }
+
+               if(this.domNode){
+                       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(getSetterAttributes(this), function(a){
+                       if(!(a in this.attributeMap)){
+                               condAttrApply(a, this);
+                       }
+               }, this);
+       },
+
+       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
+               this.domNode = this.srcNodeRef || dojo.create('div');
+       },
+
+       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
+
+               // baseClass is a single class name or occasionally a space-separated list of names.
+               // Add those classes to the DOMNod.  If RTL mode then also add with Rtl suffix.         
+               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);
+               }
+       },
+
+       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;
+       },
+
+       ////////////////// MISCELLANEOUS METHODS ///////////////////
+
+       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();
+       },
+
+       _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];
+               }
+       },
+
+       _setClassAttr: function(/*String*/ value){
+               // summary:
+               //              Custom setter for the CSS "class" attribute
+               // tags:
+               //              protected
+               var mapNode = this[this.attributeMap["class"] || 'domNode'];
+               dojo.removeClass(mapNode, this["class"])
+               this["class"] = value;
+               dojo.addClass(mapNode, value);
+       },
+
+       _setStyleAttr: function(/*String||Object*/ value){
+               // summary:
+               //              Sets the style attribut 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.style = value;
+       },
+
+       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);
+       },
+
+       _attrToDom: function(/*String*/ attr, /*String*/ value){
+               // summary:
+               //              Reflect a widget attribute (title, tabIndex, duration etc.) to
+               //              the widget DOM, as specified in attributeMap.
+               //
+               // description:
+               //              Also sets this["attr"] to the new value.
+               //              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.removeClass(mapNode, this[attr]);
+                                       dojo.addClass(mapNode, value);
+                                       break;
+                       }
+               }, this);
+               this[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);
+               }
+       },
+       
+       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);
+                       }
+                       var oldValue = this[name];
+                       // FIXME: what about function assignments? Any way to connect() here?
+                       this[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"
+               });
+       },
+
+       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[]
+       },
+
+       // 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
+               // 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 = [];
+               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(dojo.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;
+                                                       e.preventDefault();             // stop event to prevent scrolling on space key in IE
+                                               }
+                                       }),
+                                       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 &&
+                                                       !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);
+                                               }
+                                       })
+                               );
+                       }
+                       event = "onclick";
+               }
+               handles.push(dc(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 d = dojo,
+                       handle = d.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
+       },
+
+       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");
+       },
+
+       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;
+       },
+
+       _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.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.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`.
+};
+=====*/
+
+(function(){
+       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 module name to use for the base part of the URL, similar to module argument
+               //              to `dojo.moduleUrl`. If an Object, something that has a .toString() method that
+               //              generates a valid path for the cache item. For example, a dojo._Url object.
+               // url: String
+               //              The rest of the path to append to the path derived from the module argument. If
+               //              module is an object, then this second argument should be the "value" argument instead.
+               // value: String||Object?
+               //              If a String, the value to use in the cache for the module/url combination.
+               //              If an Object, it can have two properties: value and sanitize. The value property
+               //              should be the value to use in the cache, and sanitize can be set to true or false,
+               //              to indicate if XML declarations should be removed from the value and if the HTML
+               //              inside a body tag in the value should be extracted as the real value. The value argument
+               //              or the value property on the value argument are usually only used by the build system
+               //              as it inlines cache content.
+               //      example:
+               //              To ask dojo.cache to fetch content and store it in the cache (the dojo["cache"] style
+               //              of call is used to avoid an issue with the build system erroneously trying to intern
+               //              this example. To get the build system to intern your dojo.cache calls, use the
+               //              "dojo.cache" style of call):
+               //              |       //If template.html contains "<h1>Hello</h1>" that will be
+               //              |       //the value for the text variable.
+               //              |       var text = dojo["cache"]("my.module", "template.html");
+               //      example:
+               //              To ask dojo.cache to fetch content and store it in the cache, and sanitize the input
+               //               (the dojo["cache"] style of call is used to avoid an issue with the build system 
+               //              erroneously trying to intern this example. To get the build system to intern your
+               //              dojo.cache calls, use the "dojo.cache" style of call):
+               //              |       //If template.html contains "<html><body><h1>Hello</h1></body></html>", the
+               //              |       //text variable will contain just "<h1>Hello</h1>".
+               //              |       var text = dojo["cache"]("my.module", "template.html", {sanitize: true});
+               //      example:
+               //              Same example as previous, but demostrates how an object can be passed in as
+               //              the first argument, then the value argument can then be the second argument.
+               //              |       //If template.html contains "<html><body><h1>Hello</h1></body></html>", the
+               //              |       //text variable will contain just "<h1>Hello</h1>".
+               //              |       var text = dojo["cache"](new dojo._Url("my/module/template.html"), {sanitize: true});
+
+               //Module could be a string, or an object that has a toString() method
+               //that will return a useful path. If it is an object, then the "url" argument
+               //will actually be the value argument.
+               if(typeof module == "string"){
+                       var pathObj = dojo.moduleUrl(module, url);
+               }else{
+                       pathObj = module;
+                       value = url;
+               }
+               var key = pathObj.toString();
+
+               var val = value;
+               if(value != undefined && !dojo.isString(value)){
+                       val = ("value" in value ? value.value : undefined);
+               }
+
+               var sanitize = value && value.sanitize ? true : false;
+
+               if(typeof val == "string"){
+                       //We have a string, set cache value
+                       val = cache[key] = sanitize ? dojo.cache._sanitize(val) : val;
+               }else if(val === null){
+                       //Remove cached value
+                       delete cache[key];
+               }else{
+                       //Allow cache values to be empty strings. If key property does
+                       //not exist, fetch it.
+                       if(!(key in cache)){
+                               val = dojo._getText(key);
+                               cache[key] = sanitize ? dojo.cache._sanitize(val) : val;
+                       }
+                       val = cache[key];
+               }
+               return val; //String
+       };
+
+       dojo.cache._sanitize = function(/*String*/val){
+               // summary: 
+               //              Strips <?xml ...?> declarations so that external SVG and XML
+               //              documents can be added to a document without worry. Also, if the string
+               //              is an HTML document, only the part inside the body tag is returned.
+               // description:
+               //              Copied from dijit._Templated._sanitizeTemplateString.
+               if(val){
+                       val = val.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, "");
+                       var matches = val.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+                       if(matches){
+                               val = matches[1];
+                       }
+               }else{
+                       val = "";
+               }
+               return val; //String
+       };
+})();
+
+}
+
+if(!dojo._hasResource["dijit._Templated"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._Templated"] = true;
+dojo.provide("dijit._Templated");
+
+
+
+
+
+
+dojo.declare("dijit._Templated",
+       null,
+       {
+               // summary:
+               //              Mixin for widgets that are instantiated from a template
+
+               // templateString: [protected] String
+               //              A string that represents the widget template. Pre-empts the
+               //              templatePath. In builds that have their strings "interned", the
+               //              templatePath is converted to an inline templateString, thereby
+               //              preventing a synchronous network call.
+               //
+               //              Use in conjunction with dojo.cache() to load from a file.
+               templateString: null,
+
+               // templatePath: [protected deprecated] String
+               //              Path to template (HTML file) for this widget relative to dojo.baseUrl.
+               //              Deprecated: use templateString with dojo.cache() instead.
+               templatePath: null,
+
+               // widgetsInTemplate: [protected] Boolean
+               //              Should we parse the template to find widgets that might be
+               //              declared in markup inside it?  False by default.
+               widgetsInTemplate: false,
+
+               // skipNodeCache: [protected] Boolean
+               //              If using a cached widget template node poses issues for a
+               //              particular widget class, it can set this property to ensure
+               //              that its template is always re-built from a string
+               _skipNodeCache: false,
+
+               // _earlyTemplatedStartup: Boolean
+               //              A fallback to preserve the 1.0 - 1.3 behavior of children in
+               //              templates having their startup called before the parent widget
+               //              fires postCreate. Defaults to 'false', causing child widgets to
+               //              have their .startup() called immediately before a parent widget
+               //              .startup(), but always after the parent .postCreate(). Set to
+               //              'true' to re-enable to previous, arguably broken, behavior.
+               _earlyTemplatedStartup: false,
+
+               // _attachPoints: [private] String[]
+               //              List of widget attribute names associated with dojoAttachPoint=... in the
+               //              template, ex: ["containerNode", "labelNode"]
+/*=====
+               _attachPoints: [],
+ =====*/
+
+               constructor: function(){
+                       this._attachPoints = [];
+               },
+
+               _stringRepl: function(tmpl){
+                       // summary:
+                       //              Does substitution of ${foo} type properties in template string
+                       // tags:
+                       //              private
+                       var className = this.declaredClass, _this = this;
+                       // Cache contains a string because we need to do property replacement
+                       // do the property replacement
+                       return dojo.string.substitute(tmpl, this, function(value, key){
+                               if(key.charAt(0) == '!'){ value = dojo.getObject(key.substr(1), false, _this); }
+                               if(typeof value == "undefined"){ throw new Error(className+" template:"+key); } // a debugging aide
+                               if(value == null){ return ""; }
+
+                               // Substitution keys beginning with ! will skip the transform step,
+                               // in case a user wishes to insert unescaped markup, e.g. ${!foo}
+                               return key.charAt(0) == "!" ? value :
+                                       // Safer substitution, see heading "Attribute values" in
+                                       // http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.3.2
+                                       value.toString().replace(/"/g,"&quot;"); //TODO: add &amp? use encodeXML method?
+                       }, this);
+               },
+
+               // method over-ride
+               buildRendering: function(){
+                       // summary:
+                       //              Construct the UI for this widget from a template, setting this.domNode.
+                       // tags:
+                       //              protected
+
+                       // Lookup cached version of template, and download to cache if it
+                       // isn't there already.  Returns either a DomNode or a string, depending on
+                       // whether or not the template contains ${foo} replacement parameters.
+                       var cached = dijit._Templated.getCachedTemplate(this.templatePath, this.templateString, this._skipNodeCache);
+
+                       var node;
+                       if(dojo.isString(cached)){
+                               node = dojo._toDom(this._stringRepl(cached));
+                               if(node.nodeType != 1){
+                                       // Flag common problems such as templates with multiple top level nodes (nodeType == 11)
+                                       throw new Error("Invalid template: " + cached);
+                               }
+                       }else{
+                               // if it's a node, all we have to do is clone it
+                               node = cached.cloneNode(true);
+                       }
+
+                       this.domNode = node;
+
+                       // recurse through the node, looking for, and attaching to, our
+                       // attachment points and events, which should be defined on the template node.
+                       this._attachTemplateNodes(node);
+
+                       if(this.widgetsInTemplate){
+                               // Make sure dojoType is used for parsing widgets in template.
+                               // The dojo.parser.query could be changed from multiversion support.
+                               var parser = dojo.parser, qry, attr;
+                               if(parser._query != "[dojoType]"){
+                                       qry = parser._query;
+                                       attr = parser._attrName;
+                                       parser._query = "[dojoType]";
+                                       parser._attrName = "dojoType";
+                               }
+
+                               // Store widgets that we need to start at a later point in time
+                               var cw = (this._startupWidgets = dojo.parser.parse(node, {
+                                       noStart: !this._earlyTemplatedStartup,
+                                       inherited: {dir: this.dir, lang: this.lang}
+                               }));
+
+                               // Restore the query.
+                               if(qry){
+                                       parser._query = qry;
+                                       parser._attrName = attr;
+                               }
+
+                               this._supportingWidgets = dijit.findWidgets(node);
+
+                               this._attachTemplateNodes(cw, function(n,p){
+                                       return n[p];
+                               });
+                       }
+
+                       this._fillContent(this.srcNodeRef);
+               },
+
+               _fillContent: function(/*DomNode*/ source){
+                       // summary:
+                       //              Relocate source contents to templated container node.
+                       //              this.containerNode must be able to receive children, or exceptions will be thrown.
+                       // tags:
+                       //              protected
+                       var dest = this.containerNode;
+                       if(source && dest){
+                               while(source.hasChildNodes()){
+                                       dest.appendChild(source.firstChild);
+                               }
+                       }
+               },
+
+               _attachTemplateNodes: function(rootNode, getAttrFunc){
+                       // summary:
+                       //              Iterate through the template and attach functions and nodes accordingly.
+                       // description:
+                       //              Map widget properties and functions to the handlers specified in
+                       //              the dom node and it's descendants. This function iterates over all
+                       //              nodes and looks for these properties:
+                       //                      * dojoAttachPoint
+                       //                      * dojoAttachEvent
+                       //                      * waiRole
+                       //                      * waiState
+                       // rootNode: DomNode|Array[Widgets]
+                       //              the node to search for properties. All children will be searched.
+                       // getAttrFunc: Function?
+                       //              a function which will be used to obtain property for a given
+                       //              DomNode/Widget
+                       // tags:
+                       //              private
+
+                       getAttrFunc = getAttrFunc || function(n,p){ return n.getAttribute(p); };
+
+                       var nodes = dojo.isArray(rootNode) ? rootNode : (rootNode.all || rootNode.getElementsByTagName("*"));
+                       var x = dojo.isArray(rootNode) ? 0 : -1;
+                       for(; x<nodes.length; x++){
+                               var baseNode = (x == -1) ? rootNode : nodes[x];
+                               if(this.widgetsInTemplate && getAttrFunc(baseNode, "dojoType")){
+                                       continue;
+                               }
+                               // Process dojoAttachPoint
+                               var attachPoint = getAttrFunc(baseNode, "dojoAttachPoint");
+                               if(attachPoint){
+                                       var point, points = attachPoint.split(/\s*,\s*/);
+                                       while((point = points.shift())){
+                                               if(dojo.isArray(this[point])){
+                                                       this[point].push(baseNode);
+                                               }else{
+                                                       this[point]=baseNode;
+                                               }
+                                               this._attachPoints.push(point);
+                                       }
+                               }
+
+                               // Process dojoAttachEvent
+                               var attachEvent = getAttrFunc(baseNode, "dojoAttachEvent");
+                               if(attachEvent){
+                                       // NOTE: we want to support attributes that have the form
+                                       // "domEvent: nativeEvent; ..."
+                                       var event, events = attachEvent.split(/\s*,\s*/);
+                                       var trim = dojo.trim;
+                                       while((event = events.shift())){
+                                               if(event){
+                                                       var thisFunc = null;
+                                                       if(event.indexOf(":") != -1){
+                                                               // oh, if only JS had tuple assignment
+                                                               var funcNameArr = event.split(":");
+                                                               event = trim(funcNameArr[0]);
+                                                               thisFunc = trim(funcNameArr[1]);
+                                                       }else{
+                                                               event = trim(event);
+                                                       }
+                                                       if(!thisFunc){
+                                                               thisFunc = event;
+                                                       }
+                                                       this.connect(baseNode, event, thisFunc);
+                                               }
+                                       }
+                               }
+
+                               // waiRole, waiState
+                               var role = getAttrFunc(baseNode, "waiRole");
+                               if(role){
+                                       dijit.setWaiRole(baseNode, role);
+                               }
+                               var values = getAttrFunc(baseNode, "waiState");
+                               if(values){
+                                       dojo.forEach(values.split(/\s*,\s*/), function(stateValue){
+                                               if(stateValue.indexOf('-') != -1){
+                                                       var pair = stateValue.split('-');
+                                                       dijit.setWaiState(baseNode, 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(){
+                       // Delete all attach points to prevent IE6 memory leaks.
+                       dojo.forEach(this._attachPoints, function(point){
+                               delete this[point];
+                       }, this);
+                       this._attachPoints = [];
+
+                       this.inherited(arguments);
+               }
+       }
+);
+
+// key is either templatePath or templateString; object is either string or DOM tree
+dijit._Templated._templateCache = {};
+
+dijit._Templated.getCachedTemplate = function(templatePath, templateString, alwaysUseString){
+       // summary:
+       //              Static method to get a template based on the templatePath or
+       //              templateString key
+       // templatePath: String||dojo.uri.Uri
+       //              The URL to get the template from.
+       // templateString: String?
+       //              a string to use in lieu of fetching the template from a URL. Takes precedence
+       //              over templatePath
+       // returns: Mixed
+       //              Either string (if there are ${} variables that need to be replaced) or just
+       //              a DOM tree (if the node can be cloned directly)
+
+       // is it already cached?
+       var tmplts = dijit._Templated._templateCache;
+       var key = templateString || templatePath;
+       var cached = tmplts[key];
+       if(cached){
+               try{
+                       // if the cached value is an innerHTML string (no ownerDocument) or a DOM tree created within the current document, then use the current cached value
+                       if(!cached.ownerDocument || cached.ownerDocument == dojo.doc){
+                               // string or node of the same document
+                               return cached;
+                       }
+               }catch(e){ /* squelch */ } // IE can throw an exception if cached.ownerDocument was reloaded
+               dojo.destroy(cached);
+       }
+
+       // If necessary, load template string from template path
+       if(!templateString){
+               templateString = dojo.cache(templatePath, {sanitize: true});
+       }
+       templateString = dojo.string.trim(templateString);
+
+       if(alwaysUseString || templateString.match(/\$\{([^\}]+)\}/g)){
+               // there are variables in the template so all we can do is cache the string
+               return (tmplts[key] = templateString); //String
+       }else{
+               // there are no variables in the template so we can cache the DOM tree
+               var node = dojo._toDom(templateString);
+               if(node.nodeType != 1){
+                       throw new Error("Invalid template: " + templateString);
+               }
+               return (tmplts[key] = node); //Node
+       }
+};
+
+if(dojo.isIE){
+       dojo.addOnWindowUnload(function(){
+               var cache = dijit._Templated._templateCache;
+               for(var key in cache){
+                       var value = cache[key];
+                       if(typeof value == "object"){ // value is either a string or a DOM node template
+                               dojo.destroy(value);
+                       }
+                       delete cache[key];
+               }
+       });
+}
+
+// These arguments can be specified for widgets which are used in templates.
+// Since any widget can be specified as sub widgets in template, mix it
+// into the base widget class.  (This is a hack, but it's effective.)
+dojo.extend(dijit._Widget,{
+       dojoAttachEvent: "",
+       dojoAttachPoint: "",
+       waiRole: "",
+       waiState:""
+});
+
+}
+
+if(!dojo._hasResource["dijit._Container"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._Container"] = true;
+dojo.provide("dijit._Container");
+
+dojo.declare("dijit._Container",
+       null,
+       {
+               // summary:
+               //              Mixin for widgets that contain a set of widget children.
+               // description:
+               //              Use this mixin for widgets that needs to know about and
+               //              keep track of their widget children. Suitable for widgets like BorderContainer
+               //              and TabContainer which contain (only) a set of child widgets.
+               //
+               //              It's not suitable for widgets like ContentPane
+               //              which contains mixed HTML (plain DOM nodes in addition to widgets),
+               //              and where contained widgets are not necessarily directly below
+               //              this.containerNode.   In that case calls like addChild(node, position)
+               //              wouldn't make sense.
+
+               // isContainer: [protected] Boolean
+               //              Indicates that this widget acts as a "parent" to the descendant widgets.
+               //              When the parent is started it will call startup() on the child widgets.
+               //              See also `isLayoutContainer`.
+               isContainer: true,
+
+               buildRendering: function(){
+                       this.inherited(arguments);
+                       if(!this.containerNode){
+                               // all widgets with descendants must set containerNode
+                                       this.containerNode = this.domNode;
+                       }
+               },
+
+               addChild: function(/*dijit._Widget*/ widget, /*int?*/ insertIndex){
+                       // summary:
+                       //              Makes the given widget a child of this widget.
+                       // description:
+                       //              Inserts specified child widget's dom node as a child of this widget's
+                       //              container node, and possibly does other processing (such as layout).
+
+                       var refNode = this.containerNode;
+                       if(insertIndex && typeof insertIndex == "number"){
+                               var children = this.getChildren();
+                               if(children && children.length >= insertIndex){
+                                       refNode = children[insertIndex-1].domNode;
+                                       insertIndex = "after";
+                               }
+                       }
+                       dojo.place(widget.domNode, refNode, insertIndex);
+
+                       // If I've been started but the child widget hasn't been started,
+                       // start it now.  Make sure to do this after widget has been
+                       // inserted into the DOM tree, so it can see that it's being controlled by me,
+                       // so it doesn't try to size itself.
+                       if(this._started && !widget._started){
+                               widget.startup();
+                       }
+               },
+
+               removeChild: function(/*Widget or int*/ widget){
+                       // summary:
+                       //              Removes the passed widget instance from this widget but does
+                       //              not destroy it.  You can also pass in an integer indicating
+                       //              the index within the container to remove
+
+                       if(typeof widget == "number" && widget > 0){
+                               widget = this.getChildren()[widget];
+                       }
+
+                       if(widget){
+                               var node = widget.domNode;
+                               if(node && node.parentNode){
+                                       node.parentNode.removeChild(node); // detach but don't destroy
+                               }
+                       }
+               },
+
+               hasChildren: function(){
+                       // summary:
+                       //              Returns true if widget has children, i.e. if this.containerNode contains something.
+                       return this.getChildren().length > 0;   // Boolean
+               },
+
+               destroyDescendants: function(/*Boolean*/ preserveDom){
+                       // summary:
+                       //      Destroys all the widgets inside this.containerNode,
+                       //      but not this widget itself
+                       dojo.forEach(this.getChildren(), function(child){ child.destroyRecursive(preserveDom); });
+               },
+
+               _getSiblingOfChild: function(/*dijit._Widget*/ child, /*int*/ dir){
+                       // summary:
+                       //              Get the next or previous widget sibling of child
+                       // dir:
+                       //              if 1, get the next sibling
+                       //              if -1, get the previous sibling
+                       // tags:
+                       //      private
+                       var node = child.domNode,
+                               which = (dir>0 ? "nextSibling" : "previousSibling");
+                       do{
+                               node = node[which];
+                       }while(node && (node.nodeType != 1 || !dijit.byNode(node)));
+                       return node && dijit.byNode(node);      // dijit._Widget
+               },
+
+               getIndexOfChild: function(/*dijit._Widget*/ child){
+                       // summary:
+                       //              Gets the index of the child in this container or -1 if not found
+                       return dojo.indexOf(this.getChildren(), child); // int
+               },
+
+               startup: function(){
+                       // summary:
+                       //              Called after all the widgets have been instantiated and their
+                       //              dom nodes have been inserted somewhere under dojo.doc.body.
+                       //
+                       //              Widgets should override this method to do any initialization
+                       //              dependent on other widgets existing, and then call
+                       //              this superclass method to finish things off.
+                       //
+                       //              startup() in subclasses shouldn't do anything
+                       //              size related because the size of the widget hasn't been set yet.
+
+                       if(this._started){ return; }
+
+                       // Startup all children of this widget
+                       dojo.forEach(this.getChildren(), function(child){ child.startup(); });
+
+                       this.inherited(arguments);
+               }
+       }
+);
+
+}
+
+if(!dojo._hasResource["dijit._Contained"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._Contained"] = true;
+dojo.provide("dijit._Contained");
+
+dojo.declare("dijit._Contained",
+               null,
+               {
+                       // summary:
+                       //              Mixin for widgets that are children of a container widget
+                       //
+                       // example:
+                       // |    // make a basic custom widget that knows about it's parents
+                       // |    dojo.declare("my.customClass",[dijit._Widget,dijit._Contained],{});
+
+                       getParent: function(){
+                               // summary:
+                               //              Returns the parent widget of this widget, assuming the parent
+                               //              specifies isContainer
+                               var parent = dijit.getEnclosingWidget(this.domNode.parentNode);
+                               return parent && parent.isContainer ? parent : null;
+                       },
+
+                       _getSibling: function(/*String*/ which){
+                               // summary:
+                               //      Returns next or previous sibling
+                               // which:
+                               //      Either "next" or "previous"
+                               // tags:
+                               //      private
+                               var node = this.domNode;
+                               do{
+                                       node = node[which+"Sibling"];
+                               }while(node && node.nodeType != 1);
+                               return node && dijit.byNode(node);      // dijit._Widget
+                       },
+
+                       getPreviousSibling: function(){
+                               // summary:
+                               //              Returns null if this is the first child of the parent,
+                               //              otherwise returns the next element sibling to the "left".
+
+                               return this._getSibling("previous"); // dijit._Widget
+                       },
+
+                       getNextSibling: function(){
+                               // summary:
+                               //              Returns null if this is the last child of the parent,
+                               //              otherwise returns the next element sibling to the "right".
+
+                               return this._getSibling("next"); // dijit._Widget
+                       },
+
+                       getIndexInParent: function(){
+                               // summary:
+                               //              Returns the index of this widget within its container parent.
+                               //              It returns -1 if the parent does not exist, or if the parent
+                               //              is not a dijit._Container
+
+                               var p = this.getParent();
+                               if(!p || !p.getIndexOfChild){
+                                       return -1; // int
+                               }
+                               return p.getIndexOfChild(this); // int
+                       }
+               }
+       );
+
+
+}
+
+if(!dojo._hasResource["dijit.layout._LayoutWidget"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.layout._LayoutWidget"] = true;
+dojo.provide("dijit.layout._LayoutWidget");
+
+
+
+
+
+dojo.declare("dijit.layout._LayoutWidget",
+       [dijit._Widget, dijit._Container, dijit._Contained],
+       {
+               // summary:
+               //              Base class for a _Container widget which is responsible for laying out its children.
+               //              Widgets which mixin this code must define layout() to manage placement and sizing of the children.
+
+               // baseClass: [protected extension] String
+               //              This class name is applied to the widget's domNode
+               //              and also may be used to generate names for sub nodes,
+               //              for example dijitTabContainer-content.
+               baseClass: "dijitLayoutContainer",
+
+               // isLayoutContainer: [protected] Boolean
+               //              Indicates that this widget is going to call resize() on its
+               //              children widgets, setting their size, when they become visible.
+               isLayoutContainer: true,
+
+               postCreate: function(){
+                       dojo.addClass(this.domNode, "dijitContainer");
+
+                       this.inherited(arguments);
+               },
+
+               startup: function(){
+                       // summary:
+                       //              Called after all the widgets have been instantiated and their
+                       //              dom nodes have been inserted somewhere under dojo.doc.body.
+                       //
+                       //              Widgets should override this method to do any initialization
+                       //              dependent on other widgets existing, and then call
+                       //              this superclass method to finish things off.
+                       //
+                       //              startup() in subclasses shouldn't do anything
+                       //              size related because the size of the widget hasn't been set yet.
+
+                       if(this._started){ return; }
+
+                       // Need to call inherited first - so that child widgets get started
+                       // up correctly
+                       this.inherited(arguments);
+
+                       // If I am a not being controlled by a parent layout widget...
+                       var parent = this.getParent && this.getParent()
+                       if(!(parent && parent.isLayoutContainer)){
+                               // Do recursive sizing and layout of all my descendants
+                               // (passing in no argument to resize means that it has to glean the size itself)
+                               this.resize();
+
+                               // Since my parent isn't a layout container, and my style *may be* width=height=100%
+                               // or something similar (either set directly or via a CSS class),
+                               // monitor when my size changes so that I can re-layout.
+                               // For browsers where I can't directly monitor when my size changes,
+                               // monitor when the viewport changes size, which *may* indicate a size change for me.
+                               this.connect(dojo.isIE ? this.domNode : dojo.global, 'onresize', function(){
+                                       // Using function(){} closure to ensure no arguments to resize.
+                                       this.resize();
+                               });
+                       }
+               },
+
+               resize: function(changeSize, resultSize){
+                       // summary:
+                       //              Call this to resize a widget, or after its size has changed.
+                       // description:
+                       //              Change size mode:
+                       //                      When changeSize is specified, changes the marginBox of this widget
+                       //                      and forces it to relayout its contents accordingly.
+                       //                      changeSize may specify height, width, or both.
+                       //
+                       //                      If resultSize is specified it indicates the size the widget will
+                       //                      become after changeSize has been applied.
+                       //
+                       //              Notification mode:
+                       //                      When changeSize is null, indicates that the caller has already changed
+                       //                      the size of the widget, or perhaps it changed because the browser
+                       //                      window was resized.  Tells widget to relayout its contents accordingly.
+                       //
+                       //                      If resultSize is also specified it indicates the size the widget has
+                       //                      become.
+                       //
+                       //              In either mode, this method also:
+                       //                      1. Sets this._borderBox and this._contentBox to the new size of
+                       //                              the widget.  Queries the current domNode size if necessary.
+                       //                      2. Calls layout() to resize contents (and maybe adjust child widgets).
+                       //
+                       // changeSize: Object?
+                       //              Sets the widget to this margin-box size and position.
+                       //              May include any/all of the following properties:
+                       //      |       {w: int, h: int, l: int, t: int}
+                       //
+                       // resultSize: Object?
+                       //              The margin-box size of this widget after applying changeSize (if
+                       //              changeSize is specified).  If caller knows this size and
+                       //              passes it in, we don't need to query the browser to get the size.
+                       //      |       {w: int, h: int}
+
+                       var node = this.domNode;
+
+                       // set margin box size, unless it wasn't specified, in which case use current size
+                       if(changeSize){
+                               dojo.marginBox(node, changeSize);
+
+                               // set offset of the node
+                               if(changeSize.t){ node.style.top = changeSize.t + "px"; }
+                               if(changeSize.l){ node.style.left = changeSize.l + "px"; }
+                       }
+
+                       // If either height or width wasn't specified by the user, then query node for it.
+                       // But note that setting the margin box and then immediately querying dimensions may return
+                       // inaccurate results, so try not to depend on it.
+                       var mb = resultSize || {};
+                       dojo.mixin(mb, changeSize || {});       // changeSize overrides resultSize
+                       if( !("h" in mb) || !("w" in mb) ){
+                               mb = dojo.mixin(dojo.marginBox(node), mb);      // just use dojo.marginBox() to fill in missing values
+                       }
+
+                       // Compute and save the size of my border box and content box
+                       // (w/out calling dojo.contentBox() since that may fail if size was recently set)
+                       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
+                       };
+
+                       // Callback for widget to adjust size of its children
+                       this.layout();
+               },
+
+               layout: function(){
+                       // summary:
+                       //              Widgets override this method to size and position their contents/children.
+                       //              When this is called this._contentBox is guaranteed to be set (see resize()).
+                       //
+                       //              This is called after startup(), and also when the widget's size has been
+                       //              changed.
+                       // tags:
+                       //              protected extension
+               },
+
+               _setupChild: function(/*dijit._Widget*/child){
+                       // summary:
+                       //              Common setup for initial children and children which are added after startup
+                       // tags:
+                       //              protected extension
+
+                       dojo.addClass(child.domNode, this.baseClass+"-child");
+                       if(child.baseClass){
+                               dojo.addClass(child.domNode, this.baseClass+"-"+child.baseClass);
+                       }
+               },
+
+               addChild: function(/*dijit._Widget*/ child, /*Integer?*/ insertIndex){
+                       // Overrides _Container.addChild() to call _setupChild()
+                       this.inherited(arguments);
+                       if(this._started){
+                               this._setupChild(child);
+                       }
+               },
+
+               removeChild: function(/*dijit._Widget*/ child){
+                       // Overrides _Container.removeChild() to remove class added by _setupChild()
+                       dojo.removeClass(child.domNode, this.baseClass+"-child");
+                       if(child.baseClass){
+                               dojo.removeClass(child.domNode, this.baseClass+"-"+child.baseClass);
+                       }
+                       this.inherited(arguments);
+               }
+       }
+);
+
+dijit.layout.marginBox2contentBox = function(/*DomNode*/ node, /*Object*/ mb){
+       // summary:
+       //              Given the margin-box size of a node, return its content box size.
+       //              Functions like dojo.contentBox() but is more reliable since it doesn't have
+       //              to wait for the browser to compute sizes.
+       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 capitalize = function(word){
+               return word.substring(0,1).toUpperCase() + word.substring(1);
+       };
+
+       var size = function(widget, dim){
+               // size the child
+               widget.resize ? widget.resize(dim) : dojo.marginBox(widget.domNode, dim);
+
+               // record child's size, but favor our own numbers when we have them.
+               // the browser lies sometimes
+               dojo.mixin(widget, dojo.marginBox(widget.domNode));
+               dojo.mixin(widget, dim);
+       };
+
+       dijit.layout.layoutChildren = function(/*DomNode*/ container, /*Object*/ dim, /*Object[]*/ children){
+               // summary
+               //              Layout a bunch of child dom nodes within a parent dom node
+               // container:
+               //              parent node
+               // dim:
+               //              {l, t, w, h} object specifying dimensions of container into which to place children
+               // children:
+               //              an array like [ {domNode: foo, layoutAlign: "bottom" }, {domNode: bar, layoutAlign: "client"} ]
+
+               // copy dim because we are going to modify it
+               dim = dojo.mixin({}, dim);
+
+               dojo.addClass(container, "dijitLayoutContainer");
+
+               // Move "client" elements to the end of the array for layout.  a11y dictates that the author
+               // needs to be able to put them in the document in tab-order, but this algorithm requires that
+               // client be last.
+               children = dojo.filter(children, function(item){ return item.layoutAlign != "client"; })
+                       .concat(dojo.filter(children, function(item){ return item.layoutAlign == "client"; }));
+
+               // set positions/sizes
+               dojo.forEach(children, function(child){
+                       var elm = child.domNode,
+                               pos = child.layoutAlign;
+
+                       // set elem to upper left corner of unused space; may move it later
+                       var elmStyle = elm.style;
+                       elmStyle.left = dim.l+"px";
+                       elmStyle.top = dim.t+"px";
+                       elmStyle.bottom = elmStyle.right = "auto";
+
+                       dojo.addClass(elm, "dijitAlign" + capitalize(pos));
+
+                       // set size && adjust record of remaining space.
+                       // note that setting the width of a <div> may affect its height.
+                       if(pos == "top" || pos == "bottom"){
+                               size(child, { w: dim.w });
+                               dim.h -= child.h;
+                               if(pos == "top"){
+                                       dim.t += child.h;
+                               }else{
+                                       elmStyle.top = dim.t + dim.h + "px";
+                               }
+                       }else if(pos == "left" || pos == "right"){
+                               size(child, { h: dim.h });
+                               dim.w -= child.w;
+                               if(pos == "left"){
+                                       dim.l += child.w;
+                               }else{
+                                       elmStyle.left = dim.l + dim.w + "px";
+                               }
+                       }else if(pos == "client"){
+                               size(child, dim);
+                       }
+               });
+       };
+
+})();
+
+}
+
+if(!dojo._hasResource["dijit._CssStateMixin"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit._CssStateMixin"] = true;
+dojo.provide("dijit._CssStateMixin");
+
+
+dojo.declare("dijit._CssStateMixin", [], {
+       // summary:
+       //              Mixin for widgets to set CSS classes on the widget DOM nodes depending on hover/mouse press/focus
+       //              state changes, and also higher-level state changes such becoming disabled or selected.
+       //
+       // description:
+       //              By mixing this class into your widget, and setting the this.baseClass attribute, it will automatically
+       //              maintain CSS classes on the widget root node (this.domNode) depending on hover,
+       //              active, focus, etc. state.   Ex: with a baseClass of dijitButton, it will apply the classes
+       //              dijitButtonHovered and dijitButtonActive, as the user moves the mouse over the widget and clicks it.
+       //
+       //              It also sets CSS like dijitButtonDisabled based on widget semantic state.
+       //
+       //              By setting the cssStateNodes attribute, a widget can also track events on subnodes (like buttons
+       //              within the widget).
+
+       // cssStateNodes: [protected] Object
+       //              List of sub-nodes within the widget that need CSS classes applied on mouse hover/press and focus
+       //.
+       //              Each entry in the hash is a an attachpoint names (like "upArrowButton") mapped to a CSS class names
+       //              (like "dijitUpArrowButton"). Example:
+       //      |               {
+       //      |                       "upArrowButton": "dijitUpArrowButton",
+       //      |                       "downArrowButton": "dijitDownArrowButton"
+       //      |               }
+       //              The above will set the CSS class dijitUpArrowButton to the this.upArrowButton DOMNode when it
+       //              is hovered, etc.
+       cssStateNodes: {},
+
+       postCreate: function(){
+               this.inherited(arguments);
+
+               // Automatically monitor mouse events (essentially :hover and :active) on this.domNode
+               dojo.forEach(["onmouseenter", "onmouseleave", "onmousedown"], function(e){
+                       this.connect(this.domNode, e, "_cssMouseEvent");
+               }, this);
+               
+               // Monitoring changes to disabled, readonly, etc. state, and update CSS class of root node
+               this.connect(this, "set", function(name, value){
+                       if(arguments.length >= 2 && {disabled: true, readOnly: true, checked:true, selected:true}[name]){
+                               this._setStateClass();
+                       }
+               });
+
+               // The widget coming in/out of the focus change affects it's state
+               dojo.forEach(["_onFocus", "_onBlur"], function(ap){
+                       this.connect(this, ap, "_setStateClass");
+               }, this);
+
+               // Events on sub nodes within the widget
+               for(var ap in this.cssStateNodes){
+                       this._trackMouseState(this[ap], this.cssStateNodes[ap]);
+               }
+               // Set state initially; there's probably no hover/active/focus state but widget might be
+               // disabled/readonly so we want to set CSS classes for those conditions.
+               this._setStateClass();
+       },
+
+       _cssMouseEvent: function(/*Event*/ event){
+               // summary:
+               //      Sets _hovering and _active properties depending on mouse state,
+               //      then calls _setStateClass() to set appropriate CSS classes for this.domNode.
+
+               if(!this.disabled){
+                       switch(event.type){
+                               case "mouseenter":
+                               case "mouseover":       // generated on non-IE browsers even though we connected to mouseenter
+                                       this._hovering = true;
+                                       this._active = this._mouseDown;
+                                       break;
+
+                               case "mouseleave":
+                               case "mouseout":        // generated on non-IE browsers even though we connected to mouseleave
+                                       this._hovering = false;
+                                       this._active = false;
+                                       break;
+
+                               case "mousedown" :
+                                       this._active = true;
+                                       this._mouseDown = true;
+                                       // Set a global event to handle mouseup, so it fires properly
+                                       // even if the cursor leaves this.domNode before the mouse up event.
+                                       // Alternately could set active=false on mouseout.
+                                       var mouseUpConnector = this.connect(dojo.body(), "onmouseup", function(){
+                                               this._active = false;
+                                               this._mouseDown = false;
+                                               this._setStateClass();
+                                               this.disconnect(mouseUpConnector);
+                                       });
+                                       break;
+                       }
+                       this._setStateClass();
+               }
+       },
+
+       _setStateClass: function(){
+               // summary:
+               //              Update the visual state of the widget by setting the css classes on this.domNode
+               //              (or this.stateNode if defined) by combining this.baseClass with
+               //              various suffixes that represent the current widget state(s).
+               //
+               // description:
+               //              In the case where a widget has multiple
+               //              states, it sets the class based on all possible
+               //              combinations.  For example, an invalid form widget that is being hovered
+               //              will be "dijitInput dijitInputInvalid dijitInputHover dijitInputInvalidHover".
+               //
+               //              The widget may have one or more of the following states, determined
+               //              by this.state, this.checked, this.valid, and this.selected:
+               //                      - Error - ValidationTextBox sets this.state to "Error" if the current input value is invalid
+               //                      - Checked - ex: a checkmark or a ToggleButton in a checked state, will have this.checked==true
+               //                      - Selected - ex: currently selected tab will have this.selected==true
+               //
+               //              In addition, it may have one or more of the following states,
+               //              based on this.disabled and flags set in _onMouse (this._active, this._hovering, this._focused):
+               //                      - Disabled      - if the widget is disabled
+               //                      - Active                - if the mouse (or space/enter key?) is being pressed down
+               //                      - Focused               - if the widget has focus
+               //                      - Hover         - if the mouse is over the widget
+
+               // Compute new set of classes
+               var newStateClasses = this.baseClass.split(" ");
+
+               function multiply(modifier){
+                       newStateClasses = newStateClasses.concat(dojo.map(newStateClasses, function(c){ return c+modifier; }), "dijit"+modifier);
+               }
+
+               if(!this.isLeftToRight()){
+                       // For RTL mode we need to set an addition class like dijitTextBoxRtl.
+                       multiply("Rtl");
+               }
+
+               if(this.checked){
+                       multiply("Checked");
+               }
+               if(this.state){
+                       multiply(this.state);
+               }
+               if(this.selected){
+                       multiply("Selected");
+               }
+
+               if(this.disabled){
+                       multiply("Disabled");
+               }else if(this.readOnly){
+                       multiply("ReadOnly");
+               }else{
+                       if(this._active){
+                               multiply("Active");
+                       }else if(this._hovering){
+                               multiply("Hover");
+                       }
+               }
+
+               if(this._focused){
+                       multiply("Focused");
+               }
+
+               // Remove old state classes and add new ones.
+               // For performance concerns we only write into domNode.className once.
+               var tn = this.stateNode || this.domNode,
+                       classHash = {}; // set of all classes (state and otherwise) for node
+
+               dojo.forEach(tn.className.split(" "), function(c){ classHash[c] = true; });
+
+               if("_stateClasses" in this){
+                       dojo.forEach(this._stateClasses, function(c){ delete classHash[c]; });
+               }
+
+               dojo.forEach(newStateClasses, function(c){ classHash[c] = true; });
+
+               var newClasses = [];
+               for(var c in classHash){
+                       newClasses.push(c);
+               }
+               tn.className = newClasses.join(" ");
+
+               this._stateClasses = newStateClasses;
+       },
+
+       _trackMouseState: function(/*DomNode*/ node, /*String*/ clazz){
+               // summary:
+               //              Track mouse/focus events on specified node and set CSS class on that node to indicate
+               //              current state.   Usually not called directly, but via cssStateNodes attribute.
+               // description:
+               //              Given class=foo, will set the following CSS class on the node
+               //                      - fooActive: if the user is currently pressing down the mouse button while over the node
+               //                      - fooHover: if the user is hovering the mouse over the node, but not pressing down a button
+               //                      - fooFocus: if the node is focused
+               //
+               //              Note that it won't set any classes if the widget is disabled.
+               // node: DomNode
+               //              Should be a sub-node of the widget, not the top node (this.domNode), since the top node
+               //              is handled specially and automatically just by mixing in this class.
+               // clazz: String
+               //              CSS class name (ex: dijitSliderUpArrow).
+
+               // Current state of node (initially false)
+               // NB: setting specifically to false because dojo.toggleClass() needs true boolean as third arg
+               var hovering=false, active=false, focused=false;
+
+               var self = this,
+                       cn = dojo.hitch(this, "connect", node);
+
+               function setClass(){
+                       var disabled = ("disabled" in self && self.disabled) || ("readonly" in self && self.readonly);
+                       dojo.toggleClass(node, clazz+"Hover", hovering && !active && !disabled);
+                       dojo.toggleClass(node, clazz+"Active", active && !disabled);
+                       dojo.toggleClass(node, clazz+"Focused", focused && !disabled);
+               }
+
+               // Mouse
+               cn("onmouseenter", function(){
+                       hovering = true;
+                       setClass();
+               });
+               cn("onmouseleave", function(){
+                       hovering = false;
+                       active = false;
+                       setClass();
+               });
+               cn("onmousedown", function(){
+                       active = true;
+                       setClass();
+               });
+               cn("onmouseup", function(){
+                       active = false;
+                       setClass();
+               });
+
+               // Focus
+               cn("onfocus", function(){
+                       focused = true;
+                       setClass();
+               });
+               cn("onblur", function(){
+                       focused = false;
+                       setClass();
+               });
+
+               // Just in case widget is enabled/disabled while it has focus/hover/active state.
+               // Maybe this is overkill.
+               this.connect(this, "set", function(name, value){
+                       if(name == "disabled" || name == "readOnly"){
+                               setClass();
+                       }
+               });
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.form._FormWidget"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form._FormWidget"] = true;
+dojo.provide("dijit.form._FormWidget");
+
+
+
+
+
+
+
+dojo.declare("dijit.form._FormWidget", [dijit._Widget, dijit._Templated, dijit._CssStateMixin],
+       {
+       // summary:
+       //              Base class for widgets corresponding to native HTML elements such as <checkbox> or <button>,
+       //              which can be children of a <form> node or a `dijit.form.Form` widget.
+       //
+       // description:
+       //              Represents a single HTML element.
+       //              All these widgets should have these attributes just like native HTML input elements.
+       //              You can set them during widget construction or afterwards, via `dijit._Widget.attr`.
+       //
+       //              They also share some common methods.
+
+       // name: String
+       //              Name used when submitting form; same as "name" attribute or plain HTML elements
+       name: "",
+
+       // alt: String
+       //              Corresponds to the native HTML <input> element's attribute.
+       alt: "",
+
+       // value: String
+       //              Corresponds to the native HTML <input> element's attribute.
+       value: "",
+
+       // type: String
+       //              Corresponds to the native HTML <input> element's attribute.
+       type: "text",
+
+       // tabIndex: Integer
+       //              Order fields are traversed when user hits the tab key
+       tabIndex: "0",
+
+       // disabled: Boolean
+       //              Should this widget respond to user input?
+       //              In markup, this is specified as "disabled='disabled'", or just "disabled".
+       disabled: false,
+
+       // intermediateChanges: Boolean
+       //              Fires onChange for each value change or only on demand
+       intermediateChanges: false,
+
+       // scrollOnFocus: Boolean
+       //              On focus, should this widget scroll into view?
+       scrollOnFocus: true,
+
+       // These mixins assume that the focus node is an INPUT, as many but not all _FormWidgets are.
+       attributeMap: dojo.delegate(dijit._Widget.prototype.attributeMap, {
+               value: "focusNode",
+               id: "focusNode",
+               tabIndex: "focusNode",
+               alt: "focusNode",
+               title: "focusNode"
+       }),
+
+       postMixInProperties: function(){
+               // Setup name=foo string to be referenced from the template (but only if a name has been specified)
+               // Unfortunately we can't use attributeMap to set the name due to IE limitations, see #8660
+               // Regarding escaping, see heading "Attribute values" in
+               // http://www.w3.org/TR/REC-html40/appendix/notes.html#h-B.3.2
+               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(/*Boolean*/ value){
+               this.disabled = value;
+               dojo.attr(this.focusNode, 'disabled', value);
+               if(this.valueNode){
+                       dojo.attr(this.valueNode, 'disabled', value);
+               }
+               dijit.setWaiState(this.focusNode, "disabled", value);
+
+               if(value){
+                       // reset these, because after the domNode is disabled, we can no longer receive
+                       // mouse related events, see #4200
+                       this._hovering = false;
+                       this._active = false;
+
+                       // clear tab stop(s) on this widget's focusable node(s)  (ComboBox has two focusable nodes)
+                       var attachPointNames = "tabIndex" in this.attributeMap ? this.attributeMap.tabIndex : "focusNode";
+                       dojo.forEach(dojo.isArray(attachPointNames) ? attachPointNames : [attachPointNames], function(attachPointName){
+                               var node = this[attachPointName];
+                               // complex code because tabIndex=-1 on a <div> doesn't work on FF
+                               if(dojo.isWebKit || dijit.hasDefaultTabStop(node)){     // see #11064 about webkit bug
+                                       node.setAttribute('tabIndex', "-1");
+                               }else{
+                                       node.removeAttribute('tabIndex');                               
+                               }
+                       }, this);
+               }else{
+                       this.focusNode.setAttribute('tabIndex', this.tabIndex);
+               }
+       },
+
+       setDisabled: function(/*Boolean*/ disabled){
+               // summary:
+               //              Deprecated.   Use set('disabled', ...) instead.
+               dojo.deprecated("setDisabled("+disabled+") is deprecated. Use set('disabled',"+disabled+") instead.", "", "2.0");
+               this.set('disabled', disabled);
+       },
+
+       _onFocus: function(e){
+               if(this.scrollOnFocus){
+                       dojo.window.scrollIntoView(this.domNode);
+               }
+               this.inherited(arguments);
+       },
+
+       isFocusable: function(){
+               // summary:
+               //              Tells if this widget is focusable or not.   Used internally by dijit.
+               // tags:
+               //              protected
+               return !this.disabled && !this.readOnly && this.focusNode && (dojo.style(this.domNode, "display") != "none");
+       },
+
+       focus: function(){
+               // summary:
+               //              Put focus on this widget
+               dijit.focus(this.focusNode);
+       },
+
+       compare: function(/*anything*/val1, /*anything*/val2){
+               // summary:
+               //              Compare 2 values (as returned by attr('value') for this widget).
+               // tags:
+               //              protected
+               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(newValue){
+               // summary:
+               //              Callback when this widget's value is changed.
+               // tags:
+               //              callback
+       },
+
+       // _onChangeActive: [private] Boolean
+       //              Indicates that changes to the value should call onChange() callback.
+       //              This is false during widget initialization, to avoid calling onChange()
+       //              when the initial value is set.
+       _onChangeActive: false,
+
+       _handleOnChange: function(/*anything*/ newValue, /* Boolean? */ priorityChange){
+               // summary:
+               //              Called when the value of the widget is set.  Calls onChange() if appropriate
+               // newValue:
+               //              the new value
+               // priorityChange:
+               //              For a slider, for example, dragging the slider is priorityChange==false,
+               //              but on mouse up, it's priorityChange==true.  If intermediateChanges==true,
+               //              onChange is only called form priorityChange=true events.
+               // tags:
+               //              private
+               this._lastValue = newValue;
+               if(this._lastValueReported == undefined && (priorityChange === null || !this._onChangeActive)){
+                       // this block executes not for a change, but during initialization,
+                       // and is used to store away the original value (or for ToggleButton, the original checked state)
+                       this._resetValue = this._lastValueReported = newValue;
+               }
+               if((this.intermediateChanges || priorityChange || priorityChange === undefined) &&
+                       ((typeof newValue != typeof this._lastValueReported) ||
+                               this.compare(newValue, this._lastValueReported) != 0)){
+                       this._lastValueReported = newValue;
+                       if(this._onChangeActive){
+                               if(this._onChangeHandle){
+                                       clearTimeout(this._onChangeHandle);
+                               }
+                               // setTimout allows hidden value processing to run and
+                               // also the onChange handler can safely adjust focus, etc
+                               this._onChangeHandle = setTimeout(dojo.hitch(this,
+                                       function(){
+                                               this._onChangeHandle = null;
+                                               this.onChange(newValue);
+                                       }), 0); // try to collapse multiple onChange's fired faster than can be processed
+                       }
+               }
+       },
+
+       create: function(){
+               // Overrides _Widget.create()
+               this.inherited(arguments);
+               this._onChangeActive = true;
+       },
+
+       destroy: function(){
+               if(this._onChangeHandle){ // destroy called before last onChange has fired
+                       clearTimeout(this._onChangeHandle);
+                       this.onChange(this._lastValueReported);
+               }
+               this.inherited(arguments);
+       },
+
+       setValue: function(/*String*/ value){
+               // summary:
+               //              Deprecated.   Use set('value', ...) instead.
+               dojo.deprecated("dijit.form._FormWidget:setValue("+value+") is deprecated.  Use set('value',"+value+") instead.", "", "2.0");
+               this.set('value', value);
+       },
+
+       getValue: function(){
+               // summary:
+               //              Deprecated.   Use get('value') instead.
+               dojo.deprecated(this.declaredClass+"::getValue() is deprecated. Use get('value') instead.", "", "2.0");
+               return this.get('value');
+       },
+       
+       _onMouseDown: function(e){
+               // If user clicks on the button, even if the mouse is released outside of it,
+               // this button should get focus (to mimics native browser buttons).
+               // This is also needed on chrome because otherwise buttons won't get focus at all,
+               // which leads to bizarre focus restore on Dialog close etc.
+               if(!e.ctrlKey && this.isFocusable()){ // !e.ctrlKey to ignore right-click on mac
+                       // Set a global event to handle mouseup, so it fires properly
+                       // even if the cursor leaves this.domNode before the mouse up event.
+                       var mouseUpConnector = this.connect(dojo.body(), "onmouseup", function(){
+                               if (this.isFocusable()) {
+                                       this.focus();
+                               }
+                               this.disconnect(mouseUpConnector);
+                       });
+               }
+       }
+});
+
+dojo.declare("dijit.form._FormValueWidget", dijit.form._FormWidget,
+{
+       // summary:
+       //              Base class for widgets corresponding to native HTML elements such as <input> or <select> that have user changeable values.
+       // description:
+       //              Each _FormValueWidget represents a single input value, and has a (possibly hidden) <input> element,
+       //              to which it serializes it's input value, so that form submission (either normal submission or via FormBind?)
+       //              works as expected.
+
+       // Don't attempt to mixin the 'type', 'name' attributes here programatically -- they must be declared
+       // directly in the template as read by the parser in order to function. IE is known to specifically
+       // require the 'name' attribute at element creation time.   See #8484, #8660.
+       // TODO: unclear what that {value: ""} is for; FormWidget.attributeMap copies value to focusNode,
+       // so maybe {value: ""} is so the value *doesn't* get copied to focusNode?
+       // Seems like we really want value removed from attributeMap altogether
+       // (although there's no easy way to do that now)
+
+       // readOnly: Boolean
+       //              Should this widget respond to user input?
+       //              In markup, this is specified as "readOnly".
+       //              Similar to disabled except readOnly form values are submitted.
+       readOnly: false,
+
+       attributeMap: dojo.delegate(dijit.form._FormWidget.prototype.attributeMap, {
+               value: "",
+               readOnly: "focusNode"
+       }),
+
+       _setReadOnlyAttr: function(/*Boolean*/ value){
+               this.readOnly = value;
+               dojo.attr(this.focusNode, 'readOnly', value);
+               dijit.setWaiState(this.focusNode, "readonly", value);
+       },
+
+       postCreate: function(){
+               this.inherited(arguments);
+
+               if(dojo.isIE){ // IE won't stop the event with keypress
+                       this.connect(this.focusNode || this.domNode, "onkeydown", this._onKeyDown);
+               }
+               // Update our reset value if it hasn't yet been set (because this.set()
+               // is only called when there *is* a value)
+               if(this._resetValue === undefined){
+                       this._resetValue = this.value;
+               }
+       },
+
+       _setValueAttr: function(/*anything*/ newValue, /*Boolean, optional*/ priorityChange){
+               // summary:
+               //              Hook so attr('value', value) works.
+               // description:
+               //              Sets the value of the widget.
+               //              If the value has changed, then fire onChange event, unless priorityChange
+               //              is specified as null (or false?)
+               this.value = newValue;
+               this._handleOnChange(newValue, priorityChange);
+       },
+
+       _getValueAttr: function(){
+               // summary:
+               //              Hook so attr('value') works.
+               return this._lastValue;
+       },
+
+       undo: function(){
+               // summary:
+               //              Restore the value to the last value passed to onChange
+               this._setValueAttr(this._lastValueReported, false);
+       },
+
+       reset: function(){
+               // summary:
+               //              Reset the widget's value to what it was at initialization time
+               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(); // default behavior needs to be stopped here since keypress is too late
+                               te = document.createEventObject();
+                               te.keyCode = dojo.keys.ESCAPE;
+                               te.shiftKey = e.shiftKey;
+                               e.srcElement.fireEvent('onkeypress', te);
+                       }
+               }
+       },
+
+       _layoutHackIE7: function(){
+               // summary:
+               //              Work around table sizing bugs on IE7 by forcing redraw
+
+               if(dojo.isIE == 7){ // fix IE7 layout bug when the widget is scrolled out of sight
+                       var domNode = this.domNode;
+                       var parent = domNode.parentNode;
+                       var pingNode = domNode.firstChild || domNode; // target node most unlikely to have a custom filter
+                       var origFilter = pingNode.style.filter; // save custom filter, most likely nothing
+                       var _this = this;
+                       while(parent && parent.clientHeight == 0){ // search for parents that haven't rendered yet
+                               (function ping(){
+                                       var disconnectHandle = _this.connect(parent, "onscroll",
+                                               function(e){
+                                                       _this.disconnect(disconnectHandle); // only call once
+                                                       pingNode.style.filter = (new Date()).getMilliseconds(); // set to anything that's unique
+                                                       setTimeout(function(){ pingNode.style.filter = origFilter }, 0); // restore custom filter, if any
+                                               }
+                                       );
+                               })();
+                               parent = parent.parentNode;
+                       }
+               }
+       }
+});
+
+}
+
+if(!dojo._hasResource["dijit.dijit"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.dijit"] = true;
+dojo.provide("dijit.dijit");
+
+/*=====
+dijit.dijit = {
+       // summary:
+       //              A roll-up for common dijit methods
+       // description:
+       //      A rollup file for the build system including the core and common
+       //      dijit files.
+       //
+       // example:
+       // | <script type="text/javascript" src="js/dojo/dijit/dijit.js"></script>
+       //
+};
+=====*/
+
+// All the stuff in _base (these are the function that are guaranteed available without an explicit dojo.require)
+
+
+// And some other stuff that we tend to pull in all the time anyway
+
+
+
+
+
+
+
+}
+
diff --git a/lib/dijit/form/Button.js b/lib/dijit/form/Button.js
new file mode 100644 (file)
index 0000000..7410620
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.Button"]){
+dojo._hasResource["dijit.form.Button"]=true;
+dojo.provide("dijit.form.Button");
+dojo.require("dijit.form._FormWidget");
+dojo.require("dijit._Container");
+dojo.require("dijit._HasDropDown");
+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\twaiRole=\"button\" waiState=\"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\"\n\t\tdojoAttachPoint=\"valueNode\"\n/></span>\n"),attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{value:"valueNode",iconClass:{node:"iconNode",type:"class"}}),_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 _1=this.domNode;_1.parentNode;_1=_1.parentNode){
+var _2=dijit.byNode(_1);
+if(_2&&typeof _2._onSubmit=="function"){
+_2._onSubmit(e);
+break;
+}
+}
+}else{
+if(this.valueNode){
+this.valueNode.click();
+e.preventDefault();
+}
+}
+}
+},_fillContent:function(_3){
+if(_3&&(!this.params||!("label" in this.params))){
+this.set("label",_3.innerHTML);
+}
+},postCreate:function(){
+dojo.setSelectable(this.focusNode,false);
+this.inherited(arguments);
+},_setShowLabelAttr:function(_4){
+if(this.containerNode){
+dojo.toggleClass(this.containerNode,"dijitDisplayNone",!_4);
+}
+this.showLabel=_4;
+},onClick:function(e){
+return true;
+},_clicked:function(e){
+},setLabel:function(_5){
+dojo.deprecated("dijit.form.Button.setLabel() is deprecated.  Use set('label', ...) instead.","","2.0");
+this.set("label",_5);
+},_setLabelAttr:function(_6){
+this.containerNode.innerHTML=this.label=_6;
+if(this.showLabel==false&&!this.params.title){
+this.titleNode.title=dojo.trim(this.containerNode.innerText||this.containerNode.textContent||"");
+}
+}});
+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\twaiRole=\"button\" waiState=\"haspopup-true,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\"\n\t\tdojoAttachPoint=\"valueNode\"\n/></span>\n"),_fillContent:function(){
+if(this.srcNodeRef){
+var _7=dojo.query("*",this.srcNodeRef);
+dijit.form.DropDownButton.superclass._fillContent.call(this,_7[0]);
+this.dropDownContainer=this.srcNodeRef;
+}
+},startup:function(){
+if(this._started){
+return;
+}
+if(!this.dropDown){
+var _8=dojo.query("[widgetId]",this.dropDownContainer)[0];
+this.dropDown=dijit.byNode(_8);
+delete this.dropDownContainer;
+}
+dijit.popup.moveOffScreen(this.dropDown.domNode);
+this.inherited(arguments);
+},isLoaded:function(){
+var _9=this.dropDown;
+return (!_9.href||_9.isLoaded);
+},loadDropDown:function(){
+var _a=this.dropDown;
+if(!_a){
+return;
+}
+if(!this.isLoaded()){
+var _b=dojo.connect(_a,"onLoad",this,function(){
+dojo.disconnect(_b);
+this.openDropDown();
+});
+_a.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' waiRole=\"presentation\"\n\t><tbody waiRole=\"presentation\"><tr waiRole=\"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\twaiRole=\"button\" waiState=\"labelledby-${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" dojoAttachPoint=\"iconNode\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" dojoAttachPoint=\"containerNode\" waiRole=\"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\twaiRole=\"button\" waiState=\"haspopup-true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" waiRole=\"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(_c){
+if(_c.charOrCode==dojo.keys[this.isLeftToRight()?"RIGHT_ARROW":"LEFT_ARROW"]){
+dijit.focus(this._popupStateNode);
+dojo.stopEvent(_c);
+}
+},_onArrowKeyPress:function(_d){
+if(_d.charOrCode==dojo.keys[this.isLeftToRight()?"LEFT_ARROW":"RIGHT_ARROW"]){
+dijit.focus(this.titleNode);
+dojo.stopEvent(_d);
+}
+},focus:function(_e){
+dijit.focus(_e=="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(_f){
+this.set("checked",!this.checked);
+},_setCheckedAttr:function(_10,_11){
+this.checked=_10;
+dojo.attr(this.focusNode||this.domNode,"checked",_10);
+dijit.setWaiState(this.focusNode||this.domNode,"pressed",_10);
+this._handleOnChange(_10,_11);
+},setChecked:function(_12){
+dojo.deprecated("setChecked("+_12+") is deprecated. Use set('checked',"+_12+") instead.","","2.0");
+this.set("checked",_12);
+},reset:function(){
+this._hasBeenBlurred=false;
+this.set("checked",this.params.checked||false);
+}});
+}
diff --git a/lib/dijit/form/CheckBox.js b/lib/dijit/form/CheckBox.js
new file mode 100644 (file)
index 0000000..ea5cdd1
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.CheckBox"]){
+dojo._hasResource["dijit.form.CheckBox"]=true;
+dojo.provide("dijit.form.CheckBox");
+dojo.require("dijit.form.ToggleButton");
+dojo.declare("dijit.form.CheckBox",dijit.form.ToggleButton,{templateString:dojo.cache("dijit.form","templates/CheckBox.html","<div class=\"dijit dijitReset dijitInline\" waiRole=\"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(_1){
+this.readOnly=_1;
+dojo.attr(this.focusNode,"readOnly",_1);
+dijit.setWaiState(this.focusNode,"readonly",_1);
+},_setValueAttr:function(_2,_3){
+if(typeof _2=="string"){
+this.value=_2;
+dojo.attr(this.focusNode,"value",_2);
+_2=true;
+}
+if(this._created){
+this.set("checked",_2,_3);
+}
+},_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(_4){
+},reset:function(){
+this._hasBeenBlurred=false;
+this.set("checked",this.params.checked||false);
+this.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){
+return false;
+}
+return this.inherited(arguments);
+}});
+dojo.declare("dijit.form.RadioButton",dijit.form.CheckBox,{type:"radio",baseClass:"dijitRadio",_setCheckedAttr:function(_5){
+this.inherited(arguments);
+if(!this._created){
+return;
+}
+if(_5){
+var _6=this;
+dojo.query("INPUT[type=radio]",this.focusNode.form||dojo.doc).forEach(function(_7){
+if(_7.name==_6.name&&_7!=_6.focusNode&&_7.form==_6.focusNode.form){
+var _8=dijit.getEnclosingWidget(_7);
+if(_8&&_8.checked){
+_8.set("checked",false);
+}
+}
+});
+}
+},_clicked:function(e){
+if(!this.checked){
+this.set("checked",true);
+}
+}});
+}
diff --git a/lib/dijit/form/ComboBox.js b/lib/dijit/form/ComboBox.js
new file mode 100644 (file)
index 0000000..694c43e
--- /dev/null
@@ -0,0 +1,615 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.ComboBox"]){
+dojo._hasResource["dijit.form.ComboBox"]=true;
+dojo.provide("dijit.form.ComboBox");
+dojo.require("dojo.window");
+dojo.require("dojo.regexp");
+dojo.require("dojo.data.util.simpleFetch");
+dojo.require("dojo.data.util.filter");
+dojo.require("dijit._CssStateMixin");
+dojo.require("dijit.form._FormWidget");
+dojo.require("dijit.form.ValidationTextBox");
+dojo.requireLocalization("dijit.form","ComboBox",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit.form.ComboBoxMixin",null,{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/ComboBox.html","<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\"\n\tdojoAttachPoint=\"comboNode\" waiRole=\"combobox\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdojoAttachPoint=\"downArrowNode\" waiRole=\"presentation\"\n\t\tdojoAttachEvent=\"onmousedown:_onArrowMouseDown\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"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=\"&Chi; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"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\tdojoAttachEvent=\"onkeypress:_onKeyPress,compositionend\"\n\t\t\tdojoAttachPoint=\"textbox,focusNode\" waiRole=\"textbox\" waiState=\"haspopup-true,autocomplete-list\"\n\t/></div\n></div>\n"),baseClass:"dijitTextBox dijitComboBox",cssStateNodes:{"downArrowNode":"dijitDownArrowButton"},_getCaretPos:function(_1){
+var _2=0;
+if(typeof (_1.selectionStart)=="number"){
+_2=_1.selectionStart;
+}else{
+if(dojo.isIE){
+var tr=dojo.doc.selection.createRange().duplicate();
+var _3=_1.createTextRange();
+tr.move("character",0);
+_3.move("character",0);
+try{
+_3.setEndPoint("EndToEnd",tr);
+_2=String(_3.text).replace(/\r/g,"").length;
+}
+catch(e){
+}
+}
+}
+return _2;
+},_setCaretPos:function(_4,_5){
+_5=parseInt(_5);
+dijit.selectInputText(_4,_5,_5);
+},_setDisabledAttr:function(_6){
+this.inherited(arguments);
+dijit.setWaiState(this.comboNode,"disabled",_6);
+},_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(_7){
+if(!this.searchTimer&&(_7.type=="paste"||_7.type=="input")&&this._lastInput!=this.textbox.value){
+this.searchTimer=setTimeout(dojo.hitch(this,function(){
+this._onKeyPress({charOrCode:229});
+}),100);
+}
+this.inherited(arguments);
+},_onKeyPress:function(_8){
+var _9=_8.charOrCode;
+if(_8.altKey||((_8.ctrlKey||_8.metaKey)&&(_9!="x"&&_9!="v"))||_9==dojo.keys.SHIFT){
+return;
+}
+var _a=false;
+var _b="_startSearchFromInput";
+var pw=this._popupWidget;
+var dk=dojo.keys;
+var _c=null;
+this._prev_key_backspace=false;
+this._abortQuery();
+if(this._isShowingNow){
+pw.handleKey(_9);
+_c=pw.getHighlightedOption();
+}
+switch(_9){
+case dk.PAGE_DOWN:
+case dk.DOWN_ARROW:
+case dk.PAGE_UP:
+case dk.UP_ARROW:
+if(!this._isShowingNow){
+_a=true;
+_b="_startSearchAll";
+}else{
+this._announceOption(_c);
+}
+dojo.stopEvent(_8);
+break;
+case dk.ENTER:
+if(_c){
+if(_c==pw.nextButton){
+this._nextSearch(1);
+dojo.stopEvent(_8);
+break;
+}else{
+if(_c==pw.previousButton){
+this._nextSearch(-1);
+dojo.stopEvent(_8);
+break;
+}
+}
+}else{
+this._setBlurValue();
+this._setCaretPos(this.focusNode,this.focusNode.value.length);
+}
+_8.preventDefault();
+case dk.TAB:
+var _d=this.get("displayedValue");
+if(pw&&(_d==pw._messages["previousMessage"]||_d==pw._messages["nextMessage"])){
+break;
+}
+if(_c){
+this._selectOption();
+}
+if(this._isShowingNow){
+this._lastQuery=null;
+this._hideResultList();
+}
+break;
+case " ":
+if(_c){
+dojo.stopEvent(_8);
+this._selectOption();
+this._hideResultList();
+}else{
+_a=true;
+}
+break;
+case dk.ESCAPE:
+if(this._isShowingNow){
+dojo.stopEvent(_8);
+this._hideResultList();
+}
+break;
+case dk.DELETE:
+case dk.BACKSPACE:
+this._prev_key_backspace=true;
+_a=true;
+break;
+default:
+_a=typeof _9=="string"||_9==229;
+}
+if(_a){
+this.item=undefined;
+this.searchTimer=setTimeout(dojo.hitch(this,_b),1);
+}
+},_autoCompleteText:function(_e){
+var fn=this.focusNode;
+dijit.selectInputText(fn,fn.value.length);
+var _f=this.ignoreCase?"toLowerCase":"substr";
+if(_e[_f](0).indexOf(this.focusNode.value[_f](0))==0){
+var _10=this._getCaretPos(fn);
+if((_10+1)>fn.value.length){
+fn.value=_e;
+dijit.selectInputText(fn,_10);
+}
+}else{
+fn.value=_e;
+dijit.selectInputText(fn);
+}
+},_openResultList:function(_11,_12){
+this._fetchHandle=null;
+if(this.disabled||this.readOnly||(_12.query[this.searchAttr]!=this._lastQuery)){
+return;
+}
+this._popupWidget.clearResultList();
+if(!_11.length&&!this._maxOptions){
+this._hideResultList();
+return;
+}
+_12._maxOptions=this._maxOptions;
+var _13=this._popupWidget.createOptions(_11,_12,dojo.hitch(this,"_getMenuLabelFromItem"));
+this._showResultList();
+if(_12.direction){
+if(1==_12.direction){
+this._popupWidget.highlightFirstOption();
+}else{
+if(-1==_12.direction){
+this._popupWidget.highlightLastOption();
+}
+}
+this._announceOption(this._popupWidget.getHighlightedOption());
+}else{
+if(this.autoComplete&&!this._prev_key_backspace&&!/^[*]+$/.test(_12.query[this.searchAttr])){
+this._announceOption(_13[1]);
+}
+}
+},_showResultList:function(){
+this._hideResultList();
+this.displayMessage("");
+dojo.style(this._popupWidget.domNode,{width:"",height:""});
+var _14=this.open();
+var _15=dojo.marginBox(this._popupWidget.domNode);
+this._popupWidget.domNode.style.overflow=((_14.h==_15.h)&&(_14.w==_15.w))?"hidden":"auto";
+var _16=_14.w;
+if(_14.h<this._popupWidget.domNode.scrollHeight){
+_16+=16;
+}
+dojo.marginBox(this._popupWidget.domNode,{h:_14.h,w:Math.max(_16,this.domNode.offsetWidth)});
+if(_16<this.domNode.offsetWidth){
+this._popupWidget.domNode.parentNode.style.left=dojo.position(this.domNode,true).x+"px";
+}
+dijit.setWaiState(this.comboNode,"expanded","true");
+},_hideResultList:function(){
+this._abortQuery();
+if(this._isShowingNow){
+dijit.popup.close(this._popupWidget);
+this._isShowingNow=false;
+dijit.setWaiState(this.comboNode,"expanded","false");
+dijit.removeWaiState(this.focusNode,"activedescendant");
+}
+},_setBlurValue:function(){
+var _17=this.get("displayedValue");
+var pw=this._popupWidget;
+if(pw&&(_17==pw._messages["previousMessage"]||_17==pw._messages["nextMessage"])){
+this._setValueAttr(this._lastValueReported,true);
+}else{
+if(typeof this.item=="undefined"){
+this.item=null;
+this.set("displayedValue",_17);
+}else{
+if(this.value!=this._lastValueReported){
+dijit.form._FormValueWidget.prototype._setValueAttr.call(this,this.value,true);
+}
+this._refreshState();
+}
+}
+},_onBlur:function(){
+this._hideResultList();
+this.inherited(arguments);
+},_setItemAttr:function(_18,_19,_1a){
+if(!_1a){
+_1a=this.labelFunc(_18,this.store);
+}
+this.value=this._getValueField()!=this.searchAttr?this.store.getIdentity(_18):_1a;
+this.item=_18;
+dijit.form.ComboBox.superclass._setValueAttr.call(this,this.value,_19,_1a);
+},_announceOption:function(_1b){
+if(!_1b){
+return;
+}
+var _1c;
+if(_1b==this._popupWidget.nextButton||_1b==this._popupWidget.previousButton){
+_1c=_1b.innerHTML;
+this.item=undefined;
+this.value="";
+}else{
+_1c=this.labelFunc(_1b.item,this.store);
+this.set("item",_1b.item,false,_1c);
+}
+this.focusNode.value=this.focusNode.value.substring(0,this._lastInput.length);
+dijit.setWaiState(this.focusNode,"activedescendant",dojo.attr(_1b,"id"));
+this._autoCompleteText(_1c);
+},_selectOption:function(evt){
+if(evt){
+this._announceOption(evt.target);
+}
+this._hideResultList();
+this._setCaretPos(this.focusNode,this.focusNode.value.length);
+dijit.form._FormValueWidget.prototype._setValueAttr.call(this,this.value,true);
+},_onArrowMouseDown:function(evt){
+if(this.disabled||this.readOnly){
+return;
+}
+dojo.stopEvent(evt);
+this.focus();
+if(this._isShowingNow){
+this._hideResultList();
+}else{
+this._startSearchAll();
+}
+},_startSearchAll:function(){
+this._startSearch("");
+},_startSearchFromInput:function(){
+this._startSearch(this.focusNode.value.replace(/([\\\*\?])/g,"\\$1"));
+},_getQueryString:function(_1d){
+return dojo.string.substitute(this.queryExpr,[_1d]);
+},_startSearch:function(key){
+if(!this._popupWidget){
+var _1e=this.id+"_popup";
+this._popupWidget=new dijit.form._ComboBoxMenu({onChange:dojo.hitch(this,this._selectOption),id:_1e,dir:this.dir});
+dijit.removeWaiState(this.focusNode,"activedescendant");
+dijit.setWaiState(this.textbox,"owns",_1e);
+}
+var _1f=dojo.clone(this.query);
+this._lastInput=key;
+this._lastQuery=_1f[this.searchAttr]=this._getQueryString(key);
+this.searchTimer=setTimeout(dojo.hitch(this,function(_20,_21){
+this.searchTimer=null;
+var _22={queryOptions:{ignoreCase:this.ignoreCase,deep:true},query:_20,onBegin:dojo.hitch(this,"_setMaxOptions"),onComplete:dojo.hitch(this,"_openResultList"),onError:function(_23){
+_21._fetchHandle=null;
+console.error("dijit.form.ComboBox: "+_23);
+dojo.hitch(_21,"_hideResultList")();
+},start:0,count:this.pageSize};
+dojo.mixin(_22,_21.fetchProperties);
+this._fetchHandle=_21.store.fetch(_22);
+var _24=function(_25,_26){
+_25.start+=_25.count*_26;
+_25.direction=_26;
+this._fetchHandle=this.store.fetch(_25);
+};
+this._nextSearch=this._popupWidget.onPage=dojo.hitch(this,_24,this._fetchHandle);
+},_1f,this),this.searchDelay);
+},_setMaxOptions:function(_27,_28){
+this._maxOptions=_27;
+},_getValueField:function(){
+return this.searchAttr;
+},compositionend:function(evt){
+this._onKeyPress({charOrCode:229});
+},constructor:function(){
+this.query={};
+this.fetchProperties={};
+},postMixInProperties:function(){
+if(!this.store){
+var _29=this.srcNodeRef;
+this.store=new dijit.form._ComboBoxDataStore(_29);
+if(!("value" in this.params)){
+var _2a=this.store.fetchSelectedItem();
+if(_2a){
+var _2b=this._getValueField();
+this.value=_2b!=this.searchAttr?this.store.getValue(_2a,_2b):this.labelFunc(_2a,this.store);
+}
+}
+}
+this.inherited(arguments);
+},postCreate:function(){
+if(!this.hasDownArrow){
+this.downArrowNode.style.display="none";
+}
+var _2c=dojo.query("label[for=\""+this.id+"\"]");
+if(_2c.length){
+_2c[0].id=(this.id+"_label");
+var cn=this.comboNode;
+dijit.setWaiState(cn,"labelledby",_2c[0].id);
+}
+this.inherited(arguments);
+},uninitialize:function(){
+if(this._popupWidget&&!this._popupWidget._destroyed){
+this._hideResultList();
+this._popupWidget.destroy();
+}
+this.inherited(arguments);
+},_getMenuLabelFromItem:function(_2d){
+var _2e=this.labelAttr?this.store.getValue(_2d,this.labelAttr):this.labelFunc(_2d,this.store);
+var _2f=this.labelType;
+if(this.highlightMatch!="none"&&this.labelType=="text"&&this._lastInput){
+_2e=this.doHighlight(_2e,this._escapeHtml(this._lastInput));
+_2f="html";
+}
+return {html:_2f=="html",label:_2e};
+},doHighlight:function(_30,_31){
+var _32="i"+(this.highlightMatch=="all"?"g":"");
+var _33=this._escapeHtml(_30);
+_31=dojo.regexp.escapeString(_31);
+var ret=_33.replace(new RegExp("(^|\\s)("+_31+")",_32),"$1<span class=\"dijitComboBoxHighlightMatch\">$2</span>");
+return ret;
+},_escapeHtml:function(str){
+str=String(str).replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");
+return str;
+},open:function(){
+this._isShowingNow=true;
+return dijit.popup.open({popup:this._popupWidget,around:this.domNode,parent:this});
+},reset:function(){
+this.item=null;
+this.inherited(arguments);
+},labelFunc:function(_34,_35){
+return _35.getValue(_34,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' tabIndex='-1' style='overflow: \"auto\"; overflow-x: \"hidden\";'>"+"<li class='dijitMenuItem dijitMenuPreviousButton' dojoAttachPoint='previousButton' waiRole='option'></li>"+"<li class='dijitMenuItem dijitMenuNextButton' dojoAttachPoint='nextButton' waiRole='option'></li>"+"</ul>",_messages:null,baseClass:"dijitComboBoxMenu",postMixInProperties:function(){
+this._messages=dojo.i18n.getLocalization("dijit.form","ComboBox",this.lang);
+this.inherited(arguments);
+},_setValueAttr:function(_36){
+this.value=_36;
+this.onChange(_36);
+},onChange:function(_37){
+},onPage:function(_38){
+},postCreate:function(){
+this.previousButton.innerHTML=this._messages["previousMessage"];
+this.nextButton.innerHTML=this._messages["nextMessage"];
+this.inherited(arguments);
+},onClose:function(){
+this._blurOptionNode();
+},_createOption:function(_39,_3a){
+var _3b=_3a(_39);
+var _3c=dojo.doc.createElement("li");
+dijit.setWaiRole(_3c,"option");
+if(_3b.html){
+_3c.innerHTML=_3b.label;
+}else{
+_3c.appendChild(dojo.doc.createTextNode(_3b.label));
+}
+if(_3c.innerHTML==""){
+_3c.innerHTML="&nbsp;";
+}
+_3c.item=_39;
+return _3c;
+},createOptions:function(_3d,_3e,_3f){
+this.previousButton.style.display=(_3e.start==0)?"none":"";
+dojo.attr(this.previousButton,"id",this.id+"_prev");
+dojo.forEach(_3d,function(_40,i){
+var _41=this._createOption(_40,_3f);
+_41.className="dijitReset dijitMenuItem"+(this.isLeftToRight()?"":" dijitMenuItemRtl");
+dojo.attr(_41,"id",this.id+i);
+this.domNode.insertBefore(_41,this.nextButton);
+},this);
+var _42=false;
+if(_3e._maxOptions&&_3e._maxOptions!=-1){
+if((_3e.start+_3e.count)<_3e._maxOptions){
+_42=true;
+}else{
+if((_3e.start+_3e.count)>_3e._maxOptions&&_3e.count==_3d.length){
+_42=true;
+}
+}
+}else{
+if(_3e.count==_3d.length){
+_42=true;
+}
+}
+this.nextButton.style.display=_42?"":"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]);
+}
+},_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.onPage(-1);
+}else{
+if(evt.target==this.nextButton){
+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(_43){
+if(this._highlighted_option!=_43){
+this._blurOptionNode();
+this._highlighted_option=_43;
+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 _44=this.domNode.firstChild;
+var _45=_44.nextSibling;
+this._focusOptionNode(_45.style.display=="none"?_44:_45);
+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 _46=0;
+var _47=this.domNode.scrollTop;
+var _48=dojo.style(this.domNode,"height");
+if(!this.getHighlightedOption()){
+this._highlightNextOption();
+}
+while(_46<_48){
+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 _49=this.domNode.scrollTop;
+_46+=(_49-_47)*(up?-1:1);
+_47=_49;
+}
+},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(key){
+switch(key){
+case dojo.keys.DOWN_ARROW:
+this._highlightNextOption();
+break;
+case dojo.keys.PAGE_DOWN:
+this.pageDown();
+break;
+case dojo.keys.UP_ARROW:
+this._highlightPrevOption();
+break;
+case dojo.keys.PAGE_UP:
+this.pageUp();
+break;
+}
+}});
+dojo.declare("dijit.form.ComboBox",[dijit.form.ValidationTextBox,dijit.form.ComboBoxMixin],{_setValueAttr:function(_4a,_4b,_4c){
+this.item=null;
+if(!_4a){
+_4a="";
+}
+dijit.form.ValidationTextBox.prototype._setValueAttr.call(this,_4a,_4b,_4c);
+}});
+dojo.declare("dijit.form._ComboBoxDataStore",null,{constructor:function(_4d){
+this.root=_4d;
+if(_4d.tagName!="SELECT"&&_4d.firstChild){
+_4d=dojo.query("select",_4d);
+if(_4d.length>0){
+_4d=_4d[0];
+}else{
+this.root.innerHTML="<SELECT>"+this.root.innerHTML+"</SELECT>";
+_4d=this.root.firstChild;
+}
+this.root=_4d;
+}
+dojo.query("> option",_4d).forEach(function(_4e){
+_4e.innerHTML=dojo.trim(_4e.innerHTML);
+});
+},getValue:function(_4f,_50,_51){
+return (_50=="value")?_4f.value:(_4f.innerText||_4f.textContent||"");
+},isItemLoaded:function(_52){
+return true;
+},getFeatures:function(){
+return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true};
+},_fetchItems:function(_53,_54,_55){
+if(!_53.query){
+_53.query={};
+}
+if(!_53.query.name){
+_53.query.name="";
+}
+if(!_53.queryOptions){
+_53.queryOptions={};
+}
+var _56=dojo.data.util.filter.patternToRegExp(_53.query.name,_53.queryOptions.ignoreCase),_57=dojo.query("> option",this.root).filter(function(_58){
+return (_58.innerText||_58.textContent||"").match(_56);
+});
+if(_53.sort){
+_57.sort(dojo.data.util.sorter.createSortFunction(_53.sort,this));
+}
+_54(_57,_53);
+},close:function(_59){
+return;
+},getLabel:function(_5a){
+return _5a.innerHTML;
+},getIdentity:function(_5b){
+return dojo.attr(_5b,"value");
+},fetchItemByIdentity:function(_5c){
+var _5d=dojo.query("> option[value='"+_5c.identity+"']",this.root)[0];
+_5c.onItem(_5d);
+},fetchSelectedItem:function(){
+var _5e=this.root,si=_5e.selectedIndex;
+return typeof si=="number"?dojo.query("> option:nth-child("+(si!=-1?si+1:1)+")",_5e)[0]:null;
+}});
+dojo.extend(dijit.form._ComboBoxDataStore,dojo.data.util.simpleFetch);
+}
diff --git a/lib/dijit/form/ComboButton.js b/lib/dijit/form/ComboButton.js
new file mode 100644 (file)
index 0000000..db2d04a
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.ComboButton"]){
+dojo._hasResource["dijit.form.ComboButton"]=true;
+dojo.provide("dijit.form.ComboButton");
+dojo.require("dijit.form.Button");
+}
diff --git a/lib/dijit/form/CurrencyTextBox.js b/lib/dijit/form/CurrencyTextBox.js
new file mode 100644 (file)
index 0000000..a6519b2
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.CurrencyTextBox"]){
+dojo._hasResource["dijit.form.CurrencyTextBox"]=true;
+dojo.provide("dijit.form.CurrencyTextBox");
+dojo.require("dojo.currency");
+dojo.require("dijit.form.NumberTextBox");
+dojo.declare("dijit.form.CurrencyTextBox",dijit.form.NumberTextBox,{currency:"",baseClass:"dijitTextBox dijitCurrencyTextBox",regExpGen:function(_1){
+return "("+(this._focused?this.inherited(arguments,[dojo.mixin({},_1,this.editOptions)])+"|":"")+dojo.currency.regexp(_1)+")";
+},_formatter:dojo.currency.format,parse:function(_2,_3){
+var v=dojo.currency.parse(_2,_3);
+if(isNaN(v)&&/\d+/.test(_2)){
+return this.inherited(arguments,[_2,dojo.mixin({},_3,this.editOptions)]);
+}
+return v;
+},_setConstraintsAttr:function(_4){
+if(!_4.currency&&this.currency){
+_4.currency=this.currency;
+}
+this.inherited(arguments,[dojo.currency._mixInDefaults(dojo.mixin(_4,{exponent:false}))]);
+}});
+}
diff --git a/lib/dijit/form/DateTextBox.js b/lib/dijit/form/DateTextBox.js
new file mode 100644 (file)
index 0000000..d040be5
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.DateTextBox"]){
+dojo._hasResource["dijit.form.DateTextBox"]=true;
+dojo.provide("dijit.form.DateTextBox");
+dojo.require("dijit.Calendar");
+dojo.require("dijit.form._DateTimeTextBox");
+dojo.declare("dijit.form.DateTextBox",dijit.form._DateTimeTextBox,{baseClass:"dijitTextBox dijitDateTextBox",popupClass:"dijit.Calendar",_selector:"date",value:new Date("")});
+}
diff --git a/lib/dijit/form/DropDownButton.js b/lib/dijit/form/DropDownButton.js
new file mode 100644 (file)
index 0000000..53f6627
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.DropDownButton"]){
+dojo._hasResource["dijit.form.DropDownButton"]=true;
+dojo.provide("dijit.form.DropDownButton");
+dojo.require("dijit.form.Button");
+}
diff --git a/lib/dijit/form/FilteringSelect.js b/lib/dijit/form/FilteringSelect.js
new file mode 100644 (file)
index 0000000..0870322
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.FilteringSelect"]){
+dojo._hasResource["dijit.form.FilteringSelect"]=true;
+dojo.provide("dijit.form.FilteringSelect");
+dojo.require("dijit.form.ComboBox");
+dojo.declare("dijit.form.FilteringSelect",[dijit.form.MappedTextBox,dijit.form.ComboBoxMixin],{_isvalid:true,required:true,_lastDisplayedValue:"",isValid:function(){
+return this._isvalid||(!this.required&&this.get("displayedValue")=="");
+},_refreshState:function(){
+if(!this.searchTimer){
+this.inherited(arguments);
+}
+},_callbackSetLabel:function(_1,_2,_3){
+if((_2&&_2.query[this.searchAttr]!=this._lastQuery)||(!_2&&_1.length&&this.store.getIdentity(_1[0])!=this._lastQuery)){
+return;
+}
+if(!_1.length){
+this.valueNode.value="";
+dijit.form.TextBox.superclass._setValueAttr.call(this,"",_3||(_3===undefined&&!this._focused));
+this._isvalid=false;
+this.validate(this._focused);
+this.item=null;
+}else{
+this.set("item",_1[0],_3);
+}
+},_openResultList:function(_4,_5){
+if(_5.query[this.searchAttr]!=this._lastQuery){
+return;
+}
+if(this.item===undefined){
+this._isvalid=_4.length!=0||this._maxOptions!=0;
+this.validate(true);
+}
+dijit.form.ComboBoxMixin.prototype._openResultList.apply(this,arguments);
+},_getValueAttr:function(){
+return this.valueNode.value;
+},_getValueField:function(){
+return "value";
+},_setValueAttr:function(_6,_7){
+if(!this._onChangeActive){
+_7=null;
+}
+this._lastQuery=_6;
+if(_6===null||_6===""){
+this._setDisplayedValueAttr("",_7);
+return;
+}
+var _8=this;
+this.store.fetchItemByIdentity({identity:_6,onItem:function(_9){
+_8._callbackSetLabel(_9?[_9]:[],undefined,_7);
+}});
+},_setItemAttr:function(_a,_b,_c){
+this._isvalid=true;
+this.inherited(arguments);
+this.valueNode.value=this.value;
+this._lastDisplayedValue=this.textbox.value;
+},_getDisplayQueryString:function(_d){
+return _d.replace(/([\\\*\?])/g,"\\$1");
+},_setDisplayedValueAttr:function(_e,_f){
+if(!this._created){
+_f=false;
+}
+if(this.store){
+this._hideResultList();
+var _10=dojo.clone(this.query);
+this._lastQuery=_10[this.searchAttr]=this._getDisplayQueryString(_e);
+this.textbox.value=_e;
+this._lastDisplayedValue=_e;
+var _11=this;
+var _12={query:_10,queryOptions:{ignoreCase:this.ignoreCase,deep:true},onComplete:function(_13,_14){
+_11._fetchHandle=null;
+dojo.hitch(_11,"_callbackSetLabel")(_13,_14,_f);
+},onError:function(_15){
+_11._fetchHandle=null;
+console.error("dijit.form.FilteringSelect: "+_15);
+dojo.hitch(_11,"_callbackSetLabel")([],undefined,false);
+}};
+dojo.mixin(_12,this.fetchProperties);
+this._fetchHandle=this.store.fetch(_12);
+}
+},postMixInProperties:function(){
+this.inherited(arguments);
+this._isvalid=!this.required;
+},undo:function(){
+this.set("displayedValue",this._lastDisplayedValue);
+}});
+}
diff --git a/lib/dijit/form/Form.js b/lib/dijit/form/Form.js
new file mode 100644 (file)
index 0000000..618700b
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.Form"]){
+dojo._hasResource["dijit.form.Form"]=true;
+dojo.provide("dijit.form.Form");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit.form._FormMixin");
+dojo.declare("dijit.form.Form",[dijit._Widget,dijit._Templated,dijit.form._FormMixin],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form dojoAttachPoint='containerNode' dojoAttachEvent='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{action:"",method:"",encType:"","accept-charset":"",accept:"",target:""}),postMixInProperties:function(){
+this.nameAttrSetting=this.name?("name='"+this.name+"'"):"";
+this.inherited(arguments);
+},execute:function(_1){
+},onExecute:function(){
+},_setEncTypeAttr:function(_2){
+this.encType=_2;
+dojo.attr(this.domNode,"encType",_2);
+if(dojo.isIE){
+this.domNode.encoding=_2;
+}
+},postCreate:function(){
+if(dojo.isIE&&this.srcNodeRef&&this.srcNodeRef.attributes){
+var _3=this.srcNodeRef.attributes.getNamedItem("encType");
+if(_3&&!_3.specified&&(typeof _3.value=="string")){
+this.set("encType",_3.value);
+}
+}
+this.inherited(arguments);
+},reset:function(e){
+var _4={returnValue:true,preventDefault:function(){
+this.returnValue=false;
+},stopPropagation:function(){
+},currentTarget:e?e.target:this.domNode,target:e?e.target:this.domNode};
+if(!(this.onReset(_4)===false)&&_4.returnValue){
+this.inherited(arguments,[]);
+}
+},onReset:function(e){
+return true;
+},_onReset:function(e){
+this.reset(e);
+dojo.stopEvent(e);
+return false;
+},_onSubmit:function(e){
+var fp=dijit.form.Form.prototype;
+if(this.execute!=fp.execute||this.onExecute!=fp.onExecute){
+dojo.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.","","2.0");
+this.onExecute();
+this.execute(this.getValues());
+}
+if(this.onSubmit(e)===false){
+dojo.stopEvent(e);
+}
+},onSubmit:function(e){
+return this.isValid();
+},submit:function(){
+if(!(this.onSubmit()===false)){
+this.containerNode.submit();
+}
+}});
+}
diff --git a/lib/dijit/form/HorizontalRule.js b/lib/dijit/form/HorizontalRule.js
new file mode 100644 (file)
index 0000000..944282d
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.HorizontalRule"]){
+dojo._hasResource["dijit.form.HorizontalRule"]=true;
+dojo.provide("dijit.form.HorizontalRule");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.declare("dijit.form.HorizontalRule",[dijit._Widget,dijit._Templated],{templateString:"<div class=\"dijitRuleContainer dijitRuleContainerH\"></div>",count:3,container:"containerNode",ruleStyle:"",_positionPrefix:"<div class=\"dijitRuleMark dijitRuleMarkH\" style=\"left:",_positionSuffix:"%;",_suffix:"\"></div>",_genHTML:function(_1,_2){
+return this._positionPrefix+_1+this._positionSuffix+this.ruleStyle+this._suffix;
+},_isHorizontal:true,postCreate:function(){
+var _3;
+if(this.count==1){
+_3=this._genHTML(50,0);
+}else{
+var i;
+var _4=100/(this.count-1);
+if(!this._isHorizontal||this.isLeftToRight()){
+_3=this._genHTML(0,0);
+for(i=1;i<this.count-1;i++){
+_3+=this._genHTML(_4*i,i);
+}
+_3+=this._genHTML(100,this.count-1);
+}else{
+_3=this._genHTML(100,0);
+for(i=1;i<this.count-1;i++){
+_3+=this._genHTML(100-_4*i,i);
+}
+_3+=this._genHTML(0,this.count-1);
+}
+}
+this.domNode.innerHTML=_3;
+}});
+}
diff --git a/lib/dijit/form/HorizontalRuleLabels.js b/lib/dijit/form/HorizontalRuleLabels.js
new file mode 100644 (file)
index 0000000..6cf6742
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.HorizontalRuleLabels"]){
+dojo._hasResource["dijit.form.HorizontalRuleLabels"]=true;
+dojo.provide("dijit.form.HorizontalRuleLabels");
+dojo.require("dijit.form.HorizontalRule");
+dojo.declare("dijit.form.HorizontalRuleLabels",dijit.form.HorizontalRule,{templateString:"<div class=\"dijitRuleContainer dijitRuleContainerH dijitRuleLabelsContainer dijitRuleLabelsContainerH\"></div>",labelStyle:"",labels:[],numericMargin:0,minimum:0,maximum:1,constraints:{pattern:"#%"},_positionPrefix:"<div class=\"dijitRuleLabelContainer dijitRuleLabelContainerH\" style=\"left:",_labelPrefix:"\"><div class=\"dijitRuleLabel dijitRuleLabelH\">",_suffix:"</div></div>",_calcPosition:function(_1){
+return _1;
+},_genHTML:function(_2,_3){
+return this._positionPrefix+this._calcPosition(_2)+this._positionSuffix+this.labelStyle+this._labelPrefix+this.labels[_3]+this._suffix;
+},getLabels:function(){
+var _4=this.labels;
+if(!_4.length){
+_4=dojo.query("> li",this.srcNodeRef).map(function(_5){
+return String(_5.innerHTML);
+});
+}
+this.srcNodeRef.innerHTML="";
+if(!_4.length&&this.count>1){
+var _6=this.minimum;
+var _7=(this.maximum-_6)/(this.count-1);
+for(var i=0;i<this.count;i++){
+_4.push((i<this.numericMargin||i>=(this.count-this.numericMargin))?"":dojo.number.format(_6,this.constraints));
+_6+=_7;
+}
+}
+return _4;
+},postMixInProperties:function(){
+this.inherited(arguments);
+this.labels=this.getLabels();
+this.count=this.labels.length;
+}});
+}
diff --git a/lib/dijit/form/HorizontalSlider.js b/lib/dijit/form/HorizontalSlider.js
new file mode 100644 (file)
index 0000000..a0cb8cf
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.HorizontalSlider"]){
+dojo._hasResource["dijit.form.HorizontalSlider"]=true;
+dojo.provide("dijit.form.HorizontalSlider");
+dojo.require("dijit.form._FormWidget");
+dojo.require("dijit._Container");
+dojo.require("dojo.dnd.move");
+dojo.require("dijit.form.Button");
+dojo.require("dojo.number");
+dojo.require("dojo._base.fx");
+dojo.declare("dijit.form.HorizontalSlider",[dijit.form._FormValueWidget,dijit._Container],{templateString:dojo.cache("dijit.form","templates/HorizontalSlider.html","<table class=\"dijit dijitReset dijitSlider dijitSliderH\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\" dojoAttachEvent=\"onkeypress:_onKeyPress,onkeyup:_onKeyUp\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"topDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationT dijitSliderDecorationH\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n\t\t\t><div class=\"dijitSliderDecrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderLeftBumper\" dojoAttachEvent=\"onmousedown:_onClkDecBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" ${!nameAttrSetting}\n\t\t\t/><div class=\"dijitReset dijitSliderBarContainerH\" waiRole=\"presentation\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderProgressBar dijitSliderProgressBarH\" dojoAttachEvent=\"onmousedown:_onBarClick\"\n\t\t\t\t\t><div class=\"dijitSliderMoveable dijitSliderMoveableH\"\n\t\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderImageHandle dijitSliderImageHandleH\" dojoAttachEvent=\"onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarH dijitSliderRemainingBar dijitSliderRemainingBarH\" dojoAttachEvent=\"onmousedown:_onBarClick\"></div\n\t\t\t></div\n\t\t></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperH dijitSliderRightBumper\" dojoAttachEvent=\"onmousedown:_onClkIncBumper\"></div\n\t\t></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerH\"\n\t\t\t><div class=\"dijitSliderIncrementIconH\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t\t><td dojoAttachPoint=\"containerNode,bottomDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationB dijitSliderDecorationH\"></td\n\t\t><td class=\"dijitReset\" colspan=\"2\"></td\n\t></tr\n></table>\n"),value:0,showButtons:true,minimum:0,maximum:100,discreteValues:Infinity,pageIncrement:2,clickSelect:true,slideDuration:dijit.defaultDuration,widgetsInTemplate:true,attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{id:""}),baseClass:"dijitSlider",cssStateNodes:{incrementButton:"dijitSliderIncrementButton",decrementButton:"dijitSliderDecrementButton",focusNode:"dijitSliderThumb"},_mousePixelCoord:"pageX",_pixelCount:"w",_startingPixelCoord:"x",_startingPixelCount:"l",_handleOffsetCoord:"left",_progressPixelSize:"width",_onKeyUp:function(e){
+if(this.disabled||this.readOnly||e.altKey||e.ctrlKey||e.metaKey){
+return;
+}
+this._setValueAttr(this.value,true);
+},_onKeyPress:function(e){
+if(this.disabled||this.readOnly||e.altKey||e.ctrlKey||e.metaKey){
+return;
+}
+switch(e.charOrCode){
+case dojo.keys.HOME:
+this._setValueAttr(this.minimum,false);
+break;
+case dojo.keys.END:
+this._setValueAttr(this.maximum,false);
+break;
+case ((this._descending||this.isLeftToRight())?dojo.keys.RIGHT_ARROW:dojo.keys.LEFT_ARROW):
+case (this._descending===false?dojo.keys.DOWN_ARROW:dojo.keys.UP_ARROW):
+case (this._descending===false?dojo.keys.PAGE_DOWN:dojo.keys.PAGE_UP):
+this.increment(e);
+break;
+case ((this._descending||this.isLeftToRight())?dojo.keys.LEFT_ARROW:dojo.keys.RIGHT_ARROW):
+case (this._descending===false?dojo.keys.UP_ARROW:dojo.keys.DOWN_ARROW):
+case (this._descending===false?dojo.keys.PAGE_UP:dojo.keys.PAGE_DOWN):
+this.decrement(e);
+break;
+default:
+return;
+}
+dojo.stopEvent(e);
+},_onHandleClick:function(e){
+if(this.disabled||this.readOnly){
+return;
+}
+if(!dojo.isIE){
+dijit.focus(this.sliderHandle);
+}
+dojo.stopEvent(e);
+},_isReversed:function(){
+return !this.isLeftToRight();
+},_onBarClick:function(e){
+if(this.disabled||this.readOnly||!this.clickSelect){
+return;
+}
+dijit.focus(this.sliderHandle);
+dojo.stopEvent(e);
+var _1=dojo.position(this.sliderBarContainer,true);
+var _2=e[this._mousePixelCoord]-_1[this._startingPixelCoord];
+this._setPixelValue(this._isReversed()?(_1[this._pixelCount]-_2):_2,_1[this._pixelCount],true);
+this._movable.onMouseDown(e);
+},_setPixelValue:function(_3,_4,_5){
+if(this.disabled||this.readOnly){
+return;
+}
+_3=_3<0?0:_4<_3?_4:_3;
+var _6=this.discreteValues;
+if(_6<=1||_6==Infinity){
+_6=_4;
+}
+_6--;
+var _7=_4/_6;
+var _8=Math.round(_3/_7);
+this._setValueAttr((this.maximum-this.minimum)*_8/_6+this.minimum,_5);
+},_setValueAttr:function(_9,_a){
+this.valueNode.value=this.value=_9;
+dijit.setWaiState(this.focusNode,"valuenow",_9);
+this.inherited(arguments);
+var _b=(_9-this.minimum)/(this.maximum-this.minimum);
+var _c=(this._descending===false)?this.remainingBar:this.progressBar;
+var _d=(this._descending===false)?this.progressBar:this.remainingBar;
+if(this._inProgressAnim&&this._inProgressAnim.status!="stopped"){
+this._inProgressAnim.stop(true);
+}
+if(_a&&this.slideDuration>0&&_c.style[this._progressPixelSize]){
+var _e=this;
+var _f={};
+var _10=parseFloat(_c.style[this._progressPixelSize]);
+var _11=this.slideDuration*(_b-_10/100);
+if(_11==0){
+return;
+}
+if(_11<0){
+_11=0-_11;
+}
+_f[this._progressPixelSize]={start:_10,end:_b*100,units:"%"};
+this._inProgressAnim=dojo.animateProperty({node:_c,duration:_11,onAnimate:function(v){
+_d.style[_e._progressPixelSize]=(100-parseFloat(v[_e._progressPixelSize]))+"%";
+},onEnd:function(){
+delete _e._inProgressAnim;
+},properties:_f});
+this._inProgressAnim.play();
+}else{
+_c.style[this._progressPixelSize]=(_b*100)+"%";
+_d.style[this._progressPixelSize]=((1-_b)*100)+"%";
+}
+},_bumpValue:function(_12,_13){
+if(this.disabled||this.readOnly){
+return;
+}
+var s=dojo.getComputedStyle(this.sliderBarContainer);
+var c=dojo._getContentBox(this.sliderBarContainer,s);
+var _14=this.discreteValues;
+if(_14<=1||_14==Infinity){
+_14=c[this._pixelCount];
+}
+_14--;
+var _15=(this.value-this.minimum)*_14/(this.maximum-this.minimum)+_12;
+if(_15<0){
+_15=0;
+}
+if(_15>_14){
+_15=_14;
+}
+_15=_15*(this.maximum-this.minimum)/_14+this.minimum;
+this._setValueAttr(_15,_13);
+},_onClkBumper:function(val){
+if(this.disabled||this.readOnly||!this.clickSelect){
+return;
+}
+this._setValueAttr(val,true);
+},_onClkIncBumper:function(){
+this._onClkBumper(this._descending===false?this.minimum:this.maximum);
+},_onClkDecBumper:function(){
+this._onClkBumper(this._descending===false?this.maximum:this.minimum);
+},decrement:function(e){
+this._bumpValue(e.charOrCode==dojo.keys.PAGE_DOWN?-this.pageIncrement:-1);
+},increment:function(e){
+this._bumpValue(e.charOrCode==dojo.keys.PAGE_UP?this.pageIncrement:1);
+},_mouseWheeled:function(evt){
+dojo.stopEvent(evt);
+var _16=!dojo.isMozilla;
+var _17=evt[(_16?"wheelDelta":"detail")]*(_16?1:-1);
+this._bumpValue(_17<0?-1:1,true);
+},startup:function(){
+if(this._started){
+return;
+}
+dojo.forEach(this.getChildren(),function(_18){
+if(this[_18.container]!=this.containerNode){
+this[_18.container].appendChild(_18.domNode);
+}
+},this);
+this.inherited(arguments);
+},_typematicCallback:function(_19,_1a,e){
+if(_19==-1){
+this._setValueAttr(this.value,true);
+}else{
+this[(_1a==(this._descending?this.incrementButton:this.decrementButton))?"decrement":"increment"](e);
+}
+},postCreate:function(){
+if(this.showButtons){
+this.incrementButton.style.display="";
+this.decrementButton.style.display="";
+this._connects.push(dijit.typematic.addMouseListener(this.decrementButton,this,"_typematicCallback",25,500));
+this._connects.push(dijit.typematic.addMouseListener(this.incrementButton,this,"_typematicCallback",25,500));
+}
+this.connect(this.domNode,!dojo.isMozilla?"onmousewheel":"DOMMouseScroll","_mouseWheeled");
+var _1b=dojo.declare(dijit.form._SliderMover,{widget:this});
+this._movable=new dojo.dnd.Moveable(this.sliderHandle,{mover:_1b});
+var _1c=dojo.query("label[for=\""+this.id+"\"]");
+if(_1c.length){
+_1c[0].id=(this.id+"_label");
+dijit.setWaiState(this.focusNode,"labelledby",_1c[0].id);
+}
+dijit.setWaiState(this.focusNode,"valuemin",this.minimum);
+dijit.setWaiState(this.focusNode,"valuemax",this.maximum);
+this.inherited(arguments);
+this._layoutHackIE7();
+},destroy:function(){
+this._movable.destroy();
+if(this._inProgressAnim&&this._inProgressAnim.status!="stopped"){
+this._inProgressAnim.stop(true);
+}
+this._supportingWidgets=dijit.findWidgets(this.domNode);
+this.inherited(arguments);
+}});
+dojo.declare("dijit.form._SliderMover",dojo.dnd.Mover,{onMouseMove:function(e){
+var _1d=this.widget;
+var _1e=_1d._abspos;
+if(!_1e){
+_1e=_1d._abspos=dojo.position(_1d.sliderBarContainer,true);
+_1d._setPixelValue_=dojo.hitch(_1d,"_setPixelValue");
+_1d._isReversed_=_1d._isReversed();
+}
+var _1f=e[_1d._mousePixelCoord]-_1e[_1d._startingPixelCoord];
+_1d._setPixelValue_(_1d._isReversed_?(_1e[_1d._pixelCount]-_1f):_1f,_1e[_1d._pixelCount],false);
+},destroy:function(e){
+dojo.dnd.Mover.prototype.destroy.apply(this,arguments);
+var _20=this.widget;
+_20._abspos=null;
+_20._setValueAttr(_20.value,true);
+}});
+}
diff --git a/lib/dijit/form/MappedTextBox.js b/lib/dijit/form/MappedTextBox.js
new file mode 100644 (file)
index 0000000..e7dd213
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.MappedTextBox"]){
+dojo._hasResource["dijit.form.MappedTextBox"]=true;
+dojo.provide("dijit.form.MappedTextBox");
+dojo.require("dijit.form.ValidationTextBox");
+}
diff --git a/lib/dijit/form/MultiSelect.js b/lib/dijit/form/MultiSelect.js
new file mode 100644 (file)
index 0000000..8aacb41
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.MultiSelect"]){
+dojo._hasResource["dijit.form.MultiSelect"]=true;
+dojo.provide("dijit.form.MultiSelect");
+dojo.require("dijit.form._FormWidget");
+dojo.declare("dijit.form.MultiSelect",dijit.form._FormValueWidget,{size:7,templateString:"<select multiple='true' ${!nameAttrSetting} dojoAttachPoint='containerNode,focusNode' dojoAttachEvent='onchange: _onChange'></select>",attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{size:"focusNode"}),reset:function(){
+this._hasBeenBlurred=false;
+this._setValueAttr(this._resetValue,true);
+},addSelected:function(_1){
+_1.getSelected().forEach(function(n){
+this.containerNode.appendChild(n);
+this.domNode.scrollTop=this.domNode.offsetHeight;
+var _2=_1.domNode.scrollTop;
+_1.domNode.scrollTop=0;
+_1.domNode.scrollTop=_2;
+},this);
+},getSelected:function(){
+return dojo.query("option",this.containerNode).filter(function(n){
+return n.selected;
+});
+},_getValueAttr:function(){
+return this.getSelected().map(function(n){
+return n.value;
+});
+},multiple:true,_setValueAttr:function(_3){
+dojo.query("option",this.containerNode).forEach(function(n){
+n.selected=(dojo.indexOf(_3,n.value)!=-1);
+});
+},invertSelection:function(_4){
+dojo.query("option",this.containerNode).forEach(function(n){
+n.selected=!n.selected;
+});
+this._handleOnChange(this.get("value"),_4==true);
+},_onChange:function(e){
+this._handleOnChange(this.get("value"),true);
+},resize:function(_5){
+if(_5){
+dojo.marginBox(this.domNode,_5);
+}
+},postCreate:function(){
+this._onChange();
+}});
+}
diff --git a/lib/dijit/form/NumberSpinner.js b/lib/dijit/form/NumberSpinner.js
new file mode 100644 (file)
index 0000000..82a3c40
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.NumberSpinner"]){
+dojo._hasResource["dijit.form.NumberSpinner"]=true;
+dojo.provide("dijit.form.NumberSpinner");
+dojo.require("dijit.form._Spinner");
+dojo.require("dijit.form.NumberTextBox");
+dojo.declare("dijit.form.NumberSpinner",[dijit.form._Spinner,dijit.form.NumberTextBoxMixin],{adjust:function(_1,_2){
+var tc=this.constraints,v=isNaN(_1),_3=!isNaN(tc.max),_4=!isNaN(tc.min);
+if(v&&_2!=0){
+_1=(_2>0)?_4?tc.min:_3?tc.max:0:_3?this.constraints.max:_4?tc.min:0;
+}
+var _5=_1+_2;
+if(v||isNaN(_5)){
+return _1;
+}
+if(_3&&(_5>tc.max)){
+_5=tc.max;
+}
+if(_4&&(_5<tc.min)){
+_5=tc.min;
+}
+return _5;
+},_onKeyPress:function(e){
+if((e.charOrCode==dojo.keys.HOME||e.charOrCode==dojo.keys.END)&&!(e.ctrlKey||e.altKey||e.metaKey)&&typeof this.get("value")!="undefined"){
+var _6=this.constraints[(e.charOrCode==dojo.keys.HOME?"min":"max")];
+if(typeof _6=="number"){
+this._setValueAttr(_6,false);
+}
+dojo.stopEvent(e);
+}
+}});
+}
diff --git a/lib/dijit/form/NumberTextBox.js b/lib/dijit/form/NumberTextBox.js
new file mode 100644 (file)
index 0000000..d477d1b
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.NumberTextBox"]){
+dojo._hasResource["dijit.form.NumberTextBox"]=true;
+dojo.provide("dijit.form.NumberTextBox");
+dojo.require("dijit.form.ValidationTextBox");
+dojo.require("dojo.number");
+dojo.declare("dijit.form.NumberTextBoxMixin",null,{regExpGen:dojo.number.regexp,value:NaN,editOptions:{pattern:"#.######"},_formatter:dojo.number.format,_setConstraintsAttr:function(_1){
+var _2=typeof _1.places=="number"?_1.places:0;
+if(_2){
+_2++;
+}
+if(typeof _1.max!="number"){
+_1.max=9*Math.pow(10,15-_2);
+}
+if(typeof _1.min!="number"){
+_1.min=-9*Math.pow(10,15-_2);
+}
+this.inherited(arguments,[_1]);
+if(this.focusNode&&this.focusNode.value&&!isNaN(this.value)){
+this.set("value",this.value);
+}
+},_onFocus:function(){
+if(this.disabled){
+return;
+}
+var _3=this.get("value");
+if(typeof _3=="number"&&!isNaN(_3)){
+var _4=this.format(_3,this.constraints);
+if(_4!==undefined){
+this.textbox.value=_4;
+}
+}
+this.inherited(arguments);
+},format:function(_5,_6){
+var _7=String(_5);
+if(typeof _5!="number"){
+return _7;
+}
+if(isNaN(_5)){
+return "";
+}
+if(!("rangeCheck" in this&&this.rangeCheck(_5,_6))&&_6.exponent!==false&&/\de[-+]?\d/i.test(_7)){
+return _7;
+}
+if(this.editOptions&&this._focused){
+_6=dojo.mixin({},_6,this.editOptions);
+}
+return this._formatter(_5,_6);
+},parse:dojo.number.parse,_getDisplayedValueAttr:function(){
+var v=this.inherited(arguments);
+return isNaN(v)?this.textbox.value:v;
+},filter:function(_8){
+return (_8===null||_8===""||_8===undefined)?NaN:this.inherited(arguments);
+},serialize:function(_9,_a){
+return (typeof _9!="number"||isNaN(_9))?"":this.inherited(arguments);
+},_setValueAttr:function(_b,_c,_d){
+if(_b!==undefined&&_d===undefined){
+_d=String(_b);
+if(typeof _b=="number"){
+if(isNaN(_b)){
+_d="";
+}else{
+if(("rangeCheck" in this&&this.rangeCheck(_b,this.constraints))||this.constraints.exponent===false||!/\de[-+]?\d/i.test(_d)){
+_d=undefined;
+}
+}
+}else{
+if(!_b){
+_d="";
+_b=NaN;
+}else{
+_b=undefined;
+}
+}
+}
+this.inherited(arguments,[_b,_c,_d]);
+},_getValueAttr:function(){
+var v=this.inherited(arguments);
+if(isNaN(v)&&this.textbox.value!==""){
+if(this.constraints.exponent!==false&&/\de[-+]?\d/i.test(this.textbox.value)&&(new RegExp("^"+dojo.number._realNumberRegexp(dojo.mixin({},this.constraints))+"$").test(this.textbox.value))){
+var n=Number(this.textbox.value);
+return isNaN(n)?undefined:n;
+}else{
+return undefined;
+}
+}else{
+return v;
+}
+},isValid:function(_e){
+if(!this._focused||this._isEmpty(this.textbox.value)){
+return this.inherited(arguments);
+}else{
+var v=this.get("value");
+if(!isNaN(v)&&this.rangeCheck(v,this.constraints)){
+if(this.constraints.exponent!==false&&/\de[-+]?\d/i.test(this.textbox.value)){
+return true;
+}else{
+return this.inherited(arguments);
+}
+}else{
+return false;
+}
+}
+}});
+dojo.declare("dijit.form.NumberTextBox",[dijit.form.RangeBoundTextBox,dijit.form.NumberTextBoxMixin],{});
+}
diff --git a/lib/dijit/form/RadioButton.js b/lib/dijit/form/RadioButton.js
new file mode 100644 (file)
index 0000000..154bdd4
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.RadioButton"]){
+dojo._hasResource["dijit.form.RadioButton"]=true;
+dojo.provide("dijit.form.RadioButton");
+dojo.require("dijit.form.CheckBox");
+}
diff --git a/lib/dijit/form/RangeBoundTextBox.js b/lib/dijit/form/RangeBoundTextBox.js
new file mode 100644 (file)
index 0000000..b2e2f4c
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.RangeBoundTextBox"]){
+dojo._hasResource["dijit.form.RangeBoundTextBox"]=true;
+dojo.provide("dijit.form.RangeBoundTextBox");
+dojo.require("dijit.form.ValidationTextBox");
+}
diff --git a/lib/dijit/form/Select.js b/lib/dijit/form/Select.js
new file mode 100644 (file)
index 0000000..7caf553
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.Select"]){
+dojo._hasResource["dijit.form.Select"]=true;
+dojo.provide("dijit.form.Select");
+dojo.require("dijit.form._FormSelectWidget");
+dojo.require("dijit._HasDropDown");
+dojo.require("dijit.Menu");
+dojo.require("dijit.Tooltip");
+dojo.requireLocalization("dijit.form","validate",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit.form._SelectMenu",dijit.Menu,{buildRendering:function(){
+this.inherited(arguments);
+var o=(this.menuTableNode=this.domNode);
+var n=(this.domNode=dojo.create("div",{style:{overflowX:"hidden",overflowY:"scroll"}}));
+if(o.parentNode){
+o.parentNode.replaceChild(n,o);
+}
+dojo.removeClass(o,"dijitMenuTable");
+n.className=o.className+" dijitSelectMenu";
+o.className="dijitReset dijitMenuTable";
+dijit.setWaiRole(o,"listbox");
+dijit.setWaiRole(n,"presentation");
+n.appendChild(o);
+},resize:function(mb){
+if(mb){
+dojo.marginBox(this.domNode,mb);
+if("w" in mb){
+this.menuTableNode.style.width="100%";
+}
+}
+}});
+dojo.declare("dijit.form.Select",[dijit.form._FormSelectWidget,dijit._HasDropDown],{baseClass:"dijitSelect",templateString:dojo.cache("dijit.form","templates/Select.html","<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tdojoAttachPoint=\"_buttonNode,tableNode,focusNode\" cellspacing='0' cellpadding='0'\n\twaiRole=\"combobox\" waiState=\"haspopup-true\"\n\t><tbody waiRole=\"presentation\"><tr waiRole=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents dijitButtonNode\" waiRole=\"presentation\"\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"  dojoAttachPoint=\"containerNode,_popupStateNode\"></span\n\t\t\t><input type=\"hidden\" ${!nameAttrSetting} dojoAttachPoint=\"valueNode\" value=\"${value}\" waiState=\"hidden-true\"\n\t\t/></td><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton\"\n\t\t\t\tdojoAttachPoint=\"titleNode\" waiRole=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" waiRole=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" waiRole=\"presentation\">&#9660;</div\n\t\t></td\n\t></tr></tbody\n></table>\n"),attributeMap:dojo.mixin(dojo.clone(dijit.form._FormSelectWidget.prototype.attributeMap),{style:"tableNode"}),required:false,state:"",tooltipPosition:[],emptyLabel:"",_isLoaded:false,_childrenLoaded:false,_fillContent:function(){
+this.inherited(arguments);
+if(this.options.length&&!this.value&&this.srcNodeRef){
+var si=this.srcNodeRef.selectedIndex;
+this.value=this.options[si!=-1?si:0].value;
+}
+this.dropDown=new dijit.form._SelectMenu({id:this.id+"_menu"});
+dojo.addClass(this.dropDown.domNode,this.baseClass+"Menu");
+},_getMenuItemForOption:function(_1){
+if(!_1.value){
+return new dijit.MenuSeparator();
+}else{
+var _2=dojo.hitch(this,"_setValueAttr",_1);
+var _3=new dijit.MenuItem({option:_1,label:_1.label,onClick:_2,disabled:_1.disabled||false});
+dijit.setWaiRole(_3.focusNode,"listitem");
+return _3;
+}
+},_addOptionItem:function(_4){
+if(this.dropDown){
+this.dropDown.addChild(this._getMenuItemForOption(_4));
+}
+},_getChildren:function(){
+if(!this.dropDown){
+return [];
+}
+return this.dropDown.getChildren();
+},_loadChildren:function(_5){
+if(_5===true){
+if(this.dropDown){
+delete this.dropDown.focusedChild;
+}
+if(this.options.length){
+this.inherited(arguments);
+}else{
+dojo.forEach(this._getChildren(),function(_6){
+_6.destroyRecursive();
+});
+var _7=new dijit.MenuItem({label:"&nbsp;"});
+this.dropDown.addChild(_7);
+}
+}else{
+this._updateSelection();
+}
+var _8=this.options.length;
+this._isLoaded=false;
+this._childrenLoaded=true;
+if(!this._loadingStore){
+this._setValueAttr(this.value);
+}
+},_setValueAttr:function(_9){
+this.inherited(arguments);
+dojo.attr(this.valueNode,"value",this.get("value"));
+},_setDisplay:function(_a){
+this.containerNode.innerHTML="<span class=\"dijitReset dijitInline "+this.baseClass+"Label\">"+(_a||this.emptyLabel||"&nbsp;")+"</span>";
+dijit.setWaiState(this.focusNode,"valuetext",(_a||this.emptyLabel||"&nbsp;"));
+},validate:function(_b){
+var _c=this.isValid(_b);
+this.state=_c?"":"Error";
+this._setStateClass();
+dijit.setWaiState(this.focusNode,"invalid",_c?"false":"true");
+var _d=_c?"":this._missingMsg;
+if(this._message!==_d){
+this._message=_d;
+dijit.hideTooltip(this.domNode);
+if(_d){
+dijit.showTooltip(_d,this.domNode,this.tooltipPosition,!this.isLeftToRight());
+}
+}
+return _c;
+},isValid:function(_e){
+return (!this.required||!(/^\s*$/.test(this.value)));
+},reset:function(){
+this.inherited(arguments);
+dijit.hideTooltip(this.domNode);
+this.state="";
+this._setStateClass();
+delete this._message;
+},postMixInProperties:function(){
+this.inherited(arguments);
+this._missingMsg=dojo.i18n.getLocalization("dijit.form","validate",this.lang).missingMessage;
+},postCreate:function(){
+this.inherited(arguments);
+if(this.tableNode.style.width){
+dojo.addClass(this.domNode,this.baseClass+"FixedWidth");
+}
+},isLoaded:function(){
+return this._isLoaded;
+},loadDropDown:function(_f){
+this._loadChildren(true);
+this._isLoaded=true;
+_f();
+},closeDropDown:function(){
+this.inherited(arguments);
+if(this.dropDown&&this.dropDown.menuTableNode){
+this.dropDown.menuTableNode.style.width="";
+}
+},uninitialize:function(_10){
+if(this.dropDown&&!this.dropDown._destroyed){
+this.dropDown.destroyRecursive(_10);
+delete this.dropDown;
+}
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/form/SimpleTextarea.js b/lib/dijit/form/SimpleTextarea.js
new file mode 100644 (file)
index 0000000..b4824c7
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.SimpleTextarea"]){
+dojo._hasResource["dijit.form.SimpleTextarea"]=true;
+dojo.provide("dijit.form.SimpleTextarea");
+dojo.require("dijit.form.TextBox");
+dojo.declare("dijit.form.SimpleTextarea",dijit.form.TextBox,{baseClass:"dijitTextBox dijitTextArea",attributeMap:dojo.delegate(dijit.form._FormValueWidget.prototype.attributeMap,{rows:"textbox",cols:"textbox"}),rows:"3",cols:"20",templateString:"<textarea ${!nameAttrSetting} dojoAttachPoint='focusNode,containerNode,textbox' autocomplete='off'></textarea>",postMixInProperties:function(){
+if(!this.value&&this.srcNodeRef){
+this.value=this.srcNodeRef.value;
+}
+this.inherited(arguments);
+},filter:function(_1){
+if(_1){
+_1=_1.replace(/\r/g,"");
+}
+return this.inherited(arguments);
+},postCreate:function(){
+this.inherited(arguments);
+if(dojo.isIE&&this.cols){
+dojo.addClass(this.textbox,"dijitTextAreaCols");
+}
+},_previousValue:"",_onInput:function(e){
+if(this.maxLength){
+var _2=parseInt(this.maxLength);
+var _3=this.textbox.value.replace(/\r/g,"");
+var _4=_3.length-_2;
+if(_4>0){
+if(e){
+dojo.stopEvent(e);
+}
+var _5=this.textbox;
+if(_5.selectionStart){
+var _6=_5.selectionStart;
+var cr=0;
+if(dojo.isOpera){
+cr=(this.textbox.value.substring(0,_6).match(/\r/g)||[]).length;
+}
+this.textbox.value=_3.substring(0,_6-_4-cr)+_3.substring(_6-cr);
+_5.setSelectionRange(_6-_4,_6-_4);
+}else{
+if(dojo.doc.selection){
+_5.focus();
+var _7=dojo.doc.selection.createRange();
+_7.moveStart("character",-_4);
+_7.text="";
+_7.select();
+}
+}
+}
+this._previousValue=this.textbox.value;
+}
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/form/Slider.js b/lib/dijit/form/Slider.js
new file mode 100644 (file)
index 0000000..051d579
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.Slider"]){
+dojo._hasResource["dijit.form.Slider"]=true;
+dojo.provide("dijit.form.Slider");
+dojo.deprecated("Call require() for HorizontalSlider / VerticalRule, explicitly rather than 'dijit.form.Slider' itself","","2.0");
+dojo.require("dijit.form.HorizontalSlider");
+dojo.require("dijit.form.VerticalSlider");
+dojo.require("dijit.form.HorizontalRule");
+dojo.require("dijit.form.VerticalRule");
+dojo.require("dijit.form.HorizontalRuleLabels");
+dojo.require("dijit.form.VerticalRuleLabels");
+}
diff --git a/lib/dijit/form/TextBox.js b/lib/dijit/form/TextBox.js
new file mode 100644 (file)
index 0000000..81c9b2a
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.TextBox"]){
+dojo._hasResource["dijit.form.TextBox"]=true;
+dojo.provide("dijit.form.TextBox");
+dojo.require("dijit.form._FormWidget");
+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}\" waiRole=\"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 _1=this.type.toLowerCase();
+if(this.templateString.toLowerCase()=="input"||((_1=="hidden"||_1=="file")&&this.templateString==dijit.form.TextBox.prototype.templateString)){
+this.templateString=this._singleNodeTemplate;
+}
+this.inherited(arguments);
+},_setPlaceHolderAttr:function(v){
+this.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(_2,_3,_4){
+var _5;
+if(_2!==undefined){
+_5=this.filter(_2);
+if(typeof _4!="string"){
+if(_5!==null&&((typeof _5!="number")||!isNaN(_5))){
+_4=this.filter(this.format(_5,this.constraints));
+}else{
+_4="";
+}
+}
+}
+if(_4!=null&&_4!=undefined&&((typeof _4)!="number"||!isNaN(_4))&&this.textbox.value!=_4){
+this.textbox.value=_4;
+}
+this._updatePlaceHolder();
+this.inherited(arguments,[_5,_3]);
+},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(_6){
+dojo.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");
+this.set("displayedValue",_6);
+},_setDisplayedValueAttr:function(_7){
+if(_7===null||_7===undefined){
+_7="";
+}else{
+if(typeof _7!="string"){
+_7=String(_7);
+}
+}
+this.textbox.value=_7;
+this._setValueAttr(this.get("value"),undefined,_7);
+},format:function(_8,_9){
+return ((_8==null||_8==undefined)?"":(_8.toString?_8.toString():_8));
+},parse:function(_a,_b){
+return _a;
+},_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 _c=this;
+setTimeout(function(){
+_c._handleOnChange(_c.get("value"),false);
+},0);
+}
+this._refreshState();
+},postCreate:function(){
+if(dojo.isIE){
+var s=dojo.getComputedStyle(this.domNode);
+if(s){
+var ff=s.fontFamily;
+if(ff){
+var _d=this.domNode.getElementsByTagName("INPUT");
+if(_d){
+for(var i=0;i<_d.length;i++){
+_d[i].style.fontFamily=ff;
+}
+}
+}
+}
+}
+this.textbox.setAttribute("value",this.textbox.value);
+this.inherited(arguments);
+if(dojo.isMoz||dojo.isOpera){
+this.connect(this.textbox,"oninput",this._onInput);
+}else{
+this.connect(this.textbox,"onkeydown",this._onInput);
+this.connect(this.textbox,"onkeyup",this._onInput);
+this.connect(this.textbox,"onpaste",this._onInput);
+this.connect(this.textbox,"oncut",this._onInput);
+}
+},_blankValue:"",filter:function(_e){
+if(_e===null){
+return this._blankValue;
+}
+if(typeof _e!="string"){
+return _e;
+}
+if(this.trim){
+_e=dojo.trim(_e);
+}
+if(this.uppercase){
+_e=_e.toUpperCase();
+}
+if(this.lowercase){
+_e=_e.toLowerCase();
+}
+if(this.propercase){
+_e=_e.replace(/[^\s]+/g,function(_f){
+return _f.substring(0,1).toUpperCase()+_f.substring(1);
+});
+}
+return _e;
+},_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 _10;
+if(dojo.isIE){
+var _11=dojo.doc.selection.createRange();
+var _12=_11.parentElement();
+_10=_12==this.textbox&&_11.text.length==0;
+}else{
+_10=this.textbox.selectionStart==this.textbox.selectionEnd;
+}
+if(_10){
+dijit.selectInputText(this.textbox);
+}
+});
+}
+this._updatePlaceHolder();
+this._refreshState();
+this.inherited(arguments);
+},reset:function(){
+this.textbox.value="";
+this.inherited(arguments);
+}});
+dijit.selectInputText=function(_13,_14,_15){
+var _16=dojo.global;
+var _17=dojo.doc;
+_13=dojo.byId(_13);
+if(isNaN(_14)){
+_14=0;
+}
+if(isNaN(_15)){
+_15=_13.value?_13.value.length:0;
+}
+dijit.focus(_13);
+if(_17["selection"]&&dojo.body()["createTextRange"]){
+if(_13.createTextRange){
+var _18=_13.createTextRange();
+with(_18){
+collapse(true);
+moveStart("character",-99999);
+moveStart("character",_14);
+moveEnd("character",_15-_14);
+select();
+}
+}
+}else{
+if(_16["getSelection"]){
+if(_13.setSelectionRange){
+_13.setSelectionRange(_14,_15);
+}
+}
+}
+};
+}
diff --git a/lib/dijit/form/Textarea.js b/lib/dijit/form/Textarea.js
new file mode 100644 (file)
index 0000000..4dd9cd9
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.Textarea"]){
+dojo._hasResource["dijit.form.Textarea"]=true;
+dojo.provide("dijit.form.Textarea");
+dojo.require("dijit.form.SimpleTextarea");
+dojo.declare("dijit.form.Textarea",dijit.form.SimpleTextarea,{cols:"",_previousNewlines:0,_strictMode:(dojo.doc.compatMode!="BackCompat"),_getHeight:function(_1){
+var _2=_1.scrollHeight;
+if(dojo.isIE){
+_2+=_1.offsetHeight-_1.clientHeight-((dojo.isIE<8&&this._strictMode)?dojo._getPadBorderExtents(_1).h:0);
+}else{
+if(dojo.isMoz){
+_2+=_1.offsetHeight-_1.clientHeight;
+}else{
+if(dojo.isWebKit&&!(dojo.isSafari<4)){
+_2+=dojo._getBorderExtents(_1).h;
+}else{
+_2+=dojo._getPadBorderExtents(_1).h;
+}
+}
+}
+return _2;
+},_estimateHeight:function(_3){
+_3.style.maxHeight="";
+_3.style.height="auto";
+_3.rows=(_3.value.match(/\n/g)||[]).length+1;
+},_needsHelpShrinking:dojo.isMoz||dojo.isWebKit,_onInput:function(){
+this.inherited(arguments);
+if(this._busyResizing){
+return;
+}
+this._busyResizing=true;
+var _4=this.textbox;
+if(_4.scrollHeight&&_4.offsetHeight&&_4.clientHeight){
+var _5=this._getHeight(_4)+"px";
+if(_4.style.height!=_5){
+_4.style.maxHeight=_4.style.height=_5;
+}
+if(this._needsHelpShrinking){
+if(this._setTimeoutHandle){
+clearTimeout(this._setTimeoutHandle);
+}
+this._setTimeoutHandle=setTimeout(dojo.hitch(this,"_shrink"),0);
+}
+}else{
+this._estimateHeight(_4);
+}
+this._busyResizing=false;
+},_busyResizing:false,_shrink:function(){
+this._setTimeoutHandle=null;
+if(this._needsHelpShrinking&&!this._busyResizing){
+this._busyResizing=true;
+var _6=this.textbox;
+var _7=false;
+if(_6.value==""){
+_6.value=" ";
+_7=true;
+}
+var _8=_6.scrollHeight;
+if(!_8){
+this._estimateHeight(_6);
+}else{
+var _9=_6.style.paddingBottom;
+var _a=dojo._getPadExtents(_6);
+_a=_a.h-_a.t;
+_6.style.paddingBottom=_a+1+"px";
+var _b=this._getHeight(_6)-1+"px";
+if(_6.style.maxHeight!=_b){
+_6.style.paddingBottom=_a+_8+"px";
+_6.scrollTop=0;
+_6.style.maxHeight=this._getHeight(_6)-_8+"px";
+}
+_6.style.paddingBottom=_9;
+}
+if(_7){
+_6.value="";
+}
+this._busyResizing=false;
+}
+},resize:function(){
+this._onInput();
+},_setValueAttr:function(){
+this.inherited(arguments);
+this.resize();
+},postCreate:function(){
+this.inherited(arguments);
+dojo.style(this.textbox,{overflowY:"hidden",overflowX:"auto",boxSizing:"border-box",MsBoxSizing:"border-box",WebkitBoxSizing:"border-box",MozBoxSizing:"border-box"});
+this.connect(this.textbox,"onscroll",this._onInput);
+this.connect(this.textbox,"onresize",this._onInput);
+this.connect(this.textbox,"onfocus",this._onInput);
+this._setTimeoutHandle=setTimeout(dojo.hitch(this,"resize"),0);
+},uninitialize:function(){
+if(this._setTimeoutHandle){
+clearTimeout(this._setTimeoutHandle);
+}
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/form/TimeTextBox.js b/lib/dijit/form/TimeTextBox.js
new file mode 100644 (file)
index 0000000..f5e7f99
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.TimeTextBox"]){
+dojo._hasResource["dijit.form.TimeTextBox"]=true;
+dojo.provide("dijit.form.TimeTextBox");
+dojo.require("dijit._TimePicker");
+dojo.require("dijit.form._DateTimeTextBox");
+dojo.declare("dijit.form.TimeTextBox",dijit.form._DateTimeTextBox,{baseClass:"dijitTextBox dijitTimeTextBox",popupClass:"dijit._TimePicker",_selector:"time",value:new Date("")});
+}
diff --git a/lib/dijit/form/ToggleButton.js b/lib/dijit/form/ToggleButton.js
new file mode 100644 (file)
index 0000000..f67dd08
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.ToggleButton"]){
+dojo._hasResource["dijit.form.ToggleButton"]=true;
+dojo.provide("dijit.form.ToggleButton");
+dojo.require("dijit.form.Button");
+}
diff --git a/lib/dijit/form/ValidationTextBox.js b/lib/dijit/form/ValidationTextBox.js
new file mode 100644 (file)
index 0000000..2e0f173
--- /dev/null
@@ -0,0 +1,211 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.ValidationTextBox"]){
+dojo._hasResource["dijit.form.ValidationTextBox"]=true;
+dojo.provide("dijit.form.ValidationTextBox");
+dojo.require("dojo.i18n");
+dojo.require("dijit.form.TextBox");
+dojo.require("dijit.Tooltip");
+dojo.requireLocalization("dijit.form","validate",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+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}\" waiRole=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&Chi; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"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_$",constraints:{},regExp:".*",regExpGen:function(_1){
+return this.regExp;
+},state:"",tooltipPosition:[],_setValueAttr:function(){
+this.inherited(arguments);
+this.validate(this._focused);
+},validator:function(_2,_3){
+return (new RegExp("^(?:"+this.regExpGen(_3)+")"+(this.required?"":"?")+"$")).test(_2)&&(!this.required||!this._isEmpty(_2))&&(this._isEmpty(_2)||this.parse(_2,_3)!==undefined);
+},_isValidSubset:function(){
+return this.textbox.value.search(this._partialre)==0;
+},isValid:function(_4){
+return this.validator(this.textbox.value,this.constraints);
+},_isEmpty:function(_5){
+return /^\s*$/.test(_5);
+},getErrorMessage:function(_6){
+return (this.required&&this._isEmpty(this.textbox.value))?this.missingMessage:this.invalidMessage;
+},getPromptMessage:function(_7){
+return this.promptMessage;
+},_maskValidSubsetError:true,validate:function(_8){
+var _9="";
+var _a=this.disabled||this.isValid(_8);
+if(_a){
+this._maskValidSubsetError=true;
+}
+var _b=this._isEmpty(this.textbox.value);
+var _c=!_a&&!_b&&_8&&this._isValidSubset();
+this.state=((_a||((!this._hasBeenBlurred||_8)&&_b)||_c)&&this._maskValidSubsetError)?"":"Error";
+if(this.state=="Error"){
+this._maskValidSubsetError=_8;
+}
+this._setStateClass();
+dijit.setWaiState(this.focusNode,"invalid",_a?"false":"true");
+if(_8){
+if(this.state=="Error"){
+_9=this.getErrorMessage(true);
+}else{
+_9=this.getPromptMessage(true);
+}
+this._maskValidSubsetError=true;
+}
+this.displayMessage(_9);
+return _a;
+},_message:"",displayMessage:function(_d){
+if(this._message==_d){
+return;
+}
+this._message=_d;
+dijit.hideTooltip(this.domNode);
+if(_d){
+dijit.showTooltip(_d,this.domNode,this.tooltipPosition,!this.isLeftToRight());
+}
+},_refreshState:function(){
+this.validate(this._focused);
+this.inherited(arguments);
+},constructor:function(){
+this.constraints={};
+},_setConstraintsAttr:function(_e){
+if(!_e.locale&&this.lang){
+_e.locale=this.lang;
+}
+this.constraints=_e;
+this._computePartialRE();
+},_computePartialRE:function(){
+var p=this.regExpGen(this.constraints);
+this.regExp=p;
+var _f="";
+if(p!=".*"){
+this.regExp.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(re){
+switch(re.charAt(0)){
+case "{":
+case "+":
+case "?":
+case "*":
+case "^":
+case "$":
+case "|":
+case "(":
+_f+=re;
+break;
+case ")":
+_f+="|$)";
+break;
+default:
+_f+="(?:"+re+"|$)";
+break;
+}
+});
+}
+try{
+"".search(_f);
+}
+catch(e){
+_f=this.regExp;
+console.warn("RegExp error in "+this.declaredClass+": "+this.regExp);
+}
+this._partialre="^(?:"+_f+")$";
+},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(_10){
+this.inherited(arguments);
+this._refreshState();
+},_setRequiredAttr:function(_11){
+this.required=_11;
+dijit.setWaiState(this.focusNode,"required",_11);
+this._refreshState();
+},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,_12){
+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+"'":"")+">",this.textbox,"after");
+},reset:function(){
+this.valueNode.value="";
+this.inherited(arguments);
+}});
+dojo.declare("dijit.form.RangeBoundTextBox",dijit.form.MappedTextBox,{rangeMessage:"",rangeCheck:function(_13,_14){
+return ("min" in _14?(this.compare(_13,_14.min)>=0):true)&&("max" in _14?(this.compare(_13,_14.max)<=0):true);
+},isInRange:function(_15){
+return this.rangeCheck(this.get("value"),this.constraints);
+},_isDefinitelyOutOfRange:function(){
+var val=this.get("value");
+var _16=false;
+var _17=false;
+if("min" in this.constraints){
+var min=this.constraints.min;
+min=this.compare(val,((typeof min=="number")&&min>=0&&val!=0)?0:min);
+_16=(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);
+_17=(typeof max=="number")&&max>0;
+}
+return _16||_17;
+},_isValidSubset:function(){
+return this.inherited(arguments)&&!this._isDefinitelyOutOfRange();
+},isValid:function(_18){
+return this.inherited(arguments)&&((this._isEmpty(this.textbox.value)&&!this.required)||this.isInRange(_18));
+},getErrorMessage:function(_19){
+var v=this.get("value");
+if(v!==null&&v!==""&&v!==undefined&&(typeof v!="number"||!isNaN(v))&&!this.isInRange(_19)){
+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(_1a){
+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(_1b,_1c){
+dijit.setWaiState(this.focusNode,"valuenow",_1b);
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/form/VerticalRule.js b/lib/dijit/form/VerticalRule.js
new file mode 100644 (file)
index 0000000..1357627
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.VerticalRule"]){
+dojo._hasResource["dijit.form.VerticalRule"]=true;
+dojo.provide("dijit.form.VerticalRule");
+dojo.require("dijit.form.HorizontalRule");
+dojo.declare("dijit.form.VerticalRule",dijit.form.HorizontalRule,{templateString:"<div class=\"dijitRuleContainer dijitRuleContainerV\"></div>",_positionPrefix:"<div class=\"dijitRuleMark dijitRuleMarkV\" style=\"top:",_isHorizontal:false});
+}
diff --git a/lib/dijit/form/VerticalRuleLabels.js b/lib/dijit/form/VerticalRuleLabels.js
new file mode 100644 (file)
index 0000000..9adac90
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.VerticalRuleLabels"]){
+dojo._hasResource["dijit.form.VerticalRuleLabels"]=true;
+dojo.provide("dijit.form.VerticalRuleLabels");
+dojo.require("dijit.form.HorizontalRuleLabels");
+dojo.declare("dijit.form.VerticalRuleLabels",dijit.form.HorizontalRuleLabels,{templateString:"<div class=\"dijitRuleContainer dijitRuleContainerV dijitRuleLabelsContainer dijitRuleLabelsContainerV\"></div>",_positionPrefix:"<div class=\"dijitRuleLabelContainer dijitRuleLabelContainerV\" style=\"top:",_labelPrefix:"\"><span class=\"dijitRuleLabel dijitRuleLabelV\">",_calcPosition:function(_1){
+return 100-_1;
+},_isHorizontal:false});
+}
diff --git a/lib/dijit/form/VerticalSlider.js b/lib/dijit/form/VerticalSlider.js
new file mode 100644 (file)
index 0000000..9e98cbe
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form.VerticalSlider"]){
+dojo._hasResource["dijit.form.VerticalSlider"]=true;
+dojo.provide("dijit.form.VerticalSlider");
+dojo.require("dijit.form.HorizontalSlider");
+dojo.declare("dijit.form.VerticalSlider",dijit.form.HorizontalSlider,{templateString:dojo.cache("dijit.form","templates/VerticalSlider.html","<table class=\"dijit dijitReset dijitSlider dijitSliderV\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" rules=\"none\" dojoAttachEvent=\"onkeypress:_onKeyPress,onkeyup:_onKeyUp\"\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderIncrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"decrementButton\"><span class=\"dijitSliderButtonInner\">+</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderTopBumper\" dojoAttachEvent=\"onmousedown:_onClkIncBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td dojoAttachPoint=\"leftDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationL dijitSliderDecorationV\"></td\n\t\t><td class=\"dijitReset\" style=\"height:100%;\"\n\t\t\t><input dojoAttachPoint=\"valueNode\" type=\"hidden\" ${!nameAttrSetting}\n\t\t\t/><center class=\"dijitReset dijitSliderBarContainerV\" waiRole=\"presentation\" dojoAttachPoint=\"sliderBarContainer\"\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"remainingBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderRemainingBar dijitSliderRemainingBarV\" dojoAttachEvent=\"onmousedown:_onBarClick\"><!--#5629--></div\n\t\t\t\t><div waiRole=\"presentation\" dojoAttachPoint=\"progressBar\" class=\"dijitSliderBar dijitSliderBarV dijitSliderProgressBar dijitSliderProgressBarV\" dojoAttachEvent=\"onmousedown:_onBarClick\"\n\t\t\t\t\t><div class=\"dijitSliderMoveable dijitSliderMoveableV\" style=\"vertical-align:top;\"\n\t\t\t\t\t\t><div dojoAttachPoint=\"sliderHandle,focusNode\" class=\"dijitSliderImageHandle dijitSliderImageHandleV\" dojoAttachEvent=\"onmousedown:_onHandleClick\" waiRole=\"slider\" valuemin=\"${minimum}\" valuemax=\"${maximum}\"></div\n\t\t\t\t\t></div\n\t\t\t\t></div\n\t\t\t></center\n\t\t></td\n\t\t><td dojoAttachPoint=\"containerNode,rightDecoration\" class=\"dijitReset dijitSliderDecoration dijitSliderDecorationR dijitSliderDecorationV\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset\"\n\t\t\t><center><div class=\"dijitSliderBar dijitSliderBumper dijitSliderBumperV dijitSliderBottomBumper\" dojoAttachEvent=\"onmousedown:_onClkDecBumper\"></div></center\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n\t><tr class=\"dijitReset\"\n\t\t><td class=\"dijitReset\"></td\n\t\t><td class=\"dijitReset dijitSliderButtonContainer dijitSliderButtonContainerV\"\n\t\t\t><div class=\"dijitSliderDecrementIconV\" tabIndex=\"-1\" style=\"display:none\" dojoAttachPoint=\"incrementButton\"><span class=\"dijitSliderButtonInner\">-</span></div\n\t\t></td\n\t\t><td class=\"dijitReset\"></td\n\t></tr\n></table>\n"),_mousePixelCoord:"pageY",_pixelCount:"h",_startingPixelCoord:"y",_startingPixelCount:"t",_handleOffsetCoord:"top",_progressPixelSize:"height",_descending:true,_isReversed:function(){
+return this._descending;
+}});
+}
diff --git a/lib/dijit/form/_DateTimeTextBox.js b/lib/dijit/form/_DateTimeTextBox.js
new file mode 100644 (file)
index 0000000..72898e4
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form._DateTimeTextBox"]){
+dojo._hasResource["dijit.form._DateTimeTextBox"]=true;
+dojo.provide("dijit.form._DateTimeTextBox");
+dojo.require("dojo.date");
+dojo.require("dojo.date.locale");
+dojo.require("dojo.date.stamp");
+dojo.require("dijit.form.ValidationTextBox");
+new Date("X");
+dojo.declare("dijit.form._DateTimeTextBox",dijit.form.RangeBoundTextBox,{regExpGen:dojo.date.locale.regexp,datePackage:"dojo.date",compare:dojo.date.compare,format:function(_1,_2){
+if(!_1){
+return "";
+}
+return this.dateLocaleModule.format(_1,_2);
+},parse:function(_3,_4){
+return this.dateLocaleModule.parse(_3,_4)||(this._isEmpty(_3)?null:undefined);
+},serialize:function(_5,_6){
+if(_5.toGregorian){
+_5=_5.toGregorian();
+}
+return dojo.date.stamp.toISOString(_5,_6);
+},value:new Date(""),_blankValue:null,popupClass:"",_selector:"",constructor:function(_7){
+var _8=_7.datePackage?_7.datePackage+".Date":"Date";
+this.dateClassObj=dojo.getObject(_8,false);
+this.value=new this.dateClassObj("");
+this.datePackage=_7.datePackage||this.datePackage;
+this.dateLocaleModule=dojo.getObject(this.datePackage+".locale",false);
+this.regExpGen=this.dateLocaleModule.regexp;
+},_setConstraintsAttr:function(_9){
+_9.selector=this._selector;
+_9.fullYear=true;
+var _a=dojo.date.stamp.fromISOString;
+if(typeof _9.min=="string"){
+_9.min=_a(_9.min);
+}
+if(typeof _9.max=="string"){
+_9.max=_a(_9.max);
+}
+this.inherited(arguments,[_9]);
+},_onFocus:function(_b){
+this._open();
+this.inherited(arguments);
+},_setValueAttr:function(_c,_d,_e){
+if(_c!==undefined){
+if(!_c||_c.toString()==dijit.form._DateTimeTextBox.prototype.value.toString()){
+_c=null;
+}
+if(_c instanceof Date&&!(this.dateClassObj instanceof Date)){
+_c=new this.dateClassObj(_c);
+}
+}
+this.inherited(arguments,[_c,_d,_e]);
+if(this._picker){
+if(!_c){
+_c=new this.dateClassObj();
+}
+this._picker.set("value",_c);
+}
+},_open:function(){
+if(this.disabled||this.readOnly||!this.popupClass){
+return;
+}
+var _f=this;
+if(!this._picker){
+var _10=dojo.getObject(this.popupClass,false);
+this._picker=new _10({onValueSelected:function(_11){
+if(_f._tabbingAway){
+delete _f._tabbingAway;
+}else{
+_f.focus();
+}
+setTimeout(dojo.hitch(_f,"_close"),1);
+dijit.form._DateTimeTextBox.superclass._setValueAttr.call(_f,_11,true);
+},id:this.id+"_popup",dir:_f.dir,lang:_f.lang,value:this.get("value")||new this.dateClassObj(),constraints:_f.constraints,datePackage:_f.datePackage,isDisabledDate:function(_12){
+var _13=dojo.date.compare;
+var _14=_f.constraints;
+return _14&&((_14.min&&_13(_14.min,_12,_f._selector)>0)||(_14.max&&_13(_14.max,_12,_f._selector)<0));
+}});
+}
+if(!this._opened){
+dijit.popup.open({parent:this,popup:this._picker,orient:{"BL":"TL","TL":"BL"},around:this.domNode,onCancel:dojo.hitch(this,this._close),onClose:function(){
+_f._opened=false;
+}});
+this._opened=true;
+}
+dojo.marginBox(this._picker.domNode,{w:this.domNode.offsetWidth});
+},_close:function(){
+if(this._opened){
+dijit.popup.close(this._picker);
+this._opened=false;
+}
+},_onBlur:function(){
+this._close();
+if(this._picker){
+this._picker.destroy();
+delete this._picker;
+}
+this.inherited(arguments);
+},_getDisplayedValueAttr:function(){
+return this.textbox.value;
+},_setDisplayedValueAttr:function(_15,_16){
+this._setValueAttr(this.parse(_15,this.constraints),_16,_15);
+},destroy:function(){
+if(this._picker){
+this._picker.destroy();
+delete this._picker;
+}
+this.inherited(arguments);
+},postCreate:function(){
+this.inherited(arguments);
+this.connect(this.focusNode,"onkeypress",this._onKeyPress);
+this.connect(this.focusNode,"onclick",this._open);
+},_onKeyPress:function(e){
+var p=this._picker,dk=dojo.keys;
+if(p&&this._opened&&p.handleKey){
+if(p.handleKey(e)===false){
+return;
+}
+}
+if(this._opened&&e.charOrCode==dk.ESCAPE&&!(e.shiftKey||e.ctrlKey||e.altKey||e.metaKey)){
+this._close();
+dojo.stopEvent(e);
+}else{
+if(!this._opened&&e.charOrCode==dk.DOWN_ARROW){
+this._open();
+dojo.stopEvent(e);
+}else{
+if(e.charOrCode===dk.TAB){
+this._tabbingAway=true;
+}else{
+if(this._opened&&(e.keyChar||e.charOrCode===dk.BACKSPACE||e.charOrCode==dk.DELETE)){
+setTimeout(dojo.hitch(this,function(){
+if(this._picker&&this._opened){
+dijit.placeOnScreenAroundElement(p.domNode.parentNode,this.domNode,{"BL":"TL","TL":"BL"},p.orient?dojo.hitch(p,"orient"):null);
+}
+}),1);
+}
+}
+}
+}
+}});
+}
diff --git a/lib/dijit/form/_FormMixin.js b/lib/dijit/form/_FormMixin.js
new file mode 100644 (file)
index 0000000..4c52ed9
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form._FormMixin"]){
+dojo._hasResource["dijit.form._FormMixin"]=true;
+dojo.provide("dijit.form._FormMixin");
+dojo.require("dojo.window");
+dojo.declare("dijit.form._FormMixin",null,{reset:function(){
+dojo.forEach(this.getDescendants(),function(_1){
+if(_1.reset){
+_1.reset();
+}
+});
+},validate:function(){
+var _2=false;
+return dojo.every(dojo.map(this.getDescendants(),function(_3){
+_3._hasBeenBlurred=true;
+var _4=_3.disabled||!_3.validate||_3.validate();
+if(!_4&&!_2){
+dojo.window.scrollIntoView(_3.containerNode||_3.domNode);
+_3.focus();
+_2=true;
+}
+return _4;
+}),function(_5){
+return _5;
+});
+},setValues:function(_6){
+dojo.deprecated(this.declaredClass+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");
+return this.set("value",_6);
+},_setValueAttr:function(_7){
+var _8={};
+dojo.forEach(this.getDescendants(),function(_9){
+if(!_9.name){
+return;
+}
+var _a=_8[_9.name]||(_8[_9.name]=[]);
+_a.push(_9);
+});
+for(var _b in _8){
+if(!_8.hasOwnProperty(_b)){
+continue;
+}
+var _c=_8[_b],_d=dojo.getObject(_b,false,_7);
+if(_d===undefined){
+continue;
+}
+if(!dojo.isArray(_d)){
+_d=[_d];
+}
+if(typeof _c[0].checked=="boolean"){
+dojo.forEach(_c,function(w,i){
+w.set("value",dojo.indexOf(_d,w.value)!=-1);
+});
+}else{
+if(_c[0].multiple){
+_c[0].set("value",_d);
+}else{
+dojo.forEach(_c,function(w,i){
+w.set("value",_d[i]);
+});
+}
+}
+}
+},getValues:function(){
+dojo.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");
+return this.get("value");
+},_getValueAttr:function(){
+var _e={};
+dojo.forEach(this.getDescendants(),function(_f){
+var _10=_f.name;
+if(!_10||_f.disabled){
+return;
+}
+var _11=_f.get("value");
+if(typeof _f.checked=="boolean"){
+if(/Radio/.test(_f.declaredClass)){
+if(_11!==false){
+dojo.setObject(_10,_11,_e);
+}else{
+_11=dojo.getObject(_10,false,_e);
+if(_11===undefined){
+dojo.setObject(_10,null,_e);
+}
+}
+}else{
+var ary=dojo.getObject(_10,false,_e);
+if(!ary){
+ary=[];
+dojo.setObject(_10,ary,_e);
+}
+if(_11!==false){
+ary.push(_11);
+}
+}
+}else{
+var _12=dojo.getObject(_10,false,_e);
+if(typeof _12!="undefined"){
+if(dojo.isArray(_12)){
+_12.push(_11);
+}else{
+dojo.setObject(_10,[_12,_11],_e);
+}
+}else{
+dojo.setObject(_10,_11,_e);
+}
+}
+});
+return _e;
+},isValid:function(){
+this._invalidWidgets=dojo.filter(this.getDescendants(),function(_13){
+return !_13.disabled&&_13.isValid&&!_13.isValid();
+});
+return !this._invalidWidgets.length;
+},onValidStateChange:function(_14){
+},_widgetChange:function(_15){
+var _16=this._lastValidState;
+if(!_15||this._lastValidState===undefined){
+_16=this.isValid();
+if(this._lastValidState===undefined){
+this._lastValidState=_16;
+}
+}else{
+if(_15.isValid){
+this._invalidWidgets=dojo.filter(this._invalidWidgets||[],function(w){
+return (w!=_15);
+},this);
+if(!_15.isValid()&&!_15.get("disabled")){
+this._invalidWidgets.push(_15);
+}
+_16=(this._invalidWidgets.length===0);
+}
+}
+if(_16!==this._lastValidState){
+this._lastValidState=_16;
+this.onValidStateChange(_16);
+}
+},connectChildren:function(){
+dojo.forEach(this._changeConnections,dojo.hitch(this,"disconnect"));
+var _17=this;
+var _18=(this._changeConnections=[]);
+dojo.forEach(dojo.filter(this.getDescendants(),function(_19){
+return _19.validate;
+}),function(_1a){
+_18.push(_17.connect(_1a,"validate",dojo.hitch(_17,"_widgetChange",_1a)));
+_18.push(_17.connect(_1a,"_setDisabledAttr",dojo.hitch(_17,"_widgetChange",_1a)));
+});
+this._widgetChange(null);
+},startup:function(){
+this.inherited(arguments);
+this._changeConnections=[];
+this.connectChildren();
+}});
+}
diff --git a/lib/dijit/form/_FormSelectWidget.js b/lib/dijit/form/_FormSelectWidget.js
new file mode 100644 (file)
index 0000000..5905c0a
--- /dev/null
@@ -0,0 +1,307 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form._FormSelectWidget"]){
+dojo._hasResource["dijit.form._FormSelectWidget"]=true;
+dojo.provide("dijit.form._FormSelectWidget");
+dojo.require("dijit.form._FormWidget");
+dojo.require("dojo.data.util.sorter");
+dojo.declare("dijit.form._FormSelectWidget",dijit.form._FormValueWidget,{multiple:false,options:null,store:null,query:null,queryOptions:null,onFetch:null,sortByLabel:true,loadChildrenOnOpen:false,getOptions:function(_1){
+var _2=_1,_3=this.options||[],l=_3.length;
+if(_2===undefined){
+return _3;
+}
+if(dojo.isArray(_2)){
+return dojo.map(_2,"return this.getOptions(item);",this);
+}
+if(dojo.isObject(_1)){
+if(!dojo.some(this.options,function(o,_4){
+if(o===_2||(o.value&&o.value===_2.value)){
+_2=_4;
+return true;
+}
+return false;
+})){
+_2=-1;
+}
+}
+if(typeof _2=="string"){
+for(var i=0;i<l;i++){
+if(_3[i].value===_2){
+_2=i;
+break;
+}
+}
+}
+if(typeof _2=="number"&&_2>=0&&_2<l){
+return this.options[_2];
+}
+return null;
+},addOption:function(_5){
+if(!dojo.isArray(_5)){
+_5=[_5];
+}
+dojo.forEach(_5,function(i){
+if(i&&dojo.isObject(i)){
+this.options.push(i);
+}
+},this);
+this._loadChildren();
+},removeOption:function(_6){
+if(!dojo.isArray(_6)){
+_6=[_6];
+}
+var _7=this.getOptions(_6);
+dojo.forEach(_7,function(i){
+if(i){
+this.options=dojo.filter(this.options,function(_8,_9){
+return (_8.value!==i.value);
+});
+this._removeOptionItem(i);
+}
+},this);
+this._loadChildren();
+},updateOption:function(_a){
+if(!dojo.isArray(_a)){
+_a=[_a];
+}
+dojo.forEach(_a,function(i){
+var _b=this.getOptions(i),k;
+if(_b){
+for(k in i){
+_b[k]=i[k];
+}
+}
+},this);
+this._loadChildren();
+},setStore:function(_c,_d,_e){
+var _f=this.store;
+_e=_e||{};
+if(_f!==_c){
+dojo.forEach(this._notifyConnections||[],dojo.disconnect);
+delete this._notifyConnections;
+if(_c&&_c.getFeatures()["dojo.data.api.Notification"]){
+this._notifyConnections=[dojo.connect(_c,"onNew",this,"_onNewItem"),dojo.connect(_c,"onDelete",this,"_onDeleteItem"),dojo.connect(_c,"onSet",this,"_onSetItem")];
+}
+this.store=_c;
+}
+this._onChangeActive=false;
+if(this.options&&this.options.length){
+this.removeOption(this.options);
+}
+if(_c){
+var cb=function(_10){
+if(this.sortByLabel&&!_e.sort&&_10.length){
+_10.sort(dojo.data.util.sorter.createSortFunction([{attribute:_c.getLabelAttributes(_10[0])[0]}],_c));
+}
+if(_e.onFetch){
+_10=_e.onFetch(_10);
+}
+dojo.forEach(_10,function(i){
+this._addOptionForItem(i);
+},this);
+this._loadingStore=false;
+this.set("value",(("_pendingValue" in this)?this._pendingValue:_d));
+delete this._pendingValue;
+if(!this.loadChildrenOnOpen){
+this._loadChildren();
+}else{
+this._pseudoLoadChildren(_10);
+}
+this._fetchedWith=_11;
+this._lastValueReported=this.multiple?[]:null;
+this._onChangeActive=true;
+this.onSetStore();
+this._handleOnChange(this.value);
+};
+var _11=dojo.mixin({onComplete:cb,scope:this},_e);
+this._loadingStore=true;
+_c.fetch(_11);
+}else{
+delete this._fetchedWith;
+}
+return _f;
+},_setValueAttr:function(_12,_13){
+if(this._loadingStore){
+this._pendingValue=_12;
+return;
+}
+var _14=this.getOptions()||[];
+if(!dojo.isArray(_12)){
+_12=[_12];
+}
+dojo.forEach(_12,function(i,idx){
+if(!dojo.isObject(i)){
+i=i+"";
+}
+if(typeof i==="string"){
+_12[idx]=dojo.filter(_14,function(_15){
+return _15.value===i;
+})[0]||{value:"",label:""};
+}
+},this);
+_12=dojo.filter(_12,function(i){
+return i&&i.value;
+});
+if(!this.multiple&&(!_12[0]||!_12[0].value)&&_14.length){
+_12[0]=_14[0];
+}
+dojo.forEach(_14,function(i){
+i.selected=dojo.some(_12,function(v){
+return v.value===i.value;
+});
+});
+var val=dojo.map(_12,function(i){
+return i.value;
+}),_16=dojo.map(_12,function(i){
+return i.label;
+});
+this.value=this.multiple?val:val[0];
+this._setDisplay(this.multiple?_16:_16[0]);
+this._updateSelection();
+this._handleOnChange(this.value,_13);
+},_getDisplayedValueAttr:function(){
+var val=this.get("value");
+if(!dojo.isArray(val)){
+val=[val];
+}
+var ret=dojo.map(this.getOptions(val),function(v){
+if(v&&"label" in v){
+return v.label;
+}else{
+if(v){
+return v.value;
+}
+}
+return null;
+},this);
+return this.multiple?ret:ret[0];
+},_getValueDeprecated:false,getValue:function(){
+return this._lastValue;
+},undo:function(){
+this._setValueAttr(this._lastValueReported,false);
+},_loadChildren:function(){
+if(this._loadingStore){
+return;
+}
+dojo.forEach(this._getChildren(),function(_17){
+_17.destroyRecursive();
+});
+dojo.forEach(this.options,this._addOptionItem,this);
+this._updateSelection();
+},_updateSelection:function(){
+this.value=this._getValueFromOpts();
+var val=this.value;
+if(!dojo.isArray(val)){
+val=[val];
+}
+if(val&&val[0]){
+dojo.forEach(this._getChildren(),function(_18){
+var _19=dojo.some(val,function(v){
+return _18.option&&(v===_18.option.value);
+});
+dojo.toggleClass(_18.domNode,this.baseClass+"SelectedOption",_19);
+dijit.setWaiState(_18.domNode,"selected",_19);
+},this);
+}
+this._handleOnChange(this.value);
+},_getValueFromOpts:function(){
+var _1a=this.getOptions()||[];
+if(!this.multiple&&_1a.length){
+var opt=dojo.filter(_1a,function(i){
+return i.selected;
+})[0];
+if(opt&&opt.value){
+return opt.value;
+}else{
+_1a[0].selected=true;
+return _1a[0].value;
+}
+}else{
+if(this.multiple){
+return dojo.map(dojo.filter(_1a,function(i){
+return i.selected;
+}),function(i){
+return i.value;
+})||[];
+}
+}
+return "";
+},_onNewItem:function(_1b,_1c){
+if(!_1c||!_1c.parent){
+this._addOptionForItem(_1b);
+}
+},_onDeleteItem:function(_1d){
+var _1e=this.store;
+this.removeOption(_1e.getIdentity(_1d));
+},_onSetItem:function(_1f){
+this.updateOption(this._getOptionObjForItem(_1f));
+},_getOptionObjForItem:function(_20){
+var _21=this.store,_22=_21.getLabel(_20),_23=(_22?_21.getIdentity(_20):null);
+return {value:_23,label:_22,item:_20};
+},_addOptionForItem:function(_24){
+var _25=this.store;
+if(!_25.isItemLoaded(_24)){
+_25.loadItem({item:_24,onComplete:function(i){
+this._addOptionForItem(_24);
+},scope:this});
+return;
+}
+var _26=this._getOptionObjForItem(_24);
+this.addOption(_26);
+},constructor:function(_27){
+this._oValue=(_27||{}).value||null;
+},_fillContent:function(){
+var _28=this.options;
+if(!_28){
+_28=this.options=this.srcNodeRef?dojo.query(">",this.srcNodeRef).map(function(_29){
+if(_29.getAttribute("type")==="separator"){
+return {value:"",label:"",selected:false,disabled:false};
+}
+return {value:_29.getAttribute("value"),label:String(_29.innerHTML),selected:_29.getAttribute("selected")||false,disabled:_29.getAttribute("disabled")||false};
+},this):[];
+}
+if(!this.value){
+this.value=this._getValueFromOpts();
+}else{
+if(this.multiple&&typeof this.value=="string"){
+this.value=this.value.split(",");
+}
+}
+},postCreate:function(){
+dojo.setSelectable(this.focusNode,false);
+this.inherited(arguments);
+this.connect(this,"onChange","_updateSelection");
+this.connect(this,"startup","_loadChildren");
+this._setValueAttr(this.value,null);
+},startup:function(){
+this.inherited(arguments);
+var _2a=this.store,_2b={};
+dojo.forEach(["query","queryOptions","onFetch"],function(i){
+if(this[i]){
+_2b[i]=this[i];
+}
+delete this[i];
+},this);
+if(_2a&&_2a.getFeatures()["dojo.data.api.Identity"]){
+this.store=null;
+this.setStore(_2a,this._oValue,_2b);
+}
+},destroy:function(){
+dojo.forEach(this._notifyConnections||[],dojo.disconnect);
+this.inherited(arguments);
+},_addOptionItem:function(_2c){
+},_removeOptionItem:function(_2d){
+},_setDisplay:function(_2e){
+},_getChildren:function(){
+return [];
+},_getSelectedOptionsAttr:function(){
+return this.getOptions(this.get("value"));
+},_pseudoLoadChildren:function(_2f){
+},onSetStore:function(){
+}});
+}
diff --git a/lib/dijit/form/_FormWidget.js b/lib/dijit/form/_FormWidget.js
new file mode 100644 (file)
index 0000000..eb80ca0
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form._FormWidget"]){
+dojo._hasResource["dijit.form._FormWidget"]=true;
+dojo.provide("dijit.form._FormWidget");
+dojo.require("dojo.window");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._CssStateMixin");
+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(_1){
+this.disabled=_1;
+dojo.attr(this.focusNode,"disabled",_1);
+if(this.valueNode){
+dojo.attr(this.valueNode,"disabled",_1);
+}
+dijit.setWaiState(this.focusNode,"disabled",_1);
+if(_1){
+this._hovering=false;
+this._active=false;
+var _2="tabIndex" in this.attributeMap?this.attributeMap.tabIndex:"focusNode";
+dojo.forEach(dojo.isArray(_2)?_2:[_2],function(_3){
+var _4=this[_3];
+if(dojo.isWebKit||dijit.hasDefaultTabStop(_4)){
+_4.setAttribute("tabIndex","-1");
+}else{
+_4.removeAttribute("tabIndex");
+}
+},this);
+}else{
+this.focusNode.setAttribute("tabIndex",this.tabIndex);
+}
+},setDisabled:function(_5){
+dojo.deprecated("setDisabled("+_5+") is deprecated. Use set('disabled',"+_5+") instead.","","2.0");
+this.set("disabled",_5);
+},_onFocus:function(e){
+if(this.scrollOnFocus){
+dojo.window.scrollIntoView(this.domNode);
+}
+this.inherited(arguments);
+},isFocusable:function(){
+return !this.disabled&&!this.readOnly&&this.focusNode&&(dojo.style(this.domNode,"display")!="none");
+},focus:function(){
+dijit.focus(this.focusNode);
+},compare:function(_6,_7){
+if(typeof _6=="number"&&typeof _7=="number"){
+return (isNaN(_6)&&isNaN(_7))?0:_6-_7;
+}else{
+if(_6>_7){
+return 1;
+}else{
+if(_6<_7){
+return -1;
+}else{
+return 0;
+}
+}
+}
+},onChange:function(_8){
+},_onChangeActive:false,_handleOnChange:function(_9,_a){
+this._lastValue=_9;
+if(this._lastValueReported==undefined&&(_a===null||!this._onChangeActive)){
+this._resetValue=this._lastValueReported=_9;
+}
+if((this.intermediateChanges||_a||_a===undefined)&&((typeof _9!=typeof this._lastValueReported)||this.compare(_9,this._lastValueReported)!=0)){
+this._lastValueReported=_9;
+if(this._onChangeActive){
+if(this._onChangeHandle){
+clearTimeout(this._onChangeHandle);
+}
+this._onChangeHandle=setTimeout(dojo.hitch(this,function(){
+this._onChangeHandle=null;
+this.onChange(_9);
+}),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(_b){
+dojo.deprecated("dijit.form._FormWidget:setValue("+_b+") is deprecated.  Use set('value',"+_b+") instead.","","2.0");
+this.set("value",_b);
+},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&&this.isFocusable()){
+var _c=this.connect(dojo.body(),"onmouseup",function(){
+if(this.isFocusable()){
+this.focus();
+}
+this.disconnect(_c);
+});
+}
+}});
+dojo.declare("dijit.form._FormValueWidget",dijit.form._FormWidget,{readOnly:false,attributeMap:dojo.delegate(dijit.form._FormWidget.prototype.attributeMap,{value:"",readOnly:"focusNode"}),_setReadOnlyAttr:function(_d){
+this.readOnly=_d;
+dojo.attr(this.focusNode,"readOnly",_d);
+dijit.setWaiState(this.focusNode,"readonly",_d);
+},postCreate:function(){
+this.inherited(arguments);
+if(dojo.isIE){
+this.connect(this.focusNode||this.domNode,"onkeydown",this._onKeyDown);
+}
+if(this._resetValue===undefined){
+this._resetValue=this.value;
+}
+},_setValueAttr:function(_e,_f){
+this.value=_e;
+this._handleOnChange(_e,_f);
+},_getValueAttr:function(){
+return this._lastValue;
+},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 _10=this.domNode;
+var _11=_10.parentNode;
+var _12=_10.firstChild||_10;
+var _13=_12.style.filter;
+var _14=this;
+while(_11&&_11.clientHeight==0){
+(function ping(){
+var _15=_14.connect(_11,"onscroll",function(e){
+_14.disconnect(_15);
+_12.style.filter=(new Date()).getMilliseconds();
+setTimeout(function(){
+_12.style.filter=_13;
+},0);
+});
+})();
+_11=_11.parentNode;
+}
+}
+}});
+}
diff --git a/lib/dijit/form/_Spinner.js b/lib/dijit/form/_Spinner.js
new file mode 100644 (file)
index 0000000..772f667
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.form._Spinner"]){
+dojo._hasResource["dijit.form._Spinner"]=true;
+dojo.provide("dijit.form._Spinner");
+dojo.require("dijit.form.ValidationTextBox");
+dojo.declare("dijit.form._Spinner",dijit.form.RangeBoundTextBox,{defaultTimeout:500,minimumTimeout:10,timeoutChangeRate:0.9,smallDelta:1,largeDelta:10,templateString:dojo.cache("dijit.form","templates/Spinner.html","<div class=\"dijit dijitReset dijitInlineTable dijitLeft\"\n\tid=\"widget_${id}\" waiRole=\"presentation\"\n\t><div class=\"dijitReset dijitButtonNode dijitSpinnerButtonContainer\"\n\t\t><input class=\"dijitReset dijitInputField dijitSpinnerButtonInner\" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t\t/><div class=\"dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitUpArrowButton\"\n\t\t\tdojoAttachPoint=\"upArrowNode\"\n\t\t\t><div class=\"dijitArrowButtonInner\"\n\t\t\t\t><input class=\"dijitReset dijitInputField\" value=\"&#9650;\" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t\t\t\t\t${_buttonInputDisabled}\n\t\t\t/></div\n\t\t></div\n\t\t><div class=\"dijitReset dijitLeft dijitButtonNode dijitArrowButton dijitDownArrowButton\"\n\t\t\tdojoAttachPoint=\"downArrowNode\"\n\t\t\t><div class=\"dijitArrowButtonInner\"\n\t\t\t\t><input class=\"dijitReset dijitInputField\" value=\"&#9660;\" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t\t\t\t\t${_buttonInputDisabled}\n\t\t\t/></div\n\t\t></div\n\t></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&Chi; \" type=\"text\" tabIndex=\"-1\" readOnly waiRole=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' dojoAttachPoint=\"textbox,focusNode\" type=\"${type}\" dojoAttachEvent=\"onkeypress:_onKeyPress\"\n\t\t\twaiRole=\"spinbutton\" autocomplete=\"off\" ${!nameAttrSetting}\n\t/></div\n></div>\n"),baseClass:"dijitTextBox dijitSpinner",cssStateNodes:{"upArrowNode":"dijitUpArrowButton","downArrowNode":"dijitDownArrowButton"},adjust:function(_1,_2){
+return _1;
+},_arrowPressed:function(_3,_4,_5){
+if(this.disabled||this.readOnly){
+return;
+}
+this._setValueAttr(this.adjust(this.get("value"),_4*_5),false);
+dijit.selectInputText(this.textbox,this.textbox.value.length);
+},_arrowReleased:function(_6){
+this._wheelTimer=null;
+if(this.disabled||this.readOnly){
+return;
+}
+},_typematicCallback:function(_7,_8,_9){
+var _a=this.smallDelta;
+if(_8==this.textbox){
+var k=dojo.keys;
+var _b=_9.charOrCode;
+_a=(_b==k.PAGE_UP||_b==k.PAGE_DOWN)?this.largeDelta:this.smallDelta;
+_8=(_b==k.UP_ARROW||_b==k.PAGE_UP)?this.upArrowNode:this.downArrowNode;
+}
+if(_7==-1){
+this._arrowReleased(_8);
+}else{
+this._arrowPressed(_8,(_8==this.upArrowNode)?1:-1,_a);
+}
+},_wheelTimer:null,_mouseWheeled:function(_c){
+dojo.stopEvent(_c);
+var _d=_c.detail?(_c.detail*-1):(_c.wheelDelta/120);
+if(_d!==0){
+var _e=this[(_d>0?"upArrowNode":"downArrowNode")];
+this._arrowPressed(_e,_d,this.smallDelta);
+if(!this._wheelTimer){
+clearTimeout(this._wheelTimer);
+}
+this._wheelTimer=setTimeout(dojo.hitch(this,"_arrowReleased",_e),50);
+}
+},postCreate:function(){
+this.inherited(arguments);
+this.connect(this.domNode,!dojo.isMozilla?"onmousewheel":"DOMMouseScroll","_mouseWheeled");
+this._connects.push(dijit.typematic.addListener(this.upArrowNode,this.textbox,{charOrCode:dojo.keys.UP_ARROW,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout));
+this._connects.push(dijit.typematic.addListener(this.downArrowNode,this.textbox,{charOrCode:dojo.keys.DOWN_ARROW,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout));
+this._connects.push(dijit.typematic.addListener(this.upArrowNode,this.textbox,{charOrCode:dojo.keys.PAGE_UP,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout));
+this._connects.push(dijit.typematic.addListener(this.downArrowNode,this.textbox,{charOrCode:dojo.keys.PAGE_DOWN,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false},this,"_typematicCallback",this.timeoutChangeRate,this.defaultTimeout,this.minimumTimeout));
+}});
+}
diff --git a/lib/dijit/form/nls/ComboBox.js b/lib/dijit/form/nls/ComboBox.js
new file mode 100644 (file)
index 0000000..49bba39
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Previous choices","nextMessage":"More choices"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/Textarea.js b/lib/dijit/form/nls/Textarea.js
new file mode 100644 (file)
index 0000000..4b0e996
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"edit area","iframeFocusTitle":"edit area frame"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ar/ComboBox.js b/lib/dijit/form/nls/ar/ComboBox.js
new file mode 100644 (file)
index 0000000..6a84531
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"الاختيارات السابقة","nextMessage":"مزيد من الاختيارات"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ar/Textarea.js b/lib/dijit/form/nls/ar/Textarea.js
new file mode 100644 (file)
index 0000000..fe623c6
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"مساحة التحرير","iframeFocusTitle":"اطار مساحة التحرير"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ar/validate.js b/lib/dijit/form/nls/ar/validate.js
new file mode 100644 (file)
index 0000000..615e56b
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"هذه القيمة ليس بالمدى الصحيح.","invalidMessage":"القيمة التي تم ادخالها غير صحيحة.","missingMessage":"يجب ادخال هذه القيمة."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ca/ComboBox.js b/lib/dijit/form/nls/ca/ComboBox.js
new file mode 100644 (file)
index 0000000..1a37868
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Opcions anteriors","nextMessage":"Més opcions"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ca/Textarea.js b/lib/dijit/form/nls/ca/Textarea.js
new file mode 100644 (file)
index 0000000..357f923
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"àrea d'edició","iframeFocusTitle":"Marc de l'àrea d'edició"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ca/validate.js b/lib/dijit/form/nls/ca/validate.js
new file mode 100644 (file)
index 0000000..a0a592e
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Aquest valor és fora de l'interval","invalidMessage":"El valor introduït no és vàlid","missingMessage":"Aquest valor és necessari"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/cs/ComboBox.js b/lib/dijit/form/nls/cs/ComboBox.js
new file mode 100644 (file)
index 0000000..84e0841
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Předchozí volby","nextMessage":"Další volby"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/cs/Textarea.js b/lib/dijit/form/nls/cs/Textarea.js
new file mode 100644 (file)
index 0000000..8a75ddc
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"oblast úprav","iframeFocusTitle":"rámec oblasti úprav"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/cs/validate.js b/lib/dijit/form/nls/cs/validate.js
new file mode 100644 (file)
index 0000000..7bb7b9e
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Tato hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota není platná.","missingMessage":"Tato hodnota je vyžadována."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/da/ComboBox.js b/lib/dijit/form/nls/da/ComboBox.js
new file mode 100644 (file)
index 0000000..4ddc10d
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Forrige valg","nextMessage":"Flere valg"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/da/Textarea.js b/lib/dijit/form/nls/da/Textarea.js
new file mode 100644 (file)
index 0000000..244c210
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"redigeringsområde","iframeFocusTitle":"ramme om redigeringsområde"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/da/validate.js b/lib/dijit/form/nls/da/validate.js
new file mode 100644 (file)
index 0000000..2874dd8
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Værdien er uden for intervallet.","invalidMessage":"Den angivne værdi er ugyldig.","missingMessage":"Værdien er påkrævet."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/de/ComboBox.js b/lib/dijit/form/nls/de/ComboBox.js
new file mode 100644 (file)
index 0000000..6cce34b
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Vorherige Auswahl","nextMessage":"Weitere Auswahlmöglichkeiten"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/de/Textarea.js b/lib/dijit/form/nls/de/Textarea.js
new file mode 100644 (file)
index 0000000..2cf75db
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"Editierbereich","iframeFocusTitle":"Rahmen für Editierbereich"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/de/validate.js b/lib/dijit/form/nls/de/validate.js
new file mode 100644 (file)
index 0000000..597796d
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Dieser Wert liegt außerhalb des gültigen Bereichs. ","invalidMessage":"Der eingegebene Wert ist ungültig. ","missingMessage":"Dieser Wert ist erforderlich."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/el/ComboBox.js b/lib/dijit/form/nls/el/ComboBox.js
new file mode 100644 (file)
index 0000000..ec294d1
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Προηγούμενες επιλογές","nextMessage":"Περισσότερες επιλογές"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/el/Textarea.js b/lib/dijit/form/nls/el/Textarea.js
new file mode 100644 (file)
index 0000000..9ce37a9
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"περιοχή επεξεργασίας","iframeFocusTitle":"πλαίσιο περιοχής επεξεργασίας"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/el/validate.js b/lib/dijit/form/nls/el/validate.js
new file mode 100644 (file)
index 0000000..cc57d55
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Η τιμή αυτή δεν ανήκει στο εύρος έγκυρων τιμών.","invalidMessage":"Η τιμή που καταχωρήσατε δεν είναι έγκυρη.","missingMessage":"Η τιμή αυτή πρέπει απαραίτητα να καθοριστεί."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/es/ComboBox.js b/lib/dijit/form/nls/es/ComboBox.js
new file mode 100644 (file)
index 0000000..5bf69f9
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Opciones anteriores","nextMessage":"Más opciones"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/es/Textarea.js b/lib/dijit/form/nls/es/Textarea.js
new file mode 100644 (file)
index 0000000..f92a50f
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"área de edición","iframeFocusTitle":"marco del área de edición"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/es/validate.js b/lib/dijit/form/nls/es/validate.js
new file mode 100644 (file)
index 0000000..65e190e
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Este valor está fuera del intervalo.","invalidMessage":"El valor especificado no es válido.","missingMessage":"Este valor es necesario."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/fi/ComboBox.js b/lib/dijit/form/nls/fi/ComboBox.js
new file mode 100644 (file)
index 0000000..6d9b830
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Edelliset valinnat","nextMessage":"Lisää valintoja"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/fi/Textarea.js b/lib/dijit/form/nls/fi/Textarea.js
new file mode 100644 (file)
index 0000000..5efaee9
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"muokkausalue","iframeFocusTitle":"muokkausalueen kehys"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/fi/validate.js b/lib/dijit/form/nls/fi/validate.js
new file mode 100644 (file)
index 0000000..276efcd
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Tämä arvo on sallitun alueen ulkopuolella.","invalidMessage":"Annettu arvo ei kelpaa.","missingMessage":"Tämä arvo on pakollinen."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/fr/ComboBox.js b/lib/dijit/form/nls/fr/ComboBox.js
new file mode 100644 (file)
index 0000000..14b3976
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Choix précédents","nextMessage":"Plus de choix"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/fr/Textarea.js b/lib/dijit/form/nls/fr/Textarea.js
new file mode 100644 (file)
index 0000000..4abb6c3
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"zone d'édition","iframeFocusTitle":"cadre de la zone d'édition"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/fr/validate.js b/lib/dijit/form/nls/fr/validate.js
new file mode 100644 (file)
index 0000000..95a0169
--- /dev/null
@@ -0,0 +1 @@
+({"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."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/he/ComboBox.js b/lib/dijit/form/nls/he/ComboBox.js
new file mode 100644 (file)
index 0000000..169d0f5
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"האפשרויות הקודמות","nextMessage":"אפשרויות נוספות"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/he/Textarea.js b/lib/dijit/form/nls/he/Textarea.js
new file mode 100644 (file)
index 0000000..809eadf
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"אזור עריכה","iframeFocusTitle":"מסגרת אזור עריכה"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/he/validate.js b/lib/dijit/form/nls/he/validate.js
new file mode 100644 (file)
index 0000000..3d778e2
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"הערך מחוץ לטווח.","invalidMessage":"הערך שצוין אינו חוקי.","missingMessage":"זהו ערך דרוש."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/hu/ComboBox.js b/lib/dijit/form/nls/hu/ComboBox.js
new file mode 100644 (file)
index 0000000..4b6a620
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Előző menüpontok","nextMessage":"További menüpontok"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/hu/Textarea.js b/lib/dijit/form/nls/hu/Textarea.js
new file mode 100644 (file)
index 0000000..9b4ca01
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"szerkesztési terület","iframeFocusTitle":"szerkesztési terület keret"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/hu/validate.js b/lib/dijit/form/nls/hu/validate.js
new file mode 100644 (file)
index 0000000..b6d7996
--- /dev/null
@@ -0,0 +1 @@
+({"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."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/it/ComboBox.js b/lib/dijit/form/nls/it/ComboBox.js
new file mode 100644 (file)
index 0000000..9f67072
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Scelte precedenti","nextMessage":"Altre scelte"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/it/Textarea.js b/lib/dijit/form/nls/it/Textarea.js
new file mode 100644 (file)
index 0000000..1b14ecc
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"modifica area","iframeFocusTitle":"modifica frame area"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/it/validate.js b/lib/dijit/form/nls/it/validate.js
new file mode 100644 (file)
index 0000000..af7227f
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Questo valore non è compreso nell'intervallo.","invalidMessage":"Il valore immesso non è valido.","missingMessage":"Questo valore è obbligatorio."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ja/ComboBox.js b/lib/dijit/form/nls/ja/ComboBox.js
new file mode 100644 (file)
index 0000000..6b34170
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"以前の選択項目","nextMessage":"追加の選択項目"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ja/Textarea.js b/lib/dijit/form/nls/ja/Textarea.js
new file mode 100644 (file)
index 0000000..8a52f4a
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"編集域","iframeFocusTitle":"編集域フレーム"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ja/validate.js b/lib/dijit/form/nls/ja/validate.js
new file mode 100644 (file)
index 0000000..450cd7e
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"この値は範囲外です。","invalidMessage":"入力した値は無効です。","missingMessage":"この値は必須です。"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ko/ComboBox.js b/lib/dijit/form/nls/ko/ComboBox.js
new file mode 100644 (file)
index 0000000..87d0f06
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"이전 선택사항","nextMessage":"기타 선택사항"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ko/Textarea.js b/lib/dijit/form/nls/ko/Textarea.js
new file mode 100644 (file)
index 0000000..5c4e916
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"편집 영역","iframeFocusTitle":"편집 영역 프레임"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ko/validate.js b/lib/dijit/form/nls/ko/validate.js
new file mode 100644 (file)
index 0000000..c76c676
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"이 값은 범위를 벗어납니다.","invalidMessage":"입력된 값이 올바르지 않습니다.","missingMessage":"이 값은 필수입니다."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/nb/ComboBox.js b/lib/dijit/form/nls/nb/ComboBox.js
new file mode 100644 (file)
index 0000000..de14554
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Tidligere valg","nextMessage":"Flere valg"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/nb/Textarea.js b/lib/dijit/form/nls/nb/Textarea.js
new file mode 100644 (file)
index 0000000..16fadf5
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"redigeringsområde","iframeFocusTitle":"ramme for redigeringsområde"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/nb/validate.js b/lib/dijit/form/nls/nb/validate.js
new file mode 100644 (file)
index 0000000..2fe96f2
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Denne verdien er utenfor gyldig område.","invalidMessage":"Den angitte verdien er ikke gyldig.","missingMessage":"Denne verdien er obligatorisk."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/nl/ComboBox.js b/lib/dijit/form/nls/nl/ComboBox.js
new file mode 100644 (file)
index 0000000..b5885d7
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Eerdere opties","nextMessage":"Meer opties"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/nl/Textarea.js b/lib/dijit/form/nls/nl/Textarea.js
new file mode 100644 (file)
index 0000000..d13c3a6
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"veld bewerken","iframeFocusTitle":"veldkader bewerken"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/nl/validate.js b/lib/dijit/form/nls/nl/validate.js
new file mode 100644 (file)
index 0000000..b3062c1
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Deze waarde is niet toegestaan.","invalidMessage":"De opgegeven waarde is ongeldig.","missingMessage":"Deze waarde is verplicht."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/pl/ComboBox.js b/lib/dijit/form/nls/pl/ComboBox.js
new file mode 100644 (file)
index 0000000..f2b4b08
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Poprzednie wybory","nextMessage":"Więcej wyborów"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/pl/Textarea.js b/lib/dijit/form/nls/pl/Textarea.js
new file mode 100644 (file)
index 0000000..d918f59
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"Obszar edycji","iframeFocusTitle":"Ramka obszaru edycji"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/pl/validate.js b/lib/dijit/form/nls/pl/validate.js
new file mode 100644 (file)
index 0000000..cf05d2f
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Ta wartość jest spoza zakresu.","invalidMessage":"Wprowadzona wartość jest niepoprawna.","missingMessage":"Ta wartość jest wymagana."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/pt-pt/ComboBox.js b/lib/dijit/form/nls/pt-pt/ComboBox.js
new file mode 100644 (file)
index 0000000..2540542
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Opções anteriores","nextMessage":"Mais opções"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/pt-pt/Textarea.js b/lib/dijit/form/nls/pt-pt/Textarea.js
new file mode 100644 (file)
index 0000000..bcd75e7
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"área de edição","iframeFocusTitle":"painel da área de edição"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/pt-pt/validate.js b/lib/dijit/form/nls/pt-pt/validate.js
new file mode 100644 (file)
index 0000000..3d92170
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Este valor encontra-se fora do intervalo.","invalidMessage":"O valor introduzido não é válido.","missingMessage":"Este valor é requerido."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/pt/ComboBox.js b/lib/dijit/form/nls/pt/ComboBox.js
new file mode 100644 (file)
index 0000000..2540542
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Opções anteriores","nextMessage":"Mais opções"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/pt/Textarea.js b/lib/dijit/form/nls/pt/Textarea.js
new file mode 100644 (file)
index 0000000..b4a0b0f
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"editar área","iframeFocusTitle":"editar quadro da área"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/pt/validate.js b/lib/dijit/form/nls/pt/validate.js
new file mode 100644 (file)
index 0000000..3b43579
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Este valor está fora do intervalo. ","invalidMessage":"O valor inserido não é válido.","missingMessage":"Este valor é necessário."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ro/ComboBox.js b/lib/dijit/form/nls/ro/ComboBox.js
new file mode 100644 (file)
index 0000000..f491a11
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Alegeri anterioare","nextMessage":"Mai multe alegeri"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ro/Textarea.js b/lib/dijit/form/nls/ro/Textarea.js
new file mode 100644 (file)
index 0000000..2e029d9
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"zonă de editare","iframeFocusTitle":"cadru zonă de editare"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ro/validate.js b/lib/dijit/form/nls/ro/validate.js
new file mode 100644 (file)
index 0000000..f0892c7
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Această valoare este în afara intervalului. ","invalidMessage":"Valoarea introdusă nu este validă.","missingMessage":"Această valoare este necesară."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ru/ComboBox.js b/lib/dijit/form/nls/ru/ComboBox.js
new file mode 100644 (file)
index 0000000..193f4ee
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Предыдущие варианты","nextMessage":"Следующие варианты"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ru/Textarea.js b/lib/dijit/form/nls/ru/Textarea.js
new file mode 100644 (file)
index 0000000..ad7ad22
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"область редактирования","iframeFocusTitle":"фрейм области редактирования"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/ru/validate.js b/lib/dijit/form/nls/ru/validate.js
new file mode 100644 (file)
index 0000000..35fb5ca
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Это значение вне диапазона.","invalidMessage":"Указано недопустимое значение.","missingMessage":"Это обязательное значение."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/sk/ComboBox.js b/lib/dijit/form/nls/sk/ComboBox.js
new file mode 100644 (file)
index 0000000..a45c7f2
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Predchádzajúce voľby","nextMessage":"Ďalšie voľby"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/sk/Textarea.js b/lib/dijit/form/nls/sk/Textarea.js
new file mode 100644 (file)
index 0000000..3ee98c3
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"upraviť oblasť","iframeFocusTitle":"upraviť rám oblasti"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/sk/validate.js b/lib/dijit/form/nls/sk/validate.js
new file mode 100644 (file)
index 0000000..612dab5
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Táto hodnota je mimo rozsah.","invalidMessage":"Zadaná hodnota nie je platná.","missingMessage":"Táto hodnota je vyžadovaná."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/sl/ComboBox.js b/lib/dijit/form/nls/sl/ComboBox.js
new file mode 100644 (file)
index 0000000..e955688
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Prejšnje možnosti","nextMessage":"Dodatne možnosti"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/sl/Textarea.js b/lib/dijit/form/nls/sl/Textarea.js
new file mode 100644 (file)
index 0000000..912ee39
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"urejanje področja","iframeFocusTitle":"urejanje področja okvirja"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/sl/validate.js b/lib/dijit/form/nls/sl/validate.js
new file mode 100644 (file)
index 0000000..7635724
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Ta vrednost je zunaj obsega. ","invalidMessage":"Vnesena vrednost ni veljavna.","missingMessage":"Ta vrednost je zahtevana."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/sv/ComboBox.js b/lib/dijit/form/nls/sv/ComboBox.js
new file mode 100644 (file)
index 0000000..860bf75
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Föregående alternativ","nextMessage":"Fler alternativ"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/sv/Textarea.js b/lib/dijit/form/nls/sv/Textarea.js
new file mode 100644 (file)
index 0000000..9e508ac
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"redigeringsområde","iframeFocusTitle":"redigeringsområdesram"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/sv/validate.js b/lib/dijit/form/nls/sv/validate.js
new file mode 100644 (file)
index 0000000..8c1b537
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Värdet är utanför intervallet.","invalidMessage":"Det angivna värdet är ogiltigt.","missingMessage":"Värdet är obligatoriskt."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/th/ComboBox.js b/lib/dijit/form/nls/th/ComboBox.js
new file mode 100644 (file)
index 0000000..ff32a4f
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"การเลือกก่อนหน้า","nextMessage":"การเลือกเพิ่มเติม"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/th/Textarea.js b/lib/dijit/form/nls/th/Textarea.js
new file mode 100644 (file)
index 0000000..4361183
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"แก้ไขพื้นที่","iframeFocusTitle":"แก้ไขกรอบพื้นที่"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/th/validate.js b/lib/dijit/form/nls/th/validate.js
new file mode 100644 (file)
index 0000000..86606b7
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"ค่านี้เกินช่วง","invalidMessage":"ค่าที่ป้อนไม่ถูกต้อง","missingMessage":"จำเป็นต้องมีค่านี้"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/tr/ComboBox.js b/lib/dijit/form/nls/tr/ComboBox.js
new file mode 100644 (file)
index 0000000..46f71dc
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"Önceki seçenekler","nextMessage":"Diğer seçenekler"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/tr/Textarea.js b/lib/dijit/form/nls/tr/Textarea.js
new file mode 100644 (file)
index 0000000..3f2b5e7
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"düzenleme alanı","iframeFocusTitle":"düzenleme alanı çerçevesi"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/tr/validate.js b/lib/dijit/form/nls/tr/validate.js
new file mode 100644 (file)
index 0000000..838dbda
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"Bu değer aralık dışında.","invalidMessage":"Girilen değer geçersiz.","missingMessage":"Bu değer gerekli."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/validate.js b/lib/dijit/form/nls/validate.js
new file mode 100644 (file)
index 0000000..29a1a47
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"This value is out of range.","invalidMessage":"The value entered is not valid.","missingMessage":"This value is required."})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/zh-tw/ComboBox.js b/lib/dijit/form/nls/zh-tw/ComboBox.js
new file mode 100644 (file)
index 0000000..ead5fa6
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"前一個選擇項","nextMessage":"其他選擇項"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/zh-tw/Textarea.js b/lib/dijit/form/nls/zh-tw/Textarea.js
new file mode 100644 (file)
index 0000000..cb7abda
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"編輯區","iframeFocusTitle":"編輯區框"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/zh-tw/validate.js b/lib/dijit/form/nls/zh-tw/validate.js
new file mode 100644 (file)
index 0000000..b398a31
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"此值超出範圍。","invalidMessage":"輸入的值無效。","missingMessage":"必須提供此值。"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/zh/ComboBox.js b/lib/dijit/form/nls/zh/ComboBox.js
new file mode 100644 (file)
index 0000000..7cc92cf
--- /dev/null
@@ -0,0 +1 @@
+({"previousMessage":"先前选项","nextMessage":"更多选项"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/zh/Textarea.js b/lib/dijit/form/nls/zh/Textarea.js
new file mode 100644 (file)
index 0000000..e1cf172
--- /dev/null
@@ -0,0 +1 @@
+({"iframeEditTitle":"编辑区","iframeFocusTitle":"编辑区框架"})
\ No newline at end of file
diff --git a/lib/dijit/form/nls/zh/validate.js b/lib/dijit/form/nls/zh/validate.js
new file mode 100644 (file)
index 0000000..e2c01f5
--- /dev/null
@@ -0,0 +1 @@
+({"rangeMessage":"此值超出范围。","invalidMessage":"输入的值无效。","missingMessage":"此值是必需值。"})
\ No newline at end of file
diff --git a/lib/dijit/icons/commonIcons.css b/lib/dijit/icons/commonIcons.css
new file mode 100644 (file)
index 0000000..373752a
--- /dev/null
@@ -0,0 +1,146 @@
+
+.dijitIconSave,
+.dijitIconPrint,
+.dijitIconCut,
+.dijitIconCopy,
+.dijitIconClear,
+.dijitIconDelete,
+.dijitIconUndo,
+.dijitIconEdit,
+.dijitIconNewTask,
+.dijitIconEditTask,
+.dijitIconEditProperty,
+.dijitIconTask,
+.dijitIconFilter,
+.dijitIconConfigure,
+.dijitIconSearch,
+.dijitIconApplication,
+.dijitIconBookmark,
+.dijitIconChart,
+.dijitIconConnector,
+.dijitIconDatabase,
+.dijitIconDocuments,
+.dijitIconMail,
+.dijitLeaf,
+.dijitIconFile,
+.dijitIconFunction,
+.dijitIconKey,
+.dijitIconPackage,
+.dijitIconSample,
+.dijitIconTable,
+.dijitIconUsers,
+.dijitFolderClosed,
+.dijitIconFolderClosed,
+.dijitFolderOpened,
+.dijitIconFolderOpen,
+.dijitIconError {
+       background-image: url('images/commonIconsObjActEnabled.png'); 
+       width: 16px;
+       height: 16px;
+}
+.dj_ie6 .dijitIconSave,
+.dj_ie6 .dijitIconPrint,
+.dj_ie6 .dijitIconCut,
+.dj_ie6 .dijitIconCopy,
+.dj_ie6 .dijitIconClear,
+.dj_ie6 .dijitIconDelete,
+.dj_ie6 .dijitIconUndo,
+.dj_ie6 .dijitIconEdit,
+.dj_ie6 .dijitIconNewTask,
+.dj_ie6 .dijitIconEditTask,
+.dj_ie6 .dijitIconEditProperty,
+.dj_ie6 .dijitIconTask,
+.dj_ie6 .dijitIconFilter,
+.dj_ie6 .dijitIconConfigure,
+.dj_ie6 .dijitIconSearch,
+.dj_ie6 .dijitIconApplication,
+.dj_ie6 .dijitIconBookmark,
+.dj_ie6 .dijitIconChart,
+.dj_ie6 .dijitIconConnector,
+.dj_ie6 .dijitIconDatabase,
+.dj_ie6 .dijitIconDocuments,
+.dj_ie6 .dijitIconMail,
+.dj_ie6 .dijitLeaf,
+.dj_ie6 .dijitIconFile,
+.dj_ie6 .dijitIconFunction,
+.dj_ie6 .dijitIconKey,
+.dj_ie6 .dijitIconPackage,
+.dj_ie6 .dijitIconSample,
+.dj_ie6 .dijitIconTable,
+.dj_ie6 .dijitIconUsers,
+.dj_ie6 .dijitFolderClosed,
+.dj_ie6 .dijitIconFolderClosed,
+.dj_ie6 .dijitFolderOpened,
+.dj_ie6 .dijitIconFolderOpen,
+.dj_ie6 .dijitIconError {
+       background-image: url('images/commonIconsObjActEnabled8bit.png');
+}
+.dijitDisabled .dijitIconSave,
+.dijitDisabled .dijitIconPrint,
+.dijitDisabled .dijitIconCut,
+.dijitDisabled .dijitIconCopy,
+.dijitDisabled .dijitIconClear,
+.dijitDisabled .dijitIconDelete,
+.dijitDisabled .dijitIconUndo,
+.dijitDisabled .dijitIconEdit,
+.dijitDisabled .dijitIconNewTask,
+.dijitDisabled .dijitIconEditTask,
+.dijitDisabled .dijitIconEditProperty,
+.dijitDisabled .dijitIconTask,
+.dijitDisabled .dijitIconFilter,
+.dijitDisabled .dijitIconConfigure,
+.dijitDisabled .dijitIconSearch,
+.dijitDisabled .dijitIconApplication,
+.dijitDisabled .dijitIconBookmark,
+.dijitDisabled .dijitIconChart,
+.dijitDisabled .dijitIconConnector,
+.dijitDisabled .dijitIconDatabase,
+.dijitDisabled .dijitIconDocuments,
+.dijitDisabled .dijitIconMail,
+.dijitDisabled .dijitLeaf,
+.dijitDisabled .dijitIconFile,
+.dijitDisabled .dijitIconFunction,
+.dijitDisabled .dijitIconKey,
+.dijitDisabled .dijitIconPackage,
+.dijitDisabled .dijitIconSample,
+.dijitDisabled .dijitIconTable,
+.dijitDisabled .dijitIconUsers,
+.dijitDisabled .dijitFolderClosed,
+.dijitDisabled .dijitIconFolderClosed,
+.dijitDisabled .dijitFolderOpened,
+.dijitDisabled .dijitIconFolderOpen,
+.dijitDisabled .dijitIconError {
+       background-image: url('images/commonIconsObjActDisabled.png'); 
+}
+.dijitIconSave { background-position: 0px; }
+.dijitIconPrint { background-position: -16px; }
+.dijitIconCut { background-position: -32px; }
+.dijitIconCopy { background-position: -48px; }
+.dijitIconClear { background-position: -64px; }
+.dijitIconDelete { background-position: -80px; }
+.dijitIconUndo { background-position: -96px; }
+.dijitIconEdit { background-position: -112px; }
+.dijitIconNewTask { background-position: -128px; }
+.dijitIconEditTask { background-position: -144px; }
+.dijitIconEditProperty { background-position: -166px; }
+.dijitIconTask { background-position: -176px; }
+.dijitIconFilter { background-position: -192px; }
+.dijitIconConfigure { background-position: -208px; }
+.dijitIconSearch { background-position: -224px; }
+.dijitIconError { background-position: -496px; } 
+.dijitIconApplication { background-position: -240px; }
+.dijitIconBookmark { background-position: -256px; }
+.dijitIconChart { background-position: -272px; }
+.dijitIconConnector { background-position: -288px; }
+.dijitIconDatabase { background-position: -304px; }
+.dijitIconDocuments { background-position: -320px; }
+.dijitIconMail { background-position: -336px; }
+.dijitIconFile, .dijitLeaf { background-position: -352px; }
+.dijitIconFunction { background-position: -368px; }
+.dijitIconKey { background-position: -384px; }
+.dijitIconPackage{ background-position: -400px; }
+.dijitIconSample { background-position: -416px; }
+.dijitIconTable { background-position: -432px; }
+.dijitIconUsers { background-position: -448px; }
+.dijitIconFolderClosed, .dijitFolderClosed { background-position: -464px; }
+.dijitIconFolderOpen, .dijitFolderOpened { background-position: -480px; }
diff --git a/lib/dijit/icons/commonIcons_rtl.css b/lib/dijit/icons/commonIcons_rtl.css
new file mode 100644 (file)
index 0000000..347f3b7
--- /dev/null
@@ -0,0 +1,117 @@
+
+.dijitRtl .dijitIconSave,
+.dijitRtl .dijitIconPrint,
+.dijitRtl .dijitIconCut,
+.dijitRtl .dijitIconCopy,
+.dijitRtl .dijitIconClear,
+.dijitRtl .dijitIconDelete,
+.dijitRtl .dijitIconUndo,
+.dijitRtl .dijitIconEdit,
+.dijitRtl .dijitIconNewTask,
+.dijitRtl .dijitIconEditTask,
+.dijitRtl .dijitIconEditProperty,
+.dijitRtl .dijitIconTask,
+.dijitRtl .dijitIconFilter,
+.dijitRtl .dijitIconConfigure,
+.dijitRtl .dijitIconSearch,
+.dijitRtl .dijitIconApplication,
+.dijitRtl .dijitIconBookmark,
+.dijitRtl .dijitIconChart,
+.dijitRtl .dijitIconConnector,
+.dijitRtl .dijitIconDatabase,
+.dijitRtl .dijitIconDocuments,
+.dijitRtl .dijitIconMail,
+.dijitRtl .dijitLeaf,
+.dijitRtl .dijitIconFile,
+.dijitRtl .dijitIconFunction,
+.dijitRtl .dijitIconKey,
+.dijitRtl .dijitIconPackage,
+.dijitRtl .dijitIconSample,
+.dijitRtl .dijitIconTable,
+.dijitRtl .dijitIconUsers,
+.dijitRtl .dijitFolderClosed,
+.dijitRtl .dijitIconFolderClosed,
+.dijitRtl .dijitFolderOpened,
+.dijitRtl .dijitIconFolderOpen,
+.dijitRtl .dijitIconError, .dijitRtl .dijitContentPaneError { 
+       background-image: url('images/commonIconsObjActEnabled_rtl.png'); 
+       width: 16px;
+       height: 16px;
+}
+.dj_ie6 .dijitRtl .dijitIconSave,
+.dj_ie6 .dijitRtl .dijitIconPrint,
+.dj_ie6 .dijitRtl .dijitIconCut,
+.dj_ie6 .dijitRtl .dijitIconCopy,
+.dj_ie6 .dijitRtl .dijitIconClear,
+.dj_ie6 .dijitRtl .dijitIconDelete,
+.dj_ie6 .dijitRtl .dijitIconUndo,
+.dj_ie6 .dijitRtl .dijitIconEdit,
+.dj_ie6 .dijitRtl .dijitIconNewTask,
+.dj_ie6 .dijitRtl .dijitIconEditTask,
+.dj_ie6 .dijitRtl .dijitIconEditProperty,
+.dj_ie6 .dijitRtl .dijitIconTask,
+.dj_ie6 .dijitRtl .dijitIconFilter,
+.dj_ie6 .dijitRtl .dijitIconConfigure,
+.dj_ie6 .dijitRtl .dijitIconSearch,
+.dj_ie6 .dijitRtl .dijitIconApplication,
+.dj_ie6 .dijitRtl .dijitIconBookmark,
+.dj_ie6 .dijitRtl .dijitIconChart,
+.dj_ie6 .dijitRtl .dijitIconConnector,
+.dj_ie6 .dijitRtl .dijitIconDatabase,
+.dj_ie6 .dijitRtl .dijitIconDocuments,
+.dj_ie6 .dijitRtl .dijitIconMail,
+.dj_ie6 .dijitRtl .dijitLeaf,
+.dj_ie6 .dijitRtl .dijitIconFile,
+.dj_ie6 .dijitRtl .dijitIconFunction,
+.dj_ie6 .dijitRtl .dijitIconKey,
+.dj_ie6 .dijitRtl .dijitIconPackage,
+.dj_ie6 .dijitRtl .dijitIconSample,
+.dj_ie6 .dijitRtl .dijitIconTable,
+.dj_ie6 .dijitRtl .dijitIconUsers,
+.dj_ie6 .dijitRtl .dijitFolderClosed,
+.dj_ie6 .dijitRtl .dijitIconFolderClosed,
+.dj_ie6 .dijitRtl .dijitFolderOpened,
+.dj_ie6 .dijitRtl .dijitIconFolderOpen,
+.dj_ie6 .dijitRtl .dijitIconError, .dj_ie6 .dijitRtl .dijitContentPaneError {
+       background-image: url('images/commonIconsObjActEnabled8bit_rtl.png');
+}
+.dijitRtl .dijitDisabled .dijitIconSave,
+.dijitRtl .dijitDisabled .dijitIconPrint,
+.dijitRtl .dijitDisabled .dijitIconCut,
+.dijitRtl .dijitDisabled .dijitIconCopy,
+.dijitRtl .dijitDisabled .dijitIconClear,
+.dijitRtl .dijitDisabled .dijitIconDelete,
+.dijitRtl .dijitDisabled .dijitIconUndo,
+.dijitRtl .dijitDisabled .dijitIconEdit,
+.dijitRtl .dijitDisabled .dijitIconNewTask,
+.dijitRtl .dijitDisabled .dijitIconEditTask,
+.dijitRtl .dijitDisabled .dijitIconEditProperty,
+.dijitRtl .dijitDisabled .dijitIconTask,
+.dijitRtl .dijitDisabled .dijitIconFilter,
+.dijitRtl .dijitDisabled .dijitIconConfigure,
+.dijitRtl .dijitDisabled .dijitIconSearch,
+.dijitRtl .dijitDisabled .dijitIconApplication,
+.dijitRtl .dijitDisabled .dijitIconBookmark,
+.dijitRtl .dijitDisabled .dijitIconChart,
+.dijitRtl .dijitDisabled .dijitIconConnector,
+.dijitRtl .dijitDisabled .dijitIconDatabase,
+.dijitRtl .dijitDisabled .dijitIconDocuments,
+.dijitRtl .dijitDisabled .dijitIconMail,
+.dijitRtl .dijitDisabled .dijitLeaf,
+.dijitRtl .dijitDisabled .dijitIconFile,
+.dijitRtl .dijitDisabled .dijitIconFunction,
+.dijitRtl .dijitDisabled .dijitIconKey,
+.dijitRtl .dijitDisabled .dijitIconPackage,
+.dijitRtl .dijitDisabled .dijitIconSample,
+.dijitRtl .dijitDisabled .dijitIconTable,
+.dijitRtl .dijitDisabled .dijitIconUsers,
+.dijitRtl .dijitDisabled .dijitFolderClosed,
+.dijitRtl .dijitDisabled .dijitIconFolderClosed,
+.dijitRtl .dijitDisabled .dijitFolderOpened,
+.dijitRtl .dijitDisabled .dijitIconFolderOpen,
+.dijitRtl .dijitDisabled .dijitIconError, .dijitRtl .dijitDisabled .dijitContentPaneError {
+       background-image: url('images/commonIconsObjActDisabled_rtl.png'); 
+}
+.dijitRtl .dijitContentPaneLoading {
+       background:url('images/loadingAnimation_rtl.gif') no-repeat;
+}
diff --git a/lib/dijit/icons/editorIcons.css b/lib/dijit/icons/editorIcons.css
new file mode 100644 (file)
index 0000000..90ee97e
--- /dev/null
@@ -0,0 +1,57 @@
+
+.dijitEditorIcon {
+       background-image: url('images/editorIconsEnabled.png'); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.dijitDisabled .dijitEditorIcon {
+       background-image: url('images/editorIconsDisabled.png'); 
+}
+.dijitEditorIconSep { background-position: 0px; }
+.dijitEditorIconSave { background-position: -18px; }
+.dijitEditorIconPrint { background-position: -36px; }
+.dijitEditorIconCut { background-position: -54px; }
+.dijitEditorIconCopy { background-position: -72px; }
+.dijitEditorIconPaste { background-position: -90px; }
+.dijitEditorIconDelete { background-position: -108px; }
+.dijitEditorIconCancel { background-position: -126px; }
+.dijitEditorIconUndo { background-position: -144px; }
+.dijitEditorIconRedo { background-position: -162px; }
+.dijitEditorIconSelectAll { background-position: -180px; }
+.dijitEditorIconBold { background-position: -198px; }
+.dijitEditorIconItalic { background-position: -216px; }
+.dijitEditorIconUnderline { background-position: -234px; }
+.dijitEditorIconStrikethrough { background-position: -252px; }
+.dijitEditorIconSuperscript { background-position: -270px; }
+.dijitEditorIconSubscript { background-position: -288px; }
+.dijitEditorIconJustifyCenter { background-position: -306px; }
+.dijitEditorIconJustifyFull { background-position: -324px; }
+.dijitEditorIconJustifyLeft { background-position: -342px; }
+.dijitEditorIconJustifyRight { background-position: -360px; }
+.dijitEditorIconIndent { background-position: -378px; }
+.dijitEditorIconOutdent { background-position: -396px; }
+.dijitEditorIconListBulletIndent { background-position: -414px; }
+.dijitEditorIconListBulletOutdent { background-position: -432px; }
+.dijitEditorIconListNumIndent { background-position: -450px; }
+.dijitEditorIconListNumOutdent { background-position: -468px; }
+.dijitEditorIconTabIndent { background-position: -486px; }
+.dijitEditorIconLeftToRight { background-position: -504px; }
+.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir { background-position: -522px; }
+.dijitEditorIconBackColor { background-position: -540px; }
+.dijitEditorIconForeColor { background-position: -558px; }
+.dijitEditorIconHiliteColor { background-position: -576px; }
+.dijitEditorIconNewPage { background-position: -594px; }
+.dijitEditorIconInsertImage { background-position: -612px; }
+.dijitEditorIconInsertTable { background-position: -630px; }
+.dijitEditorIconSpace { background-position: -648px; }
+.dijitEditorIconInsertHorizontalRule { background-position: -666px; }
+.dijitEditorIconInsertOrderedList { background-position: -684px; }
+.dijitEditorIconInsertUnorderedList { background-position: -702px; }
+.dijitEditorIconCreateLink { background-position: -720px; }
+.dijitEditorIconUnlink { background-position: -738px; }
+.dijitEditorIconViewSource { background-position: -756px; }
+.dijitEditorIconRemoveFormat { background-position: -774px; }
+.dijitEditorIconFullScreen { background-position: -792px; }
+.dijitEditorIconWikiword { background-position: -810px; }
diff --git a/lib/dijit/icons/editorIcons_rtl.css b/lib/dijit/icons/editorIcons_rtl.css
new file mode 100644 (file)
index 0000000..8dcdd73
--- /dev/null
@@ -0,0 +1,10 @@
+
+.dijitEditorRtl .dijitEditorIcon {
+       background-image: url('images/editorIconsEnabled_rtl.png'); 
+}
+.dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url('images/editorIconsDisabled_rtl.png'); 
+}
+.dijitToolbarRtl .dijitToolbarSeparator {
+       background-image: url('images/editorIconsEnabled_rtl.png');
+}
diff --git a/lib/dijit/icons/images/commonIconsObjActDisabled.png b/lib/dijit/icons/images/commonIconsObjActDisabled.png
new file mode 100644 (file)
index 0000000..a348e3c
Binary files /dev/null and b/lib/dijit/icons/images/commonIconsObjActDisabled.png differ
diff --git a/lib/dijit/icons/images/commonIconsObjActDisabled_rtl.png b/lib/dijit/icons/images/commonIconsObjActDisabled_rtl.png
new file mode 100644 (file)
index 0000000..ea070eb
Binary files /dev/null and b/lib/dijit/icons/images/commonIconsObjActDisabled_rtl.png differ
diff --git a/lib/dijit/icons/images/commonIconsObjActEnabled.png b/lib/dijit/icons/images/commonIconsObjActEnabled.png
new file mode 100644 (file)
index 0000000..bd32452
Binary files /dev/null and b/lib/dijit/icons/images/commonIconsObjActEnabled.png differ
diff --git a/lib/dijit/icons/images/commonIconsObjActEnabled8bit.png b/lib/dijit/icons/images/commonIconsObjActEnabled8bit.png
new file mode 100644 (file)
index 0000000..d453ea1
Binary files /dev/null and b/lib/dijit/icons/images/commonIconsObjActEnabled8bit.png differ
diff --git a/lib/dijit/icons/images/commonIconsObjActEnabled8bit_rtl.png b/lib/dijit/icons/images/commonIconsObjActEnabled8bit_rtl.png
new file mode 100644 (file)
index 0000000..fe5afd2
Binary files /dev/null and b/lib/dijit/icons/images/commonIconsObjActEnabled8bit_rtl.png differ
diff --git a/lib/dijit/icons/images/commonIconsObjActEnabled_rtl.png b/lib/dijit/icons/images/commonIconsObjActEnabled_rtl.png
new file mode 100644 (file)
index 0000000..fbe891a
Binary files /dev/null and b/lib/dijit/icons/images/commonIconsObjActEnabled_rtl.png differ
diff --git a/lib/dijit/icons/images/editorIconsDisabled.png b/lib/dijit/icons/images/editorIconsDisabled.png
new file mode 100644 (file)
index 0000000..3a68d7a
Binary files /dev/null and b/lib/dijit/icons/images/editorIconsDisabled.png differ
diff --git a/lib/dijit/icons/images/editorIconsDisabled_rtl.png b/lib/dijit/icons/images/editorIconsDisabled_rtl.png
new file mode 100644 (file)
index 0000000..9f16646
Binary files /dev/null and b/lib/dijit/icons/images/editorIconsDisabled_rtl.png differ
diff --git a/lib/dijit/icons/images/editorIconsEnabled.png b/lib/dijit/icons/images/editorIconsEnabled.png
new file mode 100644 (file)
index 0000000..ca9989a
Binary files /dev/null and b/lib/dijit/icons/images/editorIconsEnabled.png differ
diff --git a/lib/dijit/icons/images/editorIconsEnabled_rtl.png b/lib/dijit/icons/images/editorIconsEnabled_rtl.png
new file mode 100644 (file)
index 0000000..064def3
Binary files /dev/null and b/lib/dijit/icons/images/editorIconsEnabled_rtl.png differ
diff --git a/lib/dijit/icons/images/loadingAnimation_rtl.gif b/lib/dijit/icons/images/loadingAnimation_rtl.gif
new file mode 100644 (file)
index 0000000..35b472c
Binary files /dev/null and b/lib/dijit/icons/images/loadingAnimation_rtl.gif differ
diff --git a/lib/dijit/layout/AccordionContainer.js b/lib/dijit/layout/AccordionContainer.js
new file mode 100644 (file)
index 0000000..5bad370
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.AccordionContainer"]){
+dojo._hasResource["dijit.layout.AccordionContainer"]=true;
+dojo.provide("dijit.layout.AccordionContainer");
+dojo.require("dojo.fx");
+dojo.require("dijit._Container");
+dojo.require("dijit._Templated");
+dojo.require("dijit._CssStateMixin");
+dojo.require("dijit.layout.StackContainer");
+dojo.require("dijit.layout.ContentPane");
+dojo.require("dijit.layout.AccordionPane");
+dojo.declare("dijit.layout.AccordionContainer",dijit.layout.StackContainer,{duration:dijit.defaultDuration,buttonWidget:"dijit.layout._AccordionButton",_verticalSpace:0,baseClass:"dijitAccordionContainer",postCreate:function(){
+this.domNode.style.overflow="hidden";
+this.inherited(arguments);
+dijit.setWaiRole(this.domNode,"tablist");
+},startup:function(){
+if(this._started){
+return;
+}
+this.inherited(arguments);
+if(this.selectedChildWidget){
+var _1=this.selectedChildWidget.containerNode.style;
+_1.display="";
+_1.overflow="auto";
+this.selectedChildWidget._wrapperWidget.set("selected",true);
+}
+},_getTargetHeight:function(_2){
+var cs=dojo.getComputedStyle(_2);
+return Math.max(this._verticalSpace-dojo._getPadBorderExtents(_2,cs).h-dojo._getMarginExtents(_2,cs).h,0);
+},layout:function(){
+var _3=this.selectedChildWidget;
+if(!_3){
+return;
+}
+var _4=_3._wrapperWidget.domNode,_5=dojo._getMarginExtents(_4),_6=dojo._getPadBorderExtents(_4),_7=this._contentBox;
+var _8=0;
+dojo.forEach(this.getChildren(),function(_9){
+if(_9!=_3){
+_8+=dojo.marginBox(_9._wrapperWidget.domNode).h;
+}
+});
+this._verticalSpace=_7.h-_8-_5.h-_6.h-_3._buttonWidget.getTitleHeight();
+this._containerContentBox={h:this._verticalSpace,w:this._contentBox.w-_5.w-_6.w};
+if(_3){
+_3.resize(this._containerContentBox);
+}
+},_setupChild:function(_a){
+_a._wrapperWidget=new dijit.layout._AccordionInnerContainer({contentWidget:_a,buttonWidget:this.buttonWidget,id:_a.id+"_wrapper",dir:_a.dir,lang:_a.lang,parent:this});
+this.inherited(arguments);
+},addChild:function(_b,_c){
+if(this._started){
+dojo.place(_b.domNode,this.containerNode,_c);
+if(!_b._started){
+_b.startup();
+}
+this._setupChild(_b);
+dojo.publish(this.id+"-addChild",[_b,_c]);
+this.layout();
+if(!this.selectedChildWidget){
+this.selectChild(_b);
+}
+}else{
+this.inherited(arguments);
+}
+},removeChild:function(_d){
+_d._wrapperWidget.destroy();
+delete _d._wrapperWidget;
+dojo.removeClass(_d.domNode,"dijitHidden");
+this.inherited(arguments);
+},getChildren:function(){
+return dojo.map(this.inherited(arguments),function(_e){
+return _e.declaredClass=="dijit.layout._AccordionInnerContainer"?_e.contentWidget:_e;
+},this);
+},destroy:function(){
+dojo.forEach(this.getChildren(),function(_f){
+_f._wrapperWidget.destroy();
+});
+this.inherited(arguments);
+},_transition:function(_10,_11,_12){
+if(this._inTransition){
+return;
+}
+var _13=[];
+var _14=this._verticalSpace;
+if(_10){
+_10._wrapperWidget.set("selected",true);
+this._showChild(_10);
+if(this.doLayout&&_10.resize){
+_10.resize(this._containerContentBox);
+}
+var _15=_10.domNode;
+dojo.addClass(_15,"dijitVisible");
+dojo.removeClass(_15,"dijitHidden");
+if(_12){
+var _16=_15.style.overflow;
+_15.style.overflow="hidden";
+_13.push(dojo.animateProperty({node:_15,duration:this.duration,properties:{height:{start:1,end:this._getTargetHeight(_15)}},onEnd:function(){
+_15.style.overflow=_16;
+if(dojo.isIE){
+setTimeout(function(){
+dojo.removeClass(_15.parentNode,"dijitAccordionInnerContainerFocused");
+setTimeout(function(){
+dojo.addClass(_15.parentNode,"dijitAccordionInnerContainerFocused");
+},0);
+},0);
+}
+}}));
+}
+}
+if(_11){
+_11._wrapperWidget.set("selected",false);
+var _17=_11.domNode;
+if(_12){
+var _18=_17.style.overflow;
+_17.style.overflow="hidden";
+_13.push(dojo.animateProperty({node:_17,duration:this.duration,properties:{height:{start:this._getTargetHeight(_17),end:1}},onEnd:function(){
+dojo.addClass(_17,"dijitHidden");
+dojo.removeClass(_17,"dijitVisible");
+_17.style.overflow=_18;
+if(_11.onHide){
+_11.onHide();
+}
+}}));
+}else{
+dojo.addClass(_17,"dijitHidden");
+dojo.removeClass(_17,"dijitVisible");
+if(_11.onHide){
+_11.onHide();
+}
+}
+}
+if(_12){
+this._inTransition=true;
+var _19=dojo.fx.combine(_13);
+_19.onEnd=dojo.hitch(this,function(){
+delete this._inTransition;
+});
+_19.play();
+}
+},_onKeyPress:function(e,_1a){
+if(this._inTransition||this.disabled||e.altKey||!(_1a||e.ctrlKey)){
+if(this._inTransition){
+dojo.stopEvent(e);
+}
+return;
+}
+var k=dojo.keys,c=e.charOrCode;
+if((_1a&&(c==k.LEFT_ARROW||c==k.UP_ARROW))||(e.ctrlKey&&c==k.PAGE_UP)){
+this._adjacent(false)._buttonWidget._onTitleClick();
+dojo.stopEvent(e);
+}else{
+if((_1a&&(c==k.RIGHT_ARROW||c==k.DOWN_ARROW))||(e.ctrlKey&&(c==k.PAGE_DOWN||c==k.TAB))){
+this._adjacent(true)._buttonWidget._onTitleClick();
+dojo.stopEvent(e);
+}
+}
+}});
+dojo.declare("dijit.layout._AccordionInnerContainer",[dijit._Widget,dijit._CssStateMixin],{baseClass:"dijitAccordionInnerContainer",isContainer:true,isLayoutContainer:true,buildRendering:function(){
+this.domNode=dojo.place("<div class='"+this.baseClass+"'>",this.contentWidget.domNode,"after");
+var _1b=this.contentWidget,cls=dojo.getObject(this.buttonWidget);
+this.button=_1b._buttonWidget=(new cls({contentWidget:_1b,label:_1b.title,title:_1b.tooltip,dir:_1b.dir,lang:_1b.lang,iconClass:_1b.iconClass,id:_1b.id+"_button",parent:this.parent})).placeAt(this.domNode);
+dojo.place(this.contentWidget.domNode,this.domNode);
+},postCreate:function(){
+this.inherited(arguments);
+this.connect(this.contentWidget,"set",function(_1c,_1d){
+var _1e={title:"label",tooltip:"title",iconClass:"iconClass"}[_1c];
+if(_1e){
+this.button.set(_1e,_1d);
+}
+},this);
+},_setSelectedAttr:function(_1f){
+this.selected=_1f;
+this.button.set("selected",_1f);
+if(_1f){
+var cw=this.contentWidget;
+if(cw.onSelected){
+cw.onSelected();
+}
+}
+},startup:function(){
+this.contentWidget.startup();
+},destroy:function(){
+this.button.destroyRecursive();
+delete this.contentWidget._buttonWidget;
+delete this.contentWidget._wrapperWidget;
+this.inherited(arguments);
+},destroyDescendants:function(){
+this.contentWidget.destroyRecursive();
+}});
+dojo.declare("dijit.layout._AccordionButton",[dijit._Widget,dijit._Templated,dijit._CssStateMixin],{templateString:dojo.cache("dijit.layout","templates/AccordionButton.html","<div dojoAttachEvent='onclick:_onTitleClick' class='dijitAccordionTitle'>\n\t<div dojoAttachPoint='titleNode,focusNode' dojoAttachEvent='onkeypress:_onTitleKeyPress'\n\t\t\tclass='dijitAccordionTitleFocus' wairole=\"tab\" waiState=\"expanded-false\"\n\t\t><span class='dijitInline dijitAccordionArrow' waiRole=\"presentation\"></span\n\t\t><span class='arrowTextUp' waiRole=\"presentation\">+</span\n\t\t><span class='arrowTextDown' waiRole=\"presentation\">-</span\n\t\t><img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon\" dojoAttachPoint='iconNode' style=\"vertical-align: middle\" waiRole=\"presentation\"/>\n\t\t<span waiRole=\"presentation\" dojoAttachPoint='titleTextNode' class='dijitAccordionText'></span>\n\t</div>\n</div>\n"),attributeMap:dojo.mixin(dojo.clone(dijit.layout.ContentPane.prototype.attributeMap),{label:{node:"titleTextNode",type:"innerHTML"},title:{node:"titleTextNode",type:"attribute",attribute:"title"},iconClass:{node:"iconNode",type:"class"}}),baseClass:"dijitAccordionTitle",getParent:function(){
+return this.parent;
+},postCreate:function(){
+this.inherited(arguments);
+dojo.setSelectable(this.domNode,false);
+var _20=dojo.attr(this.domNode,"id").replace(" ","_");
+dojo.attr(this.titleTextNode,"id",_20+"_title");
+dijit.setWaiState(this.focusNode,"labelledby",dojo.attr(this.titleTextNode,"id"));
+},getTitleHeight:function(){
+return dojo.marginBox(this.domNode).h;
+},_onTitleClick:function(){
+var _21=this.getParent();
+if(!_21._inTransition){
+_21.selectChild(this.contentWidget,true);
+dijit.focus(this.focusNode);
+}
+},_onTitleKeyPress:function(evt){
+return this.getParent()._onKeyPress(evt,this.contentWidget);
+},_setSelectedAttr:function(_22){
+this.selected=_22;
+dijit.setWaiState(this.focusNode,"expanded",_22);
+dijit.setWaiState(this.focusNode,"selected",_22);
+this.focusNode.setAttribute("tabIndex",_22?"0":"-1");
+}});
+}
diff --git a/lib/dijit/layout/AccordionPane.js b/lib/dijit/layout/AccordionPane.js
new file mode 100644 (file)
index 0000000..98b92f8
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.AccordionPane"]){
+dojo._hasResource["dijit.layout.AccordionPane"]=true;
+dojo.provide("dijit.layout.AccordionPane");
+dojo.require("dijit.layout.ContentPane");
+dojo.declare("dijit.layout.AccordionPane",dijit.layout.ContentPane,{constructor:function(){
+dojo.deprecated("dijit.layout.AccordionPane deprecated, use ContentPane instead","","2.0");
+},onSelected:function(){
+}});
+}
diff --git a/lib/dijit/layout/BorderContainer.js b/lib/dijit/layout/BorderContainer.js
new file mode 100644 (file)
index 0000000..426a662
--- /dev/null
@@ -0,0 +1,327 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.BorderContainer"]){
+dojo._hasResource["dijit.layout.BorderContainer"]=true;
+dojo.provide("dijit.layout.BorderContainer");
+dojo.require("dijit.layout._LayoutWidget");
+dojo.require("dojo.cookie");
+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);
+},postCreate:function(){
+this.inherited(arguments);
+this._splitters={};
+this._splitterThickness={};
+},startup:function(){
+if(this._started){
+return;
+}
+dojo.forEach(this.getChildren(),this._setupChild,this);
+this.inherited(arguments);
+},_setupChild:function(_1){
+var _2=_1.region;
+if(_2){
+this.inherited(arguments);
+dojo.addClass(_1.domNode,this.baseClass+"Pane");
+var _3=this.isLeftToRight();
+if(_2=="leading"){
+_2=_3?"left":"right";
+}
+if(_2=="trailing"){
+_2=_3?"right":"left";
+}
+this["_"+_2]=_1.domNode;
+this["_"+_2+"Widget"]=_1;
+if((_1.splitter||this.gutters)&&!this._splitters[_2]){
+var _4=dojo.getObject(_1.splitter?this._splitterClass:"dijit.layout._Gutter");
+var _5=new _4({id:_1.id+"_splitter",container:this,child:_1,region:_2,live:this.liveSplitters});
+_5.isSplitter=true;
+this._splitters[_2]=_5.domNode;
+dojo.place(this._splitters[_2],_1.domNode,"after");
+_5.startup();
+}
+_1.region=_2;
+}
+},_computeSplitterThickness:function(_6){
+this._splitterThickness[_6]=this._splitterThickness[_6]||dojo.marginBox(this._splitters[_6])[(/top|bottom/.test(_6)?"h":"w")];
+},layout:function(){
+for(var _7 in this._splitters){
+this._computeSplitterThickness(_7);
+}
+this._layoutChildren();
+},addChild:function(_8,_9){
+this.inherited(arguments);
+if(this._started){
+this.layout();
+}
+},removeChild:function(_a){
+var _b=_a.region;
+var _c=this._splitters[_b];
+if(_c){
+dijit.byNode(_c).destroy();
+delete this._splitters[_b];
+delete this._splitterThickness[_b];
+}
+this.inherited(arguments);
+delete this["_"+_b];
+delete this["_"+_b+"Widget"];
+if(this._started){
+this._layoutChildren();
+}
+dojo.removeClass(_a.domNode,this.baseClass+"Pane");
+},getChildren:function(){
+return dojo.filter(this.inherited(arguments),function(_d){
+return !_d.isSplitter;
+});
+},getSplitter:function(_e){
+var _f=this._splitters[_e];
+return _f?dijit.byNode(_f):null;
+},resize:function(_10,_11){
+if(!this.cs||!this.pe){
+var _12=this.domNode;
+this.cs=dojo.getComputedStyle(_12);
+this.pe=dojo._getPadExtents(_12,this.cs);
+this.pe.r=dojo._toPixelValue(_12,this.cs.paddingRight);
+this.pe.b=dojo._toPixelValue(_12,this.cs.paddingBottom);
+dojo.style(_12,"padding","0px");
+}
+this.inherited(arguments);
+},_layoutChildren:function(_13,_14){
+if(!this._borderBox||!this._borderBox.h){
+return;
+}
+var _15=(this.design=="sidebar");
+var _16=0,_17=0,_18=0,_19=0;
+var _1a={},_1b={},_1c={},_1d={},_1e=(this._center&&this._center.style)||{};
+var _1f=/left|right/.test(_13);
+var _20=!_13||(!_1f&&!_15);
+var _21=!_13||(_1f&&_15);
+if(this._top){
+_1a=(_13=="top"||_21)&&this._top.style;
+_16=_13=="top"?_14:dojo.marginBox(this._top).h;
+}
+if(this._left){
+_1b=(_13=="left"||_20)&&this._left.style;
+_18=_13=="left"?_14:dojo.marginBox(this._left).w;
+}
+if(this._right){
+_1c=(_13=="right"||_20)&&this._right.style;
+_19=_13=="right"?_14:dojo.marginBox(this._right).w;
+}
+if(this._bottom){
+_1d=(_13=="bottom"||_21)&&this._bottom.style;
+_17=_13=="bottom"?_14:dojo.marginBox(this._bottom).h;
+}
+var _22=this._splitters;
+var _23=_22.top,_24=_22.bottom,_25=_22.left,_26=_22.right;
+var _27=this._splitterThickness;
+var _28=_27.top||0,_29=_27.left||0,_2a=_27.right||0,_2b=_27.bottom||0;
+if(_29>50||_2a>50){
+setTimeout(dojo.hitch(this,function(){
+this._splitterThickness={};
+for(var _2c in this._splitters){
+this._computeSplitterThickness(_2c);
+}
+this._layoutChildren();
+}),50);
+return false;
+}
+var pe=this.pe;
+var _2d={left:(_15?_18+_29:0)+pe.l+"px",right:(_15?_19+_2a:0)+pe.r+"px"};
+if(_23){
+dojo.mixin(_23.style,_2d);
+_23.style.top=_16+pe.t+"px";
+}
+if(_24){
+dojo.mixin(_24.style,_2d);
+_24.style.bottom=_17+pe.b+"px";
+}
+_2d={top:(_15?0:_16+_28)+pe.t+"px",bottom:(_15?0:_17+_2b)+pe.b+"px"};
+if(_25){
+dojo.mixin(_25.style,_2d);
+_25.style.left=_18+pe.l+"px";
+}
+if(_26){
+dojo.mixin(_26.style,_2d);
+_26.style.right=_19+pe.r+"px";
+}
+dojo.mixin(_1e,{top:pe.t+_16+_28+"px",left:pe.l+_18+_29+"px",right:pe.r+_19+_2a+"px",bottom:pe.b+_17+_2b+"px"});
+var _2e={top:_15?pe.t+"px":_1e.top,bottom:_15?pe.b+"px":_1e.bottom};
+dojo.mixin(_1b,_2e);
+dojo.mixin(_1c,_2e);
+_1b.left=pe.l+"px";
+_1c.right=pe.r+"px";
+_1a.top=pe.t+"px";
+_1d.bottom=pe.b+"px";
+if(_15){
+_1a.left=_1d.left=_18+_29+pe.l+"px";
+_1a.right=_1d.right=_19+_2a+pe.r+"px";
+}else{
+_1a.left=_1d.left=pe.l+"px";
+_1a.right=_1d.right=pe.r+"px";
+}
+var _2f=this._borderBox.h-pe.t-pe.b,_30=_2f-(_16+_28+_17+_2b),_31=_15?_2f:_30;
+var _32=this._borderBox.w-pe.l-pe.r,_33=_32-(_18+_29+_19+_2a),_34=_15?_33:_32;
+var dim={top:{w:_34,h:_16},bottom:{w:_34,h:_17},left:{w:_18,h:_31},right:{w:_19,h:_31},center:{h:_30,w:_33}};
+if(_13){
+var _35=this["_"+_13+"Widget"],mb={};
+mb[/top|bottom/.test(_13)?"h":"w"]=_14;
+_35.resize?_35.resize(mb,dim[_35.region]):dojo.marginBox(_35.domNode,mb);
+}
+var _36=dojo.isIE<8||(dojo.isIE&&dojo.isQuirks)||dojo.some(this.getChildren(),function(_37){
+return _37.domNode.tagName=="TEXTAREA"||_37.domNode.tagName=="INPUT";
+});
+if(_36){
+var _38=function(_39,_3a,_3b){
+if(_39){
+(_39.resize?_39.resize(_3a,_3b):dojo.marginBox(_39.domNode,_3a));
+}
+};
+if(_25){
+_25.style.height=_31;
+}
+if(_26){
+_26.style.height=_31;
+}
+_38(this._leftWidget,{h:_31},dim.left);
+_38(this._rightWidget,{h:_31},dim.right);
+if(_23){
+_23.style.width=_34;
+}
+if(_24){
+_24.style.width=_34;
+}
+_38(this._topWidget,{w:_34},dim.top);
+_38(this._bottomWidget,{w:_34},dim.bottom);
+_38(this._centerWidget,dim.center);
+}else{
+var _3c=!_13||(/top|bottom/.test(_13)&&this.design!="sidebar"),_3d=!_13||(/left|right/.test(_13)&&this.design=="sidebar"),_3e={center:true,left:_3c,right:_3c,top:_3d,bottom:_3d};
+dojo.forEach(this.getChildren(),function(_3f){
+if(_3f.resize&&_3e[_3f.region]){
+_3f.resize(null,dim[_3f.region]);
+}
+},this);
+}
+},destroy:function(){
+for(var _40 in this._splitters){
+var _41=this._splitters[_40];
+dijit.byNode(_41).destroy();
+dojo.destroy(_41);
+}
+delete this._splitters;
+delete this._splitterThickness;
+this.inherited(arguments);
+}});
+dojo.extend(dijit._Widget,{region:"",splitter:false,minSize:0,maxSize:Infinity});
+dojo.require("dijit._Templated");
+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\" waiRole=\"separator\"><div class=\"dijitSplitterThumb\"></div></div>",postCreate:function(){
+this.inherited(arguments);
+this.horizontal=/top|bottom/.test(this.region);
+dojo.addClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));
+this._factor=/top|left/.test(this.region)?1:-1;
+this._cookieName=this.container.id+"_"+this.region;
+if(this.container.persist){
+var _42=dojo.cookie(this._cookieName);
+if(_42){
+this.child.domNode.style[this.horizontal?"height":"width"]=_42;
+}
+}
+},_computeMaxSize:function(){
+var dim=this.horizontal?"h":"w",_43=this.container._splitterThickness[this.region];
+var _44={left:"right",right:"left",top:"bottom",bottom:"top",leading:"trailing",trailing:"leading"},_45=this.container["_"+_44[this.region]];
+var _46=dojo.contentBox(this.container.domNode)[dim]-(_45?dojo.marginBox(_45)[dim]:0)-20-_43*2;
+return Math.min(this.child.maxSize,_46);
+},_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");
+dojo.addClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Active");
+if(this.fake){
+dojo.removeClass(this.fake,"dijitSplitterHover");
+dojo.removeClass(this.fake,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover");
+}
+var _47=this._factor,max=this._computeMaxSize(),min=this.child.minSize||20,_48=this.horizontal,_49=_48?"pageY":"pageX",_4a=e[_49],_4b=this.domNode.style,dim=_48?"h":"w",_4c=dojo.marginBox(this.child.domNode)[dim],_4d=this.region,_4e=parseInt(this.domNode.style[_4d],10),_4f=this._resize,_50=this.child.domNode,_51=dojo.hitch(this.container,this.container._layoutChildren),de=dojo.doc;
+this._handlers=(this._handlers||[]).concat([dojo.connect(de,"onmousemove",this._drag=function(e,_52){
+var _53=e[_49]-_4a,_54=_47*_53+_4c,_55=Math.max(Math.min(_54,max),min);
+if(_4f||_52){
+_51(_4d,_55);
+}
+_4b[_4d]=_47*_53+_4e+(_55-_54)+"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");
+dojo.removeClass(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Active");
+dojo.removeClass(this.domNode,"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 _56=this.horizontal;
+var _57=1;
+var dk=dojo.keys;
+switch(e.charOrCode){
+case _56?dk.UP_ARROW:dk.LEFT_ARROW:
+_57*=-1;
+case _56?dk.DOWN_ARROW:dk.RIGHT_ARROW:
+break;
+default:
+return;
+}
+var _58=dojo.marginBox(this.child.domNode)[_56?"h":"w"]+this._factor*_57;
+this.container._layoutChildren(this.region,Math.max(Math.min(_58,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\" waiRole=\"presentation\"></div>",postCreate:function(){
+this.horizontal=/top|bottom/.test(this.region);
+dojo.addClass(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"));
+}});
+}
diff --git a/lib/dijit/layout/ContentPane.js b/lib/dijit/layout/ContentPane.js
new file mode 100644 (file)
index 0000000..5695280
--- /dev/null
@@ -0,0 +1,291 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.ContentPane"]){
+dojo._hasResource["dijit.layout.ContentPane"]=true;
+dojo.provide("dijit.layout.ContentPane");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Contained");
+dojo.require("dijit.layout._LayoutWidget");
+dojo.require("dojo.parser");
+dojo.require("dojo.string");
+dojo.require("dojo.html");
+dojo.requireLocalization("dijit","loading",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit.layout.ContentPane",dijit._Widget,{href:"",extractContent:false,parseOnLoad:true,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"<span class='dijitContentPaneLoading'>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'>${errorState}</span>",isLoaded:false,baseClass:"dijitContentPane",doLayout:true,ioArgs:{},isContainer:true,isLayoutContainer:true,onLoadDeferred:null,attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{title:[]}),postMixInProperties:function(){
+this.inherited(arguments);
+var _1=dojo.i18n.getLocalization("dijit","loading",this.lang);
+this.loadingMessage=dojo.string.substitute(this.loadingMessage,_1);
+this.errorMessage=dojo.string.substitute(this.errorMessage,_1);
+if(!this.href&&this.srcNodeRef&&this.srcNodeRef.innerHTML){
+this.isLoaded=true;
+}
+},buildRendering:function(){
+this.inherited(arguments);
+if(!this.containerNode){
+this.containerNode=this.domNode;
+}
+},postCreate:function(){
+this.domNode.title="";
+if(!dojo.attr(this.domNode,"role")){
+dijit.setWaiRole(this.domNode,"group");
+}
+dojo.addClass(this.domNode,this.baseClass);
+},startup:function(){
+if(this._started){
+return;
+}
+var _2=dijit._Contained.prototype.getParent.call(this);
+this._childOfLayoutWidget=_2&&_2.isLayoutContainer;
+this._needLayout=!this._childOfLayoutWidget;
+if(this.isLoaded){
+dojo.forEach(this.getChildren(),function(_3){
+_3.startup();
+});
+}
+if(this._isShown()||this.preload){
+this._onShow();
+}
+this.inherited(arguments);
+},_checkIfSingleChild:function(){
+var _4=dojo.query("> *",this.containerNode).filter(function(_5){
+return _5.tagName!=="SCRIPT";
+}),_6=_4.filter(function(_7){
+return dojo.hasAttr(_7,"dojoType")||dojo.hasAttr(_7,"widgetId");
+}),_8=dojo.filter(_6.map(dijit.byNode),function(_9){
+return _9&&_9.domNode&&_9.resize;
+});
+if(_4.length==_6.length&&_8.length==1){
+this._singleChild=_8[0];
+}else{
+delete this._singleChild;
+}
+dojo.toggleClass(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild);
+},setHref:function(_a){
+dojo.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");
+return this.set("href",_a);
+},_setHrefAttr:function(_b){
+this.cancel();
+this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel"));
+this.href=_b;
+if(this._created&&(this.preload||this._isShown())){
+this._load();
+}else{
+this._hrefChanged=true;
+}
+return this.onLoadDeferred;
+},setContent:function(_c){
+dojo.deprecated("dijit.layout.ContentPane.setContent() is deprecated.  Use set('content', ...) instead.","","2.0");
+this.set("content",_c);
+},_setContentAttr:function(_d){
+this.href="";
+this.cancel();
+this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel"));
+this._setContent(_d||"");
+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(_e){
+if(this._beingDestroyed){
+return;
+}
+this.inherited(arguments);
+},resize:function(_f,_10){
+if(!this._wasShown){
+this._onShow();
+}
+this._resizeCalled=true;
+if(_f){
+dojo.marginBox(this.domNode,_f);
+}
+var cn=this.containerNode;
+if(cn===this.domNode){
+var mb=_10||{};
+dojo.mixin(mb,_f||{});
+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();
+},_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 _11=this.domNode;
+return (_11.style.display!="none")&&(_11.style.visibility!="hidden")&&!dojo.hasClass(_11,"dijitHidden");
+}
+}
+},_onShow:function(){
+if(this.href){
+if(!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow)){
+this.refresh();
+}
+}else{
+if(!this._childOfLayoutWidget&&this._needLayout){
+this._layoutChildren();
+}
+}
+this.inherited(arguments);
+this._wasShown=true;
+},refresh:function(){
+this.cancel();
+this.onLoadDeferred=new dojo.Deferred(dojo.hitch(this,"cancel"));
+this._load();
+return this.onLoadDeferred;
+},_load:function(){
+this._setContent(this.onDownloadStart(),true);
+var _12=this;
+var _13={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};
+if(dojo.isObject(this.ioArgs)){
+dojo.mixin(_13,this.ioArgs);
+}
+var _14=(this._xhrDfd=(this.ioMethod||dojo.xhrGet)(_13));
+_14.addCallback(function(_15){
+try{
+_12._isDownloaded=true;
+_12._setContent(_15,false);
+_12.onDownloadEnd();
+}
+catch(err){
+_12._onError("Content",err);
+}
+delete _12._xhrDfd;
+return _15;
+});
+_14.addErrback(function(err){
+if(!_14.canceled){
+_12._onError("Download",err);
+}
+delete _12._xhrDfd;
+return err;
+});
+delete this._hrefChanged;
+},_onLoadHandler:function(_16){
+this.isLoaded=true;
+try{
+this.onLoadDeferred.callback(_16);
+this.onLoad(_16);
+}
+catch(e){
+console.error("Error "+this.widgetId+" running custom onLoad code: "+e.message);
+}
+},_onUnloadHandler:function(){
+this.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 _17=this._contentSetter;
+dojo.forEach(this.getChildren(),function(_18){
+if(_18.destroyRecursive){
+_18.destroyRecursive();
+}
+});
+if(_17){
+dojo.forEach(_17.parseResults,function(_19){
+if(_19.destroyRecursive&&_19.domNode&&_19.domNode.parentNode==dojo.body()){
+_19.destroyRecursive();
+}
+});
+delete _17.parseResults;
+}
+dojo.html._emptyNode(this.containerNode);
+delete this._singleChild;
+},_setContent:function(_1a,_1b){
+this.destroyDescendants();
+var _1c=this._contentSetter;
+if(!(_1c&&_1c instanceof dojo.html._ContentSetter)){
+_1c=this._contentSetter=new dojo.html._ContentSetter({node:this.containerNode,_onError:dojo.hitch(this,this._onError),onContentError:dojo.hitch(this,function(e){
+var _1d=this.onContentError(e);
+try{
+this.containerNode.innerHTML=_1d;
+}
+catch(e){
+console.error("Fatal "+this.id+" could not change content due to "+e.message,e);
+}
+})});
+}
+var _1e=dojo.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:this.parseOnLoad,dir:this.dir,lang:this.lang},this._contentSetterParams||{});
+dojo.mixin(_1c,_1e);
+_1c.set((dojo.isObject(_1a)&&_1a.domNode)?_1a.domNode:_1a);
+delete this._contentSetterParams;
+if(!_1b){
+dojo.forEach(this.getChildren(),function(_1f){
+if(!this.parseOnLoad||_1f.getParent){
+_1f.startup();
+}
+},this);
+this._scheduleLayout();
+this._onLoadHandler(_1a);
+}
+},_onError:function(_20,err,_21){
+this.onLoadDeferred.errback(err);
+var _22=this["on"+_20+"Error"].call(this,err);
+if(_21){
+console.error(_21,err);
+}else{
+if(_22){
+this._setContent(_22,true);
+}
+}
+},_scheduleLayout:function(){
+if(this._isShown()){
+this._layoutChildren();
+}else{
+this._needLayout=true;
+}
+},_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(_23){
+if(_23.resize){
+_23.resize();
+}
+});
+}
+delete this._needLayout;
+},onLoad:function(_24){
+},onUnload:function(){
+},onDownloadStart:function(){
+return this.loadingMessage;
+},onContentError:function(_25){
+},onDownloadError:function(_26){
+return this.errorMessage;
+},onDownloadEnd:function(){
+}});
+}
diff --git a/lib/dijit/layout/LayoutContainer.js b/lib/dijit/layout/LayoutContainer.js
new file mode 100644 (file)
index 0000000..9d9fdc6
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.LayoutContainer"]){
+dojo._hasResource["dijit.layout.LayoutContainer"]=true;
+dojo.provide("dijit.layout.LayoutContainer");
+dojo.require("dijit.layout._LayoutWidget");
+dojo.declare("dijit.layout.LayoutContainer",dijit.layout._LayoutWidget,{baseClass:"dijitLayoutContainer",constructor:function(){
+dojo.deprecated("dijit.layout.LayoutContainer is deprecated","use BorderContainer instead",2);
+},layout:function(){
+dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());
+},addChild:function(_1,_2){
+this.inherited(arguments);
+if(this._started){
+dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());
+}
+},removeChild:function(_3){
+this.inherited(arguments);
+if(this._started){
+dijit.layout.layoutChildren(this.domNode,this._contentBox,this.getChildren());
+}
+}});
+dojo.extend(dijit._Widget,{layoutAlign:"none"});
+}
diff --git a/lib/dijit/layout/LinkPane.js b/lib/dijit/layout/LinkPane.js
new file mode 100644 (file)
index 0000000..38e6567
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.LinkPane"]){
+dojo._hasResource["dijit.layout.LinkPane"]=true;
+dojo.provide("dijit.layout.LinkPane");
+dojo.require("dijit.layout.ContentPane");
+dojo.require("dijit._Templated");
+dojo.declare("dijit.layout.LinkPane",[dijit.layout.ContentPane,dijit._Templated],{templateString:"<div class=\"dijitLinkPane\" dojoAttachPoint=\"containerNode\"></div>",postMixInProperties:function(){
+if(this.srcNodeRef){
+this.title+=this.srcNodeRef.innerHTML;
+}
+this.inherited(arguments);
+},_fillContent:function(_1){
+}});
+}
diff --git a/lib/dijit/layout/ScrollingTabController.js b/lib/dijit/layout/ScrollingTabController.js
new file mode 100644 (file)
index 0000000..4ee0bd1
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.ScrollingTabController"]){
+dojo._hasResource["dijit.layout.ScrollingTabController"]=true;
+dojo.provide("dijit.layout.ScrollingTabController");
+dojo.require("dijit.layout.TabController");
+dojo.require("dijit.Menu");
+dojo.declare("dijit.layout.ScrollingTabController",dijit.layout.TabController,{templateString:dojo.cache("dijit.layout","templates/ScrollingTabController.html","<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_menuBtn\" iconClass=\"dijitTabStripMenuIcon\"\n\t\t\tdojoAttachPoint=\"_menuBtn\" showLabel=false>&#9660;</div>\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_leftBtn\" iconClass=\"dijitTabStripSlideLeftIcon\"\n\t\t\tdojoAttachPoint=\"_leftBtn\" dojoAttachEvent=\"onClick: doSlideLeft\" showLabel=false>&#9664;</div>\n\t<div dojoType=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t\tclass=\"tabStripButton-${tabPosition}\"\n\t\t\tid=\"${id}_rightBtn\" iconClass=\"dijitTabStripSlideRightIcon\"\n\t\t\tdojoAttachPoint=\"_rightBtn\" dojoAttachEvent=\"onClick: doSlideRight\" showLabel=false>&#9654;</div>\n\t<div class='dijitTabListWrapper' dojoAttachPoint='tablistWrapper'>\n\t\t<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'\n\t\t\t\tdojoAttachPoint='containerNode' class='nowrapTabStrip'></div>\n\t</div>\n</div>\n"),useMenu:true,useSlider:true,tabStripClass:"",widgetsInTemplate:true,_minScroll:5,attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{"class":"containerNode"}),postCreate:function(){
+this.inherited(arguments);
+var n=this.domNode;
+this.scrollNode=this.tablistWrapper;
+this._initButtons();
+if(!this.tabStripClass){
+this.tabStripClass="dijitTabContainer"+this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"")+"None";
+dojo.addClass(n,"tabStrip-disabled");
+}
+dojo.addClass(this.tablistWrapper,this.tabStripClass);
+},onStartup:function(){
+this.inherited(arguments);
+dojo.style(this.domNode,"visibility","visible");
+this._postStartup=true;
+},onAddChild:function(_1,_2){
+this.inherited(arguments);
+var _3;
+if(this.useMenu){
+var _4=this.containerId;
+_3=new dijit.MenuItem({id:_1.id+"_stcMi",label:_1.title,dir:_1.dir,lang:_1.lang,onClick:dojo.hitch(this,function(){
+var _5=dijit.byId(_4);
+_5.selectChild(_1);
+})});
+this._menuChildren[_1.id]=_3;
+this._menu.addChild(_3,_2);
+}
+this.pane2handles[_1.id].push(this.connect(this.pane2button[_1.id],"set",function(_6,_7){
+if(this._postStartup){
+if(_6=="label"){
+if(_3){
+_3.set(_6,_7);
+}
+if(this._dim){
+this.resize(this._dim);
+}
+}
+}
+}));
+dojo.style(this.containerNode,"width",(dojo.style(this.containerNode,"width")+200)+"px");
+},onRemoveChild:function(_8,_9){
+var _a=this.pane2button[_8.id];
+if(this._selectedTab===_a.domNode){
+this._selectedTab=null;
+}
+if(this.useMenu&&_8&&_8.id&&this._menuChildren[_8.id]){
+this._menu.removeChild(this._menuChildren[_8.id]);
+this._menuChildren[_8.id].destroy();
+delete this._menuChildren[_8.id];
+}
+this.inherited(arguments);
+},_initButtons:function(){
+this._menuChildren={};
+this._btnWidth=0;
+this._buttons=dojo.query("> .tabStripButton",this.domNode).filter(function(_b){
+if((this.useMenu&&_b==this._menuBtn.domNode)||(this.useSlider&&(_b==this._rightBtn.domNode||_b==this._leftBtn.domNode))){
+this._btnWidth+=dojo.marginBox(_b).w;
+return true;
+}else{
+dojo.style(_b,"display","none");
+return false;
+}
+},this);
+if(this.useMenu){
+this._menu=new dijit.Menu({id:this.id+"_menu",dir:this.dir,lang:this.lang,targetNodeIds:[this._menuBtn.domNode],leftClickToOpen:true,refocus:false});
+this._supportingWidgets.push(this._menu);
+}
+},_getTabsWidth:function(){
+var _c=this.getChildren();
+if(_c.length){
+var _d=_c[this.isLeftToRight()?0:_c.length-1].domNode,_e=_c[this.isLeftToRight()?_c.length-1:0].domNode;
+return _e.offsetLeft+dojo.style(_e,"width")-_d.offsetLeft;
+}else{
+return 0;
+}
+},_enableBtn:function(_f){
+var _10=this._getTabsWidth();
+_f=_f||dojo.style(this.scrollNode,"width");
+return _10>0&&_f<_10;
+},resize:function(dim){
+if(this.domNode.offsetWidth==0){
+return;
+}
+this._dim=dim;
+this.scrollNode.style.height="auto";
+this._contentBox=dijit.layout.marginBox2contentBox(this.domNode,{h:0,w:dim.w});
+this._contentBox.h=this.scrollNode.offsetHeight;
+dojo.contentBox(this.domNode,this._contentBox);
+var _11=this._enableBtn(this._contentBox.w);
+this._buttons.style("display",_11?"":"none");
+this._leftBtn.layoutAlign="left";
+this._rightBtn.layoutAlign="right";
+this._menuBtn.layoutAlign=this.isLeftToRight()?"right":"left";
+dijit.layout.layoutChildren(this.domNode,this._contentBox,[this._menuBtn,this._leftBtn,this._rightBtn,{domNode:this.scrollNode,layoutAlign:"client"}]);
+if(this._selectedTab){
+if(this._anim&&this._anim.status()=="playing"){
+this._anim.stop();
+}
+var w=this.scrollNode,sl=this._convertToScrollLeft(this._getScrollForSelectedTab());
+w.scrollLeft=sl;
+}
+this._setButtonClass(this._getScroll());
+this._postResize=true;
+},_getScroll:function(){
+var sl=(this.isLeftToRight()||dojo.isIE<8||(dojo.isIE&&dojo.isQuirks)||dojo.isWebKit)?this.scrollNode.scrollLeft:dojo.style(this.containerNode,"width")-dojo.style(this.scrollNode,"width")+(dojo.isIE==8?-1:1)*this.scrollNode.scrollLeft;
+return sl;
+},_convertToScrollLeft:function(val){
+if(this.isLeftToRight()||dojo.isIE<8||(dojo.isIE&&dojo.isQuirks)||dojo.isWebKit){
+return val;
+}else{
+var _12=dojo.style(this.containerNode,"width")-dojo.style(this.scrollNode,"width");
+return (dojo.isIE==8?-1:1)*(val-_12);
+}
+},onSelectChild:function(_13){
+var tab=this.pane2button[_13.id];
+if(!tab||!_13){
+return;
+}
+var _14=tab.domNode;
+if(this._postResize&&_14!=this._selectedTab){
+this._selectedTab=_14;
+var sl=this._getScroll();
+if(sl>_14.offsetLeft||sl+dojo.style(this.scrollNode,"width")<_14.offsetLeft+dojo.style(_14,"width")){
+this.createSmoothScroll().play();
+}
+}
+this.inherited(arguments);
+},_getScrollBounds:function(){
+var _15=this.getChildren(),_16=dojo.style(this.scrollNode,"width"),_17=dojo.style(this.containerNode,"width"),_18=_17-_16,_19=this._getTabsWidth();
+if(_15.length&&_19>_16){
+return {min:this.isLeftToRight()?0:_15[_15.length-1].domNode.offsetLeft,max:this.isLeftToRight()?(_15[_15.length-1].domNode.offsetLeft+dojo.style(_15[_15.length-1].domNode,"width"))-_16:_18};
+}else{
+var _1a=this.isLeftToRight()?0:_18;
+return {min:_1a,max:_1a};
+}
+},_getScrollForSelectedTab:function(){
+var w=this.scrollNode,n=this._selectedTab,_1b=dojo.style(this.scrollNode,"width"),_1c=this._getScrollBounds();
+var pos=(n.offsetLeft+dojo.style(n,"width")/2)-_1b/2;
+pos=Math.min(Math.max(pos,_1c.min),_1c.max);
+return pos;
+},createSmoothScroll:function(x){
+if(arguments.length>0){
+var _1d=this._getScrollBounds();
+x=Math.min(Math.max(x,_1d.min),_1d.max);
+}else{
+x=this._getScrollForSelectedTab();
+}
+if(this._anim&&this._anim.status()=="playing"){
+this._anim.stop();
+}
+var _1e=this,w=this.scrollNode,_1f=new dojo._Animation({beforeBegin:function(){
+if(this.curve){
+delete this.curve;
+}
+var _20=w.scrollLeft,_21=_1e._convertToScrollLeft(x);
+_1f.curve=new dojo._Line(_20,_21);
+},onAnimate:function(val){
+w.scrollLeft=val;
+}});
+this._anim=_1f;
+this._setButtonClass(x);
+return _1f;
+},_getBtnNode:function(e){
+var n=e.target;
+while(n&&!dojo.hasClass(n,"tabStripButton")){
+n=n.parentNode;
+}
+return n;
+},doSlideRight:function(e){
+this.doSlide(1,this._getBtnNode(e));
+},doSlideLeft:function(e){
+this.doSlide(-1,this._getBtnNode(e));
+},doSlide:function(_22,_23){
+if(_23&&dojo.hasClass(_23,"dijitTabDisabled")){
+return;
+}
+var _24=dojo.style(this.scrollNode,"width");
+var d=(_24*0.75)*_22;
+var to=this._getScroll()+d;
+this._setButtonClass(to);
+this.createSmoothScroll(to).play();
+},_setButtonClass:function(_25){
+var _26=this._getScrollBounds();
+this._leftBtn.set("disabled",_25<=_26.min);
+this._rightBtn.set("disabled",_25>=_26.max);
+}});
+dojo.declare("dijit.layout._ScrollingTabControllerButton",dijit.form.Button,{baseClass:"dijitTab tabStripButton",templateString:dojo.cache("dijit.layout","templates/_ScrollingTabControllerButton.html","<div dojoAttachEvent=\"onclick:_onButtonClick\">\n\t<div waiRole=\"presentation\" class=\"dijitTabInnerDiv\" dojoattachpoint=\"innerDiv,focusNode\">\n\t\t<div waiRole=\"presentation\" class=\"dijitTabContent dijitButtonContents\" dojoattachpoint=\"tabContent\">\n\t\t\t<img waiRole=\"presentation\" alt=\"\" src=\"${_blankGif}\" class=\"dijitTabStripIcon\" dojoAttachPoint=\"iconNode\"/>\n\t\t\t<span dojoAttachPoint=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n\t\t</div>\n\t</div>\n</div>\n"),tabIndex:"-1"});
+}
diff --git a/lib/dijit/layout/SplitContainer.js b/lib/dijit/layout/SplitContainer.js
new file mode 100644 (file)
index 0000000..b0db3e4
--- /dev/null
@@ -0,0 +1,348 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.SplitContainer"]){
+dojo._hasResource["dijit.layout.SplitContainer"]=true;
+dojo.provide("dijit.layout.SplitContainer");
+dojo.require("dojo.cookie");
+dojo.require("dijit.layout._LayoutWidget");
+dojo.declare("dijit.layout.SplitContainer",dijit.layout._LayoutWidget,{constructor:function(){
+dojo.deprecated("dijit.layout.SplitContainer is deprecated","use BorderContainer with splitter instead",2);
+},activeSizing:false,sizerWidth:7,orientation:"horizontal",persist:true,baseClass:"dijitSplitContainer",postMixInProperties:function(){
+this.inherited("postMixInProperties",arguments);
+this.isHorizontal=(this.orientation=="horizontal");
+},postCreate:function(){
+this.inherited(arguments);
+this.sizers=[];
+if(dojo.isMozilla){
+this.domNode.style.overflow="-moz-scrollbars-none";
+}
+if(typeof this.sizerWidth=="object"){
+try{
+this.sizerWidth=parseInt(this.sizerWidth.toString());
+}
+catch(e){
+this.sizerWidth=7;
+}
+}
+var _1=dojo.doc.createElement("div");
+this.virtualSizer=_1;
+_1.style.position="relative";
+_1.style.zIndex=10;
+_1.className=this.isHorizontal?"dijitSplitContainerVirtualSizerH":"dijitSplitContainerVirtualSizerV";
+this.domNode.appendChild(_1);
+dojo.setSelectable(_1,false);
+},destroy:function(){
+delete this.virtualSizer;
+dojo.forEach(this._ownconnects,dojo.disconnect);
+this.inherited(arguments);
+},startup:function(){
+if(this._started){
+return;
+}
+dojo.forEach(this.getChildren(),function(_2,i,_3){
+this._setupChild(_2);
+if(i<_3.length-1){
+this._addSizer();
+}
+},this);
+if(this.persist){
+this._restoreState();
+}
+this.inherited(arguments);
+},_setupChild:function(_4){
+this.inherited(arguments);
+_4.domNode.style.position="absolute";
+dojo.addClass(_4.domNode,"dijitSplitPane");
+},_onSizerMouseDown:function(e){
+if(e.target.id){
+for(var i=0;i<this.sizers.length;i++){
+if(this.sizers[i].id==e.target.id){
+break;
+}
+}
+if(i<this.sizers.length){
+this.beginSizing(e,i);
+}
+}
+},_addSizer:function(_5){
+_5=_5===undefined?this.sizers.length:_5;
+var _6=dojo.doc.createElement("div");
+_6.id=dijit.getUniqueId("dijit_layout_SplitterContainer_Splitter");
+this.sizers.splice(_5,0,_6);
+this.domNode.appendChild(_6);
+_6.className=this.isHorizontal?"dijitSplitContainerSizerH":"dijitSplitContainerSizerV";
+var _7=dojo.doc.createElement("div");
+_7.className="thumb";
+_6.appendChild(_7);
+this.connect(_6,"onmousedown","_onSizerMouseDown");
+dojo.setSelectable(_6,false);
+},removeChild:function(_8){
+if(this.sizers.length){
+var i=dojo.indexOf(this.getChildren(),_8);
+if(i!=-1){
+if(i==this.sizers.length){
+i--;
+}
+dojo.destroy(this.sizers[i]);
+this.sizers.splice(i,1);
+}
+}
+this.inherited(arguments);
+if(this._started){
+this.layout();
+}
+},addChild:function(_9,_a){
+this.inherited(arguments);
+if(this._started){
+var _b=this.getChildren();
+if(_b.length>1){
+this._addSizer(_a);
+}
+this.layout();
+}
+},layout:function(){
+this.paneWidth=this._contentBox.w;
+this.paneHeight=this._contentBox.h;
+var _c=this.getChildren();
+if(!_c.length){
+return;
+}
+var _d=this.isHorizontal?this.paneWidth:this.paneHeight;
+if(_c.length>1){
+_d-=this.sizerWidth*(_c.length-1);
+}
+var _e=0;
+dojo.forEach(_c,function(_f){
+_e+=_f.sizeShare;
+});
+var _10=_d/_e;
+var _11=0;
+dojo.forEach(_c.slice(0,_c.length-1),function(_12){
+var _13=Math.round(_10*_12.sizeShare);
+_12.sizeActual=_13;
+_11+=_13;
+});
+_c[_c.length-1].sizeActual=_d-_11;
+this._checkSizes();
+var pos=0;
+var _14=_c[0].sizeActual;
+this._movePanel(_c[0],pos,_14);
+_c[0].position=pos;
+pos+=_14;
+if(!this.sizers){
+return;
+}
+dojo.some(_c.slice(1),function(_15,i){
+if(!this.sizers[i]){
+return true;
+}
+this._moveSlider(this.sizers[i],pos,this.sizerWidth);
+this.sizers[i].position=pos;
+pos+=this.sizerWidth;
+_14=_15.sizeActual;
+this._movePanel(_15,pos,_14);
+_15.position=pos;
+pos+=_14;
+},this);
+},_movePanel:function(_16,pos,_17){
+if(this.isHorizontal){
+_16.domNode.style.left=pos+"px";
+_16.domNode.style.top=0;
+var box={w:_17,h:this.paneHeight};
+if(_16.resize){
+_16.resize(box);
+}else{
+dojo.marginBox(_16.domNode,box);
+}
+}else{
+_16.domNode.style.left=0;
+_16.domNode.style.top=pos+"px";
+var box={w:this.paneWidth,h:_17};
+if(_16.resize){
+_16.resize(box);
+}else{
+dojo.marginBox(_16.domNode,box);
+}
+}
+},_moveSlider:function(_18,pos,_19){
+if(this.isHorizontal){
+_18.style.left=pos+"px";
+_18.style.top=0;
+dojo.marginBox(_18,{w:_19,h:this.paneHeight});
+}else{
+_18.style.left=0;
+_18.style.top=pos+"px";
+dojo.marginBox(_18,{w:this.paneWidth,h:_19});
+}
+},_growPane:function(_1a,_1b){
+if(_1a>0){
+if(_1b.sizeActual>_1b.sizeMin){
+if((_1b.sizeActual-_1b.sizeMin)>_1a){
+_1b.sizeActual=_1b.sizeActual-_1a;
+_1a=0;
+}else{
+_1a-=_1b.sizeActual-_1b.sizeMin;
+_1b.sizeActual=_1b.sizeMin;
+}
+}
+}
+return _1a;
+},_checkSizes:function(){
+var _1c=0;
+var _1d=0;
+var _1e=this.getChildren();
+dojo.forEach(_1e,function(_1f){
+_1d+=_1f.sizeActual;
+_1c+=_1f.sizeMin;
+});
+if(_1c<=_1d){
+var _20=0;
+dojo.forEach(_1e,function(_21){
+if(_21.sizeActual<_21.sizeMin){
+_20+=_21.sizeMin-_21.sizeActual;
+_21.sizeActual=_21.sizeMin;
+}
+});
+if(_20>0){
+var _22=this.isDraggingLeft?_1e.reverse():_1e;
+dojo.forEach(_22,function(_23){
+_20=this._growPane(_20,_23);
+},this);
+}
+}else{
+dojo.forEach(_1e,function(_24){
+_24.sizeActual=Math.round(_1d*(_24.sizeMin/_1c));
+});
+}
+},beginSizing:function(e,i){
+var _25=this.getChildren();
+this.paneBefore=_25[i];
+this.paneAfter=_25[i+1];
+this.isSizing=true;
+this.sizingSplitter=this.sizers[i];
+if(!this.cover){
+this.cover=dojo.create("div",{style:{position:"absolute",zIndex:5,top:0,left:0,width:"100%",height:"100%"}},this.domNode);
+}else{
+this.cover.style.zIndex=5;
+}
+this.sizingSplitter.style.zIndex=6;
+this.originPos=dojo.position(_25[0].domNode,true);
+if(this.isHorizontal){
+var _26=e.layerX||e.offsetX||0;
+var _27=e.pageX;
+this.originPos=this.originPos.x;
+}else{
+var _26=e.layerY||e.offsetY||0;
+var _27=e.pageY;
+this.originPos=this.originPos.y;
+}
+this.startPoint=this.lastPoint=_27;
+this.screenToClientOffset=_27-_26;
+this.dragOffset=this.lastPoint-this.paneBefore.sizeActual-this.originPos-this.paneBefore.position;
+if(!this.activeSizing){
+this._showSizingLine();
+}
+this._ownconnects=[];
+this._ownconnects.push(dojo.connect(dojo.doc.documentElement,"onmousemove",this,"changeSizing"));
+this._ownconnects.push(dojo.connect(dojo.doc.documentElement,"onmouseup",this,"endSizing"));
+dojo.stopEvent(e);
+},changeSizing:function(e){
+if(!this.isSizing){
+return;
+}
+this.lastPoint=this.isHorizontal?e.pageX:e.pageY;
+this.movePoint();
+if(this.activeSizing){
+this._updateSize();
+}else{
+this._moveSizingLine();
+}
+dojo.stopEvent(e);
+},endSizing:function(e){
+if(!this.isSizing){
+return;
+}
+if(this.cover){
+this.cover.style.zIndex=-1;
+}
+if(!this.activeSizing){
+this._hideSizingLine();
+}
+this._updateSize();
+this.isSizing=false;
+if(this.persist){
+this._saveState(this);
+}
+dojo.forEach(this._ownconnects,dojo.disconnect);
+},movePoint:function(){
+var p=this.lastPoint-this.screenToClientOffset;
+var a=p-this.dragOffset;
+a=this.legaliseSplitPoint(a);
+p=a+this.dragOffset;
+this.lastPoint=p+this.screenToClientOffset;
+},legaliseSplitPoint:function(a){
+a+=this.sizingSplitter.position;
+this.isDraggingLeft=!!(a>0);
+if(!this.activeSizing){
+var min=this.paneBefore.position+this.paneBefore.sizeMin;
+if(a<min){
+a=min;
+}
+var max=this.paneAfter.position+(this.paneAfter.sizeActual-(this.sizerWidth+this.paneAfter.sizeMin));
+if(a>max){
+a=max;
+}
+}
+a-=this.sizingSplitter.position;
+this._checkSizes();
+return a;
+},_updateSize:function(){
+var pos=this.lastPoint-this.dragOffset-this.originPos;
+var _28=this.paneBefore.position;
+var _29=this.paneAfter.position+this.paneAfter.sizeActual;
+this.paneBefore.sizeActual=pos-_28;
+this.paneAfter.position=pos+this.sizerWidth;
+this.paneAfter.sizeActual=_29-this.paneAfter.position;
+dojo.forEach(this.getChildren(),function(_2a){
+_2a.sizeShare=_2a.sizeActual;
+});
+if(this._started){
+this.layout();
+}
+},_showSizingLine:function(){
+this._moveSizingLine();
+dojo.marginBox(this.virtualSizer,this.isHorizontal?{w:this.sizerWidth,h:this.paneHeight}:{w:this.paneWidth,h:this.sizerWidth});
+this.virtualSizer.style.display="block";
+},_hideSizingLine:function(){
+this.virtualSizer.style.display="none";
+},_moveSizingLine:function(){
+var pos=(this.lastPoint-this.startPoint)+this.sizingSplitter.position;
+dojo.style(this.virtualSizer,(this.isHorizontal?"left":"top"),pos+"px");
+},_getCookieName:function(i){
+return this.id+"_"+i;
+},_restoreState:function(){
+dojo.forEach(this.getChildren(),function(_2b,i){
+var _2c=this._getCookieName(i);
+var _2d=dojo.cookie(_2c);
+if(_2d){
+var pos=parseInt(_2d);
+if(typeof pos=="number"){
+_2b.sizeShare=pos;
+}
+}
+},this);
+},_saveState:function(){
+if(!this.persist){
+return;
+}
+dojo.forEach(this.getChildren(),function(_2e,i){
+dojo.cookie(this._getCookieName(i),_2e.sizeShare,{expires:365});
+},this);
+}});
+dojo.extend(dijit._Widget,{sizeMin:10,sizeShare:10});
+}
diff --git a/lib/dijit/layout/StackContainer.js b/lib/dijit/layout/StackContainer.js
new file mode 100644 (file)
index 0000000..78a4902
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.StackContainer"]){
+dojo._hasResource["dijit.layout.StackContainer"]=true;
+dojo.provide("dijit.layout.StackContainer");
+dojo.require("dijit._Templated");
+dojo.require("dijit.layout._LayoutWidget");
+dojo.requireLocalization("dijit","common",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.require("dojo.cookie");
+dojo.declare("dijit.layout.StackContainer",dijit.layout._LayoutWidget,{doLayout:true,persist:false,baseClass:"dijitStackContainer",postCreate:function(){
+this.inherited(arguments);
+dojo.addClass(this.domNode,"dijitLayoutContainer");
+dijit.setWaiRole(this.containerNode,"tabpanel");
+this.connect(this.domNode,"onkeypress",this._onKeyPress);
+},startup:function(){
+if(this._started){
+return;
+}
+var _1=this.getChildren();
+dojo.forEach(_1,this._setupChild,this);
+if(this.persist){
+this.selectedChildWidget=dijit.byId(dojo.cookie(this.id+"_selectedChild"));
+}else{
+dojo.some(_1,function(_2){
+if(_2.selected){
+this.selectedChildWidget=_2;
+}
+return _2.selected;
+},this);
+}
+var _3=this.selectedChildWidget;
+if(!_3&&_1[0]){
+_3=this.selectedChildWidget=_1[0];
+_3.selected=true;
+}
+dojo.publish(this.id+"-startup",[{children:_1,selected:_3}]);
+this.inherited(arguments);
+},resize:function(){
+var _4=this.selectedChildWidget;
+if(_4&&!this._hasBeenShown){
+this._hasBeenShown=true;
+this._showChild(_4);
+}
+this.inherited(arguments);
+},_setupChild:function(_5){
+this.inherited(arguments);
+dojo.removeClass(_5.domNode,"dijitVisible");
+dojo.addClass(_5.domNode,"dijitHidden");
+_5.domNode.title="";
+},addChild:function(_6,_7){
+this.inherited(arguments);
+if(this._started){
+dojo.publish(this.id+"-addChild",[_6,_7]);
+this.layout();
+if(!this.selectedChildWidget){
+this.selectChild(_6);
+}
+}
+},removeChild:function(_8){
+this.inherited(arguments);
+if(this._started){
+dojo.publish(this.id+"-removeChild",[_8]);
+}
+if(this._beingDestroyed){
+return;
+}
+if(this.selectedChildWidget===_8){
+this.selectedChildWidget=undefined;
+if(this._started){
+var _9=this.getChildren();
+if(_9.length){
+this.selectChild(_9[0]);
+}
+}
+}
+if(this._started){
+this.layout();
+}
+},selectChild:function(_a,_b){
+_a=dijit.byId(_a);
+if(this.selectedChildWidget!=_a){
+this._transition(_a,this.selectedChildWidget,_b);
+this.selectedChildWidget=_a;
+dojo.publish(this.id+"-selectChild",[_a]);
+if(this.persist){
+dojo.cookie(this.id+"_selectedChild",this.selectedChildWidget.id);
+}
+}
+},_transition:function(_c,_d){
+if(_d){
+this._hideChild(_d);
+}
+this._showChild(_c);
+if(_c.resize){
+if(this.doLayout){
+_c.resize(this._containerContentBox||this._contentBox);
+}else{
+_c.resize();
+}
+}
+},_adjacent:function(_e){
+var _f=this.getChildren();
+var _10=dojo.indexOf(_f,this.selectedChildWidget);
+_10+=_e?1:_f.length-1;
+return _f[_10%_f.length];
+},forward:function(){
+this.selectChild(this._adjacent(true),true);
+},back:function(){
+this.selectChild(this._adjacent(false),true);
+},_onKeyPress:function(e){
+dojo.publish(this.id+"-containerKeyPress",[{e:e,page:this}]);
+},layout:function(){
+if(this.doLayout&&this.selectedChildWidget&&this.selectedChildWidget.resize){
+this.selectedChildWidget.resize(this._containerContentBox||this._contentBox);
+}
+},_showChild:function(_11){
+var _12=this.getChildren();
+_11.isFirstChild=(_11==_12[0]);
+_11.isLastChild=(_11==_12[_12.length-1]);
+_11.selected=true;
+dojo.removeClass(_11.domNode,"dijitHidden");
+dojo.addClass(_11.domNode,"dijitVisible");
+_11._onShow();
+},_hideChild:function(_13){
+_13.selected=false;
+dojo.removeClass(_13.domNode,"dijitVisible");
+dojo.addClass(_13.domNode,"dijitHidden");
+_13.onHide();
+},closeChild:function(_14){
+var _15=_14.onClose(this,_14);
+if(_15){
+this.removeChild(_14);
+_14.destroyRecursive();
+}
+},destroyDescendants:function(_16){
+dojo.forEach(this.getChildren(),function(_17){
+this.removeChild(_17);
+_17.destroyRecursive(_16);
+},this);
+}});
+dojo.require("dijit.layout.StackController");
+dojo.extend(dijit._Widget,{selected:false,closable:false,iconClass:"",showTitle:true});
+}
diff --git a/lib/dijit/layout/StackController.js b/lib/dijit/layout/StackController.js
new file mode 100644 (file)
index 0000000..033dadf
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.StackController"]){
+dojo._hasResource["dijit.layout.StackController"]=true;
+dojo.provide("dijit.layout.StackController");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._Container");
+dojo.require("dijit.form.ToggleButton");
+dojo.requireLocalization("dijit","common",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit.layout.StackController",[dijit._Widget,dijit._Templated,dijit._Container],{templateString:"<span wairole='tablist' dojoAttachEvent='onkeypress' class='dijitStackController'></span>",containerId:"",buttonWidget:"dijit.layout._StackButton",postCreate:function(){
+dijit.setWaiRole(this.domNode,"tablist");
+this.pane2button={};
+this.pane2handles={};
+this.subscribe(this.containerId+"-startup","onStartup");
+this.subscribe(this.containerId+"-addChild","onAddChild");
+this.subscribe(this.containerId+"-removeChild","onRemoveChild");
+this.subscribe(this.containerId+"-selectChild","onSelectChild");
+this.subscribe(this.containerId+"-containerKeyPress","onContainerKeyPress");
+},onStartup:function(_1){
+dojo.forEach(_1.children,this.onAddChild,this);
+if(_1.selected){
+this.onSelectChild(_1.selected);
+}
+},destroy:function(){
+for(var _2 in this.pane2button){
+this.onRemoveChild(dijit.byId(_2));
+}
+this.inherited(arguments);
+},onAddChild:function(_3,_4){
+var _5=dojo.getObject(this.buttonWidget);
+var _6=new _5({id:this.id+"_"+_3.id,label:_3.title,dir:_3.dir,lang:_3.lang,showLabel:_3.showTitle,iconClass:_3.iconClass,closeButton:_3.closable,title:_3.tooltip});
+dijit.setWaiState(_6.focusNode,"selected","false");
+this.pane2handles[_3.id]=[this.connect(_3,"set",function(_7,_8){
+var _9={title:"label",showTitle:"showLabel",iconClass:"iconClass",closable:"closeButton",tooltip:"title"}[_7];
+if(_9){
+_6.set(_9,_8);
+}
+}),this.connect(_6,"onClick",dojo.hitch(this,"onButtonClick",_3)),this.connect(_6,"onClickCloseButton",dojo.hitch(this,"onCloseButtonClick",_3))];
+this.addChild(_6,_4);
+this.pane2button[_3.id]=_6;
+_3.controlButton=_6;
+if(!this._currentChild){
+_6.focusNode.setAttribute("tabIndex","0");
+dijit.setWaiState(_6.focusNode,"selected","true");
+this._currentChild=_3;
+}
+if(!this.isLeftToRight()&&dojo.isIE&&this._rectifyRtlTabList){
+this._rectifyRtlTabList();
+}
+},onRemoveChild:function(_a){
+if(this._currentChild===_a){
+this._currentChild=null;
+}
+dojo.forEach(this.pane2handles[_a.id],this.disconnect,this);
+delete this.pane2handles[_a.id];
+var _b=this.pane2button[_a.id];
+if(_b){
+this.removeChild(_b);
+delete this.pane2button[_a.id];
+_b.destroy();
+}
+delete _a.controlButton;
+},onSelectChild:function(_c){
+if(!_c){
+return;
+}
+if(this._currentChild){
+var _d=this.pane2button[this._currentChild.id];
+_d.set("checked",false);
+dijit.setWaiState(_d.focusNode,"selected","false");
+_d.focusNode.setAttribute("tabIndex","-1");
+}
+var _e=this.pane2button[_c.id];
+_e.set("checked",true);
+dijit.setWaiState(_e.focusNode,"selected","true");
+this._currentChild=_c;
+_e.focusNode.setAttribute("tabIndex","0");
+var _f=dijit.byId(this.containerId);
+dijit.setWaiState(_f.containerNode,"labelledby",_e.id);
+},onButtonClick:function(_10){
+var _11=dijit.byId(this.containerId);
+_11.selectChild(_10);
+},onCloseButtonClick:function(_12){
+var _13=dijit.byId(this.containerId);
+_13.closeChild(_12);
+if(this._currentChild){
+var b=this.pane2button[this._currentChild.id];
+if(b){
+dijit.focus(b.focusNode||b.domNode);
+}
+}
+},adjacent:function(_14){
+if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition))){
+_14=!_14;
+}
+var _15=this.getChildren();
+var _16=dojo.indexOf(_15,this.pane2button[this._currentChild.id]);
+var _17=_14?1:_15.length-1;
+return _15[(_16+_17)%_15.length];
+},onkeypress:function(e){
+if(this.disabled||e.altKey){
+return;
+}
+var _18=null;
+if(e.ctrlKey||!e._djpage){
+var k=dojo.keys;
+switch(e.charOrCode){
+case k.LEFT_ARROW:
+case k.UP_ARROW:
+if(!e._djpage){
+_18=false;
+}
+break;
+case k.PAGE_UP:
+if(e.ctrlKey){
+_18=false;
+}
+break;
+case k.RIGHT_ARROW:
+case k.DOWN_ARROW:
+if(!e._djpage){
+_18=true;
+}
+break;
+case k.PAGE_DOWN:
+if(e.ctrlKey){
+_18=true;
+}
+break;
+case k.DELETE:
+if(this._currentChild.closable){
+this.onCloseButtonClick(this._currentChild);
+}
+dojo.stopEvent(e);
+break;
+default:
+if(e.ctrlKey){
+if(e.charOrCode===k.TAB){
+this.adjacent(!e.shiftKey).onClick();
+dojo.stopEvent(e);
+}else{
+if(e.charOrCode=="w"){
+if(this._currentChild.closable){
+this.onCloseButtonClick(this._currentChild);
+}
+dojo.stopEvent(e);
+}
+}
+}
+}
+if(_18!==null){
+this.adjacent(_18).onClick();
+dojo.stopEvent(e);
+}
+}
+},onContainerKeyPress:function(_19){
+_19.e._djpage=_19.page;
+this.onkeypress(_19.e);
+}});
+dojo.declare("dijit.layout._StackButton",dijit.form.ToggleButton,{tabIndex:"-1",postCreate:function(evt){
+dijit.setWaiRole((this.focusNode||this.domNode),"tab");
+this.inherited(arguments);
+},onClick:function(evt){
+dijit.focus(this.focusNode);
+},onClickCloseButton:function(evt){
+evt.stopPropagation();
+}});
+}
diff --git a/lib/dijit/layout/TabContainer.js b/lib/dijit/layout/TabContainer.js
new file mode 100644 (file)
index 0000000..d765cf7
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.TabContainer"]){
+dojo._hasResource["dijit.layout.TabContainer"]=true;
+dojo.provide("dijit.layout.TabContainer");
+dojo.require("dijit.layout._TabContainerBase");
+dojo.require("dijit.layout.TabController");
+dojo.require("dijit.layout.ScrollingTabController");
+dojo.declare("dijit.layout.TabContainer",dijit.layout._TabContainerBase,{useMenu:true,useSlider:true,controllerWidget:"",_makeController:function(_1){
+var _2=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout"),_3=dojo.getObject(this.controllerWidget);
+return new _3({id:this.id+"_tablist",dir:this.dir,lang:this.lang,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":_2,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},_1);
+},postMixInProperties:function(){
+this.inherited(arguments);
+if(!this.controllerWidget){
+this.controllerWidget=(this.tabPosition=="top"||this.tabPosition=="bottom")&&!this.nested?"dijit.layout.ScrollingTabController":"dijit.layout.TabController";
+}
+}});
+}
diff --git a/lib/dijit/layout/TabController.js b/lib/dijit/layout/TabController.js
new file mode 100644 (file)
index 0000000..edb3930
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout.TabController"]){
+dojo._hasResource["dijit.layout.TabController"]=true;
+dojo.provide("dijit.layout.TabController");
+dojo.require("dijit.layout.StackController");
+dojo.require("dijit.Menu");
+dojo.require("dijit.MenuItem");
+dojo.requireLocalization("dijit","common",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.declare("dijit.layout.TabController",dijit.layout.StackController,{templateString:"<div wairole='tablist' dojoAttachEvent='onkeypress:onkeypress'></div>",tabPosition:"top",buttonWidget:"dijit.layout._TabButton",_rectifyRtlTabList:function(){
+if(0>=this.tabPosition.indexOf("-h")){
+return;
+}
+if(!this.pane2button){
+return;
+}
+var _1=0;
+for(var _2 in this.pane2button){
+var ow=this.pane2button[_2].innerDiv.scrollWidth;
+_1=Math.max(_1,ow);
+}
+for(_2 in this.pane2button){
+this.pane2button[_2].innerDiv.style.width=_1+"px";
+}
+}});
+dojo.declare("dijit.layout._TabButton",dijit.layout._StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:dojo.cache("dijit.layout","templates/_TabButton.html","<div waiRole=\"presentation\" dojoAttachPoint=\"titleNode\" dojoAttachEvent='onclick:onClick'>\n    <div waiRole=\"presentation\" class='dijitTabInnerDiv' dojoAttachPoint='innerDiv'>\n        <div waiRole=\"presentation\" class='dijitTabContent' dojoAttachPoint='tabContent'>\n        \t<div waiRole=\"presentation\" dojoAttachPoint='focusNode'>\n\t\t        <img src=\"${_blankGif}\" alt=\"\" class=\"dijitIcon\" dojoAttachPoint='iconNode' />\n\t\t        <span dojoAttachPoint='containerNode' class='tabLabel'></span>\n\t\t        <span class=\"dijitInline dijitTabCloseButton dijitTabCloseIcon\" dojoAttachPoint='closeNode'\n\t\t        \t\tdojoAttachEvent='onclick: onClickCloseButton' waiRole=\"presentation\">\n\t\t            <span dojoAttachPoint='closeText' class='dijitTabCloseText'>x</span\n\t\t        ></span>\n\t\t\t</div>\n        </div>\n    </div>\n</div>\n"),scrollOnFocus:false,postMixInProperties:function(){
+if(!this.iconClass){
+this.iconClass="dijitTabButtonIcon";
+}
+},postCreate:function(){
+this.inherited(arguments);
+dojo.setSelectable(this.containerNode,false);
+if(this.iconNode.className=="dijitTabButtonIcon"){
+dojo.style(this.iconNode,"width","1px");
+}
+},startup:function(){
+this.inherited(arguments);
+var n=this.domNode;
+setTimeout(function(){
+n.className=n.className;
+},1);
+},_setCloseButtonAttr:function(_3){
+this.closeButton=_3;
+dojo.toggleClass(this.innerDiv,"dijitClosable",_3);
+this.closeNode.style.display=_3?"":"none";
+if(_3){
+var _4=dojo.i18n.getLocalization("dijit","common");
+if(this.closeNode){
+dojo.attr(this.closeNode,"title",_4.itemClose);
+}
+var _4=dojo.i18n.getLocalization("dijit","common");
+this._closeMenu=new dijit.Menu({id:this.id+"_Menu",dir:this.dir,lang:this.lang,targetNodeIds:[this.domNode]});
+this._closeMenu.addChild(new dijit.MenuItem({label:_4.itemClose,dir:this.dir,lang:this.lang,onClick:dojo.hitch(this,"onClickCloseButton")}));
+}else{
+if(this._closeMenu){
+this._closeMenu.destroyRecursive();
+delete this._closeMenu;
+}
+}
+},_setLabelAttr:function(_5){
+this.inherited(arguments);
+if(this.showLabel==false&&!this.params.title){
+this.iconNode.alt=dojo.trim(this.containerNode.innerText||this.containerNode.textContent||"");
+}
+},destroy:function(){
+if(this._closeMenu){
+this._closeMenu.destroyRecursive();
+delete this._closeMenu;
+}
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/layout/_LayoutWidget.js b/lib/dijit/layout/_LayoutWidget.js
new file mode 100644 (file)
index 0000000..ec7be37
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout._LayoutWidget"]){
+dojo._hasResource["dijit.layout._LayoutWidget"]=true;
+dojo.provide("dijit.layout._LayoutWidget");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Container");
+dojo.require("dijit._Contained");
+dojo.declare("dijit.layout._LayoutWidget",[dijit._Widget,dijit._Container,dijit._Contained],{baseClass:"dijitLayoutContainer",isLayoutContainer:true,postCreate:function(){
+dojo.addClass(this.domNode,"dijitContainer");
+this.inherited(arguments);
+},startup:function(){
+if(this._started){
+return;
+}
+this.inherited(arguments);
+var _1=this.getParent&&this.getParent();
+if(!(_1&&_1.isLayoutContainer)){
+this.resize();
+this.connect(dojo.isIE?this.domNode:dojo.global,"onresize",function(){
+this.resize();
+});
+}
+},resize:function(_2,_3){
+var _4=this.domNode;
+if(_2){
+dojo.marginBox(_4,_2);
+if(_2.t){
+_4.style.top=_2.t+"px";
+}
+if(_2.l){
+_4.style.left=_2.l+"px";
+}
+}
+var mb=_3||{};
+dojo.mixin(mb,_2||{});
+if(!("h" in mb)||!("w" in mb)){
+mb=dojo.mixin(dojo.marginBox(_4),mb);
+}
+var cs=dojo.getComputedStyle(_4);
+var me=dojo._getMarginExtents(_4,cs);
+var be=dojo._getBorderExtents(_4,cs);
+var bb=(this._borderBox={w:mb.w-(me.w+be.w),h:mb.h-(me.h+be.h)});
+var pe=dojo._getPadExtents(_4,cs);
+this._contentBox={l:dojo._toPixelValue(_4,cs.paddingLeft),t:dojo._toPixelValue(_4,cs.paddingTop),w:bb.w-pe.w,h:bb.h-pe.h};
+this.layout();
+},layout:function(){
+},_setupChild:function(_5){
+dojo.addClass(_5.domNode,this.baseClass+"-child");
+if(_5.baseClass){
+dojo.addClass(_5.domNode,this.baseClass+"-"+_5.baseClass);
+}
+},addChild:function(_6,_7){
+this.inherited(arguments);
+if(this._started){
+this._setupChild(_6);
+}
+},removeChild:function(_8){
+dojo.removeClass(_8.domNode,this.baseClass+"-child");
+if(_8.baseClass){
+dojo.removeClass(_8.domNode,this.baseClass+"-"+_8.baseClass);
+}
+this.inherited(arguments);
+}});
+dijit.layout.marginBox2contentBox=function(_9,mb){
+var cs=dojo.getComputedStyle(_9);
+var me=dojo._getMarginExtents(_9,cs);
+var pb=dojo._getPadBorderExtents(_9,cs);
+return {l:dojo._toPixelValue(_9,cs.paddingLeft),t:dojo._toPixelValue(_9,cs.paddingTop),w:mb.w-(me.w+pb.w),h:mb.h-(me.h+pb.h)};
+};
+(function(){
+var _a=function(_b){
+return _b.substring(0,1).toUpperCase()+_b.substring(1);
+};
+var _c=function(_d,_e){
+_d.resize?_d.resize(_e):dojo.marginBox(_d.domNode,_e);
+dojo.mixin(_d,dojo.marginBox(_d.domNode));
+dojo.mixin(_d,_e);
+};
+dijit.layout.layoutChildren=function(_f,dim,_10){
+dim=dojo.mixin({},dim);
+dojo.addClass(_f,"dijitLayoutContainer");
+_10=dojo.filter(_10,function(_11){
+return _11.layoutAlign!="client";
+}).concat(dojo.filter(_10,function(_12){
+return _12.layoutAlign=="client";
+}));
+dojo.forEach(_10,function(_13){
+var elm=_13.domNode,pos=_13.layoutAlign;
+var _14=elm.style;
+_14.left=dim.l+"px";
+_14.top=dim.t+"px";
+_14.bottom=_14.right="auto";
+dojo.addClass(elm,"dijitAlign"+_a(pos));
+if(pos=="top"||pos=="bottom"){
+_c(_13,{w:dim.w});
+dim.h-=_13.h;
+if(pos=="top"){
+dim.t+=_13.h;
+}else{
+_14.top=dim.t+dim.h+"px";
+}
+}else{
+if(pos=="left"||pos=="right"){
+_c(_13,{h:dim.h});
+dim.w-=_13.w;
+if(pos=="left"){
+dim.l+=_13.w;
+}else{
+_14.left=dim.l+dim.w+"px";
+}
+}else{
+if(pos=="client"){
+_c(_13,dim);
+}
+}
+}
+});
+};
+})();
+}
diff --git a/lib/dijit/layout/_TabContainerBase.js b/lib/dijit/layout/_TabContainerBase.js
new file mode 100644 (file)
index 0000000..0ba42ec
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.layout._TabContainerBase"]){
+dojo._hasResource["dijit.layout._TabContainerBase"]=true;
+dojo.provide("dijit.layout._TabContainerBase");
+dojo.require("dijit.layout.StackContainer");
+dojo.require("dijit._Templated");
+dojo.declare("dijit.layout._TabContainerBase",[dijit.layout.StackContainer,dijit._Templated],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:false,nested:false,templateString:dojo.cache("dijit.layout","templates/TabContainer.html","<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" dojoAttachPoint=\"tablistNode\"></div>\n\t<div dojoAttachPoint=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" dojoAttachPoint=\"containerNode\"></div>\n</div>\n"),postMixInProperties:function(){
+this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");
+this.srcNodeRef&&dojo.style(this.srcNodeRef,"visibility","hidden");
+this.inherited(arguments);
+},postCreate:function(){
+this.inherited(arguments);
+this.tablist=this._makeController(this.tablistNode);
+if(!this.doLayout){
+dojo.addClass(this.domNode,"dijitTabContainerNoLayout");
+}
+if(this.nested){
+dojo.addClass(this.domNode,"dijitTabContainerNested");
+dojo.addClass(this.tablist.containerNode,"dijitTabContainerTabListNested");
+dojo.addClass(this.tablistSpacer,"dijitTabContainerSpacerNested");
+dojo.addClass(this.containerNode,"dijitTabPaneWrapperNested");
+}else{
+dojo.addClass(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"));
+}
+},_setupChild:function(_1){
+dojo.addClass(_1.domNode,"dijitTabPane");
+this.inherited(arguments);
+},startup:function(){
+if(this._started){
+return;
+}
+this.tablist.startup();
+this.inherited(arguments);
+},layout:function(){
+if(!this._contentBox||typeof (this._contentBox.l)=="undefined"){
+return;
+}
+var sc=this.selectedChildWidget;
+if(this.doLayout){
+var _2=this.tabPosition.replace(/-h/,"");
+this.tablist.layoutAlign=_2;
+var _3=[this.tablist,{domNode:this.tablistSpacer,layoutAlign:_2},{domNode:this.containerNode,layoutAlign:"client"}];
+dijit.layout.layoutChildren(this.domNode,this._contentBox,_3);
+this._containerContentBox=dijit.layout.marginBox2contentBox(this.containerNode,_3[2]);
+if(sc&&sc.resize){
+sc.resize(this._containerContentBox);
+}
+}else{
+if(this.tablist.resize){
+this.tablist.resize({w:dojo.contentBox(this.domNode).w});
+}
+if(sc&&sc.resize){
+sc.resize();
+}
+}
+},destroy:function(){
+if(this.tablist){
+this.tablist.destroy();
+}
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/nls/ar/common.js b/lib/dijit/nls/ar/common.js
new file mode 100644 (file)
index 0000000..99af508
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"حسنا","buttonCancel":"الغاء","buttonSave":"حفظ","itemClose":"اغلاق"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ar/loading.js b/lib/dijit/nls/ar/loading.js
new file mode 100644 (file)
index 0000000..f8bb535
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"جاري التحميل...","errorState":"عفوا، حدث خطأ"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ca/common.js b/lib/dijit/nls/ca/common.js
new file mode 100644 (file)
index 0000000..b9cd065
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"D'acord","buttonCancel":"Cancel·la","buttonSave":"Desa","itemClose":"Tanca"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ca/loading.js b/lib/dijit/nls/ca/loading.js
new file mode 100644 (file)
index 0000000..cd368cc
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"S'està carregant...","errorState":"Ens sap greu. S'ha produït un error."})
\ No newline at end of file
diff --git a/lib/dijit/nls/common.js b/lib/dijit/nls/common.js
new file mode 100644 (file)
index 0000000..6573dcd
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close"})
\ No newline at end of file
diff --git a/lib/dijit/nls/cs/common.js b/lib/dijit/nls/cs/common.js
new file mode 100644 (file)
index 0000000..83b3682
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Storno","buttonSave":"Uložit","itemClose":"Zavřít"})
\ No newline at end of file
diff --git a/lib/dijit/nls/cs/loading.js b/lib/dijit/nls/cs/loading.js
new file mode 100644 (file)
index 0000000..c611926
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Probíhá načítání...","errorState":"Omlouváme se, došlo k chybě"})
\ No newline at end of file
diff --git a/lib/dijit/nls/da/common.js b/lib/dijit/nls/da/common.js
new file mode 100644 (file)
index 0000000..8c51ed8
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Annullér","buttonSave":"Gem","itemClose":"Luk"})
\ No newline at end of file
diff --git a/lib/dijit/nls/da/loading.js b/lib/dijit/nls/da/loading.js
new file mode 100644 (file)
index 0000000..5088eaf
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Indlæser...","errorState":"Der er opstået en fejl"})
\ No newline at end of file
diff --git a/lib/dijit/nls/de/common.js b/lib/dijit/nls/de/common.js
new file mode 100644 (file)
index 0000000..cd60c45
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Abbrechen","buttonSave":"Speichern","itemClose":"Schließen"})
\ No newline at end of file
diff --git a/lib/dijit/nls/de/loading.js b/lib/dijit/nls/de/loading.js
new file mode 100644 (file)
index 0000000..4989983
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten."})
\ No newline at end of file
diff --git a/lib/dijit/nls/dijit-all_ROOT.js b/lib/dijit/nls/dijit-all_ROOT.js
new file mode 100644 (file)
index 0000000..43cfcad
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_ROOT");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.ROOT");dojo.nls.colors.ROOT={"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.ROOT");dijit._editor.nls.commands.ROOT={"removeFormat":"Remove Format","copy":"Copy","paste":"Paste","selectAll":"Select All","insertOrderedList":"Numbered List","insertTable":"Insert/Edit Table","print":"Print","underline":"Underline","foreColor":"Foreground Color","htmlToggle":"HTML Source","formatBlock":"Paragraph Style","newPage":"New Page","insertHorizontalRule":"Horizontal Rule","delete":"Delete","appleKey":"⌘${0}","insertUnorderedList":"Bullet List","tableProp":"Table Property","insertImage":"Insert Image","superscript":"Superscript","subscript":"Subscript","createLink":"Create Link","undo":"Undo","fullScreen":"Toggle Full Screen","italic":"Italic","fontName":"Font Name","justifyLeft":"Align Left","unlink":"Remove Link","toggleTableBorder":"Toggle Table Border","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}","fontSize":"Font Size","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","indent":"Indent","redo":"Redo","strikethrough":"Strikethrough","justifyFull":"Justify","justifyCenter":"Align Center","hiliteColor":"Background Color","deleteTable":"Delete Table","outdent":"Outdent","cut":"Cut","plainFormatBlock":"Paragraph Style","toggleDir":"Toggle Direction","bold":"Bold","tabIndent":"Tab Indent","justifyRight":"Align Right"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.ROOT");dijit._editor.nls.FontChoice.ROOT={"noFormat":"None","1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragraph","pre":"Pre-formatted","sans-serif":"sans-serif","fontName":"Font","h1":"Heading","h2":"Subheading","h3":"Sub-subheading","monospace":"monospace","fontSize":"Size","cursive":"cursive"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.ROOT");dijit._editor.nls.LinkDialog.ROOT={"text":"Description:","insertImageTitle":"Image Properties","set":"Set","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","createLinkTitle":"Link Properties","parentWindow":"Parent Window","currentWindow":"Current Window","url":"URL:"};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:]","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"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.ROOT");dojo.cldr.nls.currency.ROOT={"USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.ROOT");dojo.cldr.nls.gregorian.ROOT={"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["BCE","CE"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"y MMMM d","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, y MMMM dd","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-era":"Era","dateFormatItem-yM":"y-M","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","field-year":"Year","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","dateFormatItem-H":"HH","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["BCE","CE"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Yesterday","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","field-day":"Day","days-format-wide":["1","2","3","4","5","6","7"],"field-zone":"Zone","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"eraNames":["BCE","CE"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"yyyy-MM-dd","field-second":"Second","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Week","dateFormat-medium":"y MMM d","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_ar.js b/lib/dijit/nls/dijit-all_ar.js
new file mode 100644 (file)
index 0000000..2c32d81
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_ar");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.ar");dojo.nls.colors.ar={"lightsteelblue":"أزرق معدني فاتح","orangered":"أحمر مائل للبرتقالي","midnightblue":"أزرق بحري","cadetblue":"أزرق ملون بالرمادي","seashell":"أبيض مائل للأصفر فاتح","slategrey":"رمادي اردوازي","coral":"مرجاني","darkturquoise":"تركواز داكن","antiquewhite":"أبيض عتيق","mediumspringgreen":"أخضر ربيعي متوسط","salmon":"برتقالي وردي شاحب","darkgrey":"رمادي داكن","ivory":"عاجي","greenyellow":"أخضر مائل للأصفر","mistyrose":"وردي","lightsalmon":"فضي فاتح","silver":"فضي","dimgrey":"رمادي شاحب","orange":"برتقالي","white":"أبيض","navajowhite":"أبيض ملاحي","royalblue":"أزرق ملكي","deeppink":"أحمر وردي غامق","lime":"ليموني","oldlace":"برتقالي مائل للأصفر شاحب","chartreuse":"أخضر مائل للصفرة","darkcyan":"أزرق سماوي داكن","yellow":"أصفر","linen":"كتاني","olive":"أخضر زيتوني داكن","gold":"ذهبي","lawngreen":"أخضر بلون العشب","lightyellow":"أصفر فاتح","tan":"خمري","darkviolet":"بنفسجي داكن","lightslategrey":"رمادي اردوازي فاتح","grey":"رمادي","darkkhaki":"كاكي داكن","green":"أخضر","deepskyblue":"أزرق سماوي غامق","aqua":"أزرق مائي","sienna":"بني محروق","mintcream":"أصفر شاحب مائل للأخضر الزرعي","rosybrown":"بني وردي","mediumslateblue":"أزرق اردوازي متوسط","magenta":"أحمر قرمزي","lightseagreen":"أخضر مائل للأزرق فاتح","cyan":"أزرق سماوي","olivedrab":"أسود فاتح","darkgoldenrod":"أصفر ذهبي داكن","slateblue":"أزرق اردوازي","mediumaquamarine":"أزرق مائل للأخضر (زبرجد) متوسط","lavender":"أرجواني شاحب","mediumseagreen":"أخضر مائل للأزرق متوسط","maroon":"أحمر داكن","darkslategray":"رمادي اردوازي داكن","mediumturquoise":"تركواز متوسط","ghostwhite":"أبيض شفاف","darkblue":"أزرق داكن","mediumvioletred":"أحمر-بنفسجي متوسط","brown":"بني","lightgray":"رمادي فاتح","sandybrown":"بني مائل للصفرة","pink":"وردي","firebrick":"أصفر زاهي","indigo":"نيلي","snow":"أبيض ثلجي","darkorchid":"أرجواني داكن","turquoise":"تركواز","chocolate":"بني غامق","springgreen":"أخضر ربيعي","moccasin":"نحاسي أحمر","navy":"أزرق داكن","lemonchiffon":"أصفر شفاف","teal":"بترولي","floralwhite":"أبيض زهري","cornflowerblue":"أزرق عنبري","paleturquoise":"تركواز شاحب","purple":"ارجواني","gainsboro":"رمادي مائل للأزرق فاتح","plum":"أرجواني داكن","red":"أحمر","blue":"أزرق","forestgreen":"أخضر بلون أشجار الغابات","darkgreen":"أخضر داكن","honeydew":"أبيض مائل للأخضر","darkseagreen":"أخضر مائل للأزرق داكن","lightcoral":"مرجاني فاتح","palevioletred":"أحمر-بنفسجي شاحب","mediumpurple":"قرمزي متوسط","saddlebrown":"بني فاتح","darkmagenta":"قرمزي داكن","thistle":"ارجواني شاحب","whitesmoke":"دخان أبيض","wheat":"أخضر قمحي","violet":"بنفسجي","lightskyblue":"أزرق سماوي فاتح","goldenrod":"أصفر ذهبي","mediumblue":"أزرق متوسط","skyblue":"أزرق سماوي","crimson":"قرمزي","darksalmon":"فضي داكن","darkred":"أحمر داكن","darkslategrey":"رمادي اردوازي داكن","peru":"بني جملي","lightgrey":"رمادي فاتح","lightgoldenrodyellow":"أصفر ذهبي فاتح","blanchedalmond":"أخضر مائل للبياض","aliceblue":"أزرق فاتح","bisque":"أصفر برتقالي الى رمادي مصفر","slategray":"رمادي اردوازي","palegoldenrod":"أصفر ذهبي شاحب","darkorange":"برتقالي داكن","aquamarine":"أزرق مائل للأخضر (زبرجد)","lightgreen":"أخضر فاتح","burlywood":"خشبي","dodgerblue":"أزرق عنبري","darkgray":"رمادي داكن","lightcyan":"سماوي فاتح","powderblue":"أزرق مائل للأصفر","blueviolet":"أزرق-بنفسجي","orchid":"أرجواني فاتح","dimgray":"رمادي شاحب","beige":"بيج","fuchsia":"فوشيا","lavenderblush":"أحمر أرجواني","hotpink":"أحمر وردي زاهي","steelblue":"أزرق معدني","tomato":"أحمر مائل للأصفر","lightpink":"وردي فاتح","limegreen":"أخضر ليموني","indianred":"أحمر هندي","papayawhip":"خوخي فاتح","lightslategray":"رمادي اردوازي فاتح","gray":"رمادي","mediumorchid":"أرجواني متوسط","cornsilk":"حريري","black":"أسود","seagreen":"أخضر مائل للأزرق","darkslateblue":"أزرق اردوازي داكن","khaki":"كاكي","lightblue":"أزرق فاتح","palegreen":"أخضر شاحب","azure":"أزرق سماوي","peachpuff":"خوخي مائل للأصفر","darkolivegreen":"أخضر زيتوني داكن","yellowgreen":"أخضر مائل للأصفر"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.ar");dijit._editor.nls.commands.ar={"removeFormat":"ازالة النسق","copy":"نسخ","paste":"لصق","selectAll":"اختيار كل","insertOrderedList":"‏كشف مرقم‏","insertTable":"ادراج/تحرير جدول","print":"‏طباعة‏","underline":"~تسطير","foreColor":"لون الواجهة الأمامية","htmlToggle":"مصدر HTML","formatBlock":"نمط الفقرة","newPage":"صفحة جديدة","insertHorizontalRule":"مسطرة أفقية","delete":"حذف","insertUnorderedList":"كشف نقطي","tableProp":"خصائص الجدول","insertImage":"ادراج صورة","superscript":"رمز علوي","subscript":"رمز سفلي","createLink":"تكوين وصلة","undo":"تراجع","fullScreen":"تبديل الشاشة الكاملة","italic":"~مائل","fontName":"اسم طاقم الطباعة","justifyLeft":"محاذاة الى اليسار","unlink":"ازالة وصلة","toggleTableBorder":"تبديل حدود الجدول","viewSource":"‫مشاهدة مصدر HTML‬","ctrlKey":"ctrl+${0}","fontSize":"حجم طاقم الطباعة","systemShortcut":"التصرف \"${0}\" يكون متاحا فقط في برنامج الاستعراض الخاص بك باستخدام المسار المختصر للوحة المفاتيح. استخدم ${1}.","indent":"‏ازاحة للداخل‏","redo":"‏اعادة‏","strikethrough":"تشطيب","justifyFull":"ضبط","justifyCenter":"محاذاة في الوسط","hiliteColor":"‏لون الخلفية‏","deleteTable":"حذف جدول","outdent":"ازاحة للخارج","cut":"قص","plainFormatBlock":"نمط الفقرة","toggleDir":"تبديل الاتجاه","bold":"عري~ض","tabIndent":"ازاحة للداخل باستخدام Tab","justifyRight":"محاذاة الى اليمين","appleKey":"⌘${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.ar");dijit._editor.nls.FontChoice.ar={"1":"صغير جدا جدا","2":"صغير جدا","formatBlock":"النسق","3":"صغير","4":"متوسط","5":"كبير","6":"كبير جدا","7":"كبير جدا جدا","fantasy":"خيالي","serif":"serif","p":"فقرة","pre":"منسق بصفة مسبقة","sans-serif":"sans-serif","fontName":"طاقم طباعة","h1":"عنوان","h2":"عنوان فرعي","h3":"فرعي-عنوان فرعي","monospace":"أحادي المسافة","fontSize":"الحجم","cursive":"كتابة بحروف متصلة","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.ar");dijit._editor.nls.LinkDialog.ar={"text":"الوصف:","insertImageTitle":"خصائص الصورة","set":"تحديد","newWindow":"نافذة جديدة","topWindow":"النافذة العلوية","target":"الهدف: ","createLinkTitle":"خصائص الوصلة","parentWindow":"النافذة الرئيسية","currentWindow":"النافذة الحالية","url":"عنوان URL:"};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":"∞","patternDigit":"#","minusSign":"-","decimal":"٫","nan":"ليس رقم","nativeZeroDigit":"٠","perMille":"؉","decimalFormat":"#,##0.###;#,##0.###-","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","plusSign":"+","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","percentFormat":"#,##0%","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.ar");dojo.cldr.nls.currency.ar={"HKD_displayName":"دولار هونج كونج","CHF_displayName":"فرنك سويسري","CAD_displayName":"دولار كندي","CNY_displayName":"يوان صيني","AUD_displayName":"دولار أسترالي","JPY_displayName":"ين ياباني","USD_displayName":"دولار أمريكي","CNY_symbol":"ي.ص","GBP_displayName":"جنيه إسترليني","EUR_displayName":"يورو","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.ar");dojo.cldr.nls.gregorian.ar={"dateFormatItem-yM":"M‏/yyyy","field-dayperiod":"ص/م","dateFormatItem-yQ":"yyyy Q","dayPeriods-format-wide-pm":"م","field-minute":"الدقائق","eraNames":["قبل الميلاد","ميلادي"],"dateFormatItem-MMMEd":"E d MMM","field-day-relative+-1":"أمس","field-weekday":"اليوم","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-MMdd":"dd‏/MM","days-standAlone-wide":["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-era":"العصر","field-hour":"الساعات","dayPeriods-format-wide-am":"ص","quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-y":"y","timeFormat-full":"zzzz h:mm:ss a","months-standAlone-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"اليوم","field-day-relative+1":"غدًا","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"eraAbbr":["ق.م","م"],"field-day-relative+2":"بعد الغد","dateFormatItem-yyyyMM":"MM‏/yyyy","dateFormatItem-yyyyMMMM":"MMMM، y","dateFormat-long":"d MMMM، y","timeFormat-medium":"h:mm:ss a","field-zone":"التوقيت","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"dd‏/MM‏/yyyy","quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-yMMMM":"MMMM y","dateFormatItem-ms":"mm:ss","field-year":"السنة","quarters-standAlone-narrow":["١","٢","٣","٤"],"field-week":"الأسبوع","months-standAlone-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["١","٢","٣","٤"],"dateFormatItem-yyQ":"Q yy","timeFormat-long":"z h:mm:ss a","months-format-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"timeFormat-short":"h:mm a","field-month":"الشهر","dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-abbr":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dateFormatItem-M":"L","days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-second":"الثواني","field-day":"يوم","months-format-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"days-standAlone-abbr":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dateFormat-short":"d‏/M‏/yyyy","dateFormatItem-yMMMEd":"EEE، d MMMM y","dateFormat-full":"EEEE، d MMMM، y","dateFormatItem-Md":"d/‏M","dateFormatItem-yMEd":"EEE، d/‏M/‏yyyy","months-format-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateFormatItem-d":"d","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-wide":["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"eraNarrow":["ق.م","م"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_ca.js b/lib/dijit/nls/dijit-all_ca.js
new file mode 100644 (file)
index 0000000..48456f7
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_ca");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.ca");dojo.nls.colors.ca={"lightsteelblue":"blau acer clar","orangered":"taronja vermellós","midnightblue":"blau mitjanit","cadetblue":"blau marí","seashell":"petxina marina","slategrey":"gris pissarra","coral":"corall","darkturquoise":"turquesa fosc","antiquewhite":"blanc antic","mediumspringgreen":"verd primavera mitjà","salmon":"salmó","darkgrey":"gris fosc","ivory":"marbre","greenyellow":"verd grogós","mistyrose":"rosa dens","lightsalmon":"salmó clar","silver":"argent","dimgrey":"gris fosc","orange":"taronja","white":"blanc","navajowhite":"blanc Navajo","royalblue":"blau marí intens","deeppink":"rosa profund","lime":"verd llimona","oldlace":"rosa cremós","chartreuse":"Llimona pàl·lid","darkcyan":"cian fosc","yellow":"groc","linen":"lli","olive":"oliva","gold":"daurat","lawngreen":"verd gespa","lightyellow":"groc clar","tan":"tan","darkviolet":"violeta fosc","lightslategrey":"gris pissarra clar","grey":"gris","darkkhaki":"caqui fosc","green":"verd","deepskyblue":"blau cel profund","aqua":"aigua","sienna":"siena","mintcream":"menta pàl·lid","rosybrown":"marró rosat","mediumslateblue":"blau pissarra mitjà","magenta":"magenta","lightseagreen":"verd marí clar","cyan":"cian","olivedrab":"gris oliva","darkgoldenrod":"ocre fosc","slateblue":"blau pissarra","mediumaquamarine":"aiguamarina mitjana","lavender":"lavanda","mediumseagreen":"verd marí mitjà","maroon":"marró vermellós","darkslategray":"gris pissarra fosc","mediumturquoise":"turquesa mitjana","ghostwhite":"blanc fantasma","darkblue":"blau fosc","mediumvioletred":"vermell violeta mitjà","brown":"marró","lightgray":"gris clar","sandybrown":"marró arenós","pink":"rosa","firebrick":"maó refractari","indigo":"índigo","snow":"neu","darkorchid":"orquídia fosc","turquoise":"turquesa","chocolate":"xocolata","springgreen":"verd de primavera","moccasin":"mocassí","navy":"blau marí","lemonchiffon":"groc brisa","teal":"verd blavós","floralwhite":"blanc floral","cornflowerblue":"blau blauet","paleturquoise":"turquesa pàl·lid","purple":"porpra","gainsboro":"gainsboro","plum":"pruna","red":"vermell","blue":"blau","forestgreen":"verd bosc","darkgreen":"verd fosc","honeydew":"rosada de mel","darkseagreen":"verd marí fosc","lightcoral":"corall clar","palevioletred":"vermell porpra pàl·lid","mediumpurple":"porpra mitjana","saddlebrown":"marró mitjà","darkmagenta":"magenta fosc","thistle":"card","whitesmoke":"blanc fumat","wheat":"blat","violet":"violeta","lightskyblue":"blau cel clar","goldenrod":"ocre","mediumblue":"blau mitjà","skyblue":"blau cel","crimson":"carmesí","darksalmon":"salmó fosc","darkred":"vermell fosc","darkslategrey":"gris pissarra fosc","peru":"Perú","lightgrey":"gris clar","lightgoldenrodyellow":"groc ocre clar","blanchedalmond":"ametlla pàl·lid","aliceblue":"blau cian clar","bisque":"crema","slategray":"gris pissarra","palegoldenrod":"ocre pàl·lid","darkorange":"taronja fosc","aquamarine":"aiguamarina","lightgreen":"verd clar","burlywood":"marró arenós","dodgerblue":"blau Dodger","darkgray":"gris fosc","lightcyan":"cian clar","powderblue":"blau grisós","blueviolet":"blau violeta","orchid":"orquídia","dimgray":"gris fosc","beige":"beix","fuchsia":"fúcsia","lavenderblush":"lavanda vermellosa","hotpink":"rosa fúcsia","steelblue":"blau acer","tomato":"tomàquet","lightpink":"rosa clar","limegreen":"verd llimona verda","indianred":"vermell indi","papayawhip":"préssec pastel","lightslategray":"gris pissarra clar","gray":"gris","mediumorchid":"orquídia mitjana","cornsilk":"cru","black":"negre","seagreen":"verd marí","darkslateblue":"blau pissarra fosc","khaki":"caqui","lightblue":"blau clar","palegreen":"verd pàl·lid","azure":"atzur","peachpuff":"préssec","darkolivegreen":"verd oliva fosc","yellowgreen":"verd grogós"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.ca");dijit._editor.nls.commands.ca={"removeFormat":"Elimina el format","copy":"Copia","paste":"Enganxa","selectAll":"Selecciona-ho tot","insertOrderedList":"Llista numerada","insertTable":"Insereix/edita la taula","print":"Imprimeix","underline":"Subratllat","foreColor":"Color de primer pla","htmlToggle":"Font HTML","formatBlock":"Estil de paràgraf","newPage":"Pàgina nova","insertHorizontalRule":"Regle horitzontal","delete":"Suprimeix","insertUnorderedList":"Llista de vinyetes","tableProp":"Propietat de taula","insertImage":"Insereix imatge","superscript":"Superíndex","subscript":"Subíndex","createLink":"Crea un enllaç","undo":"Desfés","fullScreen":"Commuta pantalla completa","italic":"Cursiva","fontName":"Nom del tipus de lletra","justifyLeft":"Alinea a la esquerra","unlink":"Elimina l'enllaç","toggleTableBorder":"Inverteix els contorns de taula","viewSource":"Visualitza font HTML","ctrlKey":"control+${0}","fontSize":"Cos de la lletra","systemShortcut":"L'acció \"${0}\" és l'única disponible al navegador utilitzant una drecera del teclat. Utilitzeu ${1}.","indent":"Sagnat","redo":"Refés","strikethrough":"Ratllat","justifyFull":"Justifica","justifyCenter":"Centra","hiliteColor":"Color de fons","deleteTable":"Suprimeix la taula","outdent":"Sagna a l'esquerra","cut":"Retalla","plainFormatBlock":"Estil de paràgraf","toggleDir":"Inverteix la direcció","bold":"Negreta","tabIndent":"Sagnat","justifyRight":"Alinea a la dreta","appleKey":"⌘${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.ca");dijit._editor.nls.FontChoice.ca={"1":"xx-petit","2":"x-petit","formatBlock":"Format","3":"petit","4":"mitjà","5":"gran","6":"x-gran","7":"xx-gran","fantasy":"Fantasia","serif":"serif","p":"Paràgraf","pre":"Format previ","sans-serif":"sans-serif","fontName":"Tipus de lletra","h1":"Títol","h2":"Subtítol","h3":"Subsubtítol","monospace":"monoespai","fontSize":"Mida","cursive":"Cursiva","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.ca");dijit._editor.nls.LinkDialog.ca={"text":"Descipció:","insertImageTitle":"Propietats de la imatge","set":"Defineix","newWindow":"Finestra nova","topWindow":"Finestra superior","target":"Destinació:","createLinkTitle":"Propietats de l'enllaç","parentWindow":"Finestra pare","currentWindow":"Finestra actual","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.ca");dojo.cldr.nls.currency.ca={"HKD_displayName":"dòlar de Hong Kong","CHF_displayName":"franc suís","CAD_displayName":"dòlar canadenc","CNY_displayName":"iuan renmimbi xinès","AUD_displayName":"dòlar australià","JPY_displayName":"ien japonès","USD_displayName":"dòlar dels Estats Units","GBP_displayName":"lliura esterlina britànica","EUR_displayName":"euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.ca");dojo.cldr.nls.gregorian.ca={"months-format-narrow":["g","f","m","a","m","j","j","a","s","o","n","d"],"field-weekday":"dia de la setmana","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d/M/yyyy","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["aC","dC"],"dateFormat-long":"d MMMM 'de' y","months-format-wide":["de gener","de febrer","de març","d’abril","de maig","de juny","de juliol","d’agost","de setembre","d’octubre","de novembre","de desembre"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d MMMM 'de' y","dateFormatItem-Md":"d/M","field-era":"era","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],"timeFormat-short":"H:mm","quarters-format-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"timeFormat-long":"H:mm:ss z","field-year":"any","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"Q yyyy","field-hour":"hora","months-format-abbr":["de gen.","de febr.","de març","d’abr.","de maig","de juny","de jul.","d’ag.","de set.","d’oct.","de nov.","de des."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"avui","field-day-relative+1":"demà","field-day-relative+2":"demà passat","dateFormatItem-H":"H","field-day-relative+3":"d'aquí a tres dies","months-standAlone-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"quarters-format-abbr":["1T","2T","3T","4T"],"quarters-standAlone-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1T","2T","3T","4T"],"eraAbbr":["aC","dC"],"field-minute":"minut","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["dg","dl","dt","dc","dj","dv","ds"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ahir","field-day-relative+-2":"abans d'ahir","field-day-relative+-3":"fa tres dies","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateFormatItem-yMMMM":"LLLL 'del' y","field-day":"dia","days-format-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"field-zone":"zona","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["g","f","m","a","m","j","j","a","s","o","n","d"],"dateFormatItem-hm":"h:mm a","days-format-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"eraNames":["aC","dC"],"days-format-narrow":["g","l","t","c","j","v","s"],"field-month":"mes","days-standAlone-narrow":["g","l","t","c","j","v","s"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"a.m.","dateFormatItem-MMMMEd":"E d MMMM","dateFormat-short":"dd/MM/yy","field-second":"segon","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"setmana","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-mmss":"mm:ss","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_cs.js b/lib/dijit/nls/dijit-all_cs.js
new file mode 100644 (file)
index 0000000..db73adb
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_cs");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.cs");dojo.nls.colors.cs={"lightsteelblue":"světlá ocelová modrá","orangered":"oranžovočervená","midnightblue":"temně modrá","cadetblue":"šedomodrá","seashell":"lasturová","slategrey":"břidlicová šedá","coral":"korálová červená","darkturquoise":"tmavě tyrkysová","antiquewhite":"krémově bílá","mediumspringgreen":"střední jarní zelená","salmon":"lososová","darkgrey":"tmavě šedá","ivory":"slonovinová","greenyellow":"zelenožlutá","mistyrose":"růžovobílá","lightsalmon":"světle lososová","silver":"stříbrná","dimgrey":"kouřově šedá","orange":"oranžová","white":"bílá","navajowhite":"světle krémová","royalblue":"královská modrá","deeppink":"sytě růžová","lime":"limetková","oldlace":"světle béžová","chartreuse":"chartreuska","darkcyan":"tmavě azurová","yellow":"žlutá","linen":"bledě šedobéžová","olive":"olivová","gold":"zlatá","lawngreen":"jasně zelená","lightyellow":"bledě žlutá","tan":"šedobéžová","darkviolet":"tmavě fialová","lightslategrey":"světlá břidlicová šedá","grey":"šedá","darkkhaki":"pískově hnědá","green":"zelená","deepskyblue":"sytá nebeská modrá","aqua":"azurová","sienna":"siena","mintcream":"mentolová","rosybrown":"růžovohnědá","mediumslateblue":"střední břidlicová modrá","magenta":"purpurová","lightseagreen":"světlá mořská zelená","cyan":"azurová","olivedrab":"khaki","darkgoldenrod":"tmavě béžová","slateblue":"břidlicová modrá","mediumaquamarine":"střední akvamarínová","lavender":"levandulová","mediumseagreen":"střední mořská zelená","maroon":"kaštanová","darkslategray":"tmavá břidlicová šedá","mediumturquoise":"středně tyrkysová","ghostwhite":"modravě bílá","darkblue":"tmavě modrá","mediumvioletred":"středně fialovočervená","brown":"červenohnědá","lightgray":"světle šedá","sandybrown":"oranžovohnědá","pink":"růžová","firebrick":"cihlová","indigo":"indigově modrá","snow":"sněhobílá","darkorchid":"tmavě orchidejová","turquoise":"tyrkysová","chocolate":"hnědobéžová","springgreen":"jarní zelená","moccasin":"bledě krémová","navy":"námořnická modrá","lemonchiffon":"světle citrónová","teal":"šedozelená","floralwhite":"květinově bílá","cornflowerblue":"chrpově modrá","paleturquoise":"bledě tyrkysová","purple":"nachová","gainsboro":"bledě šedá","plum":"švestková","red":"červená","blue":"modrá","forestgreen":"lesní zelená","darkgreen":"tmavě zelená","honeydew":"nazelenalá","darkseagreen":"tmavá mořská zelená","lightcoral":"světle korálová","palevioletred":"bledě fialovočervená","mediumpurple":"středně nachová","saddlebrown":"hnědá","darkmagenta":"tmavě purpurová","thistle":"bodláková","whitesmoke":"kouřově bílá","wheat":"zlatohnědá","violet":"fialová","lightskyblue":"světlá nebeská modrá","goldenrod":"béžová","mediumblue":"středně modrá","skyblue":"nebeská modrá","crimson":"karmínová","darksalmon":"tmavě lososová","darkred":"tmavě červená","darkslategrey":"tmavá břidlicová šedá","peru":"karamelová","lightgrey":"světle šedá","lightgoldenrodyellow":"světle žlutá","blanchedalmond":"mandlová","aliceblue":"modravá","bisque":"bledě oranžová","slategray":"břidlicová šedá","palegoldenrod":"bledě písková","darkorange":"tmavě oranžová","aquamarine":"akvamarínová","lightgreen":"světle zelená","burlywood":"krémová","dodgerblue":"jasně modrá","darkgray":"tmavě šedá","lightcyan":"světle azurová","powderblue":"bledě modrá","blueviolet":"modrofialová","orchid":"orchidejová","dimgray":"kouřově šedá","beige":"bledě béžová","fuchsia":"fuchsiová","lavenderblush":"levandulová růžová","hotpink":"jasně růžová","steelblue":"ocelová modrá","tomato":"tomatová","lightpink":"světle růžová","limegreen":"limetkově zelená","indianred":"indiánská červená","papayawhip":"papájová","lightslategray":"světlá břidlicová šedá","gray":"šedá","mediumorchid":"středně orchidejová","cornsilk":"režná","black":"černá","seagreen":"mořská zelená","darkslateblue":"tmavá břidlicová modrá","khaki":"písková","lightblue":"světle modrá","palegreen":"bledě zelená","azure":"bledě azurová","peachpuff":"broskvová","darkolivegreen":"tmavě olivová","yellowgreen":"žlutozelená"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.cs");dijit._editor.nls.commands.cs={"removeFormat":"Odebrat formát","copy":"Kopírovat","paste":"Vložit","selectAll":"Vybrat vše","insertOrderedList":"Číslovaný seznam","insertTable":"Vložit/upravit tabulku","print":"Tisk","underline":"Podtržení","foreColor":"Barva popředí","htmlToggle":"Zdroj HTML","formatBlock":"Styl odstavce","newPage":"Nová stránka","insertHorizontalRule":"Vodorovná čára","delete":"Odstranit","insertUnorderedList":"Seznam s odrážkami","tableProp":"Vlastnost tabulky","insertImage":"Vložit obrázek","superscript":"Horní index","subscript":"Dolní index","createLink":"Vytvořit odkaz","undo":"Zpět","fullScreen":"Přepnout režim celé obrazovky","italic":"Kurzíva","fontName":"Název písma","justifyLeft":"Zarovnat vlevo","unlink":"Odebrat odkaz","toggleTableBorder":"Přepnout ohraničení tabulky","viewSource":"Zobrazit zdroj ve formátu HTML","fontSize":"Velikost písma","systemShortcut":"Akce \"${0}\" je v prohlížeči dostupná pouze prostřednictvím klávesové zkratky. Použijte klávesovou zkratku ${1}.","indent":"Odsadit","redo":"Opakovat","strikethrough":"Přeškrtnutí","justifyFull":"Do bloku","justifyCenter":"Zarovnat na střed","hiliteColor":"Barva pozadí","deleteTable":"Odstranit tabulku","outdent":"Předsadit","cut":"Vyjmout","plainFormatBlock":"Styl odstavce","toggleDir":"Přepnout směr","bold":"Tučné","tabIndent":"Odsazení tabulátoru","justifyRight":"Zarovnat vpravo","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.cs");dijit._editor.nls.FontChoice.cs={"1":"extra malé","2":"velmi malé","formatBlock":"Formát","3":"malé","4":"střední","5":"velké","6":"velmi velké","7":"extra velké","fantasy":"fantasy","serif":"serif","p":"Odstavec","pre":"Předformátované","sans-serif":"sans-serif","fontName":"Písmo","h1":"Nadpis","h2":"Podnadpis","h3":"Podnadpis 2","monospace":"monospace","fontSize":"Velikost","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.cs");dijit._editor.nls.LinkDialog.cs={"text":"Popis:","insertImageTitle":"Vlastnosti obrázku","set":"Nastavit","newWindow":"Nové okno","topWindow":"Okno nejvyšší úrovně","target":"Cíl:","createLinkTitle":"Vlastnosti odkazu","parentWindow":"Nadřízené okno","currentWindow":"Aktuální okno","url":"Adresa URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.cs");dojo.cldr.nls.currency.cs={"HKD_displayName":"Dolar hongkongský","CHF_displayName":"Frank švýcarský","CAD_displayName":"Dolar kanadský","CNY_displayName":"Juan renminbi","AUD_displayName":"Dolar australský","JPY_displayName":"Jen","USD_displayName":"Dolar americký","GBP_displayName":"Libra šterlinků","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.cs");dojo.cldr.nls.gregorian.cs={"dayPeriods-format-wide-pm":"odp.","eraNames":["př.Kr.","po Kr."],"field-day-relative+-1":"Včera","field-day-relative+-2":"Předevčírem","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"months-standAlone-narrow":["l","ú","b","d","k","č","č","s","z","ř","l","p"],"dayPeriods-format-wide-am":"dop.","quarters-standAlone-abbr":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-day-relative+0":"Dnes","field-day-relative+1":"Zítra","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"eraAbbr":["př.Kr.","po Kr."],"field-day-relative+2":"Pozítří","dateFormat-long":"d. MMMM y","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"d.M.yyyy","dateFormatItem-Hms":"H:mm:ss","quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"months-standAlone-wide":["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],"timeFormat-long":"H:mm:ss z","months-format-abbr":["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],"timeFormat-short":"H:mm","dateFormatItem-H":"H","quarters-format-abbr":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"days-format-abbr":["ne","po","út","st","čt","pá","so"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"months-format-narrow":["l","ú","b","d","k","č","č","s","z","ř","l","p"],"days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateFormat-short":"d.M.yy","dateFormat-full":"EEEE, d. MMMM y","months-format-wide":["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],"quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"eraNarrow":["př.Kr.","po Kr."],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-era":"Era","dateFormatItem-yM":"y-M","field-year":"Year","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-M":"L","field-minute":"Minute","field-dayperiod":"Dayperiod","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","field-day":"Day","field-zone":"Zone","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateFormatItem-MMM":"LLL","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-second":"Second","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_da.js b/lib/dijit/nls/dijit-all_da.js
new file mode 100644 (file)
index 0000000..a87e64a
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_da");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.da");dojo.nls.colors.da={"lightsteelblue":"lys stålblå","orangered":"orangerød","midnightblue":"midnatsblå","cadetblue":"kadetblå","seashell":"muslingeskal","slategrey":"skifergrå","coral":"koralrød","darkturquoise":"mørk turkis","antiquewhite":"antikhvid","mediumspringgreen":"mellemforårsgrøn","salmon":"laksefarvet","darkgrey":"mørkegrå","ivory":"elfenben","greenyellow":"grøngul","mistyrose":"blegrosa","lightsalmon":"lys laksefarvet","silver":"sølv","dimgrey":"svag grå","orange":"orange","white":"hvid","navajowhite":"navajo-hvid","royalblue":"kongeblå","deeppink":"dyb pink","lime":"lime","oldlace":"kniplingshvid","chartreuse":"chartreuse","darkcyan":"mørk cyan","yellow":"gul","linen":"lærred","olive":"olivengrøn","gold":"guld","lawngreen":"græsgrøn","lightyellow":"lysegul","tan":"tan","darkviolet":"mørkelilla","lightslategrey":"lys skifergrå","grey":"grå","darkkhaki":"mørk khaki","green":"grøn","deepskyblue":"dyb himmelblå","aqua":"akvablå","sienna":"sienna","mintcream":"pebermyntecreme","rosybrown":"rosabrun","mediumslateblue":"mellemskiferblå","magenta":"magenta","lightseagreen":"lys havgrøn","cyan":"cyan","olivedrab":"brungrøn","darkgoldenrod":"mørk gyldenris","slateblue":"skiferblå","mediumaquamarine":"mellem akvamarin","lavender":"lysviolet","mediumseagreen":"mellemhavgrøn","maroon":"rødbrun","darkslategray":"mørk skifergrå","mediumturquoise":"mellemturkis","ghostwhite":"spøgelseshvid","darkblue":"mørkeblå","mediumvioletred":"mellemviolet","brown":"brun","lightgray":"lysegrå","sandybrown":"sandbrun","pink":"pink","firebrick":"chamottesten","indigo":"indigo","snow":"sne","darkorchid":"mørk orkide","turquoise":"turkis","chocolate":"rust","springgreen":"forårsgrøn","moccasin":"fruesko","navy":"marineblå","lemonchiffon":"citronfromage","teal":"blågrøn","floralwhite":"blomsterhvid","cornflowerblue":"kornblomstblå","paleturquoise":"bleg turkis","purple":"lilla","gainsboro":"gainsboro","plum":"blomme","red":"rød","blue":"blå","forestgreen":"skovgrøn","darkgreen":"mørkegrøn","honeydew":"honningdug","darkseagreen":"mørk havgrøn","lightcoral":"lys koralrød","palevioletred":"blegviolet","mediumpurple":"mellemlilla","saddlebrown":"saddelbrun","darkmagenta":"mørk magenta","thistle":"tidsel","whitesmoke":"hvid røg","wheat":"korngul","violet":"lilla","lightskyblue":"lys himmelblå","goldenrod":"gyldenris","mediumblue":"mellemblå","skyblue":"himmelblå","crimson":"blodrød","darksalmon":"mørk laksefarvet","darkred":"mørkerød","darkslategrey":"mørk skifergrå","peru":"peru","lightgrey":"lysegrå","lightgoldenrodyellow":"lys gyldenrisgul","blanchedalmond":"blanceret mandel","aliceblue":"babyblå","bisque":"gulgrå","slategray":"skifergrå","palegoldenrod":"bleg gyldenris","darkorange":"mørk orange","aquamarine":"akvamarin","lightgreen":"lysegrøn","burlywood":"tobak","dodgerblue":"dodgerblå","darkgray":"mørkegrå","lightcyan":"lys cyan","powderblue":"pudderblå","blueviolet":"blåviolet","orchid":"orkide","dimgray":"svag grå","beige":"beige","fuchsia":"lyslilla","lavenderblush":"lavendelrød","hotpink":"mørk rosa","steelblue":"metalblå","tomato":"tomat","lightpink":"lys pink","limegreen":"limegrøn","indianred":"lys rødbrun","papayawhip":"papaya","lightslategray":"lys skifergrå","gray":"grå","mediumorchid":"mellem orkide","cornsilk":"majs","black":"sort","seagreen":"havgrøn","darkslateblue":"mørk skiferblå","khaki":"khaki","lightblue":"lyseblå","palegreen":"bleggrøn","azure":"azurblå","peachpuff":"fersken","darkolivegreen":"mørk olivengrøn","yellowgreen":"gulgrøn"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.da");dijit._editor.nls.commands.da={"removeFormat":"Fjern format","copy":"Kopiér","paste":"Sæt ind","selectAll":"Markér alle","insertOrderedList":"Nummereret liste","insertTable":"Indsæt/redigér tabel","print":"Udskriv","underline":"Understreget","foreColor":"Forgrundsfarve","htmlToggle":"HTML-kilde","formatBlock":"Afsnitstypografi","newPage":"Ny side","insertHorizontalRule":"Vandret linje","delete":"Slet","insertUnorderedList":"Punktliste","tableProp":"Tabelegenskab","insertImage":"Indsæt billede","superscript":"Hævet skrift","subscript":"Sænket skrift","createLink":"Opret link","undo":"Fortryd","fullScreen":"Aktivér/deaktivér fuldskærm","italic":"Kursiv","fontName":"Skriftnavn","justifyLeft":"Venstrejusteret","unlink":"Fjern link","toggleTableBorder":"Skift tabelramme","viewSource":"Vis HTML-kilde","ctrlKey":"Ctrl+${0}","fontSize":"Skriftstørrelse","systemShortcut":"Funktionen \"${0}\" kan kun bruges i din browser med en tastaturgenvej. Brug ${1}.","indent":"Indrykning","redo":"Annullér Fortryd","strikethrough":"Gennemstreget","justifyFull":"Lige margener","justifyCenter":"Centreret","hiliteColor":"Baggrundsfarve","deleteTable":"Slet tabel","outdent":"Udrykning","cut":"Klip","plainFormatBlock":"Afsnitstypografi","toggleDir":"Skift retning","bold":"Fed","tabIndent":"Indrykning med tabulator","justifyRight":"Højrejusteret","appleKey":"⌘${0}"};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 ugyldig.","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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.da");dijit._editor.nls.FontChoice.da={"1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Afsnit","pre":"Forudformateret","sans-serif":"sans-serif","fontName":"Skrifttype","h1":"Overskrift","h2":"Underoverskrift","h3":"Underunderoverskrift","monospace":"monospace","fontSize":"Størrelse","cursive":"kursiv","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.da");dijit._editor.nls.LinkDialog.da={"text":"Beskrivelse:","insertImageTitle":"Billedegenskaber","set":"Definér","newWindow":"Nyt vindue","topWindow":"Øverste vindue","target":"Mål:","createLinkTitle":"Linkegenskaber","parentWindow":"Overordnet vindue","currentWindow":"Aktuelt vindue","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.da");dojo.cldr.nls.currency.da={"HKD_displayName":"Hongkong dollar","CHF_displayName":"Schweizisk franc","CAD_displayName":"Canadisk dollar","CNY_displayName":"Kinesisk yuan renminbi","USD_symbol":"$","AUD_displayName":"Australsk dollar","JPY_displayName":"Japansk yen","USD_displayName":"Amerikansk dollar","GBP_displayName":"Britisk pund","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.da");dojo.cldr.nls.gregorian.da={"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"ugedag","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE. d/M/y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["f.Kr.","e.Kr."],"dateFormat-long":"d. MMM y","months-format-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"dayPeriods-format-wide-pm":"e.m.","dateFormat-full":"EEEE 'den' d. MMMM y","dateFormatItem-Md":"d/M","field-era":"æra","dateFormatItem-yM":"M/y","months-standAlone-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","field-year":"år","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","field-hour":"time","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dateFormatItem-yyQ":"Q. 'kvartal' yy","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","dateFormatItem-H":"HH","field-day-relative+3":"i overovermorgen","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-M":"M","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMM":"MMM y","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH.mm.ss","dateFormatItem-Hm":"HH.mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["f.Kr.","e.Kr."],"field-minute":"minut","field-dayperiod":"dagtid","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-day-relative+-3":"i forforgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E. d/M","field-day":"dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"zone","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h.mm a","days-format-abbr":["søn","man","tir","ons","tor","fre","lør"],"eraNames":["f.Kr.","e.Kr."],"days-format-narrow":["S","M","T","O","T","F","L"],"field-month":"måned","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"MMM","dayPeriods-format-wide-am":"f.m.","dateFormatItem-MMMMEd":"E, d. MMMM","dateFormat-short":"dd/MM/yy","field-second":"sekund","dateFormatItem-yMMMEd":"EEE. d. MMM y","field-week":"uge","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-yyyy":"y","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_de-de.js b/lib/dijit/nls/dijit-all_de-de.js
new file mode 100644 (file)
index 0000000..7af3dd8
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_de-de");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.de_de");dojo.nls.colors.de_de={"lightsteelblue":"Helles Stahlblau","orangered":"Orangerot","midnightblue":"Mitternachtblau","cadetblue":"Kadettenblau","seashell":"Muschelweiß","slategrey":"Schiefergrau","coral":"Koralle","darkturquoise":"Dunkeltürkis","antiquewhite":"Antikweiß","mediumspringgreen":"Mittelfrühlingsgrün","salmon":"Lachs","darkgrey":"Dunkelgrau","ivory":"Elfenbein","greenyellow":"Grüngelb","mistyrose":"Blassrose","lightsalmon":"Helllachs","silver":"Silbergrau","dimgrey":"Blassgrau","orange":"Orange","white":"Weiß","navajowhite":"Navajo-weiß","royalblue":"Königsblau","deeppink":"Tiefrosa","lime":"Limone","oldlace":"Alte Spitze","chartreuse":"Helles Gelbgrün","darkcyan":"Dunkelzyan","yellow":"Gelb","linen":"Leinen","olive":"Oliv","gold":"Gold","lawngreen":"Grasgrün","lightyellow":"Hellgelb","tan":"Hautfarben","darkviolet":"Dunkelviolett","lightslategrey":"Helles Schiefergrau","grey":"Grau","darkkhaki":"Dunkelkhaki","green":"Grün","deepskyblue":"Dunkles Himmelblau","aqua":"Wasserblau","sienna":"Sienna","mintcream":"Mintcreme","rosybrown":"Rosigbraun","mediumslateblue":"Mittelschieferblau ","magenta":"Magenta","lightseagreen":"Helles Meergrün","cyan":"Zyan","olivedrab":"Olivgrau","darkgoldenrod":"Dunkelgoldgelb","slateblue":"Schieferblau","mediumaquamarine":"Mittelaquamarin","lavender":"Lavendelblau","mediumseagreen":"Mittelmeeresgrün","maroon":"Kastanienbraun","darkslategray":"Dunkelschiefergrau","mediumturquoise":"Mitteltürkis ","ghostwhite":"Geisterweiß","darkblue":"Dunkelblau","mediumvioletred":"Mittelviolettrot ","brown":"Braun","lightgray":"Hellgrau","sandybrown":"Sandbraun","pink":"Rosa","firebrick":"Schamottestein","indigo":"Indigoblau","snow":"Schneeweiß","darkorchid":"Dunkelorchidee","turquoise":"Türkis","chocolate":"Schokoladenbraun","springgreen":"Frühlingsgrün","moccasin":"Mokassin","navy":"Marineblau","lemonchiffon":"Zitronenchiffon","teal":"Smaragdgrün","floralwhite":"Blütenweiß","cornflowerblue":"Kornblumenblau","paleturquoise":"Blasstürkis","purple":"Purpurrot","gainsboro":"Gainsboro","plum":"Pflaume","red":"Rot","blue":"Blau","forestgreen":"Forstgrün","darkgreen":"Dunkelgrün","honeydew":"Honigtau","darkseagreen":"Dunkles Meergrün","lightcoral":"Hellkoralle","palevioletred":"Blassviolettrot ","mediumpurple":"Mittelpurpur","saddlebrown":"Sattelbraun","darkmagenta":"Dunkelmagenta","thistle":"Distel","whitesmoke":"Rauchweiß","wheat":"Weizen","violet":"Violett","lightskyblue":"Helles Himmelblau","goldenrod":"Goldgelb","mediumblue":"Mittelblau","skyblue":"Himmelblau","crimson":"Karmesinrot","darksalmon":"Dunkellachs","darkred":"Dunkelrot","darkslategrey":"Dunkelschiefergrau","peru":"Peru","lightgrey":"Hellgrau","lightgoldenrodyellow":"Hellgoldgelb","blanchedalmond":"Mandelweiß","aliceblue":"Alice-blau","bisque":"Bisquit","slategray":"Schiefergrau","palegoldenrod":"Blassgoldgelb","darkorange":"Dunkelorange","aquamarine":"Aquamarin","lightgreen":"Hellgrün","burlywood":"Burlywood","dodgerblue":"Dodger-blau","darkgray":"Dunkelgrau","lightcyan":"Hellzyan","powderblue":"Pulverblau","blueviolet":"Blauviolett","orchid":"Orchidee","dimgray":"Blassgrau","beige":"Beige","fuchsia":"Fuchsia","lavenderblush":"Lavendelhauch","hotpink":"Knallrosa","steelblue":"Stahlblau","tomato":"Tomatenrot","lightpink":"Hellrosa","limegreen":"Limonengrün","indianred":"Indischrot","papayawhip":"Papayacreme","lightslategray":"Helles Schiefergrau","gray":"Grau","mediumorchid":"Mittelorchidee","cornsilk":"Kornseide","black":"Schwarz","seagreen":"Meeresgrün","darkslateblue":"Dunkelschieferblau","khaki":"Khaki","lightblue":"Hellblau","palegreen":"Blassgrün","azure":"Azur","peachpuff":"Pfirsich","darkolivegreen":"Dunkelolivgrün","yellowgreen":"Gelbgrün"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.de_de");dijit._editor.nls.commands.de_de={"removeFormat":"Formatierung entfernen","copy":"Kopieren","paste":"Einfügen","selectAll":"Alles auswählen","insertOrderedList":"Nummerierung","insertTable":"Tabelle einfügen/bearbeiten","print":"Drucken","underline":"Unterstrichen","foreColor":"Vordergrundfarbe","htmlToggle":"HTML-Quelltext","formatBlock":"Absatzstil","newPage":"Neue Seite","insertHorizontalRule":"Horizontaler Strich","delete":"Löschen","insertUnorderedList":"Aufzählungszeichen","tableProp":"Tabelleneigenschaft","insertImage":"Grafik einfügen","superscript":"Hochgestellt","subscript":"Tiefgestellt","createLink":"Link erstellen","undo":"Rückgängig","fullScreen":"Gesamtanzeige","italic":"Kursiv","fontName":"Schriftartname","justifyLeft":"Linksbündig","unlink":"Link entfernen","toggleTableBorder":"Tabellenumrandung ein-/ausschalten","viewSource":"HTML-Quelle","ctrlKey":"Strg+${0}","fontSize":"Schriftgröße","systemShortcut":"Die Aktion \"${0}\" ist nur über einen Direktaufruf in Ihrem Browser verfügbar. Verwenden Sie ${1}.","indent":"Einrücken","redo":"Wiederherstellen","strikethrough":"Durchgestrichen","justifyFull":"Blocksatz","justifyCenter":"Zentriert","hiliteColor":"Hintergrundfarbe","deleteTable":"Tabelle löschen","outdent":"Ausrücken","cut":"Ausschneiden","plainFormatBlock":"Absatzstil","toggleDir":"Wechselrichtung","bold":"Fett","tabIndent":"Tabulatoreinrückung","justifyRight":"Rechtsbündig","appleKey":"⌘${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.de_de");dijit._editor.nls.FontChoice.de_de={"1":"XXS","2":"XS","formatBlock":"Format","3":"S","4":"M","5":"L","6":"XL","7":"XXL","fantasy":"Fantasie","serif":"Serife","p":"Absatz","pre":"Vorformatiert","sans-serif":"Serifenlos","fontName":"Schriftart","h1":"Überschrift","h2":"Unterüberschrift","h3":"Unterunterüberschrift","monospace":"Monospaceschrift","fontSize":"Größe","cursive":"Kursiv","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.de_de");dijit._editor.nls.LinkDialog.de_de={"text":"Beschreibung:","insertImageTitle":"Grafikeigenschaften","set":"Festlegen","newWindow":"Neues Fenster","topWindow":"Aktives Fenster","target":"Ziel:","createLinkTitle":"Linkeigenschaften","parentWindow":"Übergeordnetes Fenster","currentWindow":"Aktuelles Fenster","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.de_de");dojo.cldr.nls.currency.de_de={"HKD_displayName":"Hongkong-Dollar","CHF_displayName":"Schweizer Franken","JPY_symbol":"¥","CAD_displayName":"Kanadischer Dollar","CNY_displayName":"Renminbi Yuan","USD_symbol":"$","AUD_displayName":"Australischer Dollar","JPY_displayName":"Yen","USD_displayName":"US-Dollar","GBP_displayName":"Pfund Sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.de_de");dojo.cldr.nls.gregorian.de_de={"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"Wochentag","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE, d.M.y","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["v. Chr.","n. Chr."],"dayPeriods-format-wide-earlyMorning":"morgens","dayPeriods-format-wide-morning":"vormittags","dateFormat-long":"d. MMMM y","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"dayPeriods-format-wide-evening":"abends","dateFormatItem-EEEd":"d. EEE","dayPeriods-format-wide-pm":"nachm.","dateFormat-full":"EEEE, d. MMMM y","dateFormatItem-Md":"d.M.","dateFormatItem-yyMMdd":"dd.MM.yy","dayPeriods-format-wide-noon":"Mittag","field-era":"Epoche","dateFormatItem-yM":"M.y","months-standAlone-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"timeFormat-long":"HH:mm:ss z","field-year":"Jahr","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"Stunde","dateFormatItem-MMdd":"dd.MM.","months-format-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"heute","field-day-relative+1":"morgen","field-day-relative+2":"übermorgen","dateFormatItem-H":"HH","field-day-relative+3":"überübermorgen","months-standAlone-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-M":"L","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","eraAbbr":["v. Chr.","n. Chr."],"field-minute":"Minute","field-dayperiod":"Tageshälfte","days-standAlone-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dayPeriods-format-wide-night":"nachts","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-day-relative+-3":"vorvorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","field-day":"Tag","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-zone":"Zone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM.yy","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"eraNames":["v. Chr.","n. Chr."],"days-format-narrow":["S","M","D","M","D","F","S"],"field-month":"Monat","days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"vorm.","dateFormatItem-MMMMdd":"dd. MMMM","dateFormat-short":"dd.MM.yy","dateFormatItem-MMd":"d.MM.","dayPeriods-format-wide-afternoon":"nachmittags","field-second":"Sekunde","dateFormatItem-yMMMEd":"EEE, d. MMM y","dateFormatItem-Ed":"E d.","field-week":"Woche","dateFormat-medium":"dd.MM.yyyy","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyyy":"y","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_de.js b/lib/dijit/nls/dijit-all_de.js
new file mode 100644 (file)
index 0000000..196dbf3
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_de");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.de");dojo.nls.colors.de={"lightsteelblue":"Helles Stahlblau","orangered":"Orangerot","midnightblue":"Mitternachtblau","cadetblue":"Kadettenblau","seashell":"Muschelweiß","slategrey":"Schiefergrau","coral":"Koralle","darkturquoise":"Dunkeltürkis","antiquewhite":"Antikweiß","mediumspringgreen":"Mittelfrühlingsgrün","salmon":"Lachs","darkgrey":"Dunkelgrau","ivory":"Elfenbein","greenyellow":"Grüngelb","mistyrose":"Blassrose","lightsalmon":"Helllachs","silver":"Silbergrau","dimgrey":"Blassgrau","orange":"Orange","white":"Weiß","navajowhite":"Navajo-weiß","royalblue":"Königsblau","deeppink":"Tiefrosa","lime":"Limone","oldlace":"Alte Spitze","chartreuse":"Helles Gelbgrün","darkcyan":"Dunkelzyan","yellow":"Gelb","linen":"Leinen","olive":"Oliv","gold":"Gold","lawngreen":"Grasgrün","lightyellow":"Hellgelb","tan":"Hautfarben","darkviolet":"Dunkelviolett","lightslategrey":"Helles Schiefergrau","grey":"Grau","darkkhaki":"Dunkelkhaki","green":"Grün","deepskyblue":"Dunkles Himmelblau","aqua":"Wasserblau","sienna":"Sienna","mintcream":"Mintcreme","rosybrown":"Rosigbraun","mediumslateblue":"Mittelschieferblau ","magenta":"Magenta","lightseagreen":"Helles Meergrün","cyan":"Zyan","olivedrab":"Olivgrau","darkgoldenrod":"Dunkelgoldgelb","slateblue":"Schieferblau","mediumaquamarine":"Mittelaquamarin","lavender":"Lavendelblau","mediumseagreen":"Mittelmeeresgrün","maroon":"Kastanienbraun","darkslategray":"Dunkelschiefergrau","mediumturquoise":"Mitteltürkis ","ghostwhite":"Geisterweiß","darkblue":"Dunkelblau","mediumvioletred":"Mittelviolettrot ","brown":"Braun","lightgray":"Hellgrau","sandybrown":"Sandbraun","pink":"Rosa","firebrick":"Schamottestein","indigo":"Indigoblau","snow":"Schneeweiß","darkorchid":"Dunkelorchidee","turquoise":"Türkis","chocolate":"Schokoladenbraun","springgreen":"Frühlingsgrün","moccasin":"Mokassin","navy":"Marineblau","lemonchiffon":"Zitronenchiffon","teal":"Smaragdgrün","floralwhite":"Blütenweiß","cornflowerblue":"Kornblumenblau","paleturquoise":"Blasstürkis","purple":"Purpurrot","gainsboro":"Gainsboro","plum":"Pflaume","red":"Rot","blue":"Blau","forestgreen":"Forstgrün","darkgreen":"Dunkelgrün","honeydew":"Honigtau","darkseagreen":"Dunkles Meergrün","lightcoral":"Hellkoralle","palevioletred":"Blassviolettrot ","mediumpurple":"Mittelpurpur","saddlebrown":"Sattelbraun","darkmagenta":"Dunkelmagenta","thistle":"Distel","whitesmoke":"Rauchweiß","wheat":"Weizen","violet":"Violett","lightskyblue":"Helles Himmelblau","goldenrod":"Goldgelb","mediumblue":"Mittelblau","skyblue":"Himmelblau","crimson":"Karmesinrot","darksalmon":"Dunkellachs","darkred":"Dunkelrot","darkslategrey":"Dunkelschiefergrau","peru":"Peru","lightgrey":"Hellgrau","lightgoldenrodyellow":"Hellgoldgelb","blanchedalmond":"Mandelweiß","aliceblue":"Alice-blau","bisque":"Bisquit","slategray":"Schiefergrau","palegoldenrod":"Blassgoldgelb","darkorange":"Dunkelorange","aquamarine":"Aquamarin","lightgreen":"Hellgrün","burlywood":"Burlywood","dodgerblue":"Dodger-blau","darkgray":"Dunkelgrau","lightcyan":"Hellzyan","powderblue":"Pulverblau","blueviolet":"Blauviolett","orchid":"Orchidee","dimgray":"Blassgrau","beige":"Beige","fuchsia":"Fuchsia","lavenderblush":"Lavendelhauch","hotpink":"Knallrosa","steelblue":"Stahlblau","tomato":"Tomatenrot","lightpink":"Hellrosa","limegreen":"Limonengrün","indianred":"Indischrot","papayawhip":"Papayacreme","lightslategray":"Helles Schiefergrau","gray":"Grau","mediumorchid":"Mittelorchidee","cornsilk":"Kornseide","black":"Schwarz","seagreen":"Meeresgrün","darkslateblue":"Dunkelschieferblau","khaki":"Khaki","lightblue":"Hellblau","palegreen":"Blassgrün","azure":"Azur","peachpuff":"Pfirsich","darkolivegreen":"Dunkelolivgrün","yellowgreen":"Gelbgrün"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.de");dijit._editor.nls.commands.de={"removeFormat":"Formatierung entfernen","copy":"Kopieren","paste":"Einfügen","selectAll":"Alles auswählen","insertOrderedList":"Nummerierung","insertTable":"Tabelle einfügen/bearbeiten","print":"Drucken","underline":"Unterstrichen","foreColor":"Vordergrundfarbe","htmlToggle":"HTML-Quelltext","formatBlock":"Absatzstil","newPage":"Neue Seite","insertHorizontalRule":"Horizontaler Strich","delete":"Löschen","insertUnorderedList":"Aufzählungszeichen","tableProp":"Tabelleneigenschaft","insertImage":"Grafik einfügen","superscript":"Hochgestellt","subscript":"Tiefgestellt","createLink":"Link erstellen","undo":"Rückgängig","fullScreen":"Gesamtanzeige","italic":"Kursiv","fontName":"Schriftartname","justifyLeft":"Linksbündig","unlink":"Link entfernen","toggleTableBorder":"Tabellenumrandung ein-/ausschalten","viewSource":"HTML-Quelle","ctrlKey":"Strg+${0}","fontSize":"Schriftgröße","systemShortcut":"Die Aktion \"${0}\" ist nur über einen Direktaufruf in Ihrem Browser verfügbar. Verwenden Sie ${1}.","indent":"Einrücken","redo":"Wiederherstellen","strikethrough":"Durchgestrichen","justifyFull":"Blocksatz","justifyCenter":"Zentriert","hiliteColor":"Hintergrundfarbe","deleteTable":"Tabelle löschen","outdent":"Ausrücken","cut":"Ausschneiden","plainFormatBlock":"Absatzstil","toggleDir":"Wechselrichtung","bold":"Fett","tabIndent":"Tabulatoreinrückung","justifyRight":"Rechtsbündig","appleKey":"⌘${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.de");dijit._editor.nls.FontChoice.de={"1":"XXS","2":"XS","formatBlock":"Format","3":"S","4":"M","5":"L","6":"XL","7":"XXL","fantasy":"Fantasie","serif":"Serife","p":"Absatz","pre":"Vorformatiert","sans-serif":"Serifenlos","fontName":"Schriftart","h1":"Überschrift","h2":"Unterüberschrift","h3":"Unterunterüberschrift","monospace":"Monospaceschrift","fontSize":"Größe","cursive":"Kursiv","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.de");dijit._editor.nls.LinkDialog.de={"text":"Beschreibung:","insertImageTitle":"Grafikeigenschaften","set":"Festlegen","newWindow":"Neues Fenster","topWindow":"Aktives Fenster","target":"Ziel:","createLinkTitle":"Linkeigenschaften","parentWindow":"Übergeordnetes Fenster","currentWindow":"Aktuelles Fenster","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.de");dojo.cldr.nls.currency.de={"HKD_displayName":"Hongkong-Dollar","CHF_displayName":"Schweizer Franken","JPY_symbol":"¥","CAD_displayName":"Kanadischer Dollar","CNY_displayName":"Renminbi Yuan","USD_symbol":"$","AUD_displayName":"Australischer Dollar","JPY_displayName":"Yen","USD_displayName":"US-Dollar","GBP_displayName":"Pfund Sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.de");dojo.cldr.nls.gregorian.de={"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"Wochentag","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE, d.M.y","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["v. Chr.","n. Chr."],"dayPeriods-format-wide-earlyMorning":"morgens","dayPeriods-format-wide-morning":"vormittags","dateFormat-long":"d. MMMM y","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"dayPeriods-format-wide-evening":"abends","dateFormatItem-EEEd":"d. EEE","dayPeriods-format-wide-pm":"nachm.","dateFormat-full":"EEEE, d. MMMM y","dateFormatItem-Md":"d.M.","dateFormatItem-yyMMdd":"dd.MM.yy","dayPeriods-format-wide-noon":"Mittag","field-era":"Epoche","dateFormatItem-yM":"M.y","months-standAlone-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"timeFormat-long":"HH:mm:ss z","field-year":"Jahr","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"Stunde","dateFormatItem-MMdd":"dd.MM.","months-format-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"heute","field-day-relative+1":"morgen","field-day-relative+2":"übermorgen","dateFormatItem-H":"HH","field-day-relative+3":"überübermorgen","months-standAlone-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-M":"L","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","eraAbbr":["v. Chr.","n. Chr."],"field-minute":"Minute","field-dayperiod":"Tageshälfte","days-standAlone-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dayPeriods-format-wide-night":"nachts","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-day-relative+-3":"vorvorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","field-day":"Tag","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-zone":"Zone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM.yy","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"eraNames":["v. Chr.","n. Chr."],"days-format-narrow":["S","M","D","M","D","F","S"],"field-month":"Monat","days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"vorm.","dateFormatItem-MMMMdd":"dd. MMMM","dateFormat-short":"dd.MM.yy","dateFormatItem-MMd":"d.MM.","dayPeriods-format-wide-afternoon":"nachmittags","field-second":"Sekunde","dateFormatItem-yMMMEd":"EEE, d. MMM y","dateFormatItem-Ed":"E d.","field-week":"Woche","dateFormat-medium":"dd.MM.yyyy","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyyy":"y","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_el.js b/lib/dijit/nls/dijit-all_el.js
new file mode 100644 (file)
index 0000000..a9f2945
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_el");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.el");dojo.nls.colors.el={"lightsteelblue":"ανοιχτό μπλε ατσαλιού","orangered":"πορτοκαλοκόκκινο","midnightblue":"πολύ σκούρο μπλε","cadetblue":"μπλε του στρατού","seashell":"κοχύλι","slategrey":"μεταλλικό γκρι","coral":"κοραλί","darkturquoise":"σκούρο τυρκουάζ","antiquewhite":"ξεθωριασμένο λευκό","mediumspringgreen":"μεσαίο πράσινο της άνοιξης","salmon":"σομόν","darkgrey":"σκούρο γκρι","ivory":"ιβουάρ","greenyellow":"πρασινοκίτρινο","mistyrose":"τριανταφυλλί","lightsalmon":"ανοιχτό σομόν","silver":"ασημί","dimgrey":"αχνό γκρι","orange":"πορτοκαλί","white":"λευκό","navajowhite":"άσπρο Ναβάχο","royalblue":"έντονο μπλε","deeppink":"βαθύ ροζ","lime":"λαχανί","oldlace":"εκρού","chartreuse":"φωτεινό κιτρινοπράσινο","darkcyan":"σκούρο κυανό","yellow":"κίτρινο","linen":"σπαγγί","olive":"πράσινο λαδί","gold":"χρυσαφί","lawngreen":"σκούρο πράσινο","lightyellow":"ανοιχτό κίτρινο","tan":"ώχρα","darkviolet":"σκούρο βιολετί","lightslategrey":"ανοιχτό μεταλλικό γκρι","grey":"γκρι","darkkhaki":"σκούρο χακί","green":"πράσινο","deepskyblue":"βαθύ μπλε το ουρανού","aqua":"γαλάζιο","sienna":"καφεκίτρινο","mintcream":"βεραμάν","rosybrown":"καστανό","mediumslateblue":"μεσαίο μεταλλικό μπλε","magenta":"ματζέντα","lightseagreen":"ανοιχτό πράσινο της θάλασσας","cyan":"κυανό","olivedrab":"λαδί","darkgoldenrod":"σκούρο χρυσοκίτρινο","slateblue":"μεταλλικό μπλε","mediumaquamarine":"μεσαίο γαλαζοπράσινο","lavender":"λίλα","mediumseagreen":"μεσαίο πράσινο της θάλασσας","maroon":"βυσσινί","darkslategray":"σκούρο μεταλλικό γκρι","mediumturquoise":"μεσαίο τυρκουάζ","ghostwhite":"άσπρο","darkblue":"σκούρο μπλε","mediumvioletred":"μεσαίο κόκκινο βιολετί","brown":"καφέ","lightgray":"ανοιχτό γκρι","sandybrown":"μπεζ της άμμου","pink":"ροζ","firebrick":"κεραμιδί","indigo":"λουλακί","snow":"χιονί","darkorchid":"σκούρα ορχιδέα","turquoise":"τυρκουάζ","chocolate":"σοκολατί","springgreen":"πράσινο της άνοιξης","moccasin":"μόκα","navy":"μπλε του ναυτικού","lemonchiffon":"λεμονί","teal":"πετρόλ","floralwhite":"λευκό των ανθών","cornflowerblue":"μεσαίο μπλε","paleturquoise":"αχνό τυρκουάζ","purple":"μωβ","gainsboro":"γκρι σιέλ","plum":"δαμασκηνί","red":"κόκκινο","blue":"μπλε","forestgreen":"πράσινο του δάσους","darkgreen":"σκούρο πράσινο","honeydew":"μελί","darkseagreen":"σκούρο πράσινο της θάλασσας","lightcoral":"ανοιχτό κοραλί","palevioletred":"αχνό κόκκινο βιολετί","mediumpurple":"μεσαίο μωβ","saddlebrown":"βαθύ καφέ","darkmagenta":"σκούρο ματζέντα","thistle":"μωβ βιολετί","whitesmoke":"λευκός καπνός","wheat":"σταρένιο","violet":"βιολετί","lightskyblue":"ανοιχτό μπλε το ουρανού","goldenrod":"χρυσοκίτρινο","mediumblue":"μεσαίο μπλε","skyblue":"μπλε του ουρανού","crimson":"βαθύ κόκκινο","darksalmon":"σκούρο σομόν","darkred":"σκούρο κόκκινο","darkslategrey":"σκούρο μεταλλικό γκρι","peru":"περού","lightgrey":"ανοιχτό γκρι","lightgoldenrodyellow":"ανοιχτό χρυσοκίτρινο","blanchedalmond":"ζαχαρί","aliceblue":"σιέλ","bisque":"σκούρο κρεμ","slategray":"μεταλλικό γκρι","palegoldenrod":"αχνό χρυσοκίτρινο","darkorange":"σκούρο πορτοκαλί","aquamarine":"γαλαζοπράσινο","lightgreen":"ανοιχτό πράσινο","burlywood":"καφέ του ξύλου","dodgerblue":"σκούρο ελεκτρίκ","darkgray":"σκούρο γκρι","lightcyan":"ανοιχτό κυανό","powderblue":"αχνό μπλε","blueviolet":"βιολετί","orchid":"ορχιδέα","dimgray":"αχνό γκρι","beige":"μπεζ","fuchsia":"φούξια","lavenderblush":"μωβ λεβάντας","hotpink":"έντονο ροζ","steelblue":"μπλε ατσαλιού","tomato":"κόκκινο της ντομάτας","lightpink":"ανοιχτό ροζ","limegreen":"πράσινο λαχανί","indianred":"ινδικό κόκκινο","papayawhip":"αχνό ροζ","lightslategray":"ανοιχτό μεταλλικό γκρι","gray":"γκρι","mediumorchid":"μεσαία ορχιδέα","cornsilk":"ασημί του καλαμποκιού","black":"μαύρο","seagreen":"πράσινο της θάλασσας","darkslateblue":"σκούρο μεταλλικό μπλε","khaki":"χακί","lightblue":"ανοιχτό μπλε","palegreen":"αχνό πράσινο","azure":"μπλε του ουρανού","peachpuff":"ροδακινί","darkolivegreen":"σκούρο πράσινο λαδί","yellowgreen":"κιτρινοπράσινο"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.el");dijit._editor.nls.commands.el={"removeFormat":"Αφαίρεση μορφοποίησης","copy":"Αντιγραφή","paste":"Επικόλληση","selectAll":"Επιλογή όλων","insertOrderedList":"Αριθμημένη λίστα","insertTable":"Εισαγωγή/Τροποποίηση πίνακα","print":"Εκτύπωση","underline":"Υπογράμμιση","foreColor":"Χρώμα προσκηνίου","htmlToggle":"Πρωτογενής κώδικας HTML","formatBlock":"Στυλ παραγράφου","newPage":"Νέα σελίδα","insertHorizontalRule":"Οριζόντια γραμμή","delete":"Διαγραφή","insertUnorderedList":"Λίστα με κουκίδες","tableProp":"Ιδιότητα πίνακα","insertImage":"Εισαγωγή εικόνας","superscript":"Εκθέτης","subscript":"Δείκτης","createLink":"Δημιουργία σύνδεσης","undo":"Αναίρεση","fullScreen":"Εναλλαγή κατάστασης πλήρους οθόνης","italic":"Πλάγια","fontName":"Όνομα γραμματοσειράς","justifyLeft":"Στοίχιση αριστερά","unlink":"Αφαίρεση σύνδεσης","toggleTableBorder":"Εναλλαγή εμφάνισης περιγράμματος πίνακα","viewSource":"Προβολή προέλευσης HTML","fontSize":"Μέγεθος γραμματοσειράς","systemShortcut":"Σε αυτό το πρόγραμμα πλοήγησης, η ενέργεια \"${0}\" είναι διαθέσιμη μόνο με τη χρήση μιας συντόμευσης πληκτρολογίου. Χρησιμοποιήστε τη συντόμευση ${1}.","indent":"Εσοχή","redo":"Ακύρωση αναίρεσης","strikethrough":"Διαγράμμιση","justifyFull":"Πλήρης στοίχιση","justifyCenter":"Στοίχιση στο κέντρο","hiliteColor":"Χρώμα φόντου","deleteTable":"Διαγραφή πίνακα","outdent":"Μείωση περιθωρίου","cut":"Αποκοπή","plainFormatBlock":"Στυλ παραγράφου","toggleDir":"Εναλλαγή κατεύθυνσης","bold":"Έντονα","tabIndent":"Εσοχή με το πλήκτρο Tab","justifyRight":"Στοίχιση δεξιά","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.el");dijit._editor.nls.FontChoice.el={"1":"xx-μικρά","2":"x-μικρά","formatBlock":"Μορφή","3":"μικρά","4":"μεσαία","5":"μεγάλα","6":"x-μεγάλα","7":"xx-μεγάλα","fantasy":"φαντασίας","serif":"με πατούρες (serif)","p":"Παράγραφος","pre":"Προ-μορφοποιημένο","sans-serif":"χωρίς πατούρες (sans-serif)","fontName":"Γραμματοσειρά","h1":"Επικεφαλίδα","h2":"Δευτερεύουσα επικεφαλίδα","h3":"Δευτερεύουσα επικεφαλίδα τρίτου επιπέδου","monospace":"σταθερού πλάτους","fontSize":"Μέγεθος","cursive":"πλάγιοι","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.el");dijit._editor.nls.LinkDialog.el={"text":"Περιγραφή:","insertImageTitle":"Ιδιότητες εικόνας","set":"Ορισμός","newWindow":"Νέο παράθυρο","topWindow":"Παράθυρο σε πρώτο πλάνο","target":"Προορισμός:","createLinkTitle":"Ιδιότητες σύνδεσης","parentWindow":"Γονικό παράθυρο","currentWindow":"Τρέχον παράθυρο","url":"Διεύθυνση URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","decimalFormat":"#,##0.###","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.el");dojo.cldr.nls.currency.el={"HKD_displayName":"Δολάριο Χονγκ Κονγκ","CHF_displayName":"Φράγκο Ελβετίας","CAD_displayName":"Δολάριο Καναδά","CNY_displayName":"Γιουάν Ρενμίμπι Κίνας","AUD_displayName":"Δολάριο Αυστραλίας","JPY_displayName":"Γιεν Ιαπωνίας","USD_displayName":"Δολάριο ΗΠΑ","GBP_displayName":"Λίρα Στερλίνα Βρετανίας","EUR_displayName":"Ευρώ","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.el");dojo.cldr.nls.gregorian.el={"months-format-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"field-weekday":"Ημέρα εβδομάδας","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, d/M/yyyy","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["π.Χ.","μ.Χ."],"dateFormat-long":"d MMMM y","months-format-wide":["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαΐου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"μ.μ.","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"d/M","field-era":"Περίοδος","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],"timeFormat-short":"h:mm a","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"timeFormat-long":"h:mm:ss a z","field-year":"Έτος","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"y Q","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"Ώρα","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"Σήμερα","field-day-relative+1":"Αύριο","field-day-relative+2":"Μεθαύριο","dateFormatItem-H":"HH","field-day-relative+3":"Σε τρεις ημέρες από τώρα","months-standAlone-abbr":["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],"quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"dateFormatItem-MMMMd":"d MMMM","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"h:mm:ss a","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"eraAbbr":["π.Χ.","μ.Χ."],"field-minute":"Λεπτό","field-dayperiod":"π.μ./μ.μ.","days-standAlone-abbr":["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"Χθες","field-day-relative+-2":"Προχθές","field-day-relative+-3":"Πριν από τρεις ημέρες","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateFormatItem-yMMMM":"LLLL y","field-day":"Ημέρα","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-zone":"Ζώνη","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"dateFormatItem-yyMM":"MM/yy","days-format-abbr":["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],"eraNames":["π.Χ.","μ.Χ."],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"field-month":"Μήνας","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dateFormatItem-MMM":"LLL","dateFormatItem-HHmm":"HH:mm","dayPeriods-format-wide-am":"π.μ.","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-MMMMdd":"dd MMMM","dateFormat-short":"d/M/yy","field-second":"Δευτερόλεπτο","dateFormatItem-yMMMEd":"EEE, d MMM y","dateFormatItem-Ed":"E d","field-week":"Εβδομάδα","dateFormat-medium":"d MMM y","dateFormatItem-mmss":"mm:ss","dateFormatItem-yyyy":"y","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_en-gb.js b/lib/dijit/nls/dijit-all_en-gb.js
new file mode 100644 (file)
index 0000000..a66fb43
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_en-gb");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.en_gb");dojo.nls.colors.en_gb={"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.en_gb");dijit._editor.nls.commands.en_gb={"removeFormat":"Remove Format","copy":"Copy","paste":"Paste","selectAll":"Select All","insertOrderedList":"Numbered List","insertTable":"Insert/Edit Table","print":"Print","underline":"Underline","foreColor":"Foreground Color","htmlToggle":"HTML Source","formatBlock":"Paragraph Style","newPage":"New Page","insertHorizontalRule":"Horizontal Rule","delete":"Delete","appleKey":"⌘${0}","insertUnorderedList":"Bullet List","tableProp":"Table Property","insertImage":"Insert Image","superscript":"Superscript","subscript":"Subscript","createLink":"Create Link","undo":"Undo","fullScreen":"Toggle Full Screen","italic":"Italic","fontName":"Font Name","justifyLeft":"Align Left","unlink":"Remove Link","toggleTableBorder":"Toggle Table Border","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}","fontSize":"Font Size","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","indent":"Indent","redo":"Redo","strikethrough":"Strikethrough","justifyFull":"Justify","justifyCenter":"Align Center","hiliteColor":"Background Color","deleteTable":"Delete Table","outdent":"Outdent","cut":"Cut","plainFormatBlock":"Paragraph Style","toggleDir":"Toggle Direction","bold":"Bold","tabIndent":"Tab Indent","justifyRight":"Align Right"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.en_gb");dijit._editor.nls.FontChoice.en_gb={"noFormat":"None","1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragraph","pre":"Pre-formatted","sans-serif":"sans-serif","fontName":"Font","h1":"Heading","h2":"Subheading","h3":"Sub-subheading","monospace":"monospace","fontSize":"Size","cursive":"cursive"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.en_gb");dijit._editor.nls.LinkDialog.en_gb={"text":"Description:","insertImageTitle":"Image Properties","set":"Set","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","createLinkTitle":"Link Properties","parentWindow":"Parent Window","currentWindow":"Current Window","url":"URL:"};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":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.en_gb");dojo.cldr.nls.currency.en_gb={"HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","JPY_symbol":"¥","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","USD_symbol":"$","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","USD_displayName":"US Dollar","GBP_displayName":"British Pound Sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.en_gb");dojo.cldr.nls.gregorian.en_gb={"dateFormatItem-yyMMM":"MMM yy","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"EEE, d/M/yyyy","dateFormatItem-yyyyMMMM":"MMMM y","timeFormat-full":"HH:mm:ss zzzz","timeFormat-medium":"HH:mm:ss","dateFormatItem-MEd":"E, d/M","dateFormat-medium":"d MMM y","dateFormatItem-MMdd":"dd/MM","dateFormatItem-yyyyMM":"MM/yyyy","dateFormat-full":"EEEE, d MMMM y","timeFormat-long":"HH:mm:ss z","timeFormat-short":"HH:mm","dateFormat-short":"dd/MM/yyyy","dateFormatItem-MMMMd":"d MMMM","dateFormat-long":"d MMMM y","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yM":"M/y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"PM","field-minute":"Minute","eraNames":["Before Christ","Anno Domini"],"dateTimeFormat-full":"{1} {0}","field-day-relative+-1":"Yesterday","field-weekday":"Day of the Week","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateTimeFormat-short":"{1} {0}","field-era":"Era","field-hour":"Hour","dayPeriods-format-wide-am":"AM","dateTimeFormat-medium":"{1} {0}","dateFormatItem-y":"y","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","days-standAlone-narrow":["S","M","T","W","T","F","S"],"eraAbbr":["BC","AD"],"dateFormatItem-EEEd":"d EEE","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-ms":"mm:ss","field-year":"Year","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","field-week":"Week","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-MMMd":"MMM d","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-format-wide-noon":"noon","field-month":"Month","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","field-day":"Day","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yMMMEd":"EEE, MMM d, y","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-d":"d","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"eraNarrow":["B","A"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/dijit-all_en-us.js b/lib/dijit/nls/dijit-all_en-us.js
new file mode 100644 (file)
index 0000000..2c6e1b0
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_en-us");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.en_us");dojo.nls.colors.en_us={"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.en_us");dijit._editor.nls.commands.en_us={"removeFormat":"Remove Format","copy":"Copy","paste":"Paste","selectAll":"Select All","insertOrderedList":"Numbered List","insertTable":"Insert/Edit Table","print":"Print","underline":"Underline","foreColor":"Foreground Color","htmlToggle":"HTML Source","formatBlock":"Paragraph Style","newPage":"New Page","insertHorizontalRule":"Horizontal Rule","delete":"Delete","appleKey":"⌘${0}","insertUnorderedList":"Bullet List","tableProp":"Table Property","insertImage":"Insert Image","superscript":"Superscript","subscript":"Subscript","createLink":"Create Link","undo":"Undo","fullScreen":"Toggle Full Screen","italic":"Italic","fontName":"Font Name","justifyLeft":"Align Left","unlink":"Remove Link","toggleTableBorder":"Toggle Table Border","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}","fontSize":"Font Size","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","indent":"Indent","redo":"Redo","strikethrough":"Strikethrough","justifyFull":"Justify","justifyCenter":"Align Center","hiliteColor":"Background Color","deleteTable":"Delete Table","outdent":"Outdent","cut":"Cut","plainFormatBlock":"Paragraph Style","toggleDir":"Toggle Direction","bold":"Bold","tabIndent":"Tab Indent","justifyRight":"Align Right"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.en_us");dijit._editor.nls.FontChoice.en_us={"noFormat":"None","1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragraph","pre":"Pre-formatted","sans-serif":"sans-serif","fontName":"Font","h1":"Heading","h2":"Subheading","h3":"Sub-subheading","monospace":"monospace","fontSize":"Size","cursive":"cursive"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.en_us");dijit._editor.nls.LinkDialog.en_us={"text":"Description:","insertImageTitle":"Image Properties","set":"Set","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","createLinkTitle":"Link Properties","parentWindow":"Parent Window","currentWindow":"Current Window","url":"URL:"};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":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.en_us");dojo.cldr.nls.currency.en_us={"HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","JPY_symbol":"¥","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","USD_symbol":"$","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","USD_displayName":"US Dollar","GBP_displayName":"British Pound Sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.en_us");dojo.cldr.nls.gregorian.en_us={"dateFormatItem-yM":"M/y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"PM","field-minute":"Minute","eraNames":["Before Christ","Anno Domini"],"dateFormatItem-MMMEd":"E, MMM d","dateTimeFormat-full":"{1} {0}","field-day-relative+-1":"Yesterday","field-weekday":"Day of the Week","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateTimeFormat-short":"{1} {0}","field-era":"Era","field-hour":"Hour","dayPeriods-format-wide-am":"AM","dateTimeFormat-medium":"{1} {0}","dateFormatItem-y":"y","timeFormat-full":"h:mm:ss a zzzz","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","days-standAlone-narrow":["S","M","T","W","T","F","S"],"eraAbbr":["BC","AD"],"dateFormat-long":"MMMM d, y","timeFormat-medium":"h:mm:ss a","dateFormatItem-EEEd":"d EEE","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"MMM d, y","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-ms":"mm:ss","field-year":"Year","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","field-week":"Week","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-MMMd":"MMM d","timeFormat-long":"h:mm:ss a z","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-format-wide-noon":"noon","timeFormat-short":"h:mm a","field-month":"Month","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","field-day":"Day","dateFormatItem-MEd":"E, M/d","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormat-short":"M/d/yy","dateFormatItem-yMMMEd":"EEE, MMM d, y","dateFormat-full":"EEEE, MMMM d, y","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"EEE, M/d/y","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-d":"d","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"eraNarrow":["B","A"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/dijit-all_en.js b/lib/dijit/nls/dijit-all_en.js
new file mode 100644 (file)
index 0000000..0ae531f
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_en");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.en");dojo.nls.colors.en={"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.en");dijit._editor.nls.commands.en={"removeFormat":"Remove Format","copy":"Copy","paste":"Paste","selectAll":"Select All","insertOrderedList":"Numbered List","insertTable":"Insert/Edit Table","print":"Print","underline":"Underline","foreColor":"Foreground Color","htmlToggle":"HTML Source","formatBlock":"Paragraph Style","newPage":"New Page","insertHorizontalRule":"Horizontal Rule","delete":"Delete","appleKey":"⌘${0}","insertUnorderedList":"Bullet List","tableProp":"Table Property","insertImage":"Insert Image","superscript":"Superscript","subscript":"Subscript","createLink":"Create Link","undo":"Undo","fullScreen":"Toggle Full Screen","italic":"Italic","fontName":"Font Name","justifyLeft":"Align Left","unlink":"Remove Link","toggleTableBorder":"Toggle Table Border","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}","fontSize":"Font Size","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","indent":"Indent","redo":"Redo","strikethrough":"Strikethrough","justifyFull":"Justify","justifyCenter":"Align Center","hiliteColor":"Background Color","deleteTable":"Delete Table","outdent":"Outdent","cut":"Cut","plainFormatBlock":"Paragraph Style","toggleDir":"Toggle Direction","bold":"Bold","tabIndent":"Tab Indent","justifyRight":"Align Right"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.en");dijit._editor.nls.FontChoice.en={"noFormat":"None","1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragraph","pre":"Pre-formatted","sans-serif":"sans-serif","fontName":"Font","h1":"Heading","h2":"Subheading","h3":"Sub-subheading","monospace":"monospace","fontSize":"Size","cursive":"cursive"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.en");dijit._editor.nls.LinkDialog.en={"text":"Description:","insertImageTitle":"Image Properties","set":"Set","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","createLinkTitle":"Link Properties","parentWindow":"Parent Window","currentWindow":"Current Window","url":"URL:"};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":"+","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.en");dojo.cldr.nls.currency.en={"HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","JPY_symbol":"¥","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","USD_symbol":"$","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","USD_displayName":"US Dollar","GBP_displayName":"British Pound Sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.en");dojo.cldr.nls.gregorian.en={"dateFormatItem-yM":"M/y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"PM","field-minute":"Minute","eraNames":["Before Christ","Anno Domini"],"dateFormatItem-MMMEd":"E, MMM d","dateTimeFormat-full":"{1} {0}","field-day-relative+-1":"Yesterday","field-weekday":"Day of the Week","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateTimeFormat-short":"{1} {0}","field-era":"Era","field-hour":"Hour","dayPeriods-format-wide-am":"AM","dateTimeFormat-medium":"{1} {0}","dateFormatItem-y":"y","timeFormat-full":"h:mm:ss a zzzz","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","days-standAlone-narrow":["S","M","T","W","T","F","S"],"eraAbbr":["BC","AD"],"dateFormat-long":"MMMM d, y","timeFormat-medium":"h:mm:ss a","dateFormatItem-EEEd":"d EEE","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"MMM d, y","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-ms":"mm:ss","field-year":"Year","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","field-week":"Week","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-MMMd":"MMM d","timeFormat-long":"h:mm:ss a z","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-format-wide-noon":"noon","timeFormat-short":"h:mm a","field-month":"Month","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","field-day":"Day","dateFormatItem-MEd":"E, M/d","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormat-short":"M/d/yy","dateFormatItem-yMMMEd":"EEE, MMM d, y","dateFormat-full":"EEEE, MMMM d, y","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"EEE, M/d/y","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-d":"d","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"eraNarrow":["B","A"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/dijit-all_es-es.js b/lib/dijit/nls/dijit-all_es-es.js
new file mode 100644 (file)
index 0000000..a647048
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_es-es");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.es_es");dojo.nls.colors.es_es={"lightsteelblue":"azul acero claro","orangered":"rojo anaranjado","midnightblue":"azul medianoche","cadetblue":"azul cadete","seashell":"blanco marfil","slategrey":"gris pizarra","coral":"coral","darkturquoise":"turquesa oscuro","antiquewhite":"blanco antiguo","mediumspringgreen":"verde primavera medio","salmon":"salmón","darkgrey":"gris oscuro","ivory":"marfil","greenyellow":"amarillo verdoso","mistyrose":"rosa difuminado","lightsalmon":"salmón claro","silver":"plateado","dimgrey":"gris marengo","orange":"naranja","white":"blanco","navajowhite":"blanco navajo","royalblue":"azul real","deeppink":"rosa fuerte","lime":"lima","oldlace":"encaje antiguo","chartreuse":"verde pálido 2","darkcyan":"cian oscuro","yellow":"amarillo","linen":"blanco arena","olive":"verde oliva","gold":"oro","lawngreen":"verde césped","lightyellow":"amarillo claro","tan":"canela","darkviolet":"violeta oscuro","lightslategrey":"gris pizarra claro","grey":"gris","darkkhaki":"caqui oscuro","green":"verde","deepskyblue":"azul cielo fuerte","aqua":"aguamarina","sienna":"siena","mintcream":"crema menta","rosybrown":"marrón rosáceo","mediumslateblue":"azul pizarra medio","magenta":"magenta","lightseagreen":"verde mar claro","cyan":"cian","olivedrab":"verde oliva pardusco","darkgoldenrod":"ocre oscuro","slateblue":"azul pizarra","mediumaquamarine":"aguamarina medio","lavender":"lavanda","mediumseagreen":"verde mar medio","maroon":"granate","darkslategray":"gris pizarra oscuro","mediumturquoise":"turquesa medio","ghostwhite":"blanco ligero","darkblue":"azul oscuro","mediumvioletred":"rojo violáceo medio","brown":"marrón","lightgray":"gris claro","sandybrown":"marrón arcilla","pink":"rosa","firebrick":"teja","indigo":"añil","snow":"nieve","darkorchid":"orquídea oscuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde fuerte","moccasin":"arena","navy":"azul marino","lemonchiffon":"amarillo pastel","teal":"verde azulado","floralwhite":"blanco manteca","cornflowerblue":"azul aciano","paleturquoise":"turquesa pálido","purple":"púrpura","gainsboro":"azul gainsboro","plum":"ciruela","red":"rojo","blue":"azul","forestgreen":"verde pino","darkgreen":"verde oscuro","honeydew":"flor de rocío","darkseagreen":"verde mar oscuro","lightcoral":"coral claro","palevioletred":"rojo violáceo pálido","mediumpurple":"púrpura medio","saddlebrown":"cuero","darkmagenta":"magenta oscuro","thistle":"cardo","whitesmoke":"blanco ahumado","wheat":"trigo","violet":"violeta","lightskyblue":"azul cielo claro","goldenrod":"ocre","mediumblue":"azul medio","skyblue":"azul cielo","crimson":"carmesí","darksalmon":"salmón oscuro","darkred":"rojo oscuro","darkslategrey":"gris pizarra oscuro","peru":"perú","lightgrey":"gris claro","lightgoldenrodyellow":"ocre claro","blanchedalmond":"almendra pálido","aliceblue":"blanco azulado","bisque":"miel","slategray":"gris pizarra","palegoldenrod":"ocre pálido","darkorange":"naranja oscuro","aquamarine":"aguamarina 2","lightgreen":"verde claro","burlywood":"madera","dodgerblue":"azul fuerte","darkgray":"gris oscuro","lightcyan":"cian claro","powderblue":"azul suave","blueviolet":"azul violáceo","orchid":"orquídea","dimgray":"gris marengo","beige":"beige","fuchsia":"fucsia","lavenderblush":"lavanda rosácea","hotpink":"rosa oscuro","steelblue":"azul acero","tomato":"tomate","lightpink":"rosa claro","limegreen":"lima limón","indianred":"rojo teja","papayawhip":"papaya claro","lightslategray":"gris pizarra claro","gray":"gris","mediumorchid":"orquídea medio","cornsilk":"crudo","black":"negro","seagreen":"verde mar","darkslateblue":"azul pizarra oscuro","khaki":"caqui","lightblue":"azul claro","palegreen":"verde pálido","azure":"blanco cielo","peachpuff":"melocotón","darkolivegreen":"verde oliva oscuro","yellowgreen":"verde amarillento"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.es_es");dijit._editor.nls.commands.es_es={"removeFormat":"Eliminar formato","copy":"Copiar","paste":"Pegar","selectAll":"Seleccionar todo","insertOrderedList":"Lista numerada","insertTable":"Insertar/Editar tabla","print":"Imprimir","underline":"Subrayado","foreColor":"Color de primer plano","htmlToggle":"Fuente HTML","formatBlock":"Estilo de párrafo","newPage":"Nueva página","insertHorizontalRule":"Regla horizontal","delete":"Suprimir","insertUnorderedList":"Lista con viñetas","tableProp":"Propiedad de tabla","insertImage":"Insertar imagen","superscript":"Superíndice","subscript":"Subíndice","createLink":"Crear enlace","undo":"Deshacer","fullScreen":"Conmutar pantalla completa","italic":"Cursiva","fontName":"Nombre de font","justifyLeft":"Alinear izquierda","unlink":"Eliminar enlace","toggleTableBorder":"Conmutar borde de tabla","viewSource":"Ver fuente HTML","ctrlKey":"control+${0}","fontSize":"Tamaño de font","systemShortcut":"La acción \"${0}\" sólo está disponible en su navegador mediante un atajo de teclado. Utilice ${1}.","indent":"Sangría","redo":"Rehacer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinear centro","hiliteColor":"Color de segundo plano","deleteTable":"Suprimir tabla","outdent":"Anular sangría","cut":"Cortar","plainFormatBlock":"Estilo de párrafo","toggleDir":"Conmutar dirección","bold":"Negrita","tabIndent":"Sangría de tabulador","justifyRight":"Alinear derecha","appleKey":"⌘${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.es_es");dijit._editor.nls.FontChoice.es_es={"1":"xx-pequeño","2":"x-pequeño","formatBlock":"Formato","3":"pequeño","4":"medio","5":"grande","6":"x-grande","7":"xx-grande","fantasy":"fantasía","serif":"serif","p":"Párrafo","pre":"Preformateado","sans-serif":"sans-serif","fontName":"Font","h1":"Cabecera","h2":"Subcabecera","h3":"Sub-subcabecera","monospace":"espacio sencillo","fontSize":"Tamaño","cursive":"cursiva","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.es_es");dijit._editor.nls.LinkDialog.es_es={"text":"Descripción: ","insertImageTitle":"Propiedades de la imagen","set":"Establecer","newWindow":"Nueva ventana","topWindow":"Ventana superior","target":"Destino: ","createLinkTitle":"Propiedades del enlace","parentWindow":"Ventana padre","currentWindow":"Ventana actual","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.es_es");dojo.cldr.nls.currency.es_es={"HKD_displayName":"dólar de Hong Kong","CHF_displayName":"franco suizo","CAD_displayName":"dólar canadiense","CNY_displayName":"yuan renminbi chino","AUD_displayName":"dólar australiano","JPY_displayName":"yen japonés","USD_displayName":"dólar estadounidense","GBP_displayName":"libra esterlina británica","EUR_displayName":"euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.es_es");dojo.cldr.nls.gregorian.es_es={"months-format-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"día de la semana","dateFormatItem-yyQQQQ":"QQQQ 'de' yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d/M/y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["a.C.","d.C."],"dateFormatItem-MMMdd":"dd-MMM","dateFormat-long":"d 'de' MMMM 'de' y","months-format-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","field-era":"era","dateFormatItem-yM":"M/y","months-standAlone-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"año","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","field-hour":"hora","months-format-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"hoy","field-day-relative+1":"mañana","field-day-relative+2":"pasado mañana","field-day-relative+3":"Dentro de tres días","months-standAlone-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-MMMMd":"d 'de' MMMM","dateFormatItem-yyMMM":"MMM-yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a.C.","d.C."],"field-minute":"minuto","field-dayperiod":"periodo del día","days-standAlone-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ayer","dateFormatItem-h":"hh a","field-day-relative+-2":"antes de ayer","field-day-relative+-3":"Hace tres días","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateFormatItem-yMMMM":"MMMM 'de' y","field-day":"día","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-zone":"zona","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"eraNames":["antes de Cristo","anno Dómini"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-month":"mes","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"a.m.","dateFormat-short":"dd/MM/yy","dateFormatItem-MMd":"d/MM","field-second":"segundo","dateFormatItem-yMMMEd":"EEE, d MMM y","field-week":"semana","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_es.js b/lib/dijit/nls/dijit-all_es.js
new file mode 100644 (file)
index 0000000..616b3b0
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_es");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.es");dojo.nls.colors.es={"lightsteelblue":"azul acero claro","orangered":"rojo anaranjado","midnightblue":"azul medianoche","cadetblue":"azul cadete","seashell":"blanco marfil","slategrey":"gris pizarra","coral":"coral","darkturquoise":"turquesa oscuro","antiquewhite":"blanco antiguo","mediumspringgreen":"verde primavera medio","salmon":"salmón","darkgrey":"gris oscuro","ivory":"marfil","greenyellow":"amarillo verdoso","mistyrose":"rosa difuminado","lightsalmon":"salmón claro","silver":"plateado","dimgrey":"gris marengo","orange":"naranja","white":"blanco","navajowhite":"blanco navajo","royalblue":"azul real","deeppink":"rosa fuerte","lime":"lima","oldlace":"encaje antiguo","chartreuse":"verde pálido 2","darkcyan":"cian oscuro","yellow":"amarillo","linen":"blanco arena","olive":"verde oliva","gold":"oro","lawngreen":"verde césped","lightyellow":"amarillo claro","tan":"canela","darkviolet":"violeta oscuro","lightslategrey":"gris pizarra claro","grey":"gris","darkkhaki":"caqui oscuro","green":"verde","deepskyblue":"azul cielo fuerte","aqua":"aguamarina","sienna":"siena","mintcream":"crema menta","rosybrown":"marrón rosáceo","mediumslateblue":"azul pizarra medio","magenta":"magenta","lightseagreen":"verde mar claro","cyan":"cian","olivedrab":"verde oliva pardusco","darkgoldenrod":"ocre oscuro","slateblue":"azul pizarra","mediumaquamarine":"aguamarina medio","lavender":"lavanda","mediumseagreen":"verde mar medio","maroon":"granate","darkslategray":"gris pizarra oscuro","mediumturquoise":"turquesa medio","ghostwhite":"blanco ligero","darkblue":"azul oscuro","mediumvioletred":"rojo violáceo medio","brown":"marrón","lightgray":"gris claro","sandybrown":"marrón arcilla","pink":"rosa","firebrick":"teja","indigo":"añil","snow":"nieve","darkorchid":"orquídea oscuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde fuerte","moccasin":"arena","navy":"azul marino","lemonchiffon":"amarillo pastel","teal":"verde azulado","floralwhite":"blanco manteca","cornflowerblue":"azul aciano","paleturquoise":"turquesa pálido","purple":"púrpura","gainsboro":"azul gainsboro","plum":"ciruela","red":"rojo","blue":"azul","forestgreen":"verde pino","darkgreen":"verde oscuro","honeydew":"flor de rocío","darkseagreen":"verde mar oscuro","lightcoral":"coral claro","palevioletred":"rojo violáceo pálido","mediumpurple":"púrpura medio","saddlebrown":"cuero","darkmagenta":"magenta oscuro","thistle":"cardo","whitesmoke":"blanco ahumado","wheat":"trigo","violet":"violeta","lightskyblue":"azul cielo claro","goldenrod":"ocre","mediumblue":"azul medio","skyblue":"azul cielo","crimson":"carmesí","darksalmon":"salmón oscuro","darkred":"rojo oscuro","darkslategrey":"gris pizarra oscuro","peru":"perú","lightgrey":"gris claro","lightgoldenrodyellow":"ocre claro","blanchedalmond":"almendra pálido","aliceblue":"blanco azulado","bisque":"miel","slategray":"gris pizarra","palegoldenrod":"ocre pálido","darkorange":"naranja oscuro","aquamarine":"aguamarina 2","lightgreen":"verde claro","burlywood":"madera","dodgerblue":"azul fuerte","darkgray":"gris oscuro","lightcyan":"cian claro","powderblue":"azul suave","blueviolet":"azul violáceo","orchid":"orquídea","dimgray":"gris marengo","beige":"beige","fuchsia":"fucsia","lavenderblush":"lavanda rosácea","hotpink":"rosa oscuro","steelblue":"azul acero","tomato":"tomate","lightpink":"rosa claro","limegreen":"lima limón","indianred":"rojo teja","papayawhip":"papaya claro","lightslategray":"gris pizarra claro","gray":"gris","mediumorchid":"orquídea medio","cornsilk":"crudo","black":"negro","seagreen":"verde mar","darkslateblue":"azul pizarra oscuro","khaki":"caqui","lightblue":"azul claro","palegreen":"verde pálido","azure":"blanco cielo","peachpuff":"melocotón","darkolivegreen":"verde oliva oscuro","yellowgreen":"verde amarillento"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.es");dijit._editor.nls.commands.es={"removeFormat":"Eliminar formato","copy":"Copiar","paste":"Pegar","selectAll":"Seleccionar todo","insertOrderedList":"Lista numerada","insertTable":"Insertar/Editar tabla","print":"Imprimir","underline":"Subrayado","foreColor":"Color de primer plano","htmlToggle":"Fuente HTML","formatBlock":"Estilo de párrafo","newPage":"Nueva página","insertHorizontalRule":"Regla horizontal","delete":"Suprimir","insertUnorderedList":"Lista con viñetas","tableProp":"Propiedad de tabla","insertImage":"Insertar imagen","superscript":"Superíndice","subscript":"Subíndice","createLink":"Crear enlace","undo":"Deshacer","fullScreen":"Conmutar pantalla completa","italic":"Cursiva","fontName":"Nombre de font","justifyLeft":"Alinear izquierda","unlink":"Eliminar enlace","toggleTableBorder":"Conmutar borde de tabla","viewSource":"Ver fuente HTML","ctrlKey":"control+${0}","fontSize":"Tamaño de font","systemShortcut":"La acción \"${0}\" sólo está disponible en su navegador mediante un atajo de teclado. Utilice ${1}.","indent":"Sangría","redo":"Rehacer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinear centro","hiliteColor":"Color de segundo plano","deleteTable":"Suprimir tabla","outdent":"Anular sangría","cut":"Cortar","plainFormatBlock":"Estilo de párrafo","toggleDir":"Conmutar dirección","bold":"Negrita","tabIndent":"Sangría de tabulador","justifyRight":"Alinear derecha","appleKey":"⌘${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.es");dijit._editor.nls.FontChoice.es={"1":"xx-pequeño","2":"x-pequeño","formatBlock":"Formato","3":"pequeño","4":"medio","5":"grande","6":"x-grande","7":"xx-grande","fantasy":"fantasía","serif":"serif","p":"Párrafo","pre":"Preformateado","sans-serif":"sans-serif","fontName":"Font","h1":"Cabecera","h2":"Subcabecera","h3":"Sub-subcabecera","monospace":"espacio sencillo","fontSize":"Tamaño","cursive":"cursiva","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.es");dijit._editor.nls.LinkDialog.es={"text":"Descripción: ","insertImageTitle":"Propiedades de la imagen","set":"Establecer","newWindow":"Nueva ventana","topWindow":"Ventana superior","target":"Destino: ","createLinkTitle":"Propiedades del enlace","parentWindow":"Ventana padre","currentWindow":"Ventana actual","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.es");dojo.cldr.nls.currency.es={"HKD_displayName":"dólar de Hong Kong","CHF_displayName":"franco suizo","CAD_displayName":"dólar canadiense","CNY_displayName":"yuan renminbi chino","AUD_displayName":"dólar australiano","JPY_displayName":"yen japonés","USD_displayName":"dólar estadounidense","GBP_displayName":"libra esterlina británica","EUR_displayName":"euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.es");dojo.cldr.nls.gregorian.es={"months-format-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"día de la semana","dateFormatItem-yyQQQQ":"QQQQ 'de' yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d/M/y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["a.C.","d.C."],"dateFormatItem-MMMdd":"dd-MMM","dateFormat-long":"d 'de' MMMM 'de' y","months-format-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","field-era":"era","dateFormatItem-yM":"M/y","months-standAlone-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"año","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","field-hour":"hora","months-format-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"hoy","field-day-relative+1":"mañana","field-day-relative+2":"pasado mañana","field-day-relative+3":"Dentro de tres días","months-standAlone-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-MMMMd":"d 'de' MMMM","dateFormatItem-yyMMM":"MMM-yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a.C.","d.C."],"field-minute":"minuto","field-dayperiod":"periodo del día","days-standAlone-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ayer","dateFormatItem-h":"hh a","field-day-relative+-2":"antes de ayer","field-day-relative+-3":"Hace tres días","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateFormatItem-yMMMM":"MMMM 'de' y","field-day":"día","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-zone":"zona","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"eraNames":["antes de Cristo","anno Dómini"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-month":"mes","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"a.m.","dateFormat-short":"dd/MM/yy","dateFormatItem-MMd":"d/MM","field-second":"segundo","dateFormatItem-yMMMEd":"EEE, d MMM y","field-week":"semana","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_fi-fi.js b/lib/dijit/nls/dijit-all_fi-fi.js
new file mode 100644 (file)
index 0000000..d257fb4
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_fi-fi");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.fi_fi");dojo.nls.colors.fi_fi={"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.fi_fi");dijit._editor.nls.commands.fi_fi={"removeFormat":"Poista muotoilu","copy":"Kopioi","paste":"Liitä","selectAll":"Valitse kaikki","insertOrderedList":"Numeroitu luettelo","insertTable":"Lisää taulukko/muokkaa taulukkoa","print":"Tulosta","underline":"Alleviivaus","foreColor":"Edustaväri","htmlToggle":"HTML-lähde","formatBlock":"Kappaletyyli","newPage":"Uusi sivu","insertHorizontalRule":"Vaakasuuntainen viiva","delete":"Poista","insertUnorderedList":"Numeroimaton luettelo","tableProp":"Taulukon ominaisuudet","insertImage":"Lisää kuva","superscript":"Yläindeksi","subscript":"Alaindeksi","createLink":"Luo linkki","undo":"Kumoa","fullScreen":"Vaihda koko näyttö","italic":"Kursivointi","fontName":"Fontin nimi","justifyLeft":"Tasaus vasemmalle","unlink":"Poista linkki","toggleTableBorder":"Ota taulukon kehys käyttöön/poista kehys käytöstä","viewSource":"Näytä HTML-lähde","fontSize":"Fontin koko","systemShortcut":"Toiminto \"${0}\" on käytettävissä selaimessa vain näppäimistön pikatoiminnolla. Käytä seuraavaa: ${1}.","indent":"Sisennä","redo":"Tee uudelleen","strikethrough":"Yliviivaus","justifyFull":"Tasaus","justifyCenter":"Tasaus keskelle","hiliteColor":"Taustaväri","deleteTable":"Poista taulukko","outdent":"Ulonna","cut":"Leikkaa","plainFormatBlock":"Kappaletyyli","toggleDir":"Vaihda suuntaa","bold":"Lihavointi","tabIndent":"Sarkainsisennys","justifyRight":"Tasaus oikealle","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.fi_fi");dijit._editor.nls.FontChoice.fi_fi={"1":"xx-small","2":"x-small","formatBlock":"Muoto","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Kappale","pre":"Esimuotoiltu","sans-serif":"sans-serif","fontName":"Fontti","h1":"Otsikko","h2":"Alatason otsikko","h3":"Alimman tason otsikko","monospace":"monospace","fontSize":"Koko","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.fi_fi");dijit._editor.nls.LinkDialog.fi_fi={"text":"Kuvaus:","insertImageTitle":"Kuvan ominaisuudet","set":"Aseta","newWindow":"Uusi ikkuna","topWindow":"Päällimmäinen ikkuna","target":"Kohde:","createLinkTitle":"Linkin ominaisuudet","parentWindow":"Pääikkuna","currentWindow":"Nykyinen ikkuna","url":"URL-osoite:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.fi_fi");dojo.cldr.nls.currency.fi_fi={"HKD_displayName":"Hongkongin dollari","CHF_displayName":"Sveitsin frangi","CHF_symbol":"CHF","JPY_symbol":"¥","HKD_symbol":"HKD","CAD_displayName":"Kanadan dollari","CNY_displayName":"Kiinan yuan","USD_symbol":"$","AUD_displayName":"Australian dollari","JPY_displayName":"Japanin jeni","CAD_symbol":"CAD","USD_displayName":"Yhdysvaltain dollari","CNY_symbol":"CNY","GBP_displayName":"Englannin punta","AUD_symbol":"AUD","EUR_displayName":"euro","GBP_symbol":"£","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.fi_fi");dojo.cldr.nls.gregorian.fi_fi={"months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-weekday":"viikonpäivä","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d.M.yyyy","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["eKr.","jKr."],"dateFormat-long":"d. MMMM y","months-format-wide":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormatItem-EEEd":"EEE d.","dayPeriods-format-wide-pm":"ip.","dateFormat-full":"EEEE d. MMMM y","dateFormatItem-Md":"d.M.","dayPeriods-standAlone-wide-pm":"ip.","dayPeriods-format-abbr-am":"ap.","field-era":"aikakausi","dateFormatItem-yM":"L.yyyy","months-standAlone-wide":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"timeFormat-short":"H.mm","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"timeFormat-long":"H.mm.ss z","field-year":"vuosi","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"Q/yyyy","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"tunti","months-format-abbr":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormatItem-yyQ":"Q/yy","timeFormat-full":"H.mm.ss zzzz","dateFormatItem-yyyyMEEEd":"EEE d.M.yyyy","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","field-day-relative+2":"ylihuomenna","dateFormatItem-H":"H","months-standAlone-abbr":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],"quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-M":"L","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyMMM":"LLLL yy","timeFormat-medium":"H.mm.ss","dateFormatItem-Hm":"H.mm","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"eraAbbr":["eKr.","jKr."],"field-minute":"minuutti","field-dayperiod":"ap./ip.","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"eilen","field-day-relative+-2":"toissapäivänä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M.","field-day":"päivä","dateFormatItem-yMMMMccccd":"cccc, d. MMMM y","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-zone":"aikavyöhyke","dateFormatItem-y":"y","months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"dateFormatItem-yyMM":"M/yy","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"ip.","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"eraNames":["ennen Kristuksen syntymää","jälkeen Kristuksen syntymän"],"days-format-narrow":["S","M","T","K","T","P","L"],"field-month":"kuukausi","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"ap.","dayPeriods-standAlone-wide-am":"ap.","dateFormat-short":"d.M.yyyy","field-second":"sekunti","dateFormatItem-yMMMEd":"EEE d. MMM y","field-week":"viikko","dateFormat-medium":"d.M.yyyy","dateFormatItem-yyyyM":"M/yyyy","dateFormatItem-yyyyQQQQ":"QQQQ y","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_fi.js b/lib/dijit/nls/dijit-all_fi.js
new file mode 100644 (file)
index 0000000..95a4f21
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_fi");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.fi");dojo.nls.colors.fi={"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.fi");dijit._editor.nls.commands.fi={"removeFormat":"Poista muotoilu","copy":"Kopioi","paste":"Liitä","selectAll":"Valitse kaikki","insertOrderedList":"Numeroitu luettelo","insertTable":"Lisää taulukko/muokkaa taulukkoa","print":"Tulosta","underline":"Alleviivaus","foreColor":"Edustaväri","htmlToggle":"HTML-lähde","formatBlock":"Kappaletyyli","newPage":"Uusi sivu","insertHorizontalRule":"Vaakasuuntainen viiva","delete":"Poista","insertUnorderedList":"Numeroimaton luettelo","tableProp":"Taulukon ominaisuudet","insertImage":"Lisää kuva","superscript":"Yläindeksi","subscript":"Alaindeksi","createLink":"Luo linkki","undo":"Kumoa","fullScreen":"Vaihda koko näyttö","italic":"Kursivointi","fontName":"Fontin nimi","justifyLeft":"Tasaus vasemmalle","unlink":"Poista linkki","toggleTableBorder":"Ota taulukon kehys käyttöön/poista kehys käytöstä","viewSource":"Näytä HTML-lähde","fontSize":"Fontin koko","systemShortcut":"Toiminto \"${0}\" on käytettävissä selaimessa vain näppäimistön pikatoiminnolla. Käytä seuraavaa: ${1}.","indent":"Sisennä","redo":"Tee uudelleen","strikethrough":"Yliviivaus","justifyFull":"Tasaus","justifyCenter":"Tasaus keskelle","hiliteColor":"Taustaväri","deleteTable":"Poista taulukko","outdent":"Ulonna","cut":"Leikkaa","plainFormatBlock":"Kappaletyyli","toggleDir":"Vaihda suuntaa","bold":"Lihavointi","tabIndent":"Sarkainsisennys","justifyRight":"Tasaus oikealle","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.fi");dijit._editor.nls.FontChoice.fi={"1":"xx-small","2":"x-small","formatBlock":"Muoto","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Kappale","pre":"Esimuotoiltu","sans-serif":"sans-serif","fontName":"Fontti","h1":"Otsikko","h2":"Alatason otsikko","h3":"Alimman tason otsikko","monospace":"monospace","fontSize":"Koko","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.fi");dijit._editor.nls.LinkDialog.fi={"text":"Kuvaus:","insertImageTitle":"Kuvan ominaisuudet","set":"Aseta","newWindow":"Uusi ikkuna","topWindow":"Päällimmäinen ikkuna","target":"Kohde:","createLinkTitle":"Linkin ominaisuudet","parentWindow":"Pääikkuna","currentWindow":"Nykyinen ikkuna","url":"URL-osoite:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.fi");dojo.cldr.nls.currency.fi={"HKD_displayName":"Hongkongin dollari","CHF_displayName":"Sveitsin frangi","CHF_symbol":"CHF","JPY_symbol":"¥","HKD_symbol":"HKD","CAD_displayName":"Kanadan dollari","CNY_displayName":"Kiinan yuan","USD_symbol":"$","AUD_displayName":"Australian dollari","JPY_displayName":"Japanin jeni","CAD_symbol":"CAD","USD_displayName":"Yhdysvaltain dollari","CNY_symbol":"CNY","GBP_displayName":"Englannin punta","AUD_symbol":"AUD","EUR_displayName":"euro","GBP_symbol":"£","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.fi");dojo.cldr.nls.gregorian.fi={"months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-weekday":"viikonpäivä","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d.M.yyyy","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["eKr.","jKr."],"dateFormat-long":"d. MMMM y","months-format-wide":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormatItem-EEEd":"EEE d.","dayPeriods-format-wide-pm":"ip.","dateFormat-full":"EEEE d. MMMM y","dateFormatItem-Md":"d.M.","dayPeriods-standAlone-wide-pm":"ip.","dayPeriods-format-abbr-am":"ap.","field-era":"aikakausi","dateFormatItem-yM":"L.yyyy","months-standAlone-wide":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"timeFormat-short":"H.mm","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"timeFormat-long":"H.mm.ss z","field-year":"vuosi","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"Q/yyyy","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"tunti","months-format-abbr":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormatItem-yyQ":"Q/yy","timeFormat-full":"H.mm.ss zzzz","dateFormatItem-yyyyMEEEd":"EEE d.M.yyyy","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","field-day-relative+2":"ylihuomenna","dateFormatItem-H":"H","months-standAlone-abbr":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],"quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-M":"L","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyMMM":"LLLL yy","timeFormat-medium":"H.mm.ss","dateFormatItem-Hm":"H.mm","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"eraAbbr":["eKr.","jKr."],"field-minute":"minuutti","field-dayperiod":"ap./ip.","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"eilen","field-day-relative+-2":"toissapäivänä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M.","field-day":"päivä","dateFormatItem-yMMMMccccd":"cccc, d. MMMM y","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-zone":"aikavyöhyke","dateFormatItem-y":"y","months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"dateFormatItem-yyMM":"M/yy","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"ip.","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"eraNames":["ennen Kristuksen syntymää","jälkeen Kristuksen syntymän"],"days-format-narrow":["S","M","T","K","T","P","L"],"field-month":"kuukausi","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"ap.","dayPeriods-standAlone-wide-am":"ap.","dateFormat-short":"d.M.yyyy","field-second":"sekunti","dateFormatItem-yMMMEd":"EEE d. MMM y","field-week":"viikko","dateFormat-medium":"d.M.yyyy","dateFormatItem-yyyyM":"M/yyyy","dateFormatItem-yyyyQQQQ":"QQQQ y","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_fr-fr.js b/lib/dijit/nls/dijit-all_fr-fr.js
new file mode 100644 (file)
index 0000000..8055fbf
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_fr-fr");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.fr_fr");dojo.nls.colors.fr_fr={"lightsteelblue":"bleu acier clair","orangered":"rouge orangé","midnightblue":"bleu nuit","cadetblue":"bleu pétrole","seashell":"coquillage","slategrey":"gris ardoise","coral":"corail","darkturquoise":"turquoise foncé","antiquewhite":"blanc antique","mediumspringgreen":"vert printemps moyen","salmon":"saumon","darkgrey":"gris foncé","ivory":"ivoire","greenyellow":"vert-jaune","mistyrose":"rose pâle","lightsalmon":"saumon clair","silver":"argent","dimgrey":"gris soutenu","orange":"orange","white":"blanc","navajowhite":"chair","royalblue":"bleu roi","deeppink":"rose soutenu","lime":"vert citron","oldlace":"blanc cassé","chartreuse":"vert vif","darkcyan":"cyan foncé","yellow":"jaune","linen":"écru","olive":"olive","gold":"or","lawngreen":"vert prairie","lightyellow":"jaune clair","tan":"grège","darkviolet":"violet foncé","lightslategrey":"gris ardoise clair","grey":"gris","darkkhaki":"kaki foncé","green":"vert","deepskyblue":"bleu ciel soutenu","aqua":"bleu-vert","sienna":"terre de sienne","mintcream":"crème de menthe","rosybrown":"vieux rose","mediumslateblue":"bleu ardoise moyen","magenta":"magenta","lightseagreen":"vert d'eau clair","cyan":"cyan","olivedrab":"brun verdâtre","darkgoldenrod":"jaune paille foncé","slateblue":"bleu ardoise","mediumaquamarine":"aigue-marine moyen","lavender":"lavande","mediumseagreen":"vert d'eau moyen","maroon":"marron","darkslategray":"gris ardoise foncé","mediumturquoise":"turquoise moyen","ghostwhite":"blanc laiteux","darkblue":"bleu foncé","mediumvioletred":"rouge violacé moyen","brown":"brun","lightgray":"gris clair","sandybrown":"sable","pink":"rose","firebrick":"rouge brique","indigo":"indigo","snow":"neige","darkorchid":"lilas foncé","turquoise":"turquoise","chocolate":"chocolat","springgreen":"vert printemps","moccasin":"chamois","navy":"bleu marine","lemonchiffon":"mousse de citron","teal":"sarcelle","floralwhite":"lys","cornflowerblue":"bleuet","paleturquoise":"turquoise pâle","purple":"pourpre","gainsboro":"gris souris","plum":"prune","red":"rouge","blue":"bleu","forestgreen":"vert sapin","darkgreen":"vert foncé","honeydew":"opalin","darkseagreen":"vert d'eau foncé","lightcoral":"corail clair","palevioletred":"rouge violacé pâle","mediumpurple":"pourpre moyen","saddlebrown":"brun cuir","darkmagenta":"magenta foncé","thistle":"chardon","whitesmoke":"blanc cendré","wheat":"blé","violet":"violet","lightskyblue":"bleu ciel clair","goldenrod":"jaune paille","mediumblue":"bleu moyen","skyblue":"bleu ciel","crimson":"cramoisi","darksalmon":"saumon foncé","darkred":"rouge foncé","darkslategrey":"gris ardoise foncé","peru":"caramel","lightgrey":"gris clair","lightgoldenrodyellow":"jaune paille clair","blanchedalmond":"coquille d'oeuf","aliceblue":"bleu gris","bisque":"beige rosé","slategray":"gris ardoise","palegoldenrod":"jaune paille pâle","darkorange":"orange foncé","aquamarine":"aigue-marine","lightgreen":"vert clair","burlywood":"bois précieux","dodgerblue":"bleu France","darkgray":"gris foncé","lightcyan":"cyan clair","powderblue":"bleu de smalt","blueviolet":"bleu-violet","orchid":"lilas","dimgray":"gris soutenu","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavandin","hotpink":"rose intense","steelblue":"bleu acier","tomato":"tomate","lightpink":"rose clair","limegreen":"citron vert","indianred":"rose indien","papayawhip":"crème de papaye","lightslategray":"gris ardoise clair","gray":"gris","mediumorchid":"lilas moyen","cornsilk":"vanille","black":"noir","seagreen":"vert d'eau","darkslateblue":"bleu ardoise foncé","khaki":"kaki","lightblue":"bleu clair","palegreen":"vert pâle","azure":"bleu azur","peachpuff":"pêche","darkolivegreen":"olive foncé","yellowgreen":"vert jaunâtre"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.fr_fr");dijit._editor.nls.commands.fr_fr={"removeFormat":"Supprimer la mise en forme","copy":"Copier","paste":"Coller","selectAll":"Sélectionner tout","insertOrderedList":"Liste numérotée","insertTable":"Insérer/Modifier un tableau","print":"Imprimer","underline":"Souligner","foreColor":"Couleur avant-plan","htmlToggle":"Source HTML","formatBlock":"Style de paragraphe","newPage":"Nouvelle page","insertHorizontalRule":"Règle horizontale","delete":"Supprimer","insertUnorderedList":"Liste à puces","tableProp":"Propriété du tableau","insertImage":"Insérer une image","superscript":"Exposant","subscript":"Indice","createLink":"Créer un lien","undo":"Annuler","fullScreen":"Basculer vers le mode plein écran","italic":"Italique","fontName":"Nom de police","justifyLeft":"Aligner à gauche","unlink":"Supprimer le lien","toggleTableBorder":"Afficher/Masquer la bordure du tableau","viewSource":"Afficher la source HTML","fontSize":"Taille de police","systemShortcut":"Action \"${0}\" uniquement disponible dans votre navigateur via un raccourci clavier. Utilisez ${1}.","indent":"Retrait","redo":"Rétablir","strikethrough":"Barrer","justifyFull":"Justifier","justifyCenter":"Aligner au centre","hiliteColor":"Couleur arrière-plan","deleteTable":"Supprimer le tableau","outdent":"Retrait négatif","cut":"Couper","plainFormatBlock":"Style de paragraphe","toggleDir":"Changer de sens","bold":"Gras","tabIndent":"Retrait de tabulation","justifyRight":"Aligner à droite","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.fr_fr");dijit._editor.nls.FontChoice.fr_fr={"1":"xxs","2":"xs","formatBlock":"Mise en forme","3":"s","4":"m","5":"l","6":"xl","7":"xxl","fantasy":"fantaisie","serif":"serif","p":"Paragraphe","pre":"Pré-mise en forme","sans-serif":"sans serif","fontName":"Police","h1":"En-tête","h2":"Sous-en-tête","h3":"Sous-sous-en-tête","monospace":"espacement fixe","fontSize":"Taille","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.fr_fr");dijit._editor.nls.LinkDialog.fr_fr={"text":"Description :","insertImageTitle":"Propriétés des images","set":"Définir","newWindow":"Nouvelle fenêtre","topWindow":"Première fenêtre","target":"Cible :","createLinkTitle":"Propriétés des liens","parentWindow":"Fenêtre parent","currentWindow":"Fenêtre en cours","url":"URL :"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.fr_fr");dojo.cldr.nls.currency.fr_fr={"HKD_displayName":"dollar de Hong Kong","CHF_displayName":"franc suisse","CHF_symbol":"CHF","JPY_symbol":"¥JP","HKD_symbol":"$HK","CAD_displayName":"dollar canadien","CNY_displayName":"yuan renminbi chinois","USD_symbol":"$US","AUD_displayName":"dollar australien","JPY_displayName":"yen japonais","CAD_symbol":"$CA","USD_displayName":"dollar des États-Unis","CNY_symbol":"Ұ","GBP_displayName":"livre sterling","GBP_symbol":"£UK","AUD_symbol":"$AU","EUR_displayName":"euro","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.fr_fr");dojo.cldr.nls.gregorian.fr_fr={"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"jour de la semaine","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d/M/yyyy","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["av. J.-C.","ap. J.-C."],"dayPeriods-format-wide-morning":"matin","dateFormatItem-MMMdd":"dd MMM","dateFormat-long":"d MMMM y","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"midi","field-era":"ère","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"année","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"'T'Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"heure","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"dateFormatItem-yyQ":"'T'Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-day-relative+2":"après-demain","field-day-relative+3":"après-après-demain","months-standAlone-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-yyMMMEEEd":"EEE d MMM yy","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["av. J.-C.","ap. J.-C."],"field-minute":"minute","field-dayperiod":"cadran","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dayPeriods-format-wide-night":"soir","dateFormatItem-yyMMMd":"d MMM yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["T1","T2","T3","T4"],"field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-day-relative+-3":"avant-avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"EEE d/M","field-day":"jour","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-zone":"fuseau horaire","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"eraNames":["avant Jésus-Christ","après Jésus-Christ"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-month":"mois","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"EEE d MMMM","dateFormat-short":"dd/MM/yy","dateFormatItem-MMd":"d/MM","dayPeriods-format-wide-afternoon":"après-midi","field-second":"seconde","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"semaine","dateFormat-medium":"d MMM y","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_fr.js b/lib/dijit/nls/dijit-all_fr.js
new file mode 100644 (file)
index 0000000..75b8e3f
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_fr");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.fr");dojo.nls.colors.fr={"lightsteelblue":"bleu acier clair","orangered":"rouge orangé","midnightblue":"bleu nuit","cadetblue":"bleu pétrole","seashell":"coquillage","slategrey":"gris ardoise","coral":"corail","darkturquoise":"turquoise foncé","antiquewhite":"blanc antique","mediumspringgreen":"vert printemps moyen","salmon":"saumon","darkgrey":"gris foncé","ivory":"ivoire","greenyellow":"vert-jaune","mistyrose":"rose pâle","lightsalmon":"saumon clair","silver":"argent","dimgrey":"gris soutenu","orange":"orange","white":"blanc","navajowhite":"chair","royalblue":"bleu roi","deeppink":"rose soutenu","lime":"vert citron","oldlace":"blanc cassé","chartreuse":"vert vif","darkcyan":"cyan foncé","yellow":"jaune","linen":"écru","olive":"olive","gold":"or","lawngreen":"vert prairie","lightyellow":"jaune clair","tan":"grège","darkviolet":"violet foncé","lightslategrey":"gris ardoise clair","grey":"gris","darkkhaki":"kaki foncé","green":"vert","deepskyblue":"bleu ciel soutenu","aqua":"bleu-vert","sienna":"terre de sienne","mintcream":"crème de menthe","rosybrown":"vieux rose","mediumslateblue":"bleu ardoise moyen","magenta":"magenta","lightseagreen":"vert d'eau clair","cyan":"cyan","olivedrab":"brun verdâtre","darkgoldenrod":"jaune paille foncé","slateblue":"bleu ardoise","mediumaquamarine":"aigue-marine moyen","lavender":"lavande","mediumseagreen":"vert d'eau moyen","maroon":"marron","darkslategray":"gris ardoise foncé","mediumturquoise":"turquoise moyen","ghostwhite":"blanc laiteux","darkblue":"bleu foncé","mediumvioletred":"rouge violacé moyen","brown":"brun","lightgray":"gris clair","sandybrown":"sable","pink":"rose","firebrick":"rouge brique","indigo":"indigo","snow":"neige","darkorchid":"lilas foncé","turquoise":"turquoise","chocolate":"chocolat","springgreen":"vert printemps","moccasin":"chamois","navy":"bleu marine","lemonchiffon":"mousse de citron","teal":"sarcelle","floralwhite":"lys","cornflowerblue":"bleuet","paleturquoise":"turquoise pâle","purple":"pourpre","gainsboro":"gris souris","plum":"prune","red":"rouge","blue":"bleu","forestgreen":"vert sapin","darkgreen":"vert foncé","honeydew":"opalin","darkseagreen":"vert d'eau foncé","lightcoral":"corail clair","palevioletred":"rouge violacé pâle","mediumpurple":"pourpre moyen","saddlebrown":"brun cuir","darkmagenta":"magenta foncé","thistle":"chardon","whitesmoke":"blanc cendré","wheat":"blé","violet":"violet","lightskyblue":"bleu ciel clair","goldenrod":"jaune paille","mediumblue":"bleu moyen","skyblue":"bleu ciel","crimson":"cramoisi","darksalmon":"saumon foncé","darkred":"rouge foncé","darkslategrey":"gris ardoise foncé","peru":"caramel","lightgrey":"gris clair","lightgoldenrodyellow":"jaune paille clair","blanchedalmond":"coquille d'oeuf","aliceblue":"bleu gris","bisque":"beige rosé","slategray":"gris ardoise","palegoldenrod":"jaune paille pâle","darkorange":"orange foncé","aquamarine":"aigue-marine","lightgreen":"vert clair","burlywood":"bois précieux","dodgerblue":"bleu France","darkgray":"gris foncé","lightcyan":"cyan clair","powderblue":"bleu de smalt","blueviolet":"bleu-violet","orchid":"lilas","dimgray":"gris soutenu","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavandin","hotpink":"rose intense","steelblue":"bleu acier","tomato":"tomate","lightpink":"rose clair","limegreen":"citron vert","indianred":"rose indien","papayawhip":"crème de papaye","lightslategray":"gris ardoise clair","gray":"gris","mediumorchid":"lilas moyen","cornsilk":"vanille","black":"noir","seagreen":"vert d'eau","darkslateblue":"bleu ardoise foncé","khaki":"kaki","lightblue":"bleu clair","palegreen":"vert pâle","azure":"bleu azur","peachpuff":"pêche","darkolivegreen":"olive foncé","yellowgreen":"vert jaunâtre"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.fr");dijit._editor.nls.commands.fr={"removeFormat":"Supprimer la mise en forme","copy":"Copier","paste":"Coller","selectAll":"Sélectionner tout","insertOrderedList":"Liste numérotée","insertTable":"Insérer/Modifier un tableau","print":"Imprimer","underline":"Souligner","foreColor":"Couleur avant-plan","htmlToggle":"Source HTML","formatBlock":"Style de paragraphe","newPage":"Nouvelle page","insertHorizontalRule":"Règle horizontale","delete":"Supprimer","insertUnorderedList":"Liste à puces","tableProp":"Propriété du tableau","insertImage":"Insérer une image","superscript":"Exposant","subscript":"Indice","createLink":"Créer un lien","undo":"Annuler","fullScreen":"Basculer vers le mode plein écran","italic":"Italique","fontName":"Nom de police","justifyLeft":"Aligner à gauche","unlink":"Supprimer le lien","toggleTableBorder":"Afficher/Masquer la bordure du tableau","viewSource":"Afficher la source HTML","fontSize":"Taille de police","systemShortcut":"Action \"${0}\" uniquement disponible dans votre navigateur via un raccourci clavier. Utilisez ${1}.","indent":"Retrait","redo":"Rétablir","strikethrough":"Barrer","justifyFull":"Justifier","justifyCenter":"Aligner au centre","hiliteColor":"Couleur arrière-plan","deleteTable":"Supprimer le tableau","outdent":"Retrait négatif","cut":"Couper","plainFormatBlock":"Style de paragraphe","toggleDir":"Changer de sens","bold":"Gras","tabIndent":"Retrait de tabulation","justifyRight":"Aligner à droite","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.fr");dijit._editor.nls.FontChoice.fr={"1":"xxs","2":"xs","formatBlock":"Mise en forme","3":"s","4":"m","5":"l","6":"xl","7":"xxl","fantasy":"fantaisie","serif":"serif","p":"Paragraphe","pre":"Pré-mise en forme","sans-serif":"sans serif","fontName":"Police","h1":"En-tête","h2":"Sous-en-tête","h3":"Sous-sous-en-tête","monospace":"espacement fixe","fontSize":"Taille","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.fr");dijit._editor.nls.LinkDialog.fr={"text":"Description :","insertImageTitle":"Propriétés des images","set":"Définir","newWindow":"Nouvelle fenêtre","topWindow":"Première fenêtre","target":"Cible :","createLinkTitle":"Propriétés des liens","parentWindow":"Fenêtre parent","currentWindow":"Fenêtre en cours","url":"URL :"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.fr");dojo.cldr.nls.currency.fr={"HKD_displayName":"dollar de Hong Kong","CHF_displayName":"franc suisse","CHF_symbol":"CHF","JPY_symbol":"¥JP","HKD_symbol":"$HK","CAD_displayName":"dollar canadien","CNY_displayName":"yuan renminbi chinois","USD_symbol":"$US","AUD_displayName":"dollar australien","JPY_displayName":"yen japonais","CAD_symbol":"$CA","USD_displayName":"dollar des États-Unis","CNY_symbol":"Ұ","GBP_displayName":"livre sterling","GBP_symbol":"£UK","AUD_symbol":"$AU","EUR_displayName":"euro","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.fr");dojo.cldr.nls.gregorian.fr={"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"jour de la semaine","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d/M/yyyy","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["av. J.-C.","ap. J.-C."],"dayPeriods-format-wide-morning":"matin","dateFormatItem-MMMdd":"dd MMM","dateFormat-long":"d MMMM y","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"midi","field-era":"ère","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"année","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"'T'Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"heure","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"dateFormatItem-yyQ":"'T'Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-day-relative+2":"après-demain","field-day-relative+3":"après-après-demain","months-standAlone-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-yyMMMEEEd":"EEE d MMM yy","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["av. J.-C.","ap. J.-C."],"field-minute":"minute","field-dayperiod":"cadran","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dayPeriods-format-wide-night":"soir","dateFormatItem-yyMMMd":"d MMM yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["T1","T2","T3","T4"],"field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-day-relative+-3":"avant-avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"EEE d/M","field-day":"jour","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-zone":"fuseau horaire","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"eraNames":["avant Jésus-Christ","après Jésus-Christ"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-month":"mois","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"EEE d MMMM","dateFormat-short":"dd/MM/yy","dateFormatItem-MMd":"d/MM","dayPeriods-format-wide-afternoon":"après-midi","field-second":"seconde","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"semaine","dateFormat-medium":"d MMM y","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_he-il.js b/lib/dijit/nls/dijit-all_he-il.js
new file mode 100644 (file)
index 0000000..b40fa1b
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_he-il");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.he_il");dojo.nls.colors.he_il={"lightsteelblue":"כחול פלדה בהיר","orangered":"כתום אדום","midnightblue":"כחול כהה","cadetblue":"כחול ים","seashell":"צדף","slategrey":"אפור צפחה","coral":"אלמוג","darkturquoise":"טורקיז כהה","antiquewhite":"לבן עתיק","mediumspringgreen":"ירוק אביב בינוני","salmon":"סלמון","darkgrey":"אפור כהה","ivory":"שנהב","greenyellow":"ירוק-צהוב","mistyrose":"ורוד מעורפל","lightsalmon":"סלמון בהיר","silver":"כסף","dimgrey":"אפור עמום","orange":"כתום","white":"לבן","navajowhite":"לבן נוואחו","royalblue":"כחול מלכותי","deeppink":"ורוד עמוק","lime":"לימון","oldlace":"תחרה עתיקה","chartreuse":"ירוק-צהוב","darkcyan":"טורקיז כהה","yellow":"צהוב","linen":"פשתן","olive":"זית","gold":"זהב","lawngreen":"ירוק דשא","lightyellow":"צהוב בהיר","tan":"חום אדמדם","darkviolet":"סגול כהה","lightslategrey":"אפור צפחה בהיר","grey":"אפור","darkkhaki":"חאקי כהה","green":"ירוק","deepskyblue":"כחול שמיים עמוק","aqua":"אקווה","sienna":"סיינה","mintcream":"קרם מנטה","rosybrown":"חום ורדרד","mediumslateblue":"כחול צפחה בינוני","magenta":"בורדו","lightseagreen":"ירוק ים בהיר","cyan":"טורקיז","olivedrab":"זית עמום","darkgoldenrod":"זהוב כהה","slateblue":"כחול צפחה","mediumaquamarine":"כחול בינוני","lavender":"לבנדר","mediumseagreen":"ירוק ים בינוני","maroon":"חום אדמדם","darkslategray":"אפור צפחה כהה","mediumturquoise":"טורקיז בינוני","ghostwhite":"לבן רפאים","darkblue":"כחול כהה","mediumvioletred":"סגול-אדום בינוני","brown":"חום","lightgray":"אפור בהיר","sandybrown":"חום חולי","pink":"ורוד","firebrick":"לבנה שרופה","indigo":"אינדיגו","snow":"שלג","darkorchid":"סחלב כהה","turquoise":"טורקיז","chocolate":"שוקולד","springgreen":"ירוק אביב","moccasin":"מוקסין","navy":"כחול כהה","lemonchiffon":"ירוק לימון","teal":"כחול-ירוק כהה","floralwhite":"לבן פרחוני","cornflowerblue":"כחול דרדר","paleturquoise":"טורקיז בהיר","purple":"סגול","gainsboro":"גיינסבורו","plum":"שזיף","red":"אדום","blue":"כחול","forestgreen":"ירוק יער","darkgreen":"ירוק כהה","honeydew":"ירקרק","darkseagreen":"ירוק ים כהה","lightcoral":"אלמוג בהיר","palevioletred":"סגול-אדום בהיר","mediumpurple":"סגול בינוני","saddlebrown":"חום דהוי","darkmagenta":"בורדו כהה","thistle":"דרדר","whitesmoke":"עשן לבן","wheat":"חיוט","violet":"סגול","lightskyblue":"כחול שמיים בהיר","goldenrod":"זהוב","mediumblue":"תכלת בינוני","skyblue":"כחול שמיים","crimson":"ארגמן","darksalmon":"סלמון כהה","darkred":"אדום כהה","darkslategrey":"אפור צפחה כהה","peru":"פרו","lightgrey":"אפור בהיר","lightgoldenrodyellow":"צהוב בהיר","blanchedalmond":"שקד","aliceblue":"כחול פלדה","bisque":"לבן שקד","slategray":"אפור צפחה","palegoldenrod":"זהוב בהיר","darkorange":"כתום כהה","aquamarine":"אקוומארין","lightgreen":"ירוק בהיר","burlywood":"חום דהוי","dodgerblue":"כחול","darkgray":"אפור כהה","lightcyan":"טורקיז בהיר","powderblue":"כחול חיוור","blueviolet":"כחול-סגול","orchid":"סחלב","dimgray":"אפור עמום","beige":"בז'","fuchsia":"ורוד בהיר","lavenderblush":"סומק לבנדר","hotpink":"ורוד לוהט","steelblue":"כחול פלדה","tomato":"עגבניה","lightpink":"ורוד בהיר","limegreen":"ירוק לימוני","indianred":"אדום דהוי","papayawhip":"פפאיה","lightslategray":"אפור צפחה בהיר","gray":"אפור","mediumorchid":"סחלב בינוני","cornsilk":"צהבהב","black":"שחור","seagreen":"ירוק ים","darkslateblue":"כחול צפחה כהה","khaki":"חאקי","lightblue":"תכלת","palegreen":"ירוק בהיר","azure":"תכלת עז","peachpuff":"קציפת אפרסק","darkolivegreen":"ירוק זית כהה","yellowgreen":"ירוק צהוב"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.he_il");dijit._editor.nls.commands.he_il={"removeFormat":"סילוק עיצוב","copy":"עותק","paste":"הדבקה","selectAll":"בחירת הכל","insertOrderedList":"רשימה ממוספרת","insertTable":"הוספת/עריכת טבלה","print":"הדפסה","underline":"קו תחתי","foreColor":"צבע חזית","htmlToggle":"מקור HTML","formatBlock":"סגנון פיסקה","newPage":"דף חדש ","insertHorizontalRule":"קו אופקי","delete":"מחיקה","appleKey":"⌘${0}‎","insertUnorderedList":"רשימה עם תבליטים","tableProp":"תכונת טבלה","insertImage":"הוספת תמונה","superscript":"כתב עילי","subscript":"כתב תחתי","createLink":"יצירת קישור","undo":"ביטול פעולה","fullScreen":"מיתוג מסך מלא ","italic":"נטוי","fontName":"שם גופן","justifyLeft":"יישור לשמאל","unlink":"סילוק הקישור","toggleTableBorder":"מיתוג גבול טבלה","viewSource":"הצגת מקור HTML ","ctrlKey":"ctrl+${0}‎","fontSize":"גופן יחסי","systemShortcut":"הפעולה \"${0}\" זמינה בדפדפן רק באמצעות קיצור דרך במקלדת. השתמשו בקיצור ${1}.","indent":"הגדלת כניסה","redo":"שחזור פעולה","strikethrough":"קו חוצה","justifyFull":"יישור דו-צדדי","justifyCenter":"יישור למרכז","hiliteColor":"צבע רקע","deleteTable":"מחיקת טבלה","outdent":"הקטנת כניסה","cut":"גזירה","plainFormatBlock":"סגנון פיסקה","toggleDir":"מיתוג כיוון","bold":"מודגש","tabIndent":"כניסת טאב","justifyRight":"יישור לימין"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.he_il");dijit._editor.nls.FontChoice.he_il={"1":"קטן ביות","2":"קטן מאוד","formatBlock":"עיצוב","3":"קטן","4":"בינוני","5":"גדול","6":"גדול מאוד","7":"גדול ביותר","fantasy":"fantasy","serif":"serif","p":"פיסקה","pre":"מעוצב מראש","sans-serif":"sans-serif","fontName":"גופן","h1":"כותרת","h2":"תת-כותרת","h3":"תת-תת-כותרת","monospace":"monospace","fontSize":"גודל","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.he_il");dijit._editor.nls.LinkDialog.he_il={"text":"תיאור:","insertImageTitle":"תכונות תמונה","set":"הגדרה","newWindow":"חלון חדש","topWindow":"חלון עליון ","target":"יעד:","createLinkTitle":"תכונות קישור","parentWindow":"חלון אב","currentWindow":"חלון נוכחי ","url":"URL:‏"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.he_il");dojo.cldr.nls.currency.he_il={"HKD_displayName":"דולר הונג קונגי","CHF_displayName":"פרנק שוויצרי","CAD_displayName":"דולר קנדי","CNY_displayName":"יואן רנמינבי סיני","AUD_displayName":"דולר אוסטרלי","JPY_displayName":"ין יפני","USD_displayName":"דולר אמריקאי","GBP_displayName":"לירה שטרלינג","EUR_displayName":"אירו","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.he_il");dojo.cldr.nls.gregorian.he_il={"field-weekday":"יום בשבוע","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, d.M.yyyy","dateFormatItem-MMMEd":"E, d בMMM","eraNarrow":["לפנה״ס","לסה״נ"],"dateFormat-long":"d בMMMM y","months-format-wide":["ינואר","פברואר","מרס","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"dateFormatItem-EEEd":"EEE ה-d","dayPeriods-format-wide-pm":"אחה״צ","dateFormat-full":"EEEE, d בMMMM y","dateFormatItem-Md":"d/M","field-era":"תקופה","dateFormatItem-yM":"M.yyyy","months-standAlone-wide":["ינואר","פברואר","מרס","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"timeFormat-short":"HH:mm","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"timeFormat-long":"HH:mm:ss z","field-year":"שנה","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"yyyy Q","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"שעה","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["ינו","פבר","מרס","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"היום","field-day-relative+1":"מחר","field-day-relative+2":"מחרתיים","dateFormatItem-H":"HH","field-day-relative+3":"בעוד שלושה ימים","months-standAlone-abbr":["ינו׳","פבר׳","מרס","אפר׳","מאי","יונ׳","יול׳","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],"quarters-format-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-M":"L","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-MMMMd":"d בMMMM","dateFormatItem-yyMMM":"MMM yyyy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"eraAbbr":["לפנה״ס","לסה״נ"],"field-minute":"דקה","field-dayperiod":"לפה״צ/אחה״צ","days-standAlone-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-day-relative+-3":"לפני שלושה ימים","dateFormatItem-MMMd":"d בMMM","dateFormatItem-MEd":"E, M-d","dateFormatItem-yMMMM":"MMMM y","field-day":"יום","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-zone":"אזור","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"eraNames":["לפני הספירה","לספירה"],"days-format-narrow":["א","ב","ג","ד","ה","ו","ש"],"field-month":"חודש","days-standAlone-narrow":["א","ב","ג","ד","ה","ו","ש"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"לפנה״צ","dateFormatItem-MMMMEd":"E, d בMMMM","dateFormat-short":"dd/MM/yy","field-second":"שנייה","dateFormatItem-yMMMEd":"EEE, d בMMM y","dateFormatItem-Ed":"E ה-d","field-week":"שבוע","dateFormat-medium":"d בMMM yyyy","dateFormatItem-mmss":"mm:ss","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_he.js b/lib/dijit/nls/dijit-all_he.js
new file mode 100644 (file)
index 0000000..fb88b3d
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_he");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.he");dojo.nls.colors.he={"lightsteelblue":"כחול פלדה בהיר","orangered":"כתום אדום","midnightblue":"כחול כהה","cadetblue":"כחול ים","seashell":"צדף","slategrey":"אפור צפחה","coral":"אלמוג","darkturquoise":"טורקיז כהה","antiquewhite":"לבן עתיק","mediumspringgreen":"ירוק אביב בינוני","salmon":"סלמון","darkgrey":"אפור כהה","ivory":"שנהב","greenyellow":"ירוק-צהוב","mistyrose":"ורוד מעורפל","lightsalmon":"סלמון בהיר","silver":"כסף","dimgrey":"אפור עמום","orange":"כתום","white":"לבן","navajowhite":"לבן נוואחו","royalblue":"כחול מלכותי","deeppink":"ורוד עמוק","lime":"לימון","oldlace":"תחרה עתיקה","chartreuse":"ירוק-צהוב","darkcyan":"טורקיז כהה","yellow":"צהוב","linen":"פשתן","olive":"זית","gold":"זהב","lawngreen":"ירוק דשא","lightyellow":"צהוב בהיר","tan":"חום אדמדם","darkviolet":"סגול כהה","lightslategrey":"אפור צפחה בהיר","grey":"אפור","darkkhaki":"חאקי כהה","green":"ירוק","deepskyblue":"כחול שמיים עמוק","aqua":"אקווה","sienna":"סיינה","mintcream":"קרם מנטה","rosybrown":"חום ורדרד","mediumslateblue":"כחול צפחה בינוני","magenta":"בורדו","lightseagreen":"ירוק ים בהיר","cyan":"טורקיז","olivedrab":"זית עמום","darkgoldenrod":"זהוב כהה","slateblue":"כחול צפחה","mediumaquamarine":"כחול בינוני","lavender":"לבנדר","mediumseagreen":"ירוק ים בינוני","maroon":"חום אדמדם","darkslategray":"אפור צפחה כהה","mediumturquoise":"טורקיז בינוני","ghostwhite":"לבן רפאים","darkblue":"כחול כהה","mediumvioletred":"סגול-אדום בינוני","brown":"חום","lightgray":"אפור בהיר","sandybrown":"חום חולי","pink":"ורוד","firebrick":"לבנה שרופה","indigo":"אינדיגו","snow":"שלג","darkorchid":"סחלב כהה","turquoise":"טורקיז","chocolate":"שוקולד","springgreen":"ירוק אביב","moccasin":"מוקסין","navy":"כחול כהה","lemonchiffon":"ירוק לימון","teal":"כחול-ירוק כהה","floralwhite":"לבן פרחוני","cornflowerblue":"כחול דרדר","paleturquoise":"טורקיז בהיר","purple":"סגול","gainsboro":"גיינסבורו","plum":"שזיף","red":"אדום","blue":"כחול","forestgreen":"ירוק יער","darkgreen":"ירוק כהה","honeydew":"ירקרק","darkseagreen":"ירוק ים כהה","lightcoral":"אלמוג בהיר","palevioletred":"סגול-אדום בהיר","mediumpurple":"סגול בינוני","saddlebrown":"חום דהוי","darkmagenta":"בורדו כהה","thistle":"דרדר","whitesmoke":"עשן לבן","wheat":"חיוט","violet":"סגול","lightskyblue":"כחול שמיים בהיר","goldenrod":"זהוב","mediumblue":"תכלת בינוני","skyblue":"כחול שמיים","crimson":"ארגמן","darksalmon":"סלמון כהה","darkred":"אדום כהה","darkslategrey":"אפור צפחה כהה","peru":"פרו","lightgrey":"אפור בהיר","lightgoldenrodyellow":"צהוב בהיר","blanchedalmond":"שקד","aliceblue":"כחול פלדה","bisque":"לבן שקד","slategray":"אפור צפחה","palegoldenrod":"זהוב בהיר","darkorange":"כתום כהה","aquamarine":"אקוומארין","lightgreen":"ירוק בהיר","burlywood":"חום דהוי","dodgerblue":"כחול","darkgray":"אפור כהה","lightcyan":"טורקיז בהיר","powderblue":"כחול חיוור","blueviolet":"כחול-סגול","orchid":"סחלב","dimgray":"אפור עמום","beige":"בז'","fuchsia":"ורוד בהיר","lavenderblush":"סומק לבנדר","hotpink":"ורוד לוהט","steelblue":"כחול פלדה","tomato":"עגבניה","lightpink":"ורוד בהיר","limegreen":"ירוק לימוני","indianred":"אדום דהוי","papayawhip":"פפאיה","lightslategray":"אפור צפחה בהיר","gray":"אפור","mediumorchid":"סחלב בינוני","cornsilk":"צהבהב","black":"שחור","seagreen":"ירוק ים","darkslateblue":"כחול צפחה כהה","khaki":"חאקי","lightblue":"תכלת","palegreen":"ירוק בהיר","azure":"תכלת עז","peachpuff":"קציפת אפרסק","darkolivegreen":"ירוק זית כהה","yellowgreen":"ירוק צהוב"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.he");dijit._editor.nls.commands.he={"removeFormat":"סילוק עיצוב","copy":"עותק","paste":"הדבקה","selectAll":"בחירת הכל","insertOrderedList":"רשימה ממוספרת","insertTable":"הוספת/עריכת טבלה","print":"הדפסה","underline":"קו תחתי","foreColor":"צבע חזית","htmlToggle":"מקור HTML","formatBlock":"סגנון פיסקה","newPage":"דף חדש ","insertHorizontalRule":"קו אופקי","delete":"מחיקה","appleKey":"⌘${0}‎","insertUnorderedList":"רשימה עם תבליטים","tableProp":"תכונת טבלה","insertImage":"הוספת תמונה","superscript":"כתב עילי","subscript":"כתב תחתי","createLink":"יצירת קישור","undo":"ביטול פעולה","fullScreen":"מיתוג מסך מלא ","italic":"נטוי","fontName":"שם גופן","justifyLeft":"יישור לשמאל","unlink":"סילוק הקישור","toggleTableBorder":"מיתוג גבול טבלה","viewSource":"הצגת מקור HTML ","ctrlKey":"ctrl+${0}‎","fontSize":"גופן יחסי","systemShortcut":"הפעולה \"${0}\" זמינה בדפדפן רק באמצעות קיצור דרך במקלדת. השתמשו בקיצור ${1}.","indent":"הגדלת כניסה","redo":"שחזור פעולה","strikethrough":"קו חוצה","justifyFull":"יישור דו-צדדי","justifyCenter":"יישור למרכז","hiliteColor":"צבע רקע","deleteTable":"מחיקת טבלה","outdent":"הקטנת כניסה","cut":"גזירה","plainFormatBlock":"סגנון פיסקה","toggleDir":"מיתוג כיוון","bold":"מודגש","tabIndent":"כניסת טאב","justifyRight":"יישור לימין"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.he");dijit._editor.nls.FontChoice.he={"1":"קטן ביות","2":"קטן מאוד","formatBlock":"עיצוב","3":"קטן","4":"בינוני","5":"גדול","6":"גדול מאוד","7":"גדול ביותר","fantasy":"fantasy","serif":"serif","p":"פיסקה","pre":"מעוצב מראש","sans-serif":"sans-serif","fontName":"גופן","h1":"כותרת","h2":"תת-כותרת","h3":"תת-תת-כותרת","monospace":"monospace","fontSize":"גודל","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.he");dijit._editor.nls.LinkDialog.he={"text":"תיאור:","insertImageTitle":"תכונות תמונה","set":"הגדרה","newWindow":"חלון חדש","topWindow":"חלון עליון ","target":"יעד:","createLinkTitle":"תכונות קישור","parentWindow":"חלון אב","currentWindow":"חלון נוכחי ","url":"URL:‏"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.he");dojo.cldr.nls.currency.he={"HKD_displayName":"דולר הונג קונגי","CHF_displayName":"פרנק שוויצרי","CAD_displayName":"דולר קנדי","CNY_displayName":"יואן רנמינבי סיני","AUD_displayName":"דולר אוסטרלי","JPY_displayName":"ין יפני","USD_displayName":"דולר אמריקאי","GBP_displayName":"לירה שטרלינג","EUR_displayName":"אירו","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.he");dojo.cldr.nls.gregorian.he={"field-weekday":"יום בשבוע","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, d.M.yyyy","dateFormatItem-MMMEd":"E, d בMMM","eraNarrow":["לפנה״ס","לסה״נ"],"dateFormat-long":"d בMMMM y","months-format-wide":["ינואר","פברואר","מרס","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"dateFormatItem-EEEd":"EEE ה-d","dayPeriods-format-wide-pm":"אחה״צ","dateFormat-full":"EEEE, d בMMMM y","dateFormatItem-Md":"d/M","field-era":"תקופה","dateFormatItem-yM":"M.yyyy","months-standAlone-wide":["ינואר","פברואר","מרס","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"timeFormat-short":"HH:mm","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"timeFormat-long":"HH:mm:ss z","field-year":"שנה","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"yyyy Q","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"שעה","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["ינו","פבר","מרס","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"היום","field-day-relative+1":"מחר","field-day-relative+2":"מחרתיים","dateFormatItem-H":"HH","field-day-relative+3":"בעוד שלושה ימים","months-standAlone-abbr":["ינו׳","פבר׳","מרס","אפר׳","מאי","יונ׳","יול׳","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],"quarters-format-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-M":"L","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-MMMMd":"d בMMMM","dateFormatItem-yyMMM":"MMM yyyy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"eraAbbr":["לפנה״ס","לסה״נ"],"field-minute":"דקה","field-dayperiod":"לפה״צ/אחה״צ","days-standAlone-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-day-relative+-3":"לפני שלושה ימים","dateFormatItem-MMMd":"d בMMM","dateFormatItem-MEd":"E, M-d","dateFormatItem-yMMMM":"MMMM y","field-day":"יום","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-zone":"אזור","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"eraNames":["לפני הספירה","לספירה"],"days-format-narrow":["א","ב","ג","ד","ה","ו","ש"],"field-month":"חודש","days-standAlone-narrow":["א","ב","ג","ד","ה","ו","ש"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"לפנה״צ","dateFormatItem-MMMMEd":"E, d בMMMM","dateFormat-short":"dd/MM/yy","field-second":"שנייה","dateFormatItem-yMMMEd":"EEE, d בMMM y","dateFormatItem-Ed":"E ה-d","field-week":"שבוע","dateFormat-medium":"d בMMM yyyy","dateFormatItem-mmss":"mm:ss","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_hu.js b/lib/dijit/nls/dijit-all_hu.js
new file mode 100644 (file)
index 0000000..104c387
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_hu");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.hu");dojo.nls.colors.hu={"lightsteelblue":"világos acélkék","orangered":"narancsvörös","midnightblue":"éjkék","cadetblue":"kadétkék","seashell":"kagyló","slategrey":"palaszürke","coral":"korall","darkturquoise":"sötét türkizkék","antiquewhite":"antik fehér","mediumspringgreen":"közepes tavaszzöld","salmon":"lazacszín","darkgrey":"sötétszürke","ivory":"elefántcsont","greenyellow":"zöldessárga","mistyrose":"halvány rózsaszín","lightsalmon":"világos lazacszín","silver":"ezüst","dimgrey":"halványszürke","orange":"narancssárga","white":"fehér","navajowhite":"navajo fehér","royalblue":"királykék","deeppink":"sötétrózsaszín","lime":"lime","oldlace":"régi csipke","chartreuse":"chartreuse","darkcyan":"sötét ciánkék","yellow":"sárga","linen":"vászonfehér","olive":"olajzöld","gold":"arany","lawngreen":"fűzöld","lightyellow":"világossárga","tan":"rozsdabarna","darkviolet":"sötét ibolyaszín","lightslategrey":"világos palaszürke","grey":"szürke","darkkhaki":"sötét khakiszín","green":"zöld","deepskyblue":"sötét égszínkék","aqua":"vízszín","sienna":"vörösesbarna","mintcream":"mentaszósz","rosybrown":"barnásrózsaszín","mediumslateblue":"közepes palakék","magenta":"bíbor","lightseagreen":"világos tengerzöld","cyan":"ciánkék","olivedrab":"olajzöld drapp","darkgoldenrod":"sötét aranyvessző","slateblue":"palakék","mediumaquamarine":"közepes akvamarin","lavender":"levendula","mediumseagreen":"közepes tengerzöld","maroon":"gesztenyebarna","darkslategray":"sötét palaszürke","mediumturquoise":"közepes türkizkék","ghostwhite":"szellemfehér","darkblue":"sötétkék","mediumvioletred":"közepes ibolyavörös","brown":"barna","lightgray":"világosszürke","sandybrown":"homokbarna","pink":"rózsaszín","firebrick":"téglavörös","indigo":"indigó","snow":"hó","darkorchid":"sötét orchidea","turquoise":"türkizkék","chocolate":"csokoládé","springgreen":"tavaszzöld","moccasin":"mokkaszín","navy":"tengerészkék","lemonchiffon":"sárga műselyem","teal":"pávakék","floralwhite":"virágfehér","cornflowerblue":"búzavirágkék","paleturquoise":"halvány türkizkék","purple":"lila","gainsboro":"gainsboro","plum":"szilvakék","red":"vörös","blue":"kék","forestgreen":"erdőzöld","darkgreen":"sötétzöld","honeydew":"mézharmat","darkseagreen":"sötét tengerzöld","lightcoral":"világos korall","palevioletred":"halvány ibolyavörös","mediumpurple":"közepes lila","saddlebrown":"nyeregbarna","darkmagenta":"sötétbíbor","thistle":"bogáncs","whitesmoke":"fehér füst","wheat":"búza","violet":"ibolyaszín","lightskyblue":"világos égszínkék","goldenrod":"aranyvessző","mediumblue":"közepes kék","skyblue":"égszínkék","crimson":"karmazsinvörös","darksalmon":"sötét lazacszín","darkred":"sötétvörös","darkslategrey":"sötét palaszürke","peru":"peru","lightgrey":"világosszürke","lightgoldenrodyellow":"világos aranyvessző sárga","blanchedalmond":"hámozott mandula","aliceblue":"Alice kék","bisque":"porcelán","slategray":"palaszürke","palegoldenrod":"halvány aranyvessző","darkorange":"sötét narancssárga","aquamarine":"akvamarin","lightgreen":"világoszöld","burlywood":"nyersfa","dodgerblue":"dodger kék","darkgray":"sötétszürke","lightcyan":"világos ciánkék","powderblue":"púderkék","blueviolet":"ibolyakék","orchid":"orchidea","dimgray":"halványszürke","beige":"bézs","fuchsia":"fukszia","lavenderblush":"pirosas levendula","hotpink":"meleg rózsaszín","steelblue":"acélkék","tomato":"paradicsom","lightpink":"világos rózsaszín","limegreen":"limezöld","indianred":"indiánvörös","papayawhip":"papayahab","lightslategray":"világos palaszürke","gray":"szürke","mediumorchid":"közepes orchidea","cornsilk":"kukoricahaj","black":"fekete","seagreen":"tengerzöld","darkslateblue":"sötét palakék","khaki":"khakiszín","lightblue":"világoskék","palegreen":"halványzöld","azure":"azúrkék","peachpuff":"barackszín","darkolivegreen":"sötét olajzöld","yellowgreen":"sárgászöld"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.hu");dijit._editor.nls.commands.hu={"removeFormat":"Formázás eltávolítása","copy":"Másolás","paste":"Beillesztés","selectAll":"Összes kijelölése","insertOrderedList":"Számozott lista","insertTable":"Táblázat beszúrása/szerkesztése","print":"Nyomtatás","underline":"Aláhúzott","foreColor":"Előtérszín","htmlToggle":"HTML forrás","formatBlock":"Bekezdés stílusa","newPage":"Új oldal","insertHorizontalRule":"Vízszintes vonalzó","delete":"Törlés","insertUnorderedList":"Felsorolásjeles lista","tableProp":"Táblázat tulajdonságai","insertImage":"Kép beszúrása","superscript":"Felső index","subscript":"Alsó index","createLink":"Hivatkozás létrehozása","undo":"Visszavonás","fullScreen":"Váltás teljes képernyőre","italic":"Dőlt","fontName":"Betűtípus","justifyLeft":"Balra igazítás","unlink":"Hivatkozás eltávolítása","toggleTableBorder":"Táblázatszegély ki-/bekapcsolása","viewSource":"HTML forrás megjelenítése","fontSize":"Betűméret","systemShortcut":"A(z) \"${0}\" művelet a böngészőben csak billentyűparancs használatával érhető el. Használja a következőt: ${1}.","indent":"Behúzás","redo":"Újra","strikethrough":"Áthúzott","justifyFull":"Sorkizárás","justifyCenter":"Középre igazítás","hiliteColor":"Háttérszín","deleteTable":"Táblázat törlése","outdent":"Negatív behúzás","cut":"Kivágás","plainFormatBlock":"Bekezdés stílusa","toggleDir":"Irány váltókapcsoló","bold":"Félkövér","tabIndent":"Tab behúzás","justifyRight":"Jobbra igazítás","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.hu");dijit._editor.nls.FontChoice.hu={"1":"xx-kicsi","2":"x-kicsi","formatBlock":"Formátum","3":"kicsi","4":"közepes","5":"nagy","6":"x-nagy","7":"xx-nagy","fantasy":"fantázia","serif":"talpas","p":"Bekezdés","pre":"Előformázott","sans-serif":"talpatlan","fontName":"Betűtípus","h1":"Címsor","h2":"Alcím","h3":"Al-alcím","monospace":"rögzített szélességű","fontSize":"Méret","cursive":"kurzív","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.hu");dijit._editor.nls.LinkDialog.hu={"text":"Leírás:","insertImageTitle":"Kép tulajdonságai","set":"Beállítás","newWindow":"Új ablak","topWindow":"Legfelső szintű ablak","target":"Cél:","createLinkTitle":"Hivatkozás tulajdonságai","parentWindow":"Szülő ablak","currentWindow":"Aktuális ablak","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","percentFormat":"#,##0%","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.hu");dojo.cldr.nls.currency.hu={"HKD_displayName":"Hongkongi dollár","CHF_displayName":"Svájci frank","JPY_symbol":"¥","CAD_displayName":"Kanadai dollár","CNY_displayName":"Kínai jüan renminbi","USD_symbol":"$","AUD_displayName":"Ausztrál dollár","JPY_displayName":"Japán jen","USD_displayName":"USA dollár","GBP_displayName":"Brit font sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.hu");dojo.cldr.nls.gregorian.hu={"field-dayperiod":"napszak","dayPeriods-format-wide-pm":"du.","field-minute":"perc","eraNames":["időszámításunk előtt","időszámításunk szerint"],"field-day-relative+-1":"tegnap","field-weekday":"hét napja","field-day-relative+-2":"tegnapelőtt","dateFormatItem-MMdd":"MM.dd.","field-day-relative+-3":"három nappal ezelőtt","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-era":"éra","field-hour":"óra","dayPeriods-format-wide-am":"de.","quarters-standAlone-abbr":["N1","N2","N3","N4"],"timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"field-day-relative+0":"ma","field-day-relative+1":"holnap","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"eraAbbr":["i. e.","i. sz."],"field-day-relative+2":"holnapután","field-day-relative+3":"három nap múlva","dateFormatItem-yyyyMM":"yyyy.MM","dateFormatItem-yyyyMMMM":"y. MMMM","dateFormat-long":"y. MMMM d.","timeFormat-medium":"H:mm:ss","field-zone":"zóna","dateFormatItem-Hm":"H:mm","dateFormat-medium":"yyyy.MM.dd.","dateFormatItem-Hms":"H:mm:ss","quarters-standAlone-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"field-year":"év","field-week":"hét","months-standAlone-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dateFormatItem-MMMd":"MMM d.","dateFormatItem-yyQ":"yy/Q","timeFormat-long":"H:mm:ss z","months-format-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"timeFormat-short":"H:mm","dateFormatItem-H":"H","field-month":"hónap","dateFormatItem-MMMMd":"MMMM d.","quarters-format-abbr":["N1","N2","N3","N4"],"days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-mmss":"mm:ss","dateFormatItem-M":"L","days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-second":"másodperc","field-day":"nap","dateFormatItem-MEd":"M. d., E","months-format-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-short":"yyyy.MM.dd.","dateFormat-full":"y. MMMM d., EEEE","dateFormatItem-Md":"M. d.","months-format-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dateFormatItem-d":"d","quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"eraNarrow":["i. e.","i. sz."],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yM":"y-M","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_it-it.js b/lib/dijit/nls/dijit-all_it-it.js
new file mode 100644 (file)
index 0000000..7d5b800
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_it-it");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.it_it");dojo.nls.colors.it_it={"lightsteelblue":"blu acciao chiaro","orangered":"vermiglio","midnightblue":"blu melanzana scuro","cadetblue":"verde acqua","seashell":"sabbia rosa","slategrey":"grigio ardesia","coral":"corallo","darkturquoise":"turchese scuro","antiquewhite":"bianco antico","mediumspringgreen":"verde primavera medio","salmon":"salmone","darkgrey":"grigio scuro","ivory":"avorio","greenyellow":"giallo verde","mistyrose":"rosa pallido","lightsalmon":"salmone chiaro","silver":"grigio 25%","dimgrey":"grigio 80%","orange":"arancione","white":"bianco","navajowhite":"pesca chiaro","royalblue":"blu reale","deeppink":"ciclamino","lime":"verde fluorescente","oldlace":"mandorla","chartreuse":"verde brillante","darkcyan":"ciano scuro","yellow":"giallo","linen":"lino","olive":"verde oliva","gold":"oro","lawngreen":"verde prato","lightyellow":"giallo chiaro","tan":"grigio bruno","darkviolet":"viola scuro","lightslategrey":"grigio ardesia chiaro","grey":"grigio","darkkhaki":"kaki scuro","green":"verde","deepskyblue":"azzurro cielo scuro","aqua":"acqua","sienna":"cuoio","mintcream":"bianco nuvola","rosybrown":"marrone rosato","mediumslateblue":"blu ardesia medio","magenta":"magenta","lightseagreen":"verde mare chiaro","cyan":"ciano","olivedrab":"marrone oliva","darkgoldenrod":"ocra scuro","slateblue":"blu ardesia","mediumaquamarine":"acquamarina medio","lavender":"lavanda","mediumseagreen":"verde mare medio","maroon":"scarlatto","darkslategray":"grigio ardesia scuro","mediumturquoise":"turchese medio","ghostwhite":"bianco gesso","darkblue":"blu scuro","mediumvioletred":"vinaccia","brown":"marrone","lightgray":"grigio chiaro","sandybrown":"marrone sabbia","pink":"rosa","firebrick":"rosso mattone","indigo":"indaco","snow":"neve","darkorchid":"orchidea scuro","turquoise":"turchese","chocolate":"cioccolato","springgreen":"verde primavera","moccasin":"mocassino","navy":"blu notte","lemonchiffon":"caffelatte chiaro","teal":"verde turchese","floralwhite":"bianco giglio","cornflowerblue":"blu fiordaliso","paleturquoise":"turchese pallido","purple":"porpora","gainsboro":"grigio 10%","plum":"prugna","red":"rosso","blue":"blu","forestgreen":"verde foresta","darkgreen":"verde scuro","honeydew":"bianco germoglio","darkseagreen":"verde mare scuro","lightcoral":"rosa corallo","palevioletred":"vinaccia chiaro","mediumpurple":"porpora medio","saddlebrown":"cacao","darkmagenta":"magenta scuro","thistle":"rosa cenere","whitesmoke":"bianco fumo","wheat":"sabbia","violet":"viola","lightskyblue":"azzurro cielo chiaro","goldenrod":"ocra gialla","mediumblue":"blu medio","skyblue":"azzurro cielo","crimson":"cremisi","darksalmon":"salmone scuro","darkred":"rosso scuro","darkslategrey":"grigio ardesia scuro","peru":"marrone terra bruciata","lightgrey":"grigio chiaro","lightgoldenrodyellow":"giallo tenue","blanchedalmond":"mandorla chiaro","aliceblue":"blu alice","bisque":"incarnato","slategray":"grigio ardesia","palegoldenrod":"giallo zolfo chiaro","darkorange":"arancione scuro","aquamarine":"acquamarina","lightgreen":"verde chiaro","burlywood":"tabacco","dodgerblue":"blu d'oriente","darkgray":"grigio scuro","lightcyan":"ciano chiaro","powderblue":"azzurro polvere","blueviolet":"blu violetto","orchid":"orchidea","dimgray":"grigio 80%","beige":"beige","fuchsia":"fucsia","lavenderblush":"bianco rosato","hotpink":"rosa acceso","steelblue":"blu acciao","tomato":"pomodoro","lightpink":"rosa chiaro","limegreen":"verde lime","indianred":"terra indiana","papayawhip":"cipria","lightslategray":"grigio ardesia chiaro","gray":"grigio","mediumorchid":"orchidea medio","cornsilk":"crema","black":"nero","seagreen":"verde mare","darkslateblue":"blu ardesia scuro","khaki":"kaki","lightblue":"azzurro","palegreen":"verde pallido","azure":"azzurro ghiaccio","peachpuff":"pesca","darkolivegreen":"verde oliva scuro","yellowgreen":"giallo verde"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.it_it");dijit._editor.nls.commands.it_it={"removeFormat":"Rimuovi formato","copy":"Copia","paste":"Incolla","selectAll":"Seleziona tutto","insertOrderedList":"Elenco numerato","insertTable":"Inserisci/Modifica tabella","print":"Stampa","underline":"Sottolinea","foreColor":"Colore primo piano","htmlToggle":"Origine HTML","formatBlock":"Stile paragrafo","newPage":"Nuova pagina","insertHorizontalRule":"Righello orizzontale","delete":"Elimina","insertUnorderedList":"Elenco puntato","tableProp":"Proprietà tabella","insertImage":"Inserisci immagine","superscript":"Apice","subscript":"Pedice","createLink":"Crea collegamento","undo":"Annulla","fullScreen":"Attiva/Disattiva schermo intero","italic":"Corsivo","fontName":"Nome carattere","justifyLeft":"Allinea a sinistra","unlink":"Rimuovi collegamento","toggleTableBorder":"Attiva/Disattiva bordo tabella","viewSource":"Visualizza origine HTML","fontSize":"Dimensione carattere","systemShortcut":"La azione \"${0}\" è disponibile solo nel browser tramite un tasto di scelta rapida. Utilizzare ${1}.","indent":"Rientro","redo":"Ripristina","strikethrough":"Barrato","justifyFull":"Giustifica","justifyCenter":"Allinea al centro","hiliteColor":"Colore sfondo","deleteTable":"Elimina tabella","outdent":"Annulla rientro","cut":"Taglia","plainFormatBlock":"Stile paragrafo","toggleDir":"Attiva/Disattiva direzione","bold":"Grassetto","tabIndent":"Rientro tabulazione","justifyRight":"Allinea a destra","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.it_it");dijit._editor.nls.FontChoice.it_it={"1":"xx-small","2":"x-small","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragrafo","pre":"Preformattato","sans-serif":"sans-serif","fontName":"Carattere","h1":"Intestazione","h2":"Sottointestazione","h3":"Sottointestazione secondaria","monospace":"spaziatura fissa","fontSize":"Dimensione","cursive":"corsivo","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.it_it");dijit._editor.nls.LinkDialog.it_it={"text":"Descrizione:","insertImageTitle":"Proprietà immagine","set":"Imposta","newWindow":"Nuova finestra","topWindow":"Finestra superiore","target":"Destinazione:","createLinkTitle":"Proprietà collegamento","parentWindow":"Finestra padre","currentWindow":"Finestra corrente","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.it_it");dojo.cldr.nls.currency.it_it={"HKD_displayName":"Dollaro di Hong Kong","CHF_displayName":"Franco Svizzero","CAD_displayName":"Dollaro Canadese","CNY_displayName":"Renmimbi Cinese","AUD_displayName":"Dollaro Australiano","JPY_displayName":"Yen Giapponese","USD_displayName":"Dollaro Statunitense","GBP_displayName":"Sterlina Inglese","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.it_it");dojo.cldr.nls.gregorian.it_it={"months-format-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-weekday":"giorno della settimana","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE, d/M/y","dateFormatItem-MMMEd":"EEE d MMM","eraNarrow":["aC","dC"],"dateFormat-long":"dd MMMM y","months-format-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"dayPeriods-format-wide-pm":"p.","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d/M","field-era":"era","dateFormatItem-yM":"M/y","months-standAlone-wide":["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"anno","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q-yyyy","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"ora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-day-relative+2":"dopodomani","field-day-relative+3":"tra tre giorni","months-standAlone-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["aC","dC"],"field-minute":"minuto","field-dayperiod":"periodo del giorno","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ieri","dateFormatItem-h":"hh a","field-day-relative+-2":"l'altro ieri","field-day-relative+-3":"tre giorni fa","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"EEE d/M","field-day":"giorno","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-zone":"zona","dateFormatItem-y":"y","months-standAlone-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"eraNames":["a.C.","d.C"],"days-format-narrow":["D","L","M","M","G","V","S"],"field-month":"mese","days-standAlone-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"m.","dateFormatItem-MMMMdd":"dd MMMM","dateFormat-short":"dd/MM/yy","field-second":"secondo","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"settimana","dateFormat-medium":"dd/MMM/y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_it.js b/lib/dijit/nls/dijit-all_it.js
new file mode 100644 (file)
index 0000000..a71d9a5
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_it");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.it");dojo.nls.colors.it={"lightsteelblue":"blu acciao chiaro","orangered":"vermiglio","midnightblue":"blu melanzana scuro","cadetblue":"verde acqua","seashell":"sabbia rosa","slategrey":"grigio ardesia","coral":"corallo","darkturquoise":"turchese scuro","antiquewhite":"bianco antico","mediumspringgreen":"verde primavera medio","salmon":"salmone","darkgrey":"grigio scuro","ivory":"avorio","greenyellow":"giallo verde","mistyrose":"rosa pallido","lightsalmon":"salmone chiaro","silver":"grigio 25%","dimgrey":"grigio 80%","orange":"arancione","white":"bianco","navajowhite":"pesca chiaro","royalblue":"blu reale","deeppink":"ciclamino","lime":"verde fluorescente","oldlace":"mandorla","chartreuse":"verde brillante","darkcyan":"ciano scuro","yellow":"giallo","linen":"lino","olive":"verde oliva","gold":"oro","lawngreen":"verde prato","lightyellow":"giallo chiaro","tan":"grigio bruno","darkviolet":"viola scuro","lightslategrey":"grigio ardesia chiaro","grey":"grigio","darkkhaki":"kaki scuro","green":"verde","deepskyblue":"azzurro cielo scuro","aqua":"acqua","sienna":"cuoio","mintcream":"bianco nuvola","rosybrown":"marrone rosato","mediumslateblue":"blu ardesia medio","magenta":"magenta","lightseagreen":"verde mare chiaro","cyan":"ciano","olivedrab":"marrone oliva","darkgoldenrod":"ocra scuro","slateblue":"blu ardesia","mediumaquamarine":"acquamarina medio","lavender":"lavanda","mediumseagreen":"verde mare medio","maroon":"scarlatto","darkslategray":"grigio ardesia scuro","mediumturquoise":"turchese medio","ghostwhite":"bianco gesso","darkblue":"blu scuro","mediumvioletred":"vinaccia","brown":"marrone","lightgray":"grigio chiaro","sandybrown":"marrone sabbia","pink":"rosa","firebrick":"rosso mattone","indigo":"indaco","snow":"neve","darkorchid":"orchidea scuro","turquoise":"turchese","chocolate":"cioccolato","springgreen":"verde primavera","moccasin":"mocassino","navy":"blu notte","lemonchiffon":"caffelatte chiaro","teal":"verde turchese","floralwhite":"bianco giglio","cornflowerblue":"blu fiordaliso","paleturquoise":"turchese pallido","purple":"porpora","gainsboro":"grigio 10%","plum":"prugna","red":"rosso","blue":"blu","forestgreen":"verde foresta","darkgreen":"verde scuro","honeydew":"bianco germoglio","darkseagreen":"verde mare scuro","lightcoral":"rosa corallo","palevioletred":"vinaccia chiaro","mediumpurple":"porpora medio","saddlebrown":"cacao","darkmagenta":"magenta scuro","thistle":"rosa cenere","whitesmoke":"bianco fumo","wheat":"sabbia","violet":"viola","lightskyblue":"azzurro cielo chiaro","goldenrod":"ocra gialla","mediumblue":"blu medio","skyblue":"azzurro cielo","crimson":"cremisi","darksalmon":"salmone scuro","darkred":"rosso scuro","darkslategrey":"grigio ardesia scuro","peru":"marrone terra bruciata","lightgrey":"grigio chiaro","lightgoldenrodyellow":"giallo tenue","blanchedalmond":"mandorla chiaro","aliceblue":"blu alice","bisque":"incarnato","slategray":"grigio ardesia","palegoldenrod":"giallo zolfo chiaro","darkorange":"arancione scuro","aquamarine":"acquamarina","lightgreen":"verde chiaro","burlywood":"tabacco","dodgerblue":"blu d'oriente","darkgray":"grigio scuro","lightcyan":"ciano chiaro","powderblue":"azzurro polvere","blueviolet":"blu violetto","orchid":"orchidea","dimgray":"grigio 80%","beige":"beige","fuchsia":"fucsia","lavenderblush":"bianco rosato","hotpink":"rosa acceso","steelblue":"blu acciao","tomato":"pomodoro","lightpink":"rosa chiaro","limegreen":"verde lime","indianred":"terra indiana","papayawhip":"cipria","lightslategray":"grigio ardesia chiaro","gray":"grigio","mediumorchid":"orchidea medio","cornsilk":"crema","black":"nero","seagreen":"verde mare","darkslateblue":"blu ardesia scuro","khaki":"kaki","lightblue":"azzurro","palegreen":"verde pallido","azure":"azzurro ghiaccio","peachpuff":"pesca","darkolivegreen":"verde oliva scuro","yellowgreen":"giallo verde"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.it");dijit._editor.nls.commands.it={"removeFormat":"Rimuovi formato","copy":"Copia","paste":"Incolla","selectAll":"Seleziona tutto","insertOrderedList":"Elenco numerato","insertTable":"Inserisci/Modifica tabella","print":"Stampa","underline":"Sottolinea","foreColor":"Colore primo piano","htmlToggle":"Origine HTML","formatBlock":"Stile paragrafo","newPage":"Nuova pagina","insertHorizontalRule":"Righello orizzontale","delete":"Elimina","insertUnorderedList":"Elenco puntato","tableProp":"Proprietà tabella","insertImage":"Inserisci immagine","superscript":"Apice","subscript":"Pedice","createLink":"Crea collegamento","undo":"Annulla","fullScreen":"Attiva/Disattiva schermo intero","italic":"Corsivo","fontName":"Nome carattere","justifyLeft":"Allinea a sinistra","unlink":"Rimuovi collegamento","toggleTableBorder":"Attiva/Disattiva bordo tabella","viewSource":"Visualizza origine HTML","fontSize":"Dimensione carattere","systemShortcut":"La azione \"${0}\" è disponibile solo nel browser tramite un tasto di scelta rapida. Utilizzare ${1}.","indent":"Rientro","redo":"Ripristina","strikethrough":"Barrato","justifyFull":"Giustifica","justifyCenter":"Allinea al centro","hiliteColor":"Colore sfondo","deleteTable":"Elimina tabella","outdent":"Annulla rientro","cut":"Taglia","plainFormatBlock":"Stile paragrafo","toggleDir":"Attiva/Disattiva direzione","bold":"Grassetto","tabIndent":"Rientro tabulazione","justifyRight":"Allinea a destra","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.it");dijit._editor.nls.FontChoice.it={"1":"xx-small","2":"x-small","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragrafo","pre":"Preformattato","sans-serif":"sans-serif","fontName":"Carattere","h1":"Intestazione","h2":"Sottointestazione","h3":"Sottointestazione secondaria","monospace":"spaziatura fissa","fontSize":"Dimensione","cursive":"corsivo","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.it");dijit._editor.nls.LinkDialog.it={"text":"Descrizione:","insertImageTitle":"Proprietà immagine","set":"Imposta","newWindow":"Nuova finestra","topWindow":"Finestra superiore","target":"Destinazione:","createLinkTitle":"Proprietà collegamento","parentWindow":"Finestra padre","currentWindow":"Finestra corrente","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.it");dojo.cldr.nls.currency.it={"HKD_displayName":"Dollaro di Hong Kong","CHF_displayName":"Franco Svizzero","CAD_displayName":"Dollaro Canadese","CNY_displayName":"Renmimbi Cinese","AUD_displayName":"Dollaro Australiano","JPY_displayName":"Yen Giapponese","USD_displayName":"Dollaro Statunitense","GBP_displayName":"Sterlina Inglese","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.it");dojo.cldr.nls.gregorian.it={"months-format-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-weekday":"giorno della settimana","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE, d/M/y","dateFormatItem-MMMEd":"EEE d MMM","eraNarrow":["aC","dC"],"dateFormat-long":"dd MMMM y","months-format-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"dayPeriods-format-wide-pm":"p.","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d/M","field-era":"era","dateFormatItem-yM":"M/y","months-standAlone-wide":["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"anno","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q-yyyy","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"ora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-day-relative+2":"dopodomani","field-day-relative+3":"tra tre giorni","months-standAlone-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["aC","dC"],"field-minute":"minuto","field-dayperiod":"periodo del giorno","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ieri","dateFormatItem-h":"hh a","field-day-relative+-2":"l'altro ieri","field-day-relative+-3":"tre giorni fa","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"EEE d/M","field-day":"giorno","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-zone":"zona","dateFormatItem-y":"y","months-standAlone-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"eraNames":["a.C.","d.C"],"days-format-narrow":["D","L","M","M","G","V","S"],"field-month":"mese","days-standAlone-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"m.","dateFormatItem-MMMMdd":"dd MMMM","dateFormat-short":"dd/MM/yy","field-second":"secondo","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"settimana","dateFormat-medium":"dd/MMM/y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_ja-jp.js b/lib/dijit/nls/dijit-all_ja-jp.js
new file mode 100644 (file)
index 0000000..067474b
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_ja-jp");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.ja_jp");dojo.nls.colors.ja_jp={"lightsteelblue":"ライト・スチール・ブルー","orangered":"オレンジ・レッド","midnightblue":"ミッドナイト・ブルー","cadetblue":"くすんだ青","seashell":"シーシェル","slategrey":"スレート・グレイ","coral":"珊瑚","darkturquoise":"ダーク・ターコイズ","antiquewhite":"アンティーク・ホワイト","mediumspringgreen":"ミディアム・スプリング・グリーン","salmon":"サーモン","darkgrey":"ダーク・グレイ","ivory":"アイボリー","greenyellow":"緑黄色","mistyrose":"ミスティ・ローズ","lightsalmon":"ライト・サーモン","silver":"銀","dimgrey":"くすんだグレイ","orange":"オレンジ","white":"白","navajowhite":"ナバホ・ホワイト","royalblue":"藤色","deeppink":"濃いピンク","lime":"ライム","oldlace":"オールド・レイス","chartreuse":"淡黄緑","darkcyan":"ダーク・シアン・ブルー","yellow":"黄","linen":"亜麻色","olive":"オリーブ","gold":"金","lawngreen":"ローン・グリーン","lightyellow":"ライト・イエロー","tan":"茶褐色","darkviolet":"ダーク・バイオレット","lightslategrey":"ライト・スレート・グレイ","grey":"グレイ","darkkhaki":"ダーク・カーキー","green":"緑","deepskyblue":"濃い空色","aqua":"アクア","sienna":"黄褐色","mintcream":"ミント・クリーム","rosybrown":"ロージー・ブラウン","mediumslateblue":"ミディアム・スレート・ブルー","magenta":"赤紫","lightseagreen":"ライト・シー・グリーン","cyan":"シアン・ブルー","olivedrab":"濃黄緑","darkgoldenrod":"ダーク・ゴールデン・ロッド","slateblue":"スレート・ブルー","mediumaquamarine":"ミディアム・アクアマリーン","lavender":"ラベンダー","mediumseagreen":"ミディアム・シー・グリーン","maroon":"えび茶","darkslategray":"ダーク・スレート・グレイ","mediumturquoise":"ミディアム・ターコイズ","ghostwhite":"ゴースト・ホワイト","darkblue":"ダーク・ブルー","mediumvioletred":"ミディアム・バイオレット・レッド","brown":"茶","lightgray":"ライト・グレイ","sandybrown":"砂褐色","pink":"ピンク","firebrick":"赤煉瓦色","indigo":"藍色","snow":"雪色","darkorchid":"ダーク・オーキッド","turquoise":"ターコイズ","chocolate":"チョコレート","springgreen":"スプリング・グリーン","moccasin":"モカシン","navy":"濃紺","lemonchiffon":"レモン・シフォン","teal":"ティール","floralwhite":"フローラル・ホワイト","cornflowerblue":"コーンフラワー・ブルー","paleturquoise":"ペイル・ターコイズ","purple":"紫","gainsboro":"ゲインズボーロ","plum":"深紫","red":"赤","blue":"青","forestgreen":"フォレスト・グリーン","darkgreen":"ダーク・グリーン","honeydew":"ハニーデュー","darkseagreen":"ダーク・シー・グリーン","lightcoral":"ライト・コーラル","palevioletred":"ペイル・バイオレット・レッド","mediumpurple":"ミディアム・パープル","saddlebrown":"サドル・ブラウン","darkmagenta":"ダーク・マジェンタ","thistle":"シスル","whitesmoke":"ホワイト・スモーク","wheat":"小麦色","violet":"すみれ色","lightskyblue":"ライト・スカイ・ブルー","goldenrod":"ゴールデン・ロッド","mediumblue":"ミディアム・ブルー","skyblue":"スカイ・ブルー","crimson":"深紅","darksalmon":"ダーク・サーモン","darkred":"ダーク・レッド","darkslategrey":"ダーク・スレート・グレイ","peru":"ペルー","lightgrey":"ライト・グレイ","lightgoldenrodyellow":"ライト・ゴールデン・ロッド・イエロー","blanchedalmond":"皮なしアーモンド","aliceblue":"アリス・ブルー","bisque":"ビスク","slategray":"スレート・グレイ","palegoldenrod":"ペイル・ゴールデン・ロッド","darkorange":"ダーク・オレンジ","aquamarine":"碧緑","lightgreen":"ライト・グリーン","burlywood":"バーリーウッド","dodgerblue":"ドッジャー・ブルー","darkgray":"ダーク・グレイ","lightcyan":"ライト・シアン","powderblue":"淡青","blueviolet":"青紫","orchid":"薄紫","dimgray":"くすんだグレイ","beige":"ベージュ","fuchsia":"紫紅色","lavenderblush":"ラベンダー・ブラッシ","hotpink":"ホット・ピンク","steelblue":"鋼色","tomato":"トマト色","lightpink":"ライト・ピンク","limegreen":"ライム・グリーン","indianred":"インディアン・レッド","papayawhip":"パパイア・ホイップ","lightslategray":"ライト・スレート・グレイ","gray":"グレイ","mediumorchid":"ミディアム・オーキッド","cornsilk":"コーンシルク","black":"黒","seagreen":"シー・グリーン","darkslateblue":"ダーク・スレート・ブルー","khaki":"カーキー","lightblue":"ライト・ブルー","palegreen":"ペイル・グリーン","azure":"薄い空色","peachpuff":"ピーチ・パフ","darkolivegreen":"ダーク・オリーブ・グリーン","yellowgreen":"黄緑"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.ja_jp");dijit._editor.nls.commands.ja_jp={"removeFormat":"形式の除去","copy":"コピー","paste":"貼り付け","selectAll":"すべて選択","insertOrderedList":"番号付きリスト","insertTable":"テーブルの挿入/編集","print":"印刷","underline":"下線","foreColor":"前景色","htmlToggle":"HTML ソース","formatBlock":"段落スタイル","newPage":"新しいページ","insertHorizontalRule":"水平罫線","delete":"削除","insertUnorderedList":"黒丸付きリスト","tableProp":"テーブルプロパティ","insertImage":"イメージの挿入","superscript":"上付き文字","subscript":"下付き文字","createLink":"リンクの作成","undo":"元に戻す","fullScreen":"全画面表示に切り替え","italic":"斜体","fontName":"フォント名","justifyLeft":"左揃え","unlink":"リンクの削除","toggleTableBorder":"テーブルボーダーの切り替え","viewSource":"HTML ソースの表示","fontSize":"フォントサイズ","systemShortcut":"\"${0}\" アクションを使用できるのは、ブラウザーでキーボードショートカットを使用する場合のみです。 ${1} を使用してください。","indent":"インデント","redo":"やり直し","strikethrough":"取り消し線","justifyFull":"両端揃え","justifyCenter":"中央揃え","hiliteColor":"背景色","deleteTable":"テーブルの削除","outdent":"アウトデント","cut":"切り取り","plainFormatBlock":"段落スタイル","toggleDir":"方向の切り替え","bold":"太字","tabIndent":"タブインデント","justifyRight":"右揃え","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.ja_jp");dijit._editor.nls.FontChoice.ja_jp={"1":"超極小","2":"極小","formatBlock":"フォーマット","3":"小","4":"標準","5":"大","6":"特大","7":"超特大","fantasy":"fantasy","serif":"serif","p":"段落","pre":"事前フォーマット済み","sans-serif":"sans-serif","fontName":"フォント","h1":"見出し","h2":"副見出し","h3":"副見出しの副見出し","monospace":"monospace","fontSize":"サイズ","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.ja_jp");dijit._editor.nls.LinkDialog.ja_jp={"text":"説明:","insertImageTitle":"イメージ・プロパティー","set":"設定","newWindow":"新規ウィンドウ","topWindow":"最上位ウィンドウ","target":"ターゲット:","createLinkTitle":"リンク・プロパティー","parentWindow":"親ウィンドウ","currentWindow":"現行ウィンドウ","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.ja_jp");dojo.cldr.nls.currency.ja_jp={"HKD_displayName":"香港ドル","CHF_displayName":"スイス フラン","JPY_symbol":"¥","CAD_displayName":"カナダ ドル","CNY_displayName":"中国人民元","USD_symbol":"$","AUD_displayName":"オーストラリア ドル","JPY_displayName":"日本円","USD_displayName":"米ドル","CNY_symbol":"元","GBP_displayName":"英国ポンド","EUR_displayName":"ユーロ","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.ja_jp");dojo.cldr.nls.gregorian.ja_jp={"field-weekday":"曜日","dateFormatItem-yQQQ":"yQQQ","dateFormatItem-yMEd":"y/M/d(EEE)","dateFormatItem-MMMEd":"M月d日(E)","eraNarrow":["BC","AD"],"dateFormat-long":"y年M月d日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"午後","dateFormat-full":"y年M月d日EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMd":"y/M/d","field-era":"時代","dateFormatItem-yM":"y/M","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"H:mm","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"timeFormat-long":"H:mm:ss z","field-year":"年","dateFormatItem-yMMM":"y年M月","dateFormatItem-yQ":"y/Q","field-hour":"時","dateFormatItem-MMdd":"MM/dd","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy/Q","timeFormat-full":"H時mm分ss秒 zzzz","field-day-relative+0":"今日","field-day-relative+1":"明日","field-day-relative+2":"明後日","dateFormatItem-H":"H時","field-day-relative+3":"3日後","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-M":"L","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyMMM":"y年M月","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","eraAbbr":["BC","AD"],"field-minute":"分","field-dayperiod":"午前/午後","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨日","dateFormatItem-h":"ah","dateTimeFormat-long":"{1}{0}","field-day-relative+-2":"一昨日","field-day-relative+-3":"3日前","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1}{0}","field-day":"日","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-zone":"タイムゾーン","dateFormatItem-yyyyMM":"yyyy/MM","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"ah:mm","dateFormatItem-GGGGyMd":"GGGGy年M月d日","days-format-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-yMMMd":"y年M月d日","eraNames":["紀元前","西暦"],"days-format-narrow":["日","月","火","水","木","金","土"],"field-month":"月","days-standAlone-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"午前","dateFormat-short":"yy/MM/dd","field-second":"秒","dateFormatItem-yMMMEd":"y年M月d日(EEE)","dateFormatItem-Ed":"d日(EEE)","field-week":"週","dateFormat-medium":"yyyy/MM/dd","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"y年","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/dijit-all_ja.js b/lib/dijit/nls/dijit-all_ja.js
new file mode 100644 (file)
index 0000000..af7cb82
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_ja");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.ja");dojo.nls.colors.ja={"lightsteelblue":"ライト・スチール・ブルー","orangered":"オレンジ・レッド","midnightblue":"ミッドナイト・ブルー","cadetblue":"くすんだ青","seashell":"シーシェル","slategrey":"スレート・グレイ","coral":"珊瑚","darkturquoise":"ダーク・ターコイズ","antiquewhite":"アンティーク・ホワイト","mediumspringgreen":"ミディアム・スプリング・グリーン","salmon":"サーモン","darkgrey":"ダーク・グレイ","ivory":"アイボリー","greenyellow":"緑黄色","mistyrose":"ミスティ・ローズ","lightsalmon":"ライト・サーモン","silver":"銀","dimgrey":"くすんだグレイ","orange":"オレンジ","white":"白","navajowhite":"ナバホ・ホワイト","royalblue":"藤色","deeppink":"濃いピンク","lime":"ライム","oldlace":"オールド・レイス","chartreuse":"淡黄緑","darkcyan":"ダーク・シアン・ブルー","yellow":"黄","linen":"亜麻色","olive":"オリーブ","gold":"金","lawngreen":"ローン・グリーン","lightyellow":"ライト・イエロー","tan":"茶褐色","darkviolet":"ダーク・バイオレット","lightslategrey":"ライト・スレート・グレイ","grey":"グレイ","darkkhaki":"ダーク・カーキー","green":"緑","deepskyblue":"濃い空色","aqua":"アクア","sienna":"黄褐色","mintcream":"ミント・クリーム","rosybrown":"ロージー・ブラウン","mediumslateblue":"ミディアム・スレート・ブルー","magenta":"赤紫","lightseagreen":"ライト・シー・グリーン","cyan":"シアン・ブルー","olivedrab":"濃黄緑","darkgoldenrod":"ダーク・ゴールデン・ロッド","slateblue":"スレート・ブルー","mediumaquamarine":"ミディアム・アクアマリーン","lavender":"ラベンダー","mediumseagreen":"ミディアム・シー・グリーン","maroon":"えび茶","darkslategray":"ダーク・スレート・グレイ","mediumturquoise":"ミディアム・ターコイズ","ghostwhite":"ゴースト・ホワイト","darkblue":"ダーク・ブルー","mediumvioletred":"ミディアム・バイオレット・レッド","brown":"茶","lightgray":"ライト・グレイ","sandybrown":"砂褐色","pink":"ピンク","firebrick":"赤煉瓦色","indigo":"藍色","snow":"雪色","darkorchid":"ダーク・オーキッド","turquoise":"ターコイズ","chocolate":"チョコレート","springgreen":"スプリング・グリーン","moccasin":"モカシン","navy":"濃紺","lemonchiffon":"レモン・シフォン","teal":"ティール","floralwhite":"フローラル・ホワイト","cornflowerblue":"コーンフラワー・ブルー","paleturquoise":"ペイル・ターコイズ","purple":"紫","gainsboro":"ゲインズボーロ","plum":"深紫","red":"赤","blue":"青","forestgreen":"フォレスト・グリーン","darkgreen":"ダーク・グリーン","honeydew":"ハニーデュー","darkseagreen":"ダーク・シー・グリーン","lightcoral":"ライト・コーラル","palevioletred":"ペイル・バイオレット・レッド","mediumpurple":"ミディアム・パープル","saddlebrown":"サドル・ブラウン","darkmagenta":"ダーク・マジェンタ","thistle":"シスル","whitesmoke":"ホワイト・スモーク","wheat":"小麦色","violet":"すみれ色","lightskyblue":"ライト・スカイ・ブルー","goldenrod":"ゴールデン・ロッド","mediumblue":"ミディアム・ブルー","skyblue":"スカイ・ブルー","crimson":"深紅","darksalmon":"ダーク・サーモン","darkred":"ダーク・レッド","darkslategrey":"ダーク・スレート・グレイ","peru":"ペルー","lightgrey":"ライト・グレイ","lightgoldenrodyellow":"ライト・ゴールデン・ロッド・イエロー","blanchedalmond":"皮なしアーモンド","aliceblue":"アリス・ブルー","bisque":"ビスク","slategray":"スレート・グレイ","palegoldenrod":"ペイル・ゴールデン・ロッド","darkorange":"ダーク・オレンジ","aquamarine":"碧緑","lightgreen":"ライト・グリーン","burlywood":"バーリーウッド","dodgerblue":"ドッジャー・ブルー","darkgray":"ダーク・グレイ","lightcyan":"ライト・シアン","powderblue":"淡青","blueviolet":"青紫","orchid":"薄紫","dimgray":"くすんだグレイ","beige":"ベージュ","fuchsia":"紫紅色","lavenderblush":"ラベンダー・ブラッシ","hotpink":"ホット・ピンク","steelblue":"鋼色","tomato":"トマト色","lightpink":"ライト・ピンク","limegreen":"ライム・グリーン","indianred":"インディアン・レッド","papayawhip":"パパイア・ホイップ","lightslategray":"ライト・スレート・グレイ","gray":"グレイ","mediumorchid":"ミディアム・オーキッド","cornsilk":"コーンシルク","black":"黒","seagreen":"シー・グリーン","darkslateblue":"ダーク・スレート・ブルー","khaki":"カーキー","lightblue":"ライト・ブルー","palegreen":"ペイル・グリーン","azure":"薄い空色","peachpuff":"ピーチ・パフ","darkolivegreen":"ダーク・オリーブ・グリーン","yellowgreen":"黄緑"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.ja");dijit._editor.nls.commands.ja={"removeFormat":"形式の除去","copy":"コピー","paste":"貼り付け","selectAll":"すべて選択","insertOrderedList":"番号付きリスト","insertTable":"テーブルの挿入/編集","print":"印刷","underline":"下線","foreColor":"前景色","htmlToggle":"HTML ソース","formatBlock":"段落スタイル","newPage":"新しいページ","insertHorizontalRule":"水平罫線","delete":"削除","insertUnorderedList":"黒丸付きリスト","tableProp":"テーブルプロパティ","insertImage":"イメージの挿入","superscript":"上付き文字","subscript":"下付き文字","createLink":"リンクの作成","undo":"元に戻す","fullScreen":"全画面表示に切り替え","italic":"斜体","fontName":"フォント名","justifyLeft":"左揃え","unlink":"リンクの削除","toggleTableBorder":"テーブルボーダーの切り替え","viewSource":"HTML ソースの表示","fontSize":"フォントサイズ","systemShortcut":"\"${0}\" アクションを使用できるのは、ブラウザーでキーボードショートカットを使用する場合のみです。 ${1} を使用してください。","indent":"インデント","redo":"やり直し","strikethrough":"取り消し線","justifyFull":"両端揃え","justifyCenter":"中央揃え","hiliteColor":"背景色","deleteTable":"テーブルの削除","outdent":"アウトデント","cut":"切り取り","plainFormatBlock":"段落スタイル","toggleDir":"方向の切り替え","bold":"太字","tabIndent":"タブインデント","justifyRight":"右揃え","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.ja");dijit._editor.nls.FontChoice.ja={"1":"超極小","2":"極小","formatBlock":"フォーマット","3":"小","4":"標準","5":"大","6":"特大","7":"超特大","fantasy":"fantasy","serif":"serif","p":"段落","pre":"事前フォーマット済み","sans-serif":"sans-serif","fontName":"フォント","h1":"見出し","h2":"副見出し","h3":"副見出しの副見出し","monospace":"monospace","fontSize":"サイズ","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.ja");dijit._editor.nls.LinkDialog.ja={"text":"説明:","insertImageTitle":"イメージ・プロパティー","set":"設定","newWindow":"新規ウィンドウ","topWindow":"最上位ウィンドウ","target":"ターゲット:","createLinkTitle":"リンク・プロパティー","parentWindow":"親ウィンドウ","currentWindow":"現行ウィンドウ","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.ja");dojo.cldr.nls.currency.ja={"HKD_displayName":"香港ドル","CHF_displayName":"スイス フラン","JPY_symbol":"¥","CAD_displayName":"カナダ ドル","CNY_displayName":"中国人民元","USD_symbol":"$","AUD_displayName":"オーストラリア ドル","JPY_displayName":"日本円","USD_displayName":"米ドル","CNY_symbol":"元","GBP_displayName":"英国ポンド","EUR_displayName":"ユーロ","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.ja");dojo.cldr.nls.gregorian.ja={"field-weekday":"曜日","dateFormatItem-yQQQ":"yQQQ","dateFormatItem-yMEd":"y/M/d(EEE)","dateFormatItem-MMMEd":"M月d日(E)","eraNarrow":["BC","AD"],"dateFormat-long":"y年M月d日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"午後","dateFormat-full":"y年M月d日EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMd":"y/M/d","field-era":"時代","dateFormatItem-yM":"y/M","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"H:mm","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"timeFormat-long":"H:mm:ss z","field-year":"年","dateFormatItem-yMMM":"y年M月","dateFormatItem-yQ":"y/Q","field-hour":"時","dateFormatItem-MMdd":"MM/dd","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy/Q","timeFormat-full":"H時mm分ss秒 zzzz","field-day-relative+0":"今日","field-day-relative+1":"明日","field-day-relative+2":"明後日","dateFormatItem-H":"H時","field-day-relative+3":"3日後","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-M":"L","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyMMM":"y年M月","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","eraAbbr":["BC","AD"],"field-minute":"分","field-dayperiod":"午前/午後","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨日","dateFormatItem-h":"ah","dateTimeFormat-long":"{1}{0}","field-day-relative+-2":"一昨日","field-day-relative+-3":"3日前","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1}{0}","field-day":"日","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-zone":"タイムゾーン","dateFormatItem-yyyyMM":"yyyy/MM","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"ah:mm","dateFormatItem-GGGGyMd":"GGGGy年M月d日","days-format-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-yMMMd":"y年M月d日","eraNames":["紀元前","西暦"],"days-format-narrow":["日","月","火","水","木","金","土"],"field-month":"月","days-standAlone-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"午前","dateFormat-short":"yy/MM/dd","field-second":"秒","dateFormatItem-yMMMEd":"y年M月d日(EEE)","dateFormatItem-Ed":"d日(EEE)","field-week":"週","dateFormat-medium":"yyyy/MM/dd","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"y年","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/dijit-all_ko-kr.js b/lib/dijit/nls/dijit-all_ko-kr.js
new file mode 100644 (file)
index 0000000..f94d4bd
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_ko-kr");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.ko_kr");dojo.nls.colors.ko_kr={"lightsteelblue":"라이트 스틸 블루(light steel blue)","orangered":"오렌지 레드(orange red)","midnightblue":"미드나잇 블루(midnight blue)","cadetblue":"카뎃 블루(cadet blue)","seashell":"씨쉘(seashell)","slategrey":"슬레이트 그레이(slate gray)","coral":"코랄(coral)","darkturquoise":"다크 터콰즈(dark turquoise)","antiquewhite":"앤틱 화이트(antique white)","mediumspringgreen":"미디엄 스프링 그린(medium spring green)","salmon":"샐몬(salmon)","darkgrey":"다크 그레이(dark gray)","ivory":"아이보리(ivory)","greenyellow":"그린 옐로우(green-yellow)","mistyrose":"미스티 로즈(misty rose)","lightsalmon":"라이트 샐몬(light salmon)","silver":"실버(silver)","dimgrey":"딤 그레이(dim gray)","orange":"오렌지(orange)","white":"화이트(white)","navajowhite":"나바호 화이트(navajo white)","royalblue":"로얄 블루(royal blue)","deeppink":"딥 핑크(deep pink)","lime":"라임(lime)","oldlace":"올드 레이스(old lace)","chartreuse":"샤르트뢰즈(chartreuse)","darkcyan":"다크 시안(dark cyan)","yellow":"옐로우(yellow)","linen":"리넨(linen)","olive":"올리브(olive)","gold":"골드(gold)","lawngreen":"론 그린(lawn green)","lightyellow":"라이트 옐로우(light yellow)","tan":"탠(tan)","darkviolet":"다크 바이올렛(dark violet)","lightslategrey":"라이트 슬레이트 그레이(light slate gray)","grey":"그레이(gray)","darkkhaki":"다크 카키(dark khaki)","green":"그린(green)","deepskyblue":"딥 스카이 블루(deep sky blue)","aqua":"아쿠아(aqua)","sienna":"시에나(sienna)","mintcream":"민트 크림(mint cream)","rosybrown":"로지 브라운(rosy brown)","mediumslateblue":"미디엄 슬레이트 블루(medium slate blue)","magenta":"마젠타(magenta)","lightseagreen":"라이트 씨 그린(light sea green)","cyan":"시안(cyan)","olivedrab":"올리브 드랩(olive drab)","darkgoldenrod":"다크 골든로드(dark goldenrod)","slateblue":"슬레이트 블루(slate blue)","mediumaquamarine":"미디엄 아쿠아마린(medium aquamarine)","lavender":"라벤더(lavender)","mediumseagreen":"미디엄 씨 그린(medium sea green)","maroon":"마룬(maroon)","darkslategray":"다크 슬레이트 그레이(dark slate gray)","mediumturquoise":"미디엄 터콰즈(medium turquoise)","ghostwhite":"고스트 화이트(ghost white)","darkblue":"다크 블루(dark blue)","mediumvioletred":"미디엄 바이올렛 레드(medium violet-red)","brown":"브라운(brown)","lightgray":"라이트 그레이(light gray)","sandybrown":"샌디 브라운(sandy brown)","pink":"핑크(pink)","firebrick":"파이어 브릭(fire brick)","indigo":"인디고(indigo)","snow":"스노우(snow)","darkorchid":"다크 오키드(dark orchid)","turquoise":"터콰즈(turquoise)","chocolate":"초콜렛(chocolate)","springgreen":"스프링 그린(spring green)","moccasin":"모카신(moccasin)","navy":"네이비(navy)","lemonchiffon":"레몬 쉬폰(lemon chiffon)","teal":"틸(teal)","floralwhite":"플로랄 화이트(floral white)","cornflowerblue":"콘플라워 블루(cornflower blue)","paleturquoise":"페일 터콰즈(pale turquoise)","purple":"퍼플(purple)","gainsboro":"게인스브로(gainsboro)","plum":"플럼(plum)","red":"레드(red)","blue":"블루(blue)","forestgreen":"포레스트 그린(forest green)","darkgreen":"다크 그린(dark green)","honeydew":"허니듀(honeydew)","darkseagreen":"다크 씨 그린(dark sea green)","lightcoral":"라이트 코랄(light coral)","palevioletred":"페일 바이올렛 레드(pale violet-red)","mediumpurple":"미디엄 퍼플(medium purple)","saddlebrown":"새들 브라운(saddle brown)","darkmagenta":"다크 마젠타(dark magenta)","thistle":"시슬(thistle)","whitesmoke":"화이트 스모크(white smoke)","wheat":"휘트(wheat)","violet":"바이올렛(violet)","lightskyblue":"라이트 스카이 블루(light sky blue)","goldenrod":"골든로드(goldenrod)","mediumblue":"미디엄 블루(medium blue)","skyblue":"스카이 블루(sky blue)","crimson":"크림슨(crimson)","darksalmon":"다크 샐몬(dark salmon)","darkred":"다크 레드(dark red)","darkslategrey":"다크 슬레이트 그레이(dark slate gray)","peru":"페루(peru)","lightgrey":"라이트 그레이(light gray)","lightgoldenrodyellow":"라이트 골든로드 옐로우(light goldenrod yellow)","blanchedalmond":"블랜치 아몬드(blanched almond)","aliceblue":"앨리스 블루(alice blue)","bisque":"비스크(bisque)","slategray":"슬레이트 그레이(slate gray)","palegoldenrod":"페일 골든로드(pale goldenrod)","darkorange":"다크 오렌지(dark orange)","aquamarine":"아쿠아마린(aquamarine)","lightgreen":"라이트 그린(light green)","burlywood":"벌리우드(burlywood)","dodgerblue":"다저 블루(dodger blue)","darkgray":"다크 그레이(dark gray)","lightcyan":"라이트 시안(light cyan)","powderblue":"파우더 블루(powder blue)","blueviolet":"블루 바이올렛(blue-violet)","orchid":"오키드(orchid)","dimgray":"딤 그레이(dim gray)","beige":"베이지(beige)","fuchsia":"후크샤(fuchsia)","lavenderblush":"라벤더 블러쉬(lavender blush)","hotpink":"핫 핑크(hot pink)","steelblue":"스틸 블루(steel blue)","tomato":"토마토(tomato)","lightpink":"라이트 핑크(light pink)","limegreen":"라임 그린(lime green)","indianred":"인디안 레드(indian red)","papayawhip":"파파야 휩(papaya whip)","lightslategray":"라이트 슬레이트 그레이(light slate gray)","gray":"그레이(gray)","mediumorchid":"미디엄 오키드(medium orchid)","cornsilk":"콘실크(cornsilk)","black":"블랙(black)","seagreen":"씨 그린(sea green)","darkslateblue":"다크 슬레이트 블루(dark slate blue)","khaki":"카키(khaki)","lightblue":"라이트 블루(light blue)","palegreen":"페일 그린(pale green)","azure":"애쥬어(azure)","peachpuff":"피치 퍼프(peach puff)","darkolivegreen":"다크 올리브 그린(dark olive green)","yellowgreen":"옐로우 그린(yellow green)"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.ko_kr");dijit._editor.nls.commands.ko_kr={"removeFormat":"형식 제거","copy":"복사","paste":"붙여넣기","selectAll":"모두 선택","insertOrderedList":"번호 목록","insertTable":"테이블 삽입/편집","print":"인쇄","underline":"밑줄","foreColor":"전경색","htmlToggle":"HTML 소스","formatBlock":"단락 스타일","newPage":"새 페이지","insertHorizontalRule":"수평 자","delete":"삭제","insertUnorderedList":"글머리표 목록","tableProp":"테이블 특성","insertImage":"이미지 삽입","superscript":"위첨자","subscript":"아래첨자","createLink":"링크 작성","undo":"실행 취소","fullScreen":"토글 전체 화면","italic":"기울임체","fontName":"글꼴 이름","justifyLeft":"왼쪽 맞춤","unlink":"링크 제거","toggleTableBorder":"토글 테이블 테두리","viewSource":"HTML 소스 보기","fontSize":"글꼴 크기","systemShortcut":"\"${0}\" 조치는 브라우저에서 키보드 단축키를 이용해서만 사용할 수 있습니다. ${1}을(를) 사용하십시오.","indent":"들여쓰기","redo":"다시 실행","strikethrough":"취소선","justifyFull":"양쪽 맞춤","justifyCenter":"가운데 맞춤","hiliteColor":"배경색","deleteTable":"테이블 삭제","outdent":"내어쓰기","cut":"잘라내기","plainFormatBlock":"단락 스타일","toggleDir":"토글 방향","bold":"굵은체","tabIndent":"탭 들여쓰기","justifyRight":"오른쪽 맞춤","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.ko_kr");dijit._editor.nls.FontChoice.ko_kr={"1":"가장 작게","2":"조금 작게","formatBlock":"서식","3":"작게","4":"중간","5":"크게","6":"조금 크게","7":"가장 크게","fantasy":"fantasy","serif":"serif","p":"단락","pre":"서식이 지정됨","sans-serif":"sans-serif","fontName":"글꼴","h1":"제목","h2":"부제목","h3":"하위 부제목","monospace":"monospace","fontSize":"크기","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.ko_kr");dijit._editor.nls.LinkDialog.ko_kr={"text":"설명:","insertImageTitle":"이미지 특성","set":"설정","newWindow":"새 창","topWindow":"최상위 창","target":"대상:","createLinkTitle":"링크 특성","parentWindow":"상위 창","currentWindow":"현재 창","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.ko_kr");dojo.cldr.nls.currency.ko_kr={"HKD_displayName":"홍콩 달러","CHF_displayName":"스위스 프랑","CAD_displayName":"캐나다 달러","CNY_displayName":"중국 위안 인민폐","AUD_displayName":"호주 달러","JPY_displayName":"일본 엔화","USD_displayName":"미국 달러","GBP_displayName":"영국령 파운드 스털링","EUR_displayName":"유로화","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.ko_kr");dojo.cldr.nls.gregorian.ko_kr={"months-format-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-weekday":"요일","dateFormatItem-yQQQ":"y년 QQQ","dateFormatItem-yMEd":"yyyy. M. d. EEE","dateFormatItem-MMMEd":"MMM d일 (E)","eraNarrow":["기원전","서기"],"dateFormat-long":"y년 M월 d일","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d일 EEE","dayPeriods-format-wide-pm":"오후","dateFormat-full":"y년 M월 d일 EEEE","dateFormatItem-Md":"M. d.","field-era":"연호","dateFormatItem-yM":"yyyy. M.","months-standAlone-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"timeFormat-short":"a h:mm","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"timeFormat-long":"a h시 m분 s초 z","field-year":"년","dateFormatItem-yMMM":"y년 MMM","dateFormatItem-yQ":"y년 Q분기","field-hour":"시","dateFormatItem-MMdd":"MM. dd","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormatItem-yyQ":"yy년 Q분기","timeFormat-full":"a h시 m분 s초 zzzz","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-day-relative+3":"3일후","months-standAlone-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"quarters-format-abbr":["1분기","2분기","3분기","4분기"],"quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"dateFormatItem-yyMMM":"yy년 MMM","timeFormat-medium":"a h:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"eraAbbr":["기원전","서기"],"field-minute":"분","field-dayperiod":"오전/오후","days-standAlone-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"어제","dateFormatItem-h":"a h","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"그저께","field-day-relative+-3":"그끄제","dateFormatItem-MMMd":"MMM d일","dateFormatItem-MEd":"M. d. (E)","dateTimeFormat-full":"{1} {0}","field-day":"일","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-zone":"시간대","dateFormatItem-yyyyMM":"yyyy. MM","dateFormatItem-y":"y","months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormatItem-yyMM":"YY. M.","dateFormatItem-hm":"a h:mm","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-yMMMd":"y년 MMM d일","eraNames":["서력기원전","서력기원"],"days-format-narrow":["일","월","화","수","목","금","토"],"field-month":"월","days-standAlone-narrow":["일","월","화","수","목","금","토"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"오전","dateFormat-short":"yy. M. d.","field-second":"초","dateFormatItem-yMMMEd":"y년 MMM d일 EEE","dateFormatItem-Ed":"d일 (E)","field-week":"주","dateFormat-medium":"yyyy. M. d.","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H시 m분 s초","dateFormatItem-hms":"a h:mm:ss","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/dijit-all_ko.js b/lib/dijit/nls/dijit-all_ko.js
new file mode 100644 (file)
index 0000000..b25c076
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_ko");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.ko");dojo.nls.colors.ko={"lightsteelblue":"라이트 스틸 블루(light steel blue)","orangered":"오렌지 레드(orange red)","midnightblue":"미드나잇 블루(midnight blue)","cadetblue":"카뎃 블루(cadet blue)","seashell":"씨쉘(seashell)","slategrey":"슬레이트 그레이(slate gray)","coral":"코랄(coral)","darkturquoise":"다크 터콰즈(dark turquoise)","antiquewhite":"앤틱 화이트(antique white)","mediumspringgreen":"미디엄 스프링 그린(medium spring green)","salmon":"샐몬(salmon)","darkgrey":"다크 그레이(dark gray)","ivory":"아이보리(ivory)","greenyellow":"그린 옐로우(green-yellow)","mistyrose":"미스티 로즈(misty rose)","lightsalmon":"라이트 샐몬(light salmon)","silver":"실버(silver)","dimgrey":"딤 그레이(dim gray)","orange":"오렌지(orange)","white":"화이트(white)","navajowhite":"나바호 화이트(navajo white)","royalblue":"로얄 블루(royal blue)","deeppink":"딥 핑크(deep pink)","lime":"라임(lime)","oldlace":"올드 레이스(old lace)","chartreuse":"샤르트뢰즈(chartreuse)","darkcyan":"다크 시안(dark cyan)","yellow":"옐로우(yellow)","linen":"리넨(linen)","olive":"올리브(olive)","gold":"골드(gold)","lawngreen":"론 그린(lawn green)","lightyellow":"라이트 옐로우(light yellow)","tan":"탠(tan)","darkviolet":"다크 바이올렛(dark violet)","lightslategrey":"라이트 슬레이트 그레이(light slate gray)","grey":"그레이(gray)","darkkhaki":"다크 카키(dark khaki)","green":"그린(green)","deepskyblue":"딥 스카이 블루(deep sky blue)","aqua":"아쿠아(aqua)","sienna":"시에나(sienna)","mintcream":"민트 크림(mint cream)","rosybrown":"로지 브라운(rosy brown)","mediumslateblue":"미디엄 슬레이트 블루(medium slate blue)","magenta":"마젠타(magenta)","lightseagreen":"라이트 씨 그린(light sea green)","cyan":"시안(cyan)","olivedrab":"올리브 드랩(olive drab)","darkgoldenrod":"다크 골든로드(dark goldenrod)","slateblue":"슬레이트 블루(slate blue)","mediumaquamarine":"미디엄 아쿠아마린(medium aquamarine)","lavender":"라벤더(lavender)","mediumseagreen":"미디엄 씨 그린(medium sea green)","maroon":"마룬(maroon)","darkslategray":"다크 슬레이트 그레이(dark slate gray)","mediumturquoise":"미디엄 터콰즈(medium turquoise)","ghostwhite":"고스트 화이트(ghost white)","darkblue":"다크 블루(dark blue)","mediumvioletred":"미디엄 바이올렛 레드(medium violet-red)","brown":"브라운(brown)","lightgray":"라이트 그레이(light gray)","sandybrown":"샌디 브라운(sandy brown)","pink":"핑크(pink)","firebrick":"파이어 브릭(fire brick)","indigo":"인디고(indigo)","snow":"스노우(snow)","darkorchid":"다크 오키드(dark orchid)","turquoise":"터콰즈(turquoise)","chocolate":"초콜렛(chocolate)","springgreen":"스프링 그린(spring green)","moccasin":"모카신(moccasin)","navy":"네이비(navy)","lemonchiffon":"레몬 쉬폰(lemon chiffon)","teal":"틸(teal)","floralwhite":"플로랄 화이트(floral white)","cornflowerblue":"콘플라워 블루(cornflower blue)","paleturquoise":"페일 터콰즈(pale turquoise)","purple":"퍼플(purple)","gainsboro":"게인스브로(gainsboro)","plum":"플럼(plum)","red":"레드(red)","blue":"블루(blue)","forestgreen":"포레스트 그린(forest green)","darkgreen":"다크 그린(dark green)","honeydew":"허니듀(honeydew)","darkseagreen":"다크 씨 그린(dark sea green)","lightcoral":"라이트 코랄(light coral)","palevioletred":"페일 바이올렛 레드(pale violet-red)","mediumpurple":"미디엄 퍼플(medium purple)","saddlebrown":"새들 브라운(saddle brown)","darkmagenta":"다크 마젠타(dark magenta)","thistle":"시슬(thistle)","whitesmoke":"화이트 스모크(white smoke)","wheat":"휘트(wheat)","violet":"바이올렛(violet)","lightskyblue":"라이트 스카이 블루(light sky blue)","goldenrod":"골든로드(goldenrod)","mediumblue":"미디엄 블루(medium blue)","skyblue":"스카이 블루(sky blue)","crimson":"크림슨(crimson)","darksalmon":"다크 샐몬(dark salmon)","darkred":"다크 레드(dark red)","darkslategrey":"다크 슬레이트 그레이(dark slate gray)","peru":"페루(peru)","lightgrey":"라이트 그레이(light gray)","lightgoldenrodyellow":"라이트 골든로드 옐로우(light goldenrod yellow)","blanchedalmond":"블랜치 아몬드(blanched almond)","aliceblue":"앨리스 블루(alice blue)","bisque":"비스크(bisque)","slategray":"슬레이트 그레이(slate gray)","palegoldenrod":"페일 골든로드(pale goldenrod)","darkorange":"다크 오렌지(dark orange)","aquamarine":"아쿠아마린(aquamarine)","lightgreen":"라이트 그린(light green)","burlywood":"벌리우드(burlywood)","dodgerblue":"다저 블루(dodger blue)","darkgray":"다크 그레이(dark gray)","lightcyan":"라이트 시안(light cyan)","powderblue":"파우더 블루(powder blue)","blueviolet":"블루 바이올렛(blue-violet)","orchid":"오키드(orchid)","dimgray":"딤 그레이(dim gray)","beige":"베이지(beige)","fuchsia":"후크샤(fuchsia)","lavenderblush":"라벤더 블러쉬(lavender blush)","hotpink":"핫 핑크(hot pink)","steelblue":"스틸 블루(steel blue)","tomato":"토마토(tomato)","lightpink":"라이트 핑크(light pink)","limegreen":"라임 그린(lime green)","indianred":"인디안 레드(indian red)","papayawhip":"파파야 휩(papaya whip)","lightslategray":"라이트 슬레이트 그레이(light slate gray)","gray":"그레이(gray)","mediumorchid":"미디엄 오키드(medium orchid)","cornsilk":"콘실크(cornsilk)","black":"블랙(black)","seagreen":"씨 그린(sea green)","darkslateblue":"다크 슬레이트 블루(dark slate blue)","khaki":"카키(khaki)","lightblue":"라이트 블루(light blue)","palegreen":"페일 그린(pale green)","azure":"애쥬어(azure)","peachpuff":"피치 퍼프(peach puff)","darkolivegreen":"다크 올리브 그린(dark olive green)","yellowgreen":"옐로우 그린(yellow green)"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.ko");dijit._editor.nls.commands.ko={"removeFormat":"형식 제거","copy":"복사","paste":"붙여넣기","selectAll":"모두 선택","insertOrderedList":"번호 목록","insertTable":"테이블 삽입/편집","print":"인쇄","underline":"밑줄","foreColor":"전경색","htmlToggle":"HTML 소스","formatBlock":"단락 스타일","newPage":"새 페이지","insertHorizontalRule":"수평 자","delete":"삭제","insertUnorderedList":"글머리표 목록","tableProp":"테이블 특성","insertImage":"이미지 삽입","superscript":"위첨자","subscript":"아래첨자","createLink":"링크 작성","undo":"실행 취소","fullScreen":"토글 전체 화면","italic":"기울임체","fontName":"글꼴 이름","justifyLeft":"왼쪽 맞춤","unlink":"링크 제거","toggleTableBorder":"토글 테이블 테두리","viewSource":"HTML 소스 보기","fontSize":"글꼴 크기","systemShortcut":"\"${0}\" 조치는 브라우저에서 키보드 단축키를 이용해서만 사용할 수 있습니다. ${1}을(를) 사용하십시오.","indent":"들여쓰기","redo":"다시 실행","strikethrough":"취소선","justifyFull":"양쪽 맞춤","justifyCenter":"가운데 맞춤","hiliteColor":"배경색","deleteTable":"테이블 삭제","outdent":"내어쓰기","cut":"잘라내기","plainFormatBlock":"단락 스타일","toggleDir":"토글 방향","bold":"굵은체","tabIndent":"탭 들여쓰기","justifyRight":"오른쪽 맞춤","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.ko");dijit._editor.nls.FontChoice.ko={"1":"가장 작게","2":"조금 작게","formatBlock":"서식","3":"작게","4":"중간","5":"크게","6":"조금 크게","7":"가장 크게","fantasy":"fantasy","serif":"serif","p":"단락","pre":"서식이 지정됨","sans-serif":"sans-serif","fontName":"글꼴","h1":"제목","h2":"부제목","h3":"하위 부제목","monospace":"monospace","fontSize":"크기","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.ko");dijit._editor.nls.LinkDialog.ko={"text":"설명:","insertImageTitle":"이미지 특성","set":"설정","newWindow":"새 창","topWindow":"최상위 창","target":"대상:","createLinkTitle":"링크 특성","parentWindow":"상위 창","currentWindow":"현재 창","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.ko");dojo.cldr.nls.currency.ko={"HKD_displayName":"홍콩 달러","CHF_displayName":"스위스 프랑","CAD_displayName":"캐나다 달러","CNY_displayName":"중국 위안 인민폐","AUD_displayName":"호주 달러","JPY_displayName":"일본 엔화","USD_displayName":"미국 달러","GBP_displayName":"영국령 파운드 스털링","EUR_displayName":"유로화","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.ko");dojo.cldr.nls.gregorian.ko={"months-format-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-weekday":"요일","dateFormatItem-yQQQ":"y년 QQQ","dateFormatItem-yMEd":"yyyy. M. d. EEE","dateFormatItem-MMMEd":"MMM d일 (E)","eraNarrow":["기원전","서기"],"dateFormat-long":"y년 M월 d일","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d일 EEE","dayPeriods-format-wide-pm":"오후","dateFormat-full":"y년 M월 d일 EEEE","dateFormatItem-Md":"M. d.","field-era":"연호","dateFormatItem-yM":"yyyy. M.","months-standAlone-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"timeFormat-short":"a h:mm","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"timeFormat-long":"a h시 m분 s초 z","field-year":"년","dateFormatItem-yMMM":"y년 MMM","dateFormatItem-yQ":"y년 Q분기","field-hour":"시","dateFormatItem-MMdd":"MM. dd","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormatItem-yyQ":"yy년 Q분기","timeFormat-full":"a h시 m분 s초 zzzz","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-day-relative+3":"3일후","months-standAlone-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"quarters-format-abbr":["1분기","2분기","3분기","4분기"],"quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"dateFormatItem-yyMMM":"yy년 MMM","timeFormat-medium":"a h:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"eraAbbr":["기원전","서기"],"field-minute":"분","field-dayperiod":"오전/오후","days-standAlone-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"어제","dateFormatItem-h":"a h","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"그저께","field-day-relative+-3":"그끄제","dateFormatItem-MMMd":"MMM d일","dateFormatItem-MEd":"M. d. (E)","dateTimeFormat-full":"{1} {0}","field-day":"일","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-zone":"시간대","dateFormatItem-yyyyMM":"yyyy. MM","dateFormatItem-y":"y","months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormatItem-yyMM":"YY. M.","dateFormatItem-hm":"a h:mm","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-yMMMd":"y년 MMM d일","eraNames":["서력기원전","서력기원"],"days-format-narrow":["일","월","화","수","목","금","토"],"field-month":"월","days-standAlone-narrow":["일","월","화","수","목","금","토"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"오전","dateFormat-short":"yy. M. d.","field-second":"초","dateFormatItem-yMMMEd":"y년 MMM d일 EEE","dateFormatItem-Ed":"d일 (E)","field-week":"주","dateFormat-medium":"yyyy. M. d.","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H시 m분 s초","dateFormatItem-hms":"a h:mm:ss","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/dijit-all_nb.js b/lib/dijit/nls/dijit-all_nb.js
new file mode 100644 (file)
index 0000000..7352edc
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_nb");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.nb");dojo.nls.colors.nb={"lightsteelblue":"lys stålblå","orangered":"rødoransje","midnightblue":"midnattsblå","cadetblue":"mørk grønnblå","seashell":"skjellhvit","slategrey":"skifergrå","coral":"korall","darkturquoise":"mørk turkis","antiquewhite":"antikk hvit","mediumspringgreen":"middels vårgrønn","salmon":"lakserosa","darkgrey":"mørk grå","ivory":"elfenbenshvit","greenyellow":"gulgrønn","mistyrose":"lys rosenrød","lightsalmon":"lys lakserosa","silver":"sølvfarget","dimgrey":"mørk mørkegrå","orange":"oransje","white":"hvit","navajowhite":"gulbrun","royalblue":"kongeblå","deeppink":"dyp rosa","lime":"lime","oldlace":"kniplingshvit","chartreuse":"løvgrønn","darkcyan":"mørk cyan","yellow":"gul","linen":"lin","olive":"oliven","gold":"gull","lawngreen":"plengrønn","lightyellow":"lys gul","tan":"matt mellombrun","darkviolet":"mørk fiolett","lightslategrey":"lys skifergrå","grey":"grå","darkkhaki":"mørk khaki","green":"grønn","deepskyblue":"dyp himmelblå","aqua":"akva","sienna":"nøttebrun","mintcream":"mintkrem","rosybrown":"brunlilla","mediumslateblue":"middels skiferblå","magenta":"magenta","lightseagreen":"lys sjøgrønn","cyan":"cyan","olivedrab":"middels olivengrønn","darkgoldenrod":"mørk gyldenris","slateblue":"skiferblå","mediumaquamarine":"middels akvamarin","lavender":"lavendel","mediumseagreen":"middels sjøgrønn","maroon":"rødbrun","darkslategray":"mørk skifergrå","mediumturquoise":"middels turkis","ghostwhite":"egghvit","darkblue":"mørk blå","mediumvioletred":"middels fiolettrød","brown":"brun","lightgray":"lys grå","sandybrown":"sandbrun","pink":"rosa","firebrick":"mursteinsrød","indigo":"indigo","snow":"snøhvit","darkorchid":"mørk orkide","turquoise":"turkis","chocolate":"sjokolade","springgreen":"vårgrønn","moccasin":"lys gulbrun","navy":"marineblå","lemonchiffon":"ferskenfarget","teal":"mørk grønnblå","floralwhite":"blomsterhvit","cornflowerblue":"kornblå","paleturquoise":"svak turkis","purple":"purpur","gainsboro":"lys lys grå","plum":"plommefarget","red":"rød","blue":"blå","forestgreen":"skoggrønn","darkgreen":"mørk grønn","honeydew":"grønnhvit","darkseagreen":"mørk sjøgrønn","lightcoral":"lys korall","palevioletred":"svak fiolettrød","mediumpurple":"middels purpur","saddlebrown":"mørk nøttebrun","darkmagenta":"mørk magenta","thistle":"lys grålilla","whitesmoke":"røykhvit","wheat":"varm sienna","violet":"fiolett","lightskyblue":"lys himmelblå","goldenrod":"gyldenris","mediumblue":"mellomblå","skyblue":"himmelblå","crimson":"karmosinrødt","darksalmon":"mørk lakserosa","darkred":"mørk rød","darkslategrey":"mørk skifergrå","peru":"lys nøttebrun","lightgrey":"lys grå","lightgoldenrodyellow":"lys gyldenrisgul","blanchedalmond":"lys mandel","aliceblue":"blåhvit","bisque":"gulrosa","slategray":"skifergrå","palegoldenrod":"svak gyldenris","darkorange":"mørk oransje","aquamarine":"akvamarin","lightgreen":"lys grønn","burlywood":"matt mellombrun","dodgerblue":"lys havblå","darkgray":"mørk grå","lightcyan":"lys cyan","powderblue":"lys grønnblå","blueviolet":"blåfiolett","orchid":"orkide","dimgray":"mørk mørkegrå","beige":"beige","fuchsia":"fuksia","lavenderblush":"lillahvit","hotpink":"halvmørk rosa","steelblue":"stålblå","tomato":"tomatrød","lightpink":"lys rosa","limegreen":"limegrønn","indianred":"rustrød","papayawhip":"lys papaya","lightslategray":"lys skifergrå","gray":"grå","mediumorchid":"middels orkide","cornsilk":"cornsilk","black":"svart","seagreen":"sjøgrønn","darkslateblue":"mørk skiferblå","khaki":"khaki","lightblue":"lys blå","palegreen":"svak grønn","azure":"asur","peachpuff":"brunrosa","darkolivegreen":"mørk olivengrønn","yellowgreen":"gulgrønn"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.nb");dijit._editor.nls.commands.nb={"removeFormat":"Fjern format","copy":"Kopier","paste":"Lim inn","selectAll":"Velg alle","insertOrderedList":"Nummerert liste","insertTable":"Sett inn/rediger tabell","print":"Skriv ut","underline":"Understreking","foreColor":"Forgrunnsfarge","htmlToggle":"HTML-kilde","formatBlock":"Avsnittsstil","newPage":"Ny side","insertHorizontalRule":"Vannrett strek","delete":"Slett","insertUnorderedList":"Punktliste","tableProp":"Tabellegenskap","insertImage":"Sett inn bilde","superscript":"Hevet skrift","subscript":"Senket skrift","createLink":"Opprett kobling","undo":"Angre","fullScreen":"Slå på/av full skjerm","italic":"Kursiv","fontName":"Skriftnavn","justifyLeft":"Venstrejuster","unlink":"Fjern kobling","toggleTableBorder":"Bytt tabellkant","viewSource":"Vis HTML-kilde","fontSize":"Skriftstørrelse","systemShortcut":"Handlingen \"${0}\" er bare tilgjengelig i nettleseren ved hjelp av en tastatursnarvei. Bruk ${1}.","indent":"Innrykk","redo":"Gjør om","strikethrough":"Gjennomstreking","justifyFull":"Juster","justifyCenter":"Midtstill","hiliteColor":"Bakgrunnsfarge","deleteTable":"Slett tabell","outdent":"Fjern innrykk","cut":"Klipp ut","plainFormatBlock":"Avsnittsstil","toggleDir":"Bytt retning","bold":"Fet","tabIndent":"Tabulatorinnrykk","justifyRight":"Høyrejuster","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.nb");dijit._editor.nls.FontChoice.nb={"1":"xx-liten","2":"x-liten","formatBlock":"Format","3":"liten","4":"middels","5":"stor","6":"x-stor","7":"xx-stor","fantasy":"fantasi","serif":"serif","p":"Avsnitt","pre":"Forhåndsformatert","sans-serif":"sans-serif","fontName":"Skrift","h1":"Overskrift","h2":"Undertittel","h3":"Under-undertittel","monospace":"monospace","fontSize":"Størrelse","cursive":"kursiv","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.nb");dijit._editor.nls.LinkDialog.nb={"text":"Beskrivelse:","insertImageTitle":"Bildeegenskaper","set":"Definer","newWindow":"Nytt vindu","topWindow":"Øverste vindu","target":"Mål:","createLinkTitle":"Koblingsegenskaper","parentWindow":"Overordnet vindu","currentWindow":"Gjeldende vindu","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.nb");dojo.cldr.nls.currency.nb={"HKD_displayName":"Hongkong-dollar","CHF_displayName":"sveitsiske franc","CHF_symbol":"CHF","JPY_symbol":"JPY","CAD_displayName":"kanadiske dollar","CNY_displayName":"kinesiske yuan renminbi","USD_symbol":"USD","AUD_displayName":"australske dollar","JPY_displayName":"japanske yen","CAD_symbol":"CAD","USD_displayName":"amerikanske dollar","EUR_symbol":"EUR","CNY_symbol":"CNY","GBP_displayName":"britiske pund sterling","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euro","HKD_symbol":"HK$"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.nb");dojo.cldr.nls.gregorian.nb={"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"ukedag","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d.M.yyyy","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["f.Kr.","e.Kr."],"dateFormat-long":"d. MMMM y","months-format-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d. MMMM y","dateFormatItem-Md":"d.M.","field-era":"tidsalder","dateFormatItem-yM":"M y","months-standAlone-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH:mm:ss z","field-year":"år","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"time","dateFormatItem-MMdd":"dd.MM","months-format-abbr":["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","field-day-relative+3":"i overovermorgen","months-standAlone-abbr":["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-M":"L","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["f.Kr.","e.Kr."],"field-minute":"minutt","field-dayperiod":"AM/PM","days-standAlone-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-day-relative+-3":"i forforgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M","field-day":"dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"sone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM.yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"eraNames":["f.Kr.","e.Kr."],"days-format-narrow":["S","M","T","O","T","F","L"],"field-month":"måned","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormat-short":"dd.MM.yy","field-second":"sekund","dateFormatItem-yMMMEd":"EEE d. MMM y","field-week":"uke","dateFormat-medium":"d. MMM y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_nl-nl.js b/lib/dijit/nls/dijit-all_nl-nl.js
new file mode 100644 (file)
index 0000000..13107dc
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_nl-nl");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.nl_nl");dojo.nls.colors.nl_nl={"lightsteelblue":"lichtstaalblauw","orangered":"oranjerood","midnightblue":"nachtblauw","cadetblue":"donkerstaalblauw","seashell":"schelp","slategrey":"leigrijs","coral":"koraalrood","darkturquoise":"donkerturquoise","antiquewhite":"antiekwit","mediumspringgreen":"midlentegroen","salmon":"zalm","darkgrey":"donkergrijs","ivory":"ivoorwit","greenyellow":"groengeel","mistyrose":"matroze","lightsalmon":"lichtzalm","silver":"zilvergrijs","dimgrey":"dofgrijs","orange":"oranje","white":"wit","navajowhite":"navajowit","royalblue":"koningsblauw","deeppink":"donkerroze","lime":"limoen","oldlace":"kant","chartreuse":"groengeel","darkcyan":"donkercyaan","yellow":"geel","linen":"linnen","olive":"olijfgroen","gold":"goud","lawngreen":"grasgroen","lightyellow":"lichtgeel","tan":"geelbruin","darkviolet":"donkerviolet","lightslategrey":"lichtblauwgrijs","grey":"grijs","darkkhaki":"donkerkaki","green":"groen","deepskyblue":"diephemelblauw","aqua":"aqua","sienna":"sienna","mintcream":"mintroomgeel","rosybrown":"roodbruin","mediumslateblue":"midgrijsblauw","magenta":"magenta","lightseagreen":"lichtzeegroen","cyan":"cyaan","olivedrab":"grijsbruin","darkgoldenrod":"donkergoud","slateblue":"leiblauw","mediumaquamarine":"midaquamarijn","lavender":"lavendelblauw","mediumseagreen":"midzeegroen","maroon":"kastanjebruin","darkslategray":"donkerblauwgrijs","mediumturquoise":"midturquoise","ghostwhite":"spierwit","darkblue":"donkerblauw","mediumvioletred":"midvioletrood","brown":"bruin","lightgray":"lichtgrijs","sandybrown":"zandbruin","pink":"roze","firebrick":"vuursteenrood","indigo":"indigo","snow":"sneeuwwit","darkorchid":"donkerorchidee","turquoise":"turquoise","chocolate":"chocoladebruin","springgreen":"lentegroen","moccasin":"moccasin","navy":"marineblauw","lemonchiffon":"citroengeel","teal":"grijsblauw","floralwhite":"rozewit","cornflowerblue":"korenbloemblauw","paleturquoise":"bleekturquoise","purple":"purper","gainsboro":"lichtblauwgrijs","plum":"pruim","red":"rood","blue":"blauw","forestgreen":"bosgroen","darkgreen":"donkergroen","honeydew":"meloen","darkseagreen":"donkerzeegroen","lightcoral":"lichtkoraal","palevioletred":"bleekvioletrood","mediumpurple":"midpurper","saddlebrown":"leerbruin","darkmagenta":"donkermagenta","thistle":"distel","whitesmoke":"rookwit","wheat":"tarwebruin","violet":"violet","lightskyblue":"lichthemelsblauw","goldenrod":"goudbruin","mediumblue":"midblauw","skyblue":"hemelsblauw","crimson":"karmozijnrood","darksalmon":"donkerzalm","darkred":"donkerrood","darkslategrey":"donkerblauwgrijs","peru":"bruin","lightgrey":"lichtgrijs","lightgoldenrodyellow":"lichtgoudgeel","blanchedalmond":"amandel","aliceblue":"lichtblauw","bisque":"oranjegeel","slategray":"leigrijs","palegoldenrod":"bleekgeel","darkorange":"donkeroranje","aquamarine":"aquamarijn","lightgreen":"lichtgroen","burlywood":"lichtbruin","dodgerblue":"helderblauw","darkgray":"donkergrijs","lightcyan":"lichtcyaan","powderblue":"lichtblauw-wit","blueviolet":"violet","orchid":"orchidee","dimgray":"dofgrijs","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavendelblos","hotpink":"acaciaroze","steelblue":"staalblauw","tomato":"tomaat","lightpink":"lichtroze","limegreen":"limoengroen","indianred":"indisch rood","papayawhip":"papajaroze","lightslategray":"lichtblauwgrijs","gray":"grijs","mediumorchid":"midorchidee","cornsilk":"maïsgeel","black":"zwart","seagreen":"zeegroen","darkslateblue":"donkergrijsblauw","khaki":"kaki","lightblue":"lichtblauw","palegreen":"bleekgroen","azure":"azuur","peachpuff":"perzikroze","darkolivegreen":"donkerolijfgroen","yellowgreen":"geelgroen"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.nl_nl");dijit._editor.nls.commands.nl_nl={"removeFormat":"Opmaak verwijderen","copy":"Kopiëren","paste":"Plakken","selectAll":"Alles selecteren","insertOrderedList":"Genummerde lijst","insertTable":"Tabel invoegen/bewerken","print":"Afdrukken","underline":"Onderstrepen","foreColor":"Voorgrondkleur","htmlToggle":"HTML-bron","formatBlock":"Alineastijl","newPage":"Nieuwe pagina","insertHorizontalRule":"Horizontale liniaal","delete":"Wissen","insertUnorderedList":"Lijst met opsommingstekens","tableProp":"Tabeleigenschap","insertImage":"Afbeelding invoegen","superscript":"Superscript","subscript":"Subscript","createLink":"Link maken","undo":"Ongedaan maken","fullScreen":"Volledig scherm in-/uitschakelen","italic":"Cursief","fontName":"Lettertype","justifyLeft":"Links uitlijnen","unlink":"Link verwijderen","toggleTableBorder":"Tabelkader wijzigen","viewSource":"HTML-bron bekijken","fontSize":"Lettergrootte","systemShortcut":"De actie \"${0}\" is alleen beschikbaar in uw browser via een sneltoetscombinatie. Gebruik ${1}.","indent":"Inspringen","redo":"Opnieuw","strikethrough":"Doorhalen","justifyFull":"Uitvullen","justifyCenter":"Centreren","hiliteColor":"Achtergrondkleur","deleteTable":"Tabel wissen","outdent":"Uitspringen","cut":"Knippen","plainFormatBlock":"Alineastijl","toggleDir":"Schrijfrichting wijzigen","bold":"Vet","tabIndent":"Inspringen","justifyRight":"Rechts uitlijnen","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.nl_nl");dijit._editor.nls.FontChoice.nl_nl={"1":"xx-klein","2":"x-klein","formatBlock":"Opmaak","3":"klein","4":"gemiddeld","5":"groot","6":"x-groot","7":"xx-groot","fantasy":"fantasy","serif":"serif","p":"Alinea","pre":"Vooraf opgemaakt","sans-serif":"sans-serif","fontName":"Lettertype","h1":"Kop","h2":"Subkop","h3":"Sub-subkop","monospace":"monospace","fontSize":"Grootte","cursive":"cursief","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.nl_nl");dijit._editor.nls.LinkDialog.nl_nl={"text":"Beschrijving:","insertImageTitle":"Afbeeldingseigenschappen","set":"Instellen","newWindow":"Nieuw venster","topWindow":"Bovenste venster","target":"Doel:","createLinkTitle":"Linkeigenschappen","parentWindow":"Hoofdvenster","currentWindow":"Huidig venster","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.nl_nl");dojo.cldr.nls.currency.nl_nl={"HKD_displayName":"Hongkongse dollar","CHF_displayName":"Zwitserse franc","CAD_displayName":"Canadese dollar","CNY_displayName":"Chinese yuan renminbi","AUD_displayName":"Australische dollar","JPY_displayName":"Japanse yen","USD_displayName":"Amerikaanse dollar","GBP_displayName":"Brits pond sterling","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.nl_nl");dojo.cldr.nls.gregorian.nl_nl={"dateFormatItem-yM":"M-y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"PM","field-minute":"Minuut","eraNames":["Voor Christus","na Christus"],"dateFormatItem-MMMEd":"E d MMM","field-day-relative+-1":"gisteren","field-weekday":"Dag van de week","dateFormatItem-yQQQ":"QQQ y","field-day-relative+-2":"eergisteren","dateFormatItem-MMdd":"dd-MM","field-day-relative+-3":"eereergisteren","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-era":"Tijdperk","field-hour":"Uur","dayPeriods-format-wide-am":"AM","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-y":"y","timeFormat-full":"HH:mm:ss zzzz","months-standAlone-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"eraAbbr":["v. Chr.","n. Chr."],"field-day-relative+2":"overmorgen","field-day-relative+3":"overovermorgen","dateFormatItem-yyyyMMMM":"MMMM y","dateFormat-long":"d MMMM y","timeFormat-medium":"HH:mm:ss","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d-MM","dateFormat-medium":"d MMM y","dateFormatItem-yyMM":"MM-yy","dateFormatItem-yyMMM":"MMM yy","dateFormatItem-yyQQQQ":"QQQQ yy","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-ms":"mm:ss","field-year":"Jaar","field-week":"Week","months-standAlone-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateFormatItem-MMMd":"d-MMM","dateFormatItem-yyQ":"Q yy","timeFormat-long":"HH:mm:ss z","months-format-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"timeFormat-short":"HH:mm","field-month":"Maand","dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-M":"L","days-format-narrow":["Z","M","D","W","D","V","Z"],"field-second":"Seconde","field-day":"Dag","dateFormatItem-MEd":"E d-M","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormat-short":"dd-MM-yy","dateFormatItem-yMMMEd":"EEE d MMM y","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d-M","dateFormatItem-yMEd":"EEE d-M-y","months-format-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateFormatItem-d":"d","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"eraNarrow":["v. Chr.","n. Chr."],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_nl.js b/lib/dijit/nls/dijit-all_nl.js
new file mode 100644 (file)
index 0000000..9f7820b
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_nl");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.nl");dojo.nls.colors.nl={"lightsteelblue":"lichtstaalblauw","orangered":"oranjerood","midnightblue":"nachtblauw","cadetblue":"donkerstaalblauw","seashell":"schelp","slategrey":"leigrijs","coral":"koraalrood","darkturquoise":"donkerturquoise","antiquewhite":"antiekwit","mediumspringgreen":"midlentegroen","salmon":"zalm","darkgrey":"donkergrijs","ivory":"ivoorwit","greenyellow":"groengeel","mistyrose":"matroze","lightsalmon":"lichtzalm","silver":"zilvergrijs","dimgrey":"dofgrijs","orange":"oranje","white":"wit","navajowhite":"navajowit","royalblue":"koningsblauw","deeppink":"donkerroze","lime":"limoen","oldlace":"kant","chartreuse":"groengeel","darkcyan":"donkercyaan","yellow":"geel","linen":"linnen","olive":"olijfgroen","gold":"goud","lawngreen":"grasgroen","lightyellow":"lichtgeel","tan":"geelbruin","darkviolet":"donkerviolet","lightslategrey":"lichtblauwgrijs","grey":"grijs","darkkhaki":"donkerkaki","green":"groen","deepskyblue":"diephemelblauw","aqua":"aqua","sienna":"sienna","mintcream":"mintroomgeel","rosybrown":"roodbruin","mediumslateblue":"midgrijsblauw","magenta":"magenta","lightseagreen":"lichtzeegroen","cyan":"cyaan","olivedrab":"grijsbruin","darkgoldenrod":"donkergoud","slateblue":"leiblauw","mediumaquamarine":"midaquamarijn","lavender":"lavendelblauw","mediumseagreen":"midzeegroen","maroon":"kastanjebruin","darkslategray":"donkerblauwgrijs","mediumturquoise":"midturquoise","ghostwhite":"spierwit","darkblue":"donkerblauw","mediumvioletred":"midvioletrood","brown":"bruin","lightgray":"lichtgrijs","sandybrown":"zandbruin","pink":"roze","firebrick":"vuursteenrood","indigo":"indigo","snow":"sneeuwwit","darkorchid":"donkerorchidee","turquoise":"turquoise","chocolate":"chocoladebruin","springgreen":"lentegroen","moccasin":"moccasin","navy":"marineblauw","lemonchiffon":"citroengeel","teal":"grijsblauw","floralwhite":"rozewit","cornflowerblue":"korenbloemblauw","paleturquoise":"bleekturquoise","purple":"purper","gainsboro":"lichtblauwgrijs","plum":"pruim","red":"rood","blue":"blauw","forestgreen":"bosgroen","darkgreen":"donkergroen","honeydew":"meloen","darkseagreen":"donkerzeegroen","lightcoral":"lichtkoraal","palevioletred":"bleekvioletrood","mediumpurple":"midpurper","saddlebrown":"leerbruin","darkmagenta":"donkermagenta","thistle":"distel","whitesmoke":"rookwit","wheat":"tarwebruin","violet":"violet","lightskyblue":"lichthemelsblauw","goldenrod":"goudbruin","mediumblue":"midblauw","skyblue":"hemelsblauw","crimson":"karmozijnrood","darksalmon":"donkerzalm","darkred":"donkerrood","darkslategrey":"donkerblauwgrijs","peru":"bruin","lightgrey":"lichtgrijs","lightgoldenrodyellow":"lichtgoudgeel","blanchedalmond":"amandel","aliceblue":"lichtblauw","bisque":"oranjegeel","slategray":"leigrijs","palegoldenrod":"bleekgeel","darkorange":"donkeroranje","aquamarine":"aquamarijn","lightgreen":"lichtgroen","burlywood":"lichtbruin","dodgerblue":"helderblauw","darkgray":"donkergrijs","lightcyan":"lichtcyaan","powderblue":"lichtblauw-wit","blueviolet":"violet","orchid":"orchidee","dimgray":"dofgrijs","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavendelblos","hotpink":"acaciaroze","steelblue":"staalblauw","tomato":"tomaat","lightpink":"lichtroze","limegreen":"limoengroen","indianred":"indisch rood","papayawhip":"papajaroze","lightslategray":"lichtblauwgrijs","gray":"grijs","mediumorchid":"midorchidee","cornsilk":"maïsgeel","black":"zwart","seagreen":"zeegroen","darkslateblue":"donkergrijsblauw","khaki":"kaki","lightblue":"lichtblauw","palegreen":"bleekgroen","azure":"azuur","peachpuff":"perzikroze","darkolivegreen":"donkerolijfgroen","yellowgreen":"geelgroen"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.nl");dijit._editor.nls.commands.nl={"removeFormat":"Opmaak verwijderen","copy":"Kopiëren","paste":"Plakken","selectAll":"Alles selecteren","insertOrderedList":"Genummerde lijst","insertTable":"Tabel invoegen/bewerken","print":"Afdrukken","underline":"Onderstrepen","foreColor":"Voorgrondkleur","htmlToggle":"HTML-bron","formatBlock":"Alineastijl","newPage":"Nieuwe pagina","insertHorizontalRule":"Horizontale liniaal","delete":"Wissen","insertUnorderedList":"Lijst met opsommingstekens","tableProp":"Tabeleigenschap","insertImage":"Afbeelding invoegen","superscript":"Superscript","subscript":"Subscript","createLink":"Link maken","undo":"Ongedaan maken","fullScreen":"Volledig scherm in-/uitschakelen","italic":"Cursief","fontName":"Lettertype","justifyLeft":"Links uitlijnen","unlink":"Link verwijderen","toggleTableBorder":"Tabelkader wijzigen","viewSource":"HTML-bron bekijken","fontSize":"Lettergrootte","systemShortcut":"De actie \"${0}\" is alleen beschikbaar in uw browser via een sneltoetscombinatie. Gebruik ${1}.","indent":"Inspringen","redo":"Opnieuw","strikethrough":"Doorhalen","justifyFull":"Uitvullen","justifyCenter":"Centreren","hiliteColor":"Achtergrondkleur","deleteTable":"Tabel wissen","outdent":"Uitspringen","cut":"Knippen","plainFormatBlock":"Alineastijl","toggleDir":"Schrijfrichting wijzigen","bold":"Vet","tabIndent":"Inspringen","justifyRight":"Rechts uitlijnen","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.nl");dijit._editor.nls.FontChoice.nl={"1":"xx-klein","2":"x-klein","formatBlock":"Opmaak","3":"klein","4":"gemiddeld","5":"groot","6":"x-groot","7":"xx-groot","fantasy":"fantasy","serif":"serif","p":"Alinea","pre":"Vooraf opgemaakt","sans-serif":"sans-serif","fontName":"Lettertype","h1":"Kop","h2":"Subkop","h3":"Sub-subkop","monospace":"monospace","fontSize":"Grootte","cursive":"cursief","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.nl");dijit._editor.nls.LinkDialog.nl={"text":"Beschrijving:","insertImageTitle":"Afbeeldingseigenschappen","set":"Instellen","newWindow":"Nieuw venster","topWindow":"Bovenste venster","target":"Doel:","createLinkTitle":"Linkeigenschappen","parentWindow":"Hoofdvenster","currentWindow":"Huidig venster","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.nl");dojo.cldr.nls.currency.nl={"HKD_displayName":"Hongkongse dollar","CHF_displayName":"Zwitserse franc","CAD_displayName":"Canadese dollar","CNY_displayName":"Chinese yuan renminbi","AUD_displayName":"Australische dollar","JPY_displayName":"Japanse yen","USD_displayName":"Amerikaanse dollar","GBP_displayName":"Brits pond sterling","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.nl");dojo.cldr.nls.gregorian.nl={"dateFormatItem-yM":"M-y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"PM","field-minute":"Minuut","eraNames":["Voor Christus","na Christus"],"dateFormatItem-MMMEd":"E d MMM","field-day-relative+-1":"gisteren","field-weekday":"Dag van de week","dateFormatItem-yQQQ":"QQQ y","field-day-relative+-2":"eergisteren","dateFormatItem-MMdd":"dd-MM","field-day-relative+-3":"eereergisteren","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-era":"Tijdperk","field-hour":"Uur","dayPeriods-format-wide-am":"AM","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-y":"y","timeFormat-full":"HH:mm:ss zzzz","months-standAlone-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"eraAbbr":["v. Chr.","n. Chr."],"field-day-relative+2":"overmorgen","field-day-relative+3":"overovermorgen","dateFormatItem-yyyyMMMM":"MMMM y","dateFormat-long":"d MMMM y","timeFormat-medium":"HH:mm:ss","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d-MM","dateFormat-medium":"d MMM y","dateFormatItem-yyMM":"MM-yy","dateFormatItem-yyMMM":"MMM yy","dateFormatItem-yyQQQQ":"QQQQ yy","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-ms":"mm:ss","field-year":"Jaar","field-week":"Week","months-standAlone-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateFormatItem-MMMd":"d-MMM","dateFormatItem-yyQ":"Q yy","timeFormat-long":"HH:mm:ss z","months-format-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"timeFormat-short":"HH:mm","field-month":"Maand","dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-M":"L","days-format-narrow":["Z","M","D","W","D","V","Z"],"field-second":"Seconde","field-day":"Dag","dateFormatItem-MEd":"E d-M","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormat-short":"dd-MM-yy","dateFormatItem-yMMMEd":"EEE d MMM y","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d-M","dateFormatItem-yMEd":"EEE d-M-y","months-format-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateFormatItem-d":"d","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"eraNarrow":["v. Chr.","n. Chr."],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_pl.js b/lib/dijit/nls/dijit-all_pl.js
new file mode 100644 (file)
index 0000000..db6e375
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_pl");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.pl");dojo.nls.colors.pl={"lightsteelblue":"jasny stalowoniebieski","orangered":"pomarańczowoczerwony","midnightblue":"ciemnogranatowy","cadetblue":"niebieskoszary","seashell":"muszla","slategrey":"łupkowy szary","coral":"koralowy","darkturquoise":"ciemnoturkusowy","antiquewhite":"biel antyczna","mediumspringgreen":"średnia wiosenna zieleń","salmon":"łososiowy","darkgrey":"ciemnoszary","ivory":"kość słoniowa","greenyellow":"zielonożółty","mistyrose":"bladoróżany","lightsalmon":"jasnołososiowy","silver":"srebrny","dimgrey":"przytłumiony szary","orange":"pomarańczowy","white":"biały","navajowhite":"piaskowy","royalblue":"błękit królewski","deeppink":"głęboki różowy","lime":"limetkowy","oldlace":"bladopomarańczowy","chartreuse":"jaskrawozielony","darkcyan":"ciemny cyjan","yellow":"żółty","linen":"lniany","olive":"oliwkowy","gold":"złoty","lawngreen":"trawiasty","lightyellow":"jasnożółty","tan":"kawowy","darkviolet":"ciemnofioletowy","lightslategrey":"jasny łupkowy szary","grey":"szary","darkkhaki":"ciemny khaki","green":"zielony","deepskyblue":"intensywny błękit nieba","aqua":"wodny","sienna":"siena","mintcream":"jasnomiętowy","rosybrown":"różowobrązowy","mediumslateblue":"średni łupkowy niebieski","magenta":"magenta","lightseagreen":"jasna morska zieleń","cyan":"cyjan","olivedrab":"oliwkowa zieleń","darkgoldenrod":"ciemnogliniany","slateblue":"łupkowy niebieski","mediumaquamarine":"średnia akwamaryna","lavender":"lawendowy","mediumseagreen":"średnia morska zieleń","maroon":"bordowy","darkslategray":"ciemny łupkowy szary","mediumturquoise":"średni turkusowy","ghostwhite":"bladobiały","darkblue":"ciemnoniebieski","mediumvioletred":"średni fioletowoczerwony","brown":"brązowy","lightgray":"jasnoszary","sandybrown":"piaskowy brąz","pink":"różowy","firebrick":"ceglasty","indigo":"indygo","snow":"śnieżny","darkorchid":"ciemna orchidea","turquoise":"turkusowy","chocolate":"czekoladowy","springgreen":"wiosenna zieleń","moccasin":"mokasynowy","navy":"granatowy","lemonchiffon":"cytrynowy","teal":"cyrankowy","floralwhite":"kwiatowa biel","cornflowerblue":"chabrowy","paleturquoise":"bladoturkusowy","purple":"purpurowy","gainsboro":"bladoszary","plum":"śliwkowy","red":"czerwony","blue":"niebieski","forestgreen":"leśna zieleń","darkgreen":"ciemnozielony","honeydew":"melon","darkseagreen":"ciemna morska zieleń","lightcoral":"jasnokoralowy","palevioletred":"blady fioletowoczerwony","mediumpurple":"średnia purpura","saddlebrown":"skórzany brązowy","darkmagenta":"ciemna magenta","thistle":"bladofioletowy","whitesmoke":"przydymiony biały","wheat":"pszeniczny","violet":"fioletowy","lightskyblue":"jasny błękit nieba","goldenrod":"gliniany","mediumblue":"średni niebieski","skyblue":"błękit nieba","crimson":"karmazynowy","darksalmon":"ciemnołososiowy","darkred":"ciemnoczerwony","darkslategrey":"ciemny łupkowy szary","peru":"jasnobrązowy","lightgrey":"jasnoszary","lightgoldenrodyellow":"jasnogliniana żółć","blanchedalmond":"migdałowy","aliceblue":"bladoniebieski","bisque":"biszkoptowy","slategray":"łupkowy szary","palegoldenrod":"bladogliniany","darkorange":"ciemnopomarańczowy","aquamarine":"akwamaryna","lightgreen":"jasnozielony","burlywood":"kolor drewna","dodgerblue":"błękit Dodgers","darkgray":"ciemnoszary","lightcyan":"jasny cyjan","powderblue":"pudrowy niebieski","blueviolet":"niebieskofioletowy","orchid":"orchidea","dimgray":"przytłumiony szary","beige":"beżowy","fuchsia":"fuksja","lavenderblush":"lawendoworóżowy","hotpink":"intensywny różowy","steelblue":"stalowy niebieski","tomato":"pomidorowy","lightpink":"jasnoróżowy","limegreen":"limetkowozielony","indianred":"kasztanowy","papayawhip":"papaja","lightslategray":"jasny łupkowy szary","gray":"szary","mediumorchid":"średnia orchidea","cornsilk":"kukurydziany","black":"czarny","seagreen":"morska zieleń","darkslateblue":"ciemny łupkowy niebieski","khaki":"khaki","lightblue":"jasnoniebieski","palegreen":"bladozielony","azure":"lazur","peachpuff":"brzoskwiniowy","darkolivegreen":"ciemnooliwkowy","yellowgreen":"żółtozielony"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.pl");dijit._editor.nls.commands.pl={"removeFormat":"Usuń formatowanie","copy":"Kopiuj","paste":"Wklej","selectAll":"Wybierz wszystko","insertOrderedList":"Lista numerowana","insertTable":"Wstaw/edytuj tabelę","print":"Drukuj","underline":"Podkreślenie","foreColor":"Kolor pierwszego planu","htmlToggle":"Źródło HTML","formatBlock":"Styl akapitu","newPage":"Nowa strona","insertHorizontalRule":"Linia pozioma","delete":"Usuń","insertUnorderedList":"Lista wypunktowana","tableProp":"Właściwość tabeli","insertImage":"Wstaw obraz","superscript":"Indeks górny","subscript":"Indeks dolny","createLink":"Utwórz odsyłacz","undo":"Cofnij","fullScreen":"Przełącz pełny ekran","italic":"Kursywa","fontName":"Nazwa czcionki","justifyLeft":"Wyrównaj do lewej","unlink":"Usuń odsyłacz","toggleTableBorder":"Przełącz ramkę tabeli","viewSource":"Wyświetl kod źródłowy HTML","ctrlKey":"Ctrl+${0}","fontSize":"Wielkość czcionki","systemShortcut":"Działanie ${0} jest dostępne w tej przeglądarce wyłącznie przy użyciu skrótu klawiaturowego. Należy użyć klawiszy ${1}.","indent":"Wcięcie","redo":"Ponów","strikethrough":"Przekreślenie","justifyFull":"Wyrównaj do lewej i prawej","justifyCenter":"Wyrównaj do środka","hiliteColor":"Kolor tła","deleteTable":"Usuń tabelę","outdent":"Usuń wcięcie","cut":"Wytnij","plainFormatBlock":"Styl akapitu","toggleDir":"Przełącz kierunek","bold":"Pogrubienie","tabIndent":"Wcięcie o tabulator","justifyRight":"Wyrównaj do prawej","appleKey":"⌘${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.pl");dijit._editor.nls.FontChoice.pl={"1":"najmniejsza","2":"mniejsza","formatBlock":"Format","3":"mała","4":"średnia","5":"duża","6":"większa","7":"największa","fantasy":"fantazyjna","serif":"szeryfowa","p":"Akapit","pre":"Wstępnie sformatowane","sans-serif":"bezszeryfowa","fontName":"Czcionka","h1":"Nagłówek","h2":"Nagłówek 2-go poziomu","h3":"Nagłówek 3-go poziomu","monospace":"czcionka o stałej szerokości","fontSize":"Wielkość","cursive":"kursywa","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.pl");dijit._editor.nls.LinkDialog.pl={"text":"Opis:","insertImageTitle":"Właściwości obrazu","set":"Ustaw","newWindow":"Nowe okno","topWindow":"Okno najwyższego poziomu","target":"Cel:","createLinkTitle":"Właściwości odsyłacza","parentWindow":"Okno macierzyste","currentWindow":"Bieżące okno","url":"Adres URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.pl");dojo.cldr.nls.currency.pl={"HKD_displayName":"dolar hongkoński","CHF_displayName":"frank szwajcarski","CAD_displayName":"dolar kanadyjski","CNY_displayName":"juan renminbi","AUD_displayName":"dolar australijski","JPY_displayName":"jen japoński","USD_displayName":"dolar amerykański ","GBP_displayName":"funt szterling","EUR_displayName":"euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.pl");dojo.cldr.nls.gregorian.pl={"months-format-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-weekday":"Dzień tygodnia","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, d-M-y","dateFormatItem-MMMEd":"d MMM E","eraNarrow":["p.n.e.","n.e."],"dayPeriods-format-wide-earlyMorning":"nad ranem","dayPeriods-format-wide-morning":"rano","dateFormat-long":"d MMMM y","months-format-wide":["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"],"dayPeriods-format-wide-evening":"wieczorem","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"d-M","dayPeriods-format-wide-noon":"w południe","field-era":"Era","dateFormatItem-yM":"M-y","months-standAlone-wide":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"timeFormat-short":"HH:mm","quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"timeFormat-long":"HH:mm:ss z","field-year":"Rok","dateFormatItem-yQ":"yyyy Q","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"Godzina","dateFormatItem-MMdd":"dd-MM","months-format-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Dzisiaj","field-day-relative+1":"Jutro","field-day-relative+2":"Pojutrze","field-day-relative+3":"Za trzy dni","months-standAlone-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-M":"L","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-MMMMd":"d MMMM","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"eraAbbr":["p.n.e.","n.e."],"field-minute":"Minuta","field-dayperiod":"Dayperiod","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dayPeriods-format-wide-night":"w nocy","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"Wczoraj","dateFormatItem-h":"hh a","field-day-relative+-2":"Przedwczoraj","field-day-relative+-3":"Trzy dni temu","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d-M","dayPeriods-format-wide-lateMorning":"przed południem","dateFormatItem-yMMMM":"LLLL y","field-day":"Dzień","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-zone":"Strefa","dateFormatItem-yyyyMM":"yyyy-MM","dateFormatItem-y":"y","months-standAlone-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"eraNames":["p.n.e.","n.e."],"days-format-narrow":["N","P","W","Ś","C","P","S"],"field-month":"Miesiąc","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormat-short":"dd-MM-yyyy","dayPeriods-format-wide-afternoon":"po południu","field-second":"Sekunda","dateFormatItem-yMMMEd":"EEE, d MMM y","field-week":"Tydzień","dateFormat-medium":"dd-MM-yyyy","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yMMM":"y MMM","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_pt-br.js b/lib/dijit/nls/dijit-all_pt-br.js
new file mode 100644 (file)
index 0000000..384e56d
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_pt-br");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.pt_br");dojo.nls.colors.pt_br={"lightsteelblue":"azul-aço claro","orangered":"vermelho alaranjado","midnightblue":"azul meia-noite","cadetblue":"azul cadet","seashell":"seashell","slategrey":"cinza-ardósia","coral":"coral","darkturquoise":"turquesa escuro","antiquewhite":"branco antigo","mediumspringgreen":"verde-primavera médio","salmon":"salmão","darkgrey":"cinza escuro","ivory":"marfim","greenyellow":"amarelo esverdeado","mistyrose":"rosa enevoado","lightsalmon":"salmão claro","silver":"prateado","dimgrey":"cinza turvo","orange":"laranja","white":"branco","navajowhite":"branco navajo","royalblue":"azul royal","deeppink":"rosa profundo","lime":"lima","oldlace":"cadarço velho","chartreuse":"chartreuse","darkcyan":"ciano escuro","yellow":"amarelo","linen":"linho","olive":"oliva","gold":"dourado","lawngreen":"verde grama","lightyellow":"amarelo claro","tan":"tan","darkviolet":"violeta escuro","lightslategrey":"cinza-ardósia claro","grey":"cinza","darkkhaki":"cáqui escuro","green":"verde","deepskyblue":"azul-céu intenso","aqua":"aqua","sienna":"sienna","mintcream":"creme de menta","rosybrown":"marrom rosado","mediumslateblue":"azul-ardósia médio","magenta":"magenta","lightseagreen":"verde marinho claro","cyan":"ciano","olivedrab":"verde oliva","darkgoldenrod":"goldenrod escuro","slateblue":"azul-ardósia","mediumaquamarine":"água-marinha médio","lavender":"lavanda","mediumseagreen":"verde-marinho médio","maroon":"marrom","darkslategray":"cinza-ardósia escuro","mediumturquoise":"turquesa médio","ghostwhite":"branco ghost","darkblue":"azul escuro","mediumvioletred":"vermelho-violeta médio","brown":"marrom","lightgray":"cinza claro","sandybrown":"marrom cor de areia","pink":"rosa","firebrick":"firebrick","indigo":"índigo","snow":"branco neve","darkorchid":"orquídea escuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde primavera","moccasin":"moccasin","navy":"marinho","lemonchiffon":"limão chiffon","teal":"azul esverdeado","floralwhite":"branco floral","cornflowerblue":"azul centaurea","paleturquoise":"turquesa esbranquiçado","purple":"roxo","gainsboro":"gainsboro","plum":"ameixa","red":"vermelho","blue":"azul","forestgreen":"verde floresta","darkgreen":"verde escuro","honeydew":"honeydew","darkseagreen":"verde marinho escuro","lightcoral":"coral claro","palevioletred":"vermelho-violeta esbranquiçado","mediumpurple":"roxo médio","saddlebrown":"marrom saddle","darkmagenta":"magenta escuro","thistle":"thistle","whitesmoke":"fumaça branca","wheat":"trigo","violet":"violeta","lightskyblue":"azul-céu claro","goldenrod":"goldenrod","mediumblue":"azul médio","skyblue":"azul-céu","crimson":"carmesim","darksalmon":"salmão escuro","darkred":"vermelho escuro","darkslategrey":"cinza-ardósia escuro","peru":"peru","lightgrey":"cinza claro","lightgoldenrodyellow":"amarelo goldenrod claro","blanchedalmond":"amêndoa pelada","aliceblue":"azul alice","bisque":"bisque","slategray":"cinza-ardósia","palegoldenrod":"goldenrod esbranquiçado","darkorange":"laranja escuro","aquamarine":"água-marinha","lightgreen":"verde claro","burlywood":"burlywood","dodgerblue":"azul dodger","darkgray":"cinza escuro","lightcyan":"ciano claro","powderblue":"azul-talco","blueviolet":"azul-violeta","orchid":"orquídea","dimgray":"cinza turvo","beige":"bege","fuchsia":"fúcsia","lavenderblush":"lavanda avermelhada","hotpink":"rosa quente","steelblue":"azul-aço","tomato":"tomate","lightpink":"rosa claro","limegreen":"verde-lima","indianred":"vermelho indiano","papayawhip":"creme de papaya","lightslategray":"cinza-ardósia claro","gray":"cinza","mediumorchid":"orquídea médio","cornsilk":"cornsilk","black":"preto","seagreen":"verde-marinho","darkslateblue":"azul-ardósia escuro","khaki":"cáqui","lightblue":"azul claro","palegreen":"verde esbranquiçado","azure":"azul-celeste","peachpuff":"peach puff","darkolivegreen":"verde oliva escuro","yellowgreen":"verde amarelado"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.pt_br");dijit._editor.nls.commands.pt_br={"removeFormat":"Remover Formato","copy":"Copiar","paste":"Colar","selectAll":"Selecionar Todos","insertOrderedList":"Lista Numerada","insertTable":"Inserir/Editar Tabela","print":"Impressão","underline":"Sublinhado","foreColor":"Cor do Primeiro Plano","htmlToggle":"Origem HTML","formatBlock":"Estilo de Parágrafo","newPage":"Nova Página","insertHorizontalRule":"Régua Horizontal","delete":"Excluir","insertUnorderedList":"Lista com Marcadores","tableProp":"Propriedade da Tabela","insertImage":"Inserir Imagem","superscript":"Sobrescrito","subscript":"Subscrito","createLink":"Criar Link","undo":"Desfazer","fullScreen":"Comutar Tela Cheia","italic":"Itálico","fontName":"Nome da Fonte","justifyLeft":"Alinhar pela Esquerda","unlink":"Remover Link","toggleTableBorder":"Alternar Moldura da Tabela","viewSource":"Visualizar Origem HTML","fontSize":"Tamanho da Fonte","systemShortcut":"A ação \"${0}\" está disponível em seu navegador apenas usando um atalho do teclado. Use ${1}.","indent":"Recuar","redo":"Refazer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinhar pelo Centro","hiliteColor":"Cor de segundo plano","deleteTable":"Excluir Tabela","outdent":"Não-chanfrado","cut":"Recortar","plainFormatBlock":"Estilo de Parágrafo","toggleDir":"Comutar Direção","bold":"Negrito","tabIndent":"Recuo de Guia","justifyRight":"Alinhar pela Direita","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.pt_br");dijit._editor.nls.FontChoice.pt_br={"1":"extra-extra-pequeno","2":"extra-pequeno","formatBlock":"Formatar","3":"pequena","4":"médio","5":"grande","6":"extra-grande","7":"extra-extra-grande","fantasy":"fantasy","serif":"serif","p":"Parágrafo","pre":"Pré-formatado","sans-serif":"sans-serif","fontName":"Fonte","h1":"Título","h2":"Subtítulo","h3":"Sub-subtítulo","monospace":"espaço simples","fontSize":"Tamanho","cursive":"cursiva","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.pt_br");dijit._editor.nls.LinkDialog.pt_br={"text":"Descrição:","insertImageTitle":"Propriedades de Imagem","set":"Definir","newWindow":"Nova Janela","topWindow":"Primeira Janela","target":"Destino:","createLinkTitle":"Propriedades de Link","parentWindow":"Janela Pai","currentWindow":"Janela Atual","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.pt_br");dojo.cldr.nls.currency.pt_br={"HKD_displayName":"Dólar de Hong Kong","CHF_displayName":"Franco suíço","CAD_displayName":"Dólar canadense","CNY_displayName":"Yuan Renminbi chinês","AUD_displayName":"Dólar australiano","JPY_displayName":"Iene japonês","USD_displayName":"Dólar norte-americano","GBP_displayName":"Libra esterlina britânica","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.pt_br");dojo.cldr.nls.gregorian.pt_br={"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"Dia da semana","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, dd/MM/yyyy","dateFormatItem-MMMEd":"EEE, d 'de' MMM","eraNarrow":["a.C.","d.C."],"dayPeriods-format-wide-morning":"manhã","dateFormat-long":"d 'de' MMMM 'de' y","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateFormatItem-EEEd":"EEE, d","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","dateFormatItem-yM":"MM/yyyy","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"timeFormat-short":"HH:mm","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"timeFormat-long":"HH'h'mm'min'ss's' z","field-year":"Ano","dateFormatItem-yMMM":"MMM 'de' y","dateFormatItem-yQ":"yyyy Q","field-hour":"Hora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH'h'mm'min'ss's' zzzz","field-day-relative+0":"Hoje","field-day-relative+1":"Amanhã","field-day-relative+2":"Depois de amanhã","field-day-relative+3":"Daqui a três dias","months-standAlone-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-HHmmss":"HH'h'mm'min'ss's'","dateFormatItem-M":"L","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MMM 'de' y","dateFormatItem-yyMMMEEEd":"EEE, d 'de' MMM 'de' yy","dateFormatItem-yyMMM":"MMM 'de' yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH'h'mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a.C.","d.C."],"field-minute":"Minuto","field-dayperiod":"Período do dia","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dayPeriods-format-wide-night":"noite","dateFormatItem-yyMMMd":"d 'de' MMM 'de' yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm'min'ss's'","field-day-relative+-1":"Ontem","field-day-relative+-2":"Anteontem","field-day-relative+-3":"Há três dias","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"EEE, dd/MM","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"eraNames":["Antes de Cristo","Ano do Senhor"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-MMM":"LLL","dateFormatItem-HHmm":"HH'h'mm","dateFormat-short":"dd/MM/yy","dayPeriods-format-wide-afternoon":"tarde","field-second":"Segundo","dateFormatItem-yMMMEd":"EEE, d 'de' MMM 'de' y","field-week":"Semana","dateFormat-medium":"dd/MM/yyyy","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_pt-pt.js b/lib/dijit/nls/dijit-all_pt-pt.js
new file mode 100644 (file)
index 0000000..50ad9e3
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_pt-pt");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.pt_pt");dojo.nls.colors.pt_pt={"lightsteelblue":"azul-aço claro","orangered":"vermelho alaranjado","midnightblue":"azul meia-noite","cadetblue":"azul cadete","seashell":"concha","slategrey":"cinzento ardósia","coral":"coral","darkturquoise":"turquesa escuro","antiquewhite":"branco antigo","mediumspringgreen":"verde primavera médio","salmon":"salmão","darkgrey":"cinzento escuro","ivory":"marfim","greenyellow":"amarelo esverdeado","mistyrose":"rosa pálido","lightsalmon":"salmão claro","silver":"prateado","dimgrey":"cinzento escuro","orange":"laranja","white":"branco","navajowhite":"branco navajo","royalblue":"azul real","deeppink":"rosa profundo","lime":"lima","oldlace":"renda antiga","chartreuse":"amarelo esverdeado","darkcyan":"ciano escuro","yellow":"amarelo","linen":"linho","olive":"azeitona","gold":"dourado","lawngreen":"verde relva","lightyellow":"amarelo claro","tan":"castanho claro","darkviolet":"violeta escuro","lightslategrey":"cinzento ardósia claro","grey":"cinzento","darkkhaki":"caqui escuro","green":"verde","deepskyblue":"azul céu profundo","aqua":"verde-água","sienna":"castanho-avermelhado","mintcream":"creme de menta","rosybrown":"castanho rosado","mediumslateblue":"azul ardósia médio","magenta":"magenta","lightseagreen":"verde marinho claro","cyan":"ciano","olivedrab":"azeitona claro","darkgoldenrod":"ouro velho escuro","slateblue":"azul ardósia","mediumaquamarine":"verde-azulado médio","lavender":"alfazema","mediumseagreen":"verde marinho médio","maroon":"bordeaux","darkslategray":"cinzento ardósia escuro","mediumturquoise":"turquesa médio","ghostwhite":"branco sombreado","darkblue":"azul escuro","mediumvioletred":"violeta avermelhado médio","brown":"castanho","lightgray":"cinzento claro","sandybrown":"castanho areia","pink":"rosa","firebrick":"tijolo fogo","indigo":"índigo","snow":"branco-neve","darkorchid":"orquídea escuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde primavera","moccasin":"mocassim","navy":"azul marinho","lemonchiffon":"limão chiffon","teal":"verde-azulado","floralwhite":"branco floral","cornflowerblue":"azul-violáceo","paleturquoise":"turquesa pálido","purple":"roxo","gainsboro":"cinzento azulado claro","plum":"cor-de-ameixa","red":"vermelho","blue":"azul","forestgreen":"verde floresta","darkgreen":"verde escuro","honeydew":"mel","darkseagreen":"verde marinho escuro","lightcoral":"coral claro","palevioletred":"violeta avermelhado pálido","mediumpurple":"roxo médio","saddlebrown":"castanho sela","darkmagenta":"magenta escuro","thistle":"cardo","whitesmoke":"fumo branco","wheat":"trigo","violet":"violeta","lightskyblue":"azul céu claro","goldenrod":"ouro velho","mediumblue":"azul médio","skyblue":"azul céu","crimson":"carmesim","darksalmon":"salmão escuro","darkred":"vermelho escuro","darkslategrey":"cinzento ardósia escuro","peru":"peru","lightgrey":"cinzento claro","lightgoldenrodyellow":"ouro velho amarelado claro","blanchedalmond":"amêndoa claro","aliceblue":"azul alice","bisque":"rosa-velho","slategray":"cinzento ardósia","palegoldenrod":"ouro velho pálido","darkorange":"laranja escuro","aquamarine":"verde-azulado","lightgreen":"verde claro","burlywood":"castanho pinho","dodgerblue":"azul furtivo","darkgray":"cinzento escuro","lightcyan":"ciano claro","powderblue":"azul de esmalte","blueviolet":"azul violeta","orchid":"orquídea","dimgray":"cinzento escuro","beige":"bege","fuchsia":"fúcsia","lavenderblush":"alfazema rosado","hotpink":"rosa forte","steelblue":"azul-aço","tomato":"vermelho tomate","lightpink":"rosa claro","limegreen":"verde-lima","indianred":"almagre","papayawhip":"creme de papaia","lightslategray":"cinzento ardósia claro","gray":"cinzento","mediumorchid":"orquídea médio","cornsilk":"branco seda","black":"preto","seagreen":"verde marinho","darkslateblue":"azul ardósia escuro","khaki":"caqui","lightblue":"azul claro","palegreen":"verde pálido","azure":"azul-celeste","peachpuff":"pêssego","darkolivegreen":"verde-azeitona escuro","yellowgreen":"verde amarelado"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.pt_pt");dijit._editor.nls.commands.pt_pt={"removeFormat":"Remover formato","copy":"Copiar","paste":"Colar","selectAll":"Seleccionar tudo","insertOrderedList":"Lista numerada","insertTable":"Inserir/Editar tabela","print":"Imprimir","underline":"Sublinhado","foreColor":"Cor de primeiro plano","htmlToggle":"Origem HTML","formatBlock":"Estilo de parágrafo","newPage":"Nova página","insertHorizontalRule":"Régua horizontal","delete":"Eliminar","insertUnorderedList":"Lista marcada","tableProp":"Propriedades da tabela","insertImage":"Inserir imagem","superscript":"Superior à linha","subscript":"Inferior à linha","createLink":"Criar ligação","undo":"Anular","fullScreen":"Alternar ecrã completo","italic":"Itálico","fontName":"Nome do tipo de letra","justifyLeft":"Alinhar à esquerda","unlink":"Remover ligação","toggleTableBorder":"Alternar contorno da tabela","viewSource":"Ver origem HTML","fontSize":"Tamanho do tipo de letra","systemShortcut":"A acção \"${0}\" apenas está disponível no navegador utilizando um atalho de teclado. Utilize ${1}.","indent":"Indentar","redo":"Repetir","strikethrough":"Rasurado","justifyFull":"Justificar","justifyCenter":"Alinhar ao centro","hiliteColor":"Cor de segundo plano","deleteTable":"Eliminar tabela","outdent":"Recuar","cut":"Cortar","plainFormatBlock":"Estilo de parágrafo","toggleDir":"Alternar direcção","bold":"Negrito","tabIndent":"Indentar com a tecla Tab","justifyRight":"Alinhar à direita","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.pt_pt");dijit._editor.nls.FontChoice.pt_pt={"1":"xxs","2":"xs","formatBlock":"Formato","3":"small","4":"medium","5":"large","6":"xl","7":"xxl","fantasy":"fantasy","serif":"serif","p":"Parágrafo","pre":"Pré-formatado","sans-serif":"sans-serif","fontName":"Tipo de letra","h1":"Título","h2":"Sub-título","h3":"Sub-subtítulo","monospace":"monospace","fontSize":"Tamanho","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.pt_pt");dijit._editor.nls.LinkDialog.pt_pt={"text":"Descrição:","insertImageTitle":"Propriedades da imagem","set":"Definir","newWindow":"Nova janela","topWindow":"Janela superior","target":"Destino:","createLinkTitle":"Propriedades da ligação","parentWindow":"Janela ascendente","currentWindow":"Janela actual","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.pt_pt");dojo.cldr.nls.currency.pt_pt={"HKD_displayName":"Dólar de Hong Kong","CHF_displayName":"Franco suíço","CAD_displayName":"Dólar canadense","CNY_displayName":"Yuan Renminbi chinês","AUD_displayName":"Dólar australiano","JPY_displayName":"Iene japonês","USD_displayName":"Dólar norte-americano","GBP_displayName":"Libra esterlina britânica","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.pt_pt");dojo.cldr.nls.gregorian.pt_pt={"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"quarters-format-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dayPeriods-standAlone-wide-am":"a.m.","dateFormat-medium":"d 'de' MMM 'de' yyyy","quarters-standAlone-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-hm":"h:mm","months-standAlone-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"dayPeriods-standAlone-abbr-am":"a.m.","dayPeriods-format-wide-pm":"Depois do meio-dia","months-standAlone-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"dateFormatItem-yQQQ":"QQQ 'de' y","dayPeriods-format-wide-am":"Antes do meio-dia","dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyQ":"QQQ 'de' yy","dayPeriods-format-abbr-am":"a.m.","months-format-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"days-standAlone-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"months-format-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"days-standAlone-abbr":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"days-format-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"dateFormatItem-yQ":"QQQ 'de' yyyy","dateFormatItem-hms":"h:mm:ss","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dayPeriods-standAlone-wide-pm":"p.m.","days-format-abbr":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"Dia da semana","dateFormatItem-yMEd":"EEE, dd/MM/yyyy","dateFormatItem-MMMEd":"EEE, d 'de' MMM","eraNarrow":["a.C.","d.C."],"dayPeriods-format-wide-morning":"manhã","dateFormat-long":"d 'de' MMMM 'de' y","dateFormatItem-EEEd":"EEE, d","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","dateFormatItem-yM":"MM/yyyy","timeFormat-short":"HH:mm","timeFormat-long":"HH'h'mm'min'ss's' z","field-year":"Ano","dateFormatItem-yMMM":"MMM 'de' y","field-hour":"Hora","dateFormatItem-MMdd":"dd/MM","timeFormat-full":"HH'h'mm'min'ss's' zzzz","field-day-relative+0":"Hoje","field-day-relative+1":"Amanhã","field-day-relative+2":"Depois de amanhã","field-day-relative+3":"Daqui a três dias","dateFormatItem-HHmmss":"HH'h'mm'min'ss's'","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM 'de' y","dateFormatItem-yyMMMEEEd":"EEE, d 'de' MMM 'de' yy","dateFormatItem-yyMMM":"MMM 'de' yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH'h'mm","eraAbbr":["a.C.","d.C."],"field-minute":"Minuto","field-dayperiod":"Período do dia","dayPeriods-format-wide-night":"noite","dateFormatItem-yyMMMd":"d 'de' MMM 'de' yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm'min'ss's'","field-day-relative+-1":"Ontem","field-day-relative+-2":"Anteontem","field-day-relative+-3":"Há três dias","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"EEE, dd/MM","field-day":"Dia","field-zone":"Fuso","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","eraNames":["Antes de Cristo","Ano do Senhor"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-MMM":"LLL","dateFormatItem-HHmm":"HH'h'mm","dateFormat-short":"dd/MM/yy","dayPeriods-format-wide-afternoon":"tarde","field-second":"Segundo","dateFormatItem-yMMMEd":"EEE, d 'de' MMM 'de' y","field-week":"Semana","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss"};
diff --git a/lib/dijit/nls/dijit-all_pt.js b/lib/dijit/nls/dijit-all_pt.js
new file mode 100644 (file)
index 0000000..6e670e6
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_pt");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.pt");dojo.nls.colors.pt={"lightsteelblue":"azul-aço claro","orangered":"vermelho alaranjado","midnightblue":"azul meia-noite","cadetblue":"azul cadet","seashell":"seashell","slategrey":"cinza-ardósia","coral":"coral","darkturquoise":"turquesa escuro","antiquewhite":"branco antigo","mediumspringgreen":"verde-primavera médio","salmon":"salmão","darkgrey":"cinza escuro","ivory":"marfim","greenyellow":"amarelo esverdeado","mistyrose":"rosa enevoado","lightsalmon":"salmão claro","silver":"prateado","dimgrey":"cinza turvo","orange":"laranja","white":"branco","navajowhite":"branco navajo","royalblue":"azul royal","deeppink":"rosa profundo","lime":"lima","oldlace":"cadarço velho","chartreuse":"chartreuse","darkcyan":"ciano escuro","yellow":"amarelo","linen":"linho","olive":"oliva","gold":"dourado","lawngreen":"verde grama","lightyellow":"amarelo claro","tan":"tan","darkviolet":"violeta escuro","lightslategrey":"cinza-ardósia claro","grey":"cinza","darkkhaki":"cáqui escuro","green":"verde","deepskyblue":"azul-céu intenso","aqua":"aqua","sienna":"sienna","mintcream":"creme de menta","rosybrown":"marrom rosado","mediumslateblue":"azul-ardósia médio","magenta":"magenta","lightseagreen":"verde marinho claro","cyan":"ciano","olivedrab":"verde oliva","darkgoldenrod":"goldenrod escuro","slateblue":"azul-ardósia","mediumaquamarine":"água-marinha médio","lavender":"lavanda","mediumseagreen":"verde-marinho médio","maroon":"marrom","darkslategray":"cinza-ardósia escuro","mediumturquoise":"turquesa médio","ghostwhite":"branco ghost","darkblue":"azul escuro","mediumvioletred":"vermelho-violeta médio","brown":"marrom","lightgray":"cinza claro","sandybrown":"marrom cor de areia","pink":"rosa","firebrick":"firebrick","indigo":"índigo","snow":"branco neve","darkorchid":"orquídea escuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde primavera","moccasin":"moccasin","navy":"marinho","lemonchiffon":"limão chiffon","teal":"azul esverdeado","floralwhite":"branco floral","cornflowerblue":"azul centaurea","paleturquoise":"turquesa esbranquiçado","purple":"roxo","gainsboro":"gainsboro","plum":"ameixa","red":"vermelho","blue":"azul","forestgreen":"verde floresta","darkgreen":"verde escuro","honeydew":"honeydew","darkseagreen":"verde marinho escuro","lightcoral":"coral claro","palevioletred":"vermelho-violeta esbranquiçado","mediumpurple":"roxo médio","saddlebrown":"marrom saddle","darkmagenta":"magenta escuro","thistle":"thistle","whitesmoke":"fumaça branca","wheat":"trigo","violet":"violeta","lightskyblue":"azul-céu claro","goldenrod":"goldenrod","mediumblue":"azul médio","skyblue":"azul-céu","crimson":"carmesim","darksalmon":"salmão escuro","darkred":"vermelho escuro","darkslategrey":"cinza-ardósia escuro","peru":"peru","lightgrey":"cinza claro","lightgoldenrodyellow":"amarelo goldenrod claro","blanchedalmond":"amêndoa pelada","aliceblue":"azul alice","bisque":"bisque","slategray":"cinza-ardósia","palegoldenrod":"goldenrod esbranquiçado","darkorange":"laranja escuro","aquamarine":"água-marinha","lightgreen":"verde claro","burlywood":"burlywood","dodgerblue":"azul dodger","darkgray":"cinza escuro","lightcyan":"ciano claro","powderblue":"azul-talco","blueviolet":"azul-violeta","orchid":"orquídea","dimgray":"cinza turvo","beige":"bege","fuchsia":"fúcsia","lavenderblush":"lavanda avermelhada","hotpink":"rosa quente","steelblue":"azul-aço","tomato":"tomate","lightpink":"rosa claro","limegreen":"verde-lima","indianred":"vermelho indiano","papayawhip":"creme de papaya","lightslategray":"cinza-ardósia claro","gray":"cinza","mediumorchid":"orquídea médio","cornsilk":"cornsilk","black":"preto","seagreen":"verde-marinho","darkslateblue":"azul-ardósia escuro","khaki":"cáqui","lightblue":"azul claro","palegreen":"verde esbranquiçado","azure":"azul-celeste","peachpuff":"peach puff","darkolivegreen":"verde oliva escuro","yellowgreen":"verde amarelado"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.pt");dijit._editor.nls.commands.pt={"removeFormat":"Remover Formato","copy":"Copiar","paste":"Colar","selectAll":"Selecionar Todos","insertOrderedList":"Lista Numerada","insertTable":"Inserir/Editar Tabela","print":"Impressão","underline":"Sublinhado","foreColor":"Cor do Primeiro Plano","htmlToggle":"Origem HTML","formatBlock":"Estilo de Parágrafo","newPage":"Nova Página","insertHorizontalRule":"Régua Horizontal","delete":"Excluir","insertUnorderedList":"Lista com Marcadores","tableProp":"Propriedade da Tabela","insertImage":"Inserir Imagem","superscript":"Sobrescrito","subscript":"Subscrito","createLink":"Criar Link","undo":"Desfazer","fullScreen":"Comutar Tela Cheia","italic":"Itálico","fontName":"Nome da Fonte","justifyLeft":"Alinhar pela Esquerda","unlink":"Remover Link","toggleTableBorder":"Alternar Moldura da Tabela","viewSource":"Visualizar Origem HTML","fontSize":"Tamanho da Fonte","systemShortcut":"A ação \"${0}\" está disponível em seu navegador apenas usando um atalho do teclado. Use ${1}.","indent":"Recuar","redo":"Refazer","strikethrough":"Tachado","justifyFull":"Justificar","justifyCenter":"Alinhar pelo Centro","hiliteColor":"Cor de segundo plano","deleteTable":"Excluir Tabela","outdent":"Não-chanfrado","cut":"Recortar","plainFormatBlock":"Estilo de Parágrafo","toggleDir":"Comutar Direção","bold":"Negrito","tabIndent":"Recuo de Guia","justifyRight":"Alinhar pela Direita","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.pt");dijit._editor.nls.FontChoice.pt={"1":"extra-extra-pequeno","2":"extra-pequeno","formatBlock":"Formatar","3":"pequena","4":"médio","5":"grande","6":"extra-grande","7":"extra-extra-grande","fantasy":"fantasy","serif":"serif","p":"Parágrafo","pre":"Pré-formatado","sans-serif":"sans-serif","fontName":"Fonte","h1":"Título","h2":"Subtítulo","h3":"Sub-subtítulo","monospace":"espaço simples","fontSize":"Tamanho","cursive":"cursiva","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.pt");dijit._editor.nls.LinkDialog.pt={"text":"Descrição:","insertImageTitle":"Propriedades de Imagem","set":"Definir","newWindow":"Nova Janela","topWindow":"Primeira Janela","target":"Destino:","createLinkTitle":"Propriedades de Link","parentWindow":"Janela Pai","currentWindow":"Janela Atual","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.pt");dojo.cldr.nls.currency.pt={"HKD_displayName":"Dólar de Hong Kong","CHF_displayName":"Franco suíço","CAD_displayName":"Dólar canadense","CNY_displayName":"Yuan Renminbi chinês","AUD_displayName":"Dólar australiano","JPY_displayName":"Iene japonês","USD_displayName":"Dólar norte-americano","GBP_displayName":"Libra esterlina britânica","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.pt");dojo.cldr.nls.gregorian.pt={"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"Dia da semana","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, dd/MM/yyyy","dateFormatItem-MMMEd":"EEE, d 'de' MMM","eraNarrow":["a.C.","d.C."],"dayPeriods-format-wide-morning":"manhã","dateFormat-long":"d 'de' MMMM 'de' y","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateFormatItem-EEEd":"EEE, d","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","dateFormatItem-yM":"MM/yyyy","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"timeFormat-short":"HH:mm","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"timeFormat-long":"HH'h'mm'min'ss's' z","field-year":"Ano","dateFormatItem-yMMM":"MMM 'de' y","dateFormatItem-yQ":"yyyy Q","field-hour":"Hora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH'h'mm'min'ss's' zzzz","field-day-relative+0":"Hoje","field-day-relative+1":"Amanhã","field-day-relative+2":"Depois de amanhã","field-day-relative+3":"Daqui a três dias","months-standAlone-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-HHmmss":"HH'h'mm'min'ss's'","dateFormatItem-M":"L","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MMM 'de' y","dateFormatItem-yyMMMEEEd":"EEE, d 'de' MMM 'de' yy","dateFormatItem-yyMMM":"MMM 'de' yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH'h'mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a.C.","d.C."],"field-minute":"Minuto","field-dayperiod":"Período do dia","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dayPeriods-format-wide-night":"noite","dateFormatItem-yyMMMd":"d 'de' MMM 'de' yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm'min'ss's'","field-day-relative+-1":"Ontem","field-day-relative+-2":"Anteontem","field-day-relative+-3":"Há três dias","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"EEE, dd/MM","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"eraNames":["Antes de Cristo","Ano do Senhor"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-MMM":"LLL","dateFormatItem-HHmm":"HH'h'mm","dateFormat-short":"dd/MM/yy","dayPeriods-format-wide-afternoon":"tarde","field-second":"Segundo","dateFormatItem-yMMMEd":"EEE, d 'de' MMM 'de' y","field-week":"Semana","dateFormat-medium":"dd/MM/yyyy","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_ru.js b/lib/dijit/nls/dijit-all_ru.js
new file mode 100644 (file)
index 0000000..eb33d77
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_ru");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.ru");dojo.nls.colors.ru={"lightsteelblue":"светлый стальной","orangered":"оранжево-красный","midnightblue":"полуночно-синий","cadetblue":"серо-синий","seashell":"морская раковина","slategrey":"грифельно-серый","coral":"коралловый","darkturquoise":"темный бирюзовый","antiquewhite":"белый антик","mediumspringgreen":"нейтральный весенне-зеленый","salmon":"лососевый","darkgrey":"темно-серый","ivory":"слоновой кости","greenyellow":"зелено-желтый","mistyrose":"блекло-розовый","lightsalmon":"светло-лососевый","silver":"серебристый","dimgrey":"тускло-серый","orange":"оранжевый","white":"белый","navajowhite":"белый навахо","royalblue":"королевский голубой","deeppink":"темно-розовый","lime":"лайм","oldlace":"матово-белый","chartreuse":"желто-салатный","darkcyan":"темный циан","yellow":"желтый","linen":"хлопковый","olive":"оливковый","gold":"золотой","lawngreen":"зеленая лужайка","lightyellow":"светло-желтый","tan":"рыжевато-коричневый","darkviolet":"темно-фиолетовый","lightslategrey":"светлый грифельно-серый","grey":"серый","darkkhaki":"темный хаки","green":"зеленый","deepskyblue":"темный небесно-голубой","aqua":"зеленовато-голубой","sienna":"охра","mintcream":"мятно-кремовый","rosybrown":"розово-коричневый","mediumslateblue":"нейтральный грифельно-синий","magenta":"пурпурный","lightseagreen":"светлый морской волны","cyan":"циан","olivedrab":"желтовато-серый","darkgoldenrod":"темно-золотистый","slateblue":"грифельно-синий","mediumaquamarine":"нейтральный аквамарин","lavender":"бледно-лиловый","mediumseagreen":"нейтральный морской волны","maroon":"темно-бордовый","darkslategray":"темный грифельно-серый","mediumturquoise":"нейтральный бирюзовый","ghostwhite":"призрачно-белый","darkblue":"темно-синий","mediumvioletred":"нейтральный фиолетово-красный","brown":"коричневый","lightgray":"светло-серый","sandybrown":"коричнево-песчаный","pink":"розовый","firebrick":"кирпичный","indigo":"индиго","snow":"белоснежный","darkorchid":"темный орсель","turquoise":"бирюзовый","chocolate":"шоколадный","springgreen":"весенний зеленый","moccasin":"мокасин","navy":"темно-синий","lemonchiffon":"бледно-лимонный","teal":"чирок","floralwhite":"цветочно-белый","cornflowerblue":"фиолетово-синий","paleturquoise":"бледно-бирюзовый","purple":"фиолетовый","gainsboro":"бледно-серый","plum":"сливовый","red":"красный","blue":"синий","forestgreen":"зеленый лесной","darkgreen":"темно-зеленый","honeydew":"медовый","darkseagreen":"темный морской волны","lightcoral":"светло-коралловый","palevioletred":"бледный фиолетово-красный","mediumpurple":"нейтральный фиолетовый","saddlebrown":"кожано-коричневый","darkmagenta":"темно-пурпурный","thistle":"чертополох","whitesmoke":"дымчато-белый","wheat":"пшеница","violet":"фиолетовый","lightskyblue":"светлый небесно-голубой","goldenrod":"золотистый","mediumblue":"нейтральный синий","skyblue":"небесно-голубой","crimson":"малиновый","darksalmon":"темно-лососевый","darkred":"темно-красный","darkslategrey":"темный грифельно-серый","peru":"перу","lightgrey":"светло-серый","lightgoldenrodyellow":"светло-золотистый","blanchedalmond":"светло-миндальный","aliceblue":"серо-голубой","bisque":"бисквитный","slategray":"грифельно-серый","palegoldenrod":"бледно-золотистый","darkorange":"темно-оранжевый","aquamarine":"аквамарин","lightgreen":"светло-зеленый","burlywood":"светло-коричневый","dodgerblue":"бледно-синий","darkgray":"темно-серый","lightcyan":"светлый циан","powderblue":"пороховой","blueviolet":"сине-фиолетовый","orchid":"орсель","dimgray":"тускло-серый","beige":"бежевый","fuchsia":"фуксин","lavenderblush":"розовато-лиловый","hotpink":"красно-розовый","steelblue":"стальной","tomato":"помидор","lightpink":"светло-розовый","limegreen":"зеленый лайм","indianred":"индийский красный","papayawhip":"черенок папайи","lightslategray":"светлый грифельно-серый","gray":"серый","mediumorchid":"нейтральный орсель","cornsilk":"шелковый оттенок","black":"черный","seagreen":"морской волны","darkslateblue":"темный грифельно-синий","khaki":"хаки","lightblue":"светло-синий","palegreen":"бледно-зеленый","azure":"лазурный","peachpuff":"персиковый","darkolivegreen":"темно-оливковый","yellowgreen":"желто-зеленый"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.ru");dijit._editor.nls.commands.ru={"removeFormat":"Удалить формат","copy":"Копировать","paste":"Вставить","selectAll":"Выбрать все","insertOrderedList":"Нумерованный список","insertTable":"Вставить/изменить таблицу","print":"Печать","underline":"Подчеркивание","foreColor":"Цвет текста","htmlToggle":"Код HTML","formatBlock":"Стиль абзаца","newPage":"Создать страницу","insertHorizontalRule":"Горизонтальная линейка","delete":"Удалить","insertUnorderedList":"Список с маркерами","tableProp":"Свойства таблицы","insertImage":"Вставить изображение","superscript":"Верхний индекс","subscript":"Нижний индекс","createLink":"Создать ссылку","undo":"Отменить","fullScreen":"Переключить полноэкранный режим","italic":"Курсив","fontName":"Название шрифта","justifyLeft":"По левому краю","unlink":"Удалить ссылку","toggleTableBorder":"Переключить рамку таблицы","viewSource":"Показать исходный код HTML","fontSize":"Размер шрифта","systemShortcut":"Действие \"${0}\" можно выполнить в браузере только путем нажатия клавиш ${1}.","indent":"Отступ","redo":"Повторить","strikethrough":"Перечеркивание","justifyFull":"По ширине","justifyCenter":"По центру","hiliteColor":"Цвет фона","deleteTable":"Удалить таблицу","outdent":"Втяжка","cut":"Вырезать","plainFormatBlock":"Стиль абзаца","toggleDir":"Изменить направление","bold":"Полужирный","tabIndent":"Табуляция","justifyRight":"По правому краю","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.ru");dijit._editor.nls.FontChoice.ru={"1":"самый маленький","2":"очень маленький","formatBlock":"Формат","3":"маленький","4":"средний","5":"большой","6":"очень большой","7":"самый большой","fantasy":"артистический","serif":"с засечками","p":"Абзац","pre":"Заранее отформатированный","sans-serif":"без засечек","fontName":"Шрифт","h1":"Заголовок","h2":"Подзаголовок","h3":"Вложенный подзаголовок","monospace":"непропорциональный","fontSize":"Размер","cursive":"курсив","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.ru");dijit._editor.nls.LinkDialog.ru={"text":"Описание:","insertImageTitle":"Свойства изображения","set":"Задать","newWindow":"Новое окно","topWindow":"Окно верхнего уровня","target":"Целевой объект:","createLinkTitle":"Свойства ссылки","parentWindow":"Родительское окно","currentWindow":"Текущее окно","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.ru");dojo.cldr.nls.currency.ru={"HKD_displayName":"Гонконгский доллар","CHF_displayName":"Швейцарский франк","CAD_displayName":"Канадский доллар","CNY_displayName":"Юань Ренминби","USD_symbol":"$","AUD_displayName":"Австралийский доллар","JPY_displayName":"Японская иена","USD_displayName":"Доллар США","GBP_displayName":"Английский фунт стерлингов","EUR_displayName":"Евро","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.ru");dojo.cldr.nls.gregorian.ru={"dateFormatItem-yM":"M.y","field-dayperiod":"AM/PM","field-minute":"Минута","eraNames":["до н.э.","н.э."],"dateFormatItem-MMMEd":"E d MMM","field-day-relative+-1":"Вчера","field-weekday":"День недели","dateFormatItem-yQQQ":"y QQQ","field-day-relative+-2":"Позавчера","dateFormatItem-MMdd":"dd.MM","days-standAlone-wide":["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"field-era":"Эра","field-hour":"Час","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"dateFormatItem-yyMMMEEEd":"EEE, d MMM yy","dateFormatItem-y":"y","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-yyyy":"y","months-standAlone-abbr":["янв.","февр.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"LLL y","field-day-relative+0":"Сегодня","dateFormatItem-yyyyLLLL":"LLLL y","field-day-relative+1":"Завтра","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"eraAbbr":["до н.э.","н.э."],"field-day-relative+2":"Послезавтра","dateFormatItem-yyyyMM":"MM.yyyy","dateFormatItem-yyyyMMMM":"LLLL y","dateFormat-long":"d MMMM y 'г'.","timeFormat-medium":"H:mm:ss","field-zone":"Часовой пояс","dateFormatItem-Hm":"H:mm","dateFormat-medium":"dd.MM.yyyy","dateFormatItem-yyMM":"MM.yy","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-yyMMM":"LLL yy","quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-ms":"mm:ss","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'.","field-year":"Год","months-standAlone-wide":["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],"field-week":"Неделя","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q yy","timeFormat-long":"H:mm:ss z","months-format-abbr":["янв.","февр.","марта","апр.","мая","июня","июля","авг.","сент.","окт.","нояб.","дек."],"timeFormat-short":"H:mm","dateFormatItem-H":"H","field-month":"Месяц","quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"days-format-abbr":["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"dateFormatItem-M":"L","days-format-narrow":["В","П","В","С","Ч","П","С"],"field-second":"Секунда","field-day":"День","dateFormatItem-MEd":"E, d.M","months-format-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"days-standAlone-abbr":["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"dateFormat-short":"dd.MM.yy","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM y 'г'.","dateFormatItem-Md":"d.M","dateFormatItem-yMEd":"EEE, d.M.y","months-format-wide":["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"],"dateFormatItem-d":"d","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"eraNarrow":["до н.э.","н.э."],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_sk.js b/lib/dijit/nls/dijit-all_sk.js
new file mode 100644 (file)
index 0000000..2ac818c
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_sk");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.sk");dojo.nls.colors.sk={"lightsteelblue":"oceľovo modrá svetlá","orangered":"oranžovo červená","midnightblue":"nočná modrá","cadetblue":"sivomodrá","seashell":"lastúrová","slategrey":"bridlicová sivá","coral":"koralová","darkturquoise":"tyrkysová tmavá","antiquewhite":"antická biela","mediumspringgreen":"jarná zelená stredná","salmon":"lososovo ružová","darkgrey":"tmavosivá","ivory":"slonovinová","greenyellow":"žltozelená","mistyrose":"zahmlená ruža","lightsalmon":"lososovo ružová svetlá","silver":"strieborná","dimgrey":"sivá matná","orange":"oranžová","white":"biela","navajowhite":"navajská biela","royalblue":"kráľovská modrá","deeppink":"hlboká ružová","lime":"lipová","oldlace":"stará čipka","chartreuse":"kartúza","darkcyan":"tmavozelenomodrá","yellow":"žltá","linen":"ľan","olive":"olivovo zelená","gold":"zlatá","lawngreen":"zelená tráva","lightyellow":"svetložltá","tan":"žltohnedá","darkviolet":"tmavofialová","lightslategrey":"bridlicová sivá svetlá","grey":"sivá","darkkhaki":"žltohnedá tmavá","green":"zelená","deepskyblue":"hlboká blankytná modrá","aqua":"svetlá zelenomodrá","sienna":"sienská","mintcream":"mätová krémová","rosybrown":"ružovo hnedá","mediumslateblue":"bridlicová modrá stredná","magenta":"purpurová","lightseagreen":"morská zelená svetlá","cyan":"zelenomodrá","olivedrab":"olivovo zelená fádna","darkgoldenrod":"zlatobyľová tmavá","slateblue":"bridlicová modrá","mediumaquamarine":"akvamarínová stredná","lavender":"levanduľová","mediumseagreen":"morská zelená stredná","maroon":"gaštanovo hnedá","darkslategray":"bridlicová sivá tmavá","mediumturquoise":"tyrkysová stredná","ghostwhite":"biely tieň","darkblue":"tmavomodrá","mediumvioletred":"fialovočervená stredná","brown":"hnedá","lightgray":"svetlosivá","sandybrown":"pieskovo hnedá","pink":"ružová","firebrick":"pálená tehla","indigo":"fialovo modrá","snow":"snehobiela","darkorchid":"orchideovo ružová tmavá","turquoise":"tyrkysová","chocolate":"čokoládovo hnedá","springgreen":"jarná zelená","moccasin":"črievičníková","navy":"vojenská zelená","lemonchiffon":"citrónový šifón","teal":"tyrkysová","floralwhite":"kvetinová biela","cornflowerblue":"nevädzovo modrá","paleturquoise":"bledo tyrkysová","purple":"purpurová","gainsboro":"sivomodrá svetlá","plum":"slivková","red":"červená","blue":"modrá","forestgreen":"lesná zelená","darkgreen":"tmavozelená","honeydew":"ambrózia","darkseagreen":"morská zelená tmavá","lightcoral":"koralová svetlá","palevioletred":"bledá fialovo červená","mediumpurple":"purpurová stredná","saddlebrown":"sedlová hnedá","darkmagenta":"tmavopurpurová","thistle":"bodliaková fialová","whitesmoke":"biely dym","wheat":"pšeničná","violet":"fialová","lightskyblue":"blankytná modrá svetlá","goldenrod":"zlatobyľ","mediumblue":"stredne modrá","skyblue":"blankytná modrá","crimson":"karmínová","darksalmon":"lososovo ružová tmavá","darkred":"tmavočervená","darkslategrey":"bridlicová sivá tmavá","peru":"peru","lightgrey":"svetlosivá","lightgoldenrodyellow":"zlatobyľová svetlá","blanchedalmond":"lúpané mandle","aliceblue":"modrá alice","bisque":"biskvitová","slategray":"bridlicová sivá","palegoldenrod":"bledá zlatobyľová","darkorange":"tmavooranžová","aquamarine":"akvamarínová","lightgreen":"svetlozelená","burlywood":"pieskovo hnedá","dodgerblue":"modrá dodger","darkgray":"tmavosivá","lightcyan":"zelenomodrá svetlá","powderblue":"prášková modrá","blueviolet":"modrofialová","orchid":"orchideovo ružová","dimgray":"sivá matná","beige":"béžová","fuchsia":"purpurová","lavenderblush":"levanduľový rumenec","hotpink":"teplá ružová","steelblue":"oceľovo modrá","tomato":"paradajková červená","lightpink":"svetloružová","limegreen":"lipová zelená","indianred":"indická červená","papayawhip":"papájový krém","lightslategray":"bridlicová sivá svetlá","gray":"sivá","mediumorchid":"orchideovo ružová stredná","cornsilk":"hodvábna žltá","black":"čierna","seagreen":"morská zelená","darkslateblue":"bridlicová modrá tmavá","khaki":"khaki","lightblue":"svetlomodrá","palegreen":"bledozelená","azure":"azúrová","peachpuff":"broskyňová pena","darkolivegreen":"olivovozelená tmavá","yellowgreen":"žltozelená"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.sk");dijit._editor.nls.commands.sk={"removeFormat":"Odstrániť formát","copy":"Kopírovať","paste":"Nalepiť","selectAll":"Vybrať všetko","insertOrderedList":"Číslovaný zoznam","insertTable":"Vložiť/upraviť tabuľku","print":"Tlačiť","underline":"Podčiarknuť","foreColor":"Farba popredia","htmlToggle":"Zdroj HTML","formatBlock":"Štýl odseku","newPage":"Nová stránka ","insertHorizontalRule":"Horizontálna čiara","delete":"Vymazať","insertUnorderedList":"Zoznam s odrážkami","tableProp":"Vlastnosť tabuľky","insertImage":"Vložiť obrázok","superscript":"Horný index","subscript":"Dolný index","createLink":"Vytvoriť prepojenie","undo":"Vrátiť späť","fullScreen":"Zobraziť na celú obrazovku","italic":"Kurzíva","fontName":"Názov písma","justifyLeft":"Zarovnať doľava","unlink":"Odstrániť prepojenie","toggleTableBorder":"Prepnúť rámček tabuľky","viewSource":"Zobraziť zdrojový kód HTML ","fontSize":"Veľkosť písma","systemShortcut":"Akcia \"${0}\" je vo vašom prehliadači dostupná len s použitím klávesovej skratky. Použite ${1}.","indent":"Odsadiť","redo":"Znova vykonať","strikethrough":"Prečiarknuť","justifyFull":"Zarovnať podľa okraja","justifyCenter":"Zarovnať na stred","hiliteColor":"Farba pozadia","deleteTable":"Vymazať tabuľku","outdent":"Predsadiť","cut":"Vystrihnúť","plainFormatBlock":"Štýl odseku","toggleDir":"Prepnúť smer","bold":"Tučné písmo","tabIndent":"Odsadenie tabulátora","justifyRight":"Zarovnať doprava","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.sk");dijit._editor.nls.FontChoice.sk={"1":"xx-small","2":"x-small","formatBlock":"Formát","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Odsek","pre":"Predformátované","sans-serif":"sans-serif","fontName":"Písmo","h1":"Hlavička","h2":"Podhlavička","h3":"Pod-podhlavička","monospace":"monospace","fontSize":"Veľkosť","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.sk");dijit._editor.nls.LinkDialog.sk={"text":"Opis:","insertImageTitle":"Vlastnosti obrázka ","set":"Nastaviť","newWindow":"Nové okno ","topWindow":"Najvrchnejšie okno ","target":"Cieľ:","createLinkTitle":"Pripojiť vlastnosti","parentWindow":"Rodičovské okno ","currentWindow":"Aktuálne okno ","url":"URL:"};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:]","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"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.sk");dojo.cldr.nls.currency.sk={"HKD_displayName":"Hong Kongský dolár","CHF_displayName":"Švajčiarský frank","CAD_displayName":"Kanadský dolár","CNY_displayName":"Čínsky Yuan Renminbi","AUD_displayName":"Austrálsky dolár","JPY_displayName":"Japonský yen","USD_displayName":"US dolár","GBP_displayName":"Britská libra","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.sk");dojo.cldr.nls.gregorian.sk={"field-dayperiod":"Časť dňa","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"popoludní","field-minute":"Minúta","eraNames":["pred n.l.","n.l."],"dateFormatItem-MMMEd":"E, d. MMM","field-day-relative+-1":"Včera","field-weekday":"Deň v týždni","dateFormatItem-yQQQ":"QQQ y","field-day-relative+-2":"Predvčerom","field-day-relative+-3":"Pred tromi dňami","days-standAlone-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-era":"Éra","field-hour":"Hodina","dayPeriods-format-wide-am":"dopoludnia","timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"dateFormatItem-yMMM":"LLL y","field-day-relative+0":"Dnes","field-day-relative+1":"Zajtra","days-standAlone-narrow":["N","P","U","S","Š","P","S"],"eraAbbr":["pred n.l.","n.l."],"field-day-relative+2":"Pozajtra","field-day-relative+3":"O tri dni","dateFormatItem-yyyyMMMM":"LLLL y","dateFormat-long":"d. MMMM y","timeFormat-medium":"H:mm:ss","dateFormatItem-EEEd":"EEE, d.","field-zone":"Pásmo","dateFormatItem-Hm":"H:mm","dateFormat-medium":"d.M.yyyy","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-yyQQQQ":"QQQQ yy","quarters-standAlone-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"dateFormatItem-yMMMM":"LLLL y","dateFormatItem-ms":"mm:ss","field-year":"Rok","months-standAlone-wide":["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],"field-week":"Týždeň","dateFormatItem-MMMMEd":"E, d. MMMM","dateFormatItem-MMMd":"d. MMM","dateFormatItem-yyQ":"Q yy","timeFormat-long":"H:mm:ss z","months-format-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"timeFormat-short":"H:mm","dateFormatItem-H":"H","field-month":"Mesiac","dateFormatItem-MMMMd":"d. MMMM","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["ne","po","ut","st","št","pi","so"],"dateFormatItem-mmss":"mm:ss","days-format-narrow":["N","P","U","S","Š","P","S"],"field-second":"Sekunda","field-day":"Deň","dateFormatItem-MEd":"E, d.M.","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"days-standAlone-abbr":["ne","po","ut","st","št","pi","so"],"dateFormat-short":"d.M.yyyy","dateFormatItem-yyyyM":"M.yyyy","dateFormatItem-yMMMEd":"EEE, d. MMM y","dateFormat-full":"EEEE, d. MMMM y","dateFormatItem-Md":"d.M.","dateFormatItem-yMEd":"EEE, d.M.yyyy","months-format-wide":["januára","februára","marca","apríla","mája","júna","júla","augusta","septembra","októbra","novembra","decembra"],"dateFormatItem-d":"d.","quarters-format-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"days-format-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"eraNarrow":["pred n.l.","n.l."],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yM":"y-M","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-M":"L","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_sl.js b/lib/dijit/nls/dijit-all_sl.js
new file mode 100644 (file)
index 0000000..d67f53f
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_sl");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.sl");dojo.nls.colors.sl={"lightsteelblue":"svetlo jeklena modra","orangered":"oranžno-rdeča","midnightblue":"polnočno modra","cadetblue":"zelenkasto modra","seashell":"morska školjka","slategrey":"skrilasto siva","coral":"koralna","darkturquoise":"temno turkizna","antiquewhite":"antično bela","mediumspringgreen":"srednje pomladno zelena","salmon":"lososova","darkgrey":"temno siva","ivory":"slonokoščena","greenyellow":"zeleno-rumena","mistyrose":"megleno rožnata","lightsalmon":"svetlo lososova","silver":"srebrna","dimgrey":"umazano siva","orange":"oranžna","white":"bela","navajowhite":"navajsko bela","royalblue":"kraljevsko modra","deeppink":"temno roza","lime":"rumeno zelena","oldlace":"stara čipka","chartreuse":"svetlo rumena zelena","darkcyan":"temno cijan","yellow":"rumena","linen":"lanena","olive":"olivna","gold":"zlata","lawngreen":"travnato zelena","lightyellow":"svetlo rumena","tan":"kožno rjava","darkviolet":"temno vijolična","lightslategrey":"svetlo skrilasto siva","grey":"siva","darkkhaki":"temno rumenkasto rjava","green":"zelena","deepskyblue":"temno nebesno modra","aqua":"akva","sienna":"siena","mintcream":"mentolno smetanasta","rosybrown":"rožnato rjava","mediumslateblue":"srednje skrilasto modra","magenta":"magenta","lightseagreen":"svetlo morsko zelena","cyan":"cijan","olivedrab":"olivno sivo rjava","darkgoldenrod":"temno zlata rozga","slateblue":"skrilasto modra","mediumaquamarine":"srednje akvamarin","lavender":"sivka","mediumseagreen":"srednje morsko zelena","maroon":"kostanjeva","darkslategray":"temno skrilasto siva","mediumturquoise":"srednje turkizna","ghostwhite":"prosojno bela","darkblue":"temno modra","mediumvioletred":"srednje vijolično-rdeča","brown":"rjava","lightgray":"svetlo siva","sandybrown":"peščeno rjava","pink":"roza","firebrick":"opečnata","indigo":"indigo","snow":"snežena","darkorchid":"temno orhidejna","turquoise":"turkizna","chocolate":"čokoladna","springgreen":"pomladno zelena","moccasin":"mokasinasta","navy":"mornarsko modra","lemonchiffon":"limonina","teal":"zeleno modra","floralwhite":"cvetno bela","cornflowerblue":"plavično modra","paleturquoise":"bledo turkizna","purple":"škrlatna","gainsboro":"pepelnato siva","plum":"slivova","red":"rdeča","blue":"modra","forestgreen":"gozdno zelena","darkgreen":"temno zelena","honeydew":"medena rosa","darkseagreen":"temno morsko zelena","lightcoral":"svetlo koralna","palevioletred":"bledo vijolično-rdeča","mediumpurple":"srednje škrlatna","saddlebrown":"sedlasto rjava","darkmagenta":"temno magenta","thistle":"osatna","whitesmoke":"umazano bela","wheat":"žitna","violet":"vijolična","lightskyblue":"svetlo nebesno modra","goldenrod":"zlata rozga","mediumblue":"srednje modra","skyblue":"nebesno modra","crimson":"karminasta","darksalmon":"temno lososova","darkred":"temno rdeča","darkslategrey":"temno skrilasto siva","peru":"perujska","lightgrey":"svetlo siva","lightgoldenrodyellow":"svetlo rumena zlata rozga","blanchedalmond":"mandljeva","aliceblue":"alice modra","bisque":"porcelanasta","slategray":"skrilasto siva","palegoldenrod":"bleda zlata rozga","darkorange":"temno oranžna","aquamarine":"akvamarin","lightgreen":"svetlo zelena","burlywood":"grčav les","dodgerblue":"koruzno modra","darkgray":"temno siva","lightcyan":"svetlo cijan","powderblue":"smodniško modra","blueviolet":"modro vijolična","orchid":"orhidejna","dimgray":"umazano siva","beige":"bež","fuchsia":"fuksija","lavenderblush":"bleščeča sivka","hotpink":"živo roza","steelblue":"jekleno modra","tomato":"paradižnikova","lightpink":"svetlo roza","limegreen":"citronsko zelena","indianred":"indijansko rdeča","papayawhip":"papaja","lightslategray":"svetlo skrilasto siva","gray":"siva","mediumorchid":"srednje orhidejna","cornsilk":"koruzni laski","black":"črna","seagreen":"morsko zelena","darkslateblue":"temno skrilasto modra","khaki":"rumenkasto rjava","lightblue":"svetlo modra","palegreen":"bledo zelena","azure":"azurna","peachpuff":"breskova","darkolivegreen":"temno olivno zelena","yellowgreen":"rumeno zelena"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.sl");dijit._editor.nls.commands.sl={"removeFormat":"Odstrani obliko zapisa","copy":"Prekopiraj","paste":"Prilepi","selectAll":"Izberi vse","insertOrderedList":"Oštevilčen seznam","insertTable":"Vstavi/uredi tabelo","print":"Natisni","underline":"Podčrtano","foreColor":"Barva ospredja","htmlToggle":"Izvorna koda HTML","formatBlock":"Slog odstavka","newPage":"Nova stran","insertHorizontalRule":"Vodoravno ravnilo","delete":"Izbriši","insertUnorderedList":"Naštevni seznam","tableProp":"Lastnost tabele","insertImage":"Vstavi sliko","superscript":"Nadpisano","subscript":"Podpisano","createLink":"Ustvari povezavo","undo":"Razveljavi","fullScreen":"Preklopi na celozaslonski način","italic":"Ležeče","fontName":"Ime pisave","justifyLeft":"Poravnaj levo","unlink":"Odstrani povezavo","toggleTableBorder":"Preklopi na rob tabele","viewSource":"Prikaži izvorno kodo HTML","fontSize":"Velikost pisave","systemShortcut":"Dejanje \"${0}\" lahko v vašem brskalniku uporabite samo z bližnjico na tipkovnici. Uporabite ${1}.","indent":"Zamik","redo":"Znova uveljavi","strikethrough":"Prečrtano","justifyFull":"Obojestranska poravnava","justifyCenter":"Poravnaj na sredino","hiliteColor":"Barva ozadja","deleteTable":"Izbriši tabelo","outdent":"Viseč odstavek","cut":"Izreži","plainFormatBlock":"Slog odstavka","toggleDir":"Preklopi na usmeritev","bold":"Krepko","tabIndent":"Zamik tabulatorja","justifyRight":"Poravnaj desno","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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 zunaj obsega. ","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 možnosti","nextMessage":"Dodatne možnosti"};dojo.provide("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.sl");dijit._editor.nls.FontChoice.sl={"1":"xx-majhno","2":"x-majhno","formatBlock":"Oblika","3":"majhno","4":"srednje","5":"veliko","6":"x-veliko","7":"xx-veliko","fantasy":"fantasy","serif":"serif","p":"Odstavek","pre":"Vnaprej oblikovano","sans-serif":"sans-serif","fontName":"Pisava","h1":"Naslov","h2":"Podnaslov","h3":"Pod podnaslov","monospace":"monospace","fontSize":"Velikost","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.sl");dijit._editor.nls.LinkDialog.sl={"text":"Opis:","insertImageTitle":"Lastnosti slike","set":"Nastavi","newWindow":"Novo okno","topWindow":"Najvišje okno","target":"Cilj:","createLinkTitle":"Lastnosti povezave","parentWindow":"Nadrejeno okno","currentWindow":"Trenutno okno","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.sl");dojo.cldr.nls.currency.sl={"HKD_displayName":"hongkonški dolar","CHF_displayName":"švicarski frank","JPY_symbol":"¥","CAD_displayName":"kanadski dolar","CNY_displayName":"kitajski juan renminbi","USD_symbol":"$","AUD_displayName":"avstralski dolar","JPY_displayName":"japonski jen","USD_displayName":"ameriški dolar","GBP_displayName":"britanski funt","EUR_displayName":"evro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.sl");dojo.cldr.nls.gregorian.sl={"field-dayperiod":"Čas dneva","dayPeriods-format-wide-pm":"pop.","field-minute":"Minuta","eraNames":["pred našim štetjem","naše štetje"],"field-day-relative+-1":"Včeraj","field-weekday":"Dan v tednu","field-day-relative+-2":"Predvčerajšnjim","field-day-relative+-3":"Pred tremi dnevi","days-standAlone-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-era":"Doba","field-hour":"Ura","dayPeriods-format-wide-am":"dop.","dateFormatItem-y":"y","timeFormat-full":"HH:mm:ss zzzz","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],"field-day-relative+0":"Danes","field-day-relative+1":"Jutri","days-standAlone-narrow":["n","p","t","s","č","p","s"],"eraAbbr":["pr. n. št.","po Kr."],"field-day-relative+2":"Pojutrišnjem","field-day-relative+3":"Čez tri dni","dateFormatItem-yyyyMMMM":"MMMM y","dateFormat-long":"dd. MMMM y","timeFormat-medium":"HH:mm:ss","field-zone":"Območje","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"d. MMM. yyyy","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"dateFormatItem-ms":"mm:ss","field-year":"Leto","months-standAlone-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"field-week":"Teden","dateFormatItem-yyQ":"Q/yy","timeFormat-long":"HH:mm:ss z","months-format-abbr":["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],"timeFormat-short":"HH:mm","field-month":"Mesec","dateFormatItem-MMMMd":"d. MMMM","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["ned","pon","tor","sre","čet","pet","sob"],"dateFormatItem-MMMMdd":"dd. MMMM","dateFormatItem-mmss":"mm:ss","days-format-narrow":["n","p","t","s","č","p","s"],"field-second":"Sekunda","field-day":"Dan","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"days-standAlone-abbr":["ned","pon","tor","sre","čet","pet","sob"],"dateFormat-short":"d. MM. yy","dateFormatItem-yyyyM":"M/yyyy","dateFormat-full":"EEEE, dd. MMMM y","dateFormatItem-Md":"d. M.","months-format-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"quarters-format-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"days-format-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"eraNarrow":["pr. n. št.","po Kr."],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yM":"y-M","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","dateFormatItem-M":"L","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dateFormatItem-d":"d","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_sv.js b/lib/dijit/nls/dijit-all_sv.js
new file mode 100644 (file)
index 0000000..2de24a5
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_sv");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.sv");dojo.nls.colors.sv={"lightsteelblue":"ljust stålblått","orangered":"orangerött","midnightblue":"midnattsblått","cadetblue":"kadettblått","seashell":"snäckskal","slategrey":"skiffergrått","coral":"korall","darkturquoise":"mörkturkost","antiquewhite":"antikvitt","mediumspringgreen":"mellanvårgrönt","salmon":"laxfärgat","darkgrey":"mörkgrått","ivory":"elfenbensvitt","greenyellow":"gröngult","mistyrose":"dunkelrosa","lightsalmon":"ljust laxfärgat","silver":"silver","dimgrey":"smutsgrått","orange":"orange","white":"vitt","navajowhite":"navajovitt","royalblue":"kungligt blått","deeppink":"djuprosa","lime":"lime","oldlace":"spetsvitt","chartreuse":"chartreuse","darkcyan":"mörkt cyan","yellow":"gult","linen":"linne","olive":"olivfärgat","gold":"guld","lawngreen":"gräsmattegrönt","lightyellow":"ljusgult","tan":"mellanbrunt","darkviolet":"mörkviolett","lightslategrey":"ljust skiffergrått","grey":"grått","darkkhaki":"mörkt kaki","green":"grönt","deepskyblue":"mörkt himmelsblått","aqua":"akvamarin","sienna":"sienna","mintcream":"mintgrädde","rosybrown":"rosenbrunt","mediumslateblue":"mellanskifferblått","magenta":"magenta","lightseagreen":"ljust havsgrönt","cyan":"cyan","olivedrab":"olivsmutsgult","darkgoldenrod":"mörkt gullris","slateblue":"skifferblått","mediumaquamarine":"mellanakvamarin","lavender":"lavendel","mediumseagreen":"mellanhavsgrönt","maroon":"rödbrunt","darkslategray":"mörkt skiffergrått","mediumturquoise":"mellanturkost","ghostwhite":"spökvitt","darkblue":"mörkblått","mediumvioletred":"mellanviolettrött","brown":"brunt","lightgray":"ljusgrått","sandybrown":"sandbrunt","pink":"rosa","firebrick":"tegelstensrött","indigo":"indigo","snow":"snö","darkorchid":"mörkt orkidé","turquoise":"turkost","chocolate":"choklad","springgreen":"vårgrönt","moccasin":"mockasin","navy":"marinblått","lemonchiffon":"citronchiffong","teal":"blågrönt","floralwhite":"blomvitt","cornflowerblue":"kornblått","paleturquoise":"blekturkost","purple":"lila","gainsboro":"gainsboro","plum":"plommon","red":"rött","blue":"blått","forestgreen":"skogsgrönt","darkgreen":"mörkgrönt","honeydew":"honungsdagg","darkseagreen":"mörkt havsgrönt","lightcoral":"ljuskorall","palevioletred":"blekviolettrött","mediumpurple":"mellanlila","saddlebrown":"sadelbrunt","darkmagenta":"mörk magenta","thistle":"tistel","whitesmoke":"vit rök","wheat":"vete","violet":"violett","lightskyblue":"ljust himmelsblått","goldenrod":"gullris","mediumblue":"mellanblått","skyblue":"himmelsblått","crimson":"karmosinrött","darksalmon":"mörkt laxfärgat","darkred":"mörkrött","darkslategrey":"mörkt skiffergrått","peru":"peru","lightgrey":"ljusgrått","lightgoldenrodyellow":"ljust gullrisgult","blanchedalmond":"skållad mandel","aliceblue":"aliceblå","bisque":"biskvi","slategray":"skiffergrått","palegoldenrod":"blekt gullris","darkorange":"mörkorange","aquamarine":"akvamarin","lightgreen":"ljusgrönt","burlywood":"träfärgat","dodgerblue":"dodgerblått","darkgray":"mörkgrått","lightcyan":"ljust cyan","powderblue":"pulverblått","blueviolet":"blåviolett","orchid":"orkidé","dimgray":"smutsgrått","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavendelskimrande","hotpink":"varmrosa","steelblue":"stålblått","tomato":"tomatrött","lightpink":"ljusrosa","limegreen":"limegrönt","indianred":"indianrött","papayawhip":"papayaröra","lightslategray":"ljust skiffergrått","gray":"grått","mediumorchid":"mellanorkidé","cornsilk":"gulvitt","black":"svart","seagreen":"havsgrönt","darkslateblue":"mörkt skifferblått","khaki":"kaki","lightblue":"ljusblått","palegreen":"blekgrönt","azure":"azurblått","peachpuff":"persika","darkolivegreen":"mörkt olivgrönt","yellowgreen":"gulgrönt"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.sv");dijit._editor.nls.commands.sv={"removeFormat":"Ta bort format","copy":"Kopiera","paste":"Klistra in","selectAll":"Markera allt","insertOrderedList":"Numrerad lista","insertTable":"Infoga/redigera tabell","print":"Skriv ut","underline":"Understrykning","foreColor":"Förgrundsfärg","htmlToggle":"HTML-källkod","formatBlock":"Styckeformat","newPage":"Ny sida","insertHorizontalRule":"Horisontell linjal","delete":"Ta bort","appleKey":"⌘+${0}","insertUnorderedList":"Punktlista","tableProp":"Tabellegenskap","insertImage":"Infoga bild","superscript":"Upphöjt","subscript":"Nedsänkt","createLink":"Skapa länk","undo":"Ångra","fullScreen":"Växla helskärm","italic":"Kursiv","fontName":"Teckensnittsnamn","justifyLeft":"Vänsterjustera","unlink":"Ta bort länk","toggleTableBorder":"Aktivera/avaktivera tabellram","viewSource":"Visa HTML-kod","ctrlKey":"Ctrl+${0}","fontSize":"Teckenstorlek","systemShortcut":"Åtgärden \"${0}\" är endast tillgänglig i webbläsaren med hjälp av ett kortkommando. Använd ${1}.","indent":"Indrag","redo":"Gör om","strikethrough":"Genomstruken","justifyFull":"Marginaljustera","justifyCenter":"Centrera","hiliteColor":"Bakgrundsfärg","deleteTable":"Ta bort tabell","outdent":"Utdrag","cut":"Klipp ut","plainFormatBlock":"Styckeformat","toggleDir":"Växla riktning","bold":"Fetstil","tabIndent":"Tabbindrag","justifyRight":"Högerjustera"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.sv");dijit._editor.nls.FontChoice.sv={"1":"mycket, mycket litet","2":"mycket litet","formatBlock":"Format","3":"litet","4":"medelstort","5":"stort","6":"extra stort","7":"extra extra stort","fantasy":"fantasy","serif":"serif","p":"Stycke","pre":"Förformaterat","sans-serif":"sans-serif","fontName":"Teckensnitt","h1":"Rubrik","h2":"Underrubrik","h3":"Underunderrubrik","monospace":"monospace","fontSize":"Storlek","cursive":"kursivt","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.sv");dijit._editor.nls.LinkDialog.sv={"text":"Beskrivning:","insertImageTitle":"Bildegenskaper","set":"Ange","newWindow":"nytt fönster","topWindow":"översta fönstret","target":"Mål:","createLinkTitle":"Länkegenskaper","parentWindow":"överordnat fönster","currentWindow":"aktuellt fönster","url":"URL-adress:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.sv");dojo.cldr.nls.currency.sv={"HKD_displayName":"Hongkong-dollar","CHF_displayName":"schweizisk franc","CHF_symbol":"CHF","CAD_displayName":"kanadensisk dollar","CNY_displayName":"kinesisk yuan renminbi","AUD_displayName":"australisk dollar","JPY_displayName":"japansk yen","CAD_symbol":"CAD","USD_displayName":"US-dollar","CNY_symbol":"CNY","GBP_displayName":"brittiskt pund sterling","EUR_displayName":"euro","USD_symbol":"US$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.sv");dojo.cldr.nls.gregorian.sv={"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"veckodag","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, yyyy-MM-dd","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["f.Kr.","e.Kr."],"dateFormat-long":"d MMMM y","months-format-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"em","dateFormat-full":"EEEE'en' 'den' d:'e' MMMM y","dateFormatItem-Md":"d/M","dateFormatItem-MMMMEEEd":"EEE d MMMM","field-era":"era","dateFormatItem-yM":"yyyy-MM","months-standAlone-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"timeFormat-short":"HH:mm","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"timeFormat-long":"HH:mm:ss z","field-year":"år","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"yyyy Q","field-hour":"timme","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","field-day-relative+2":"i övermorgon","field-day-relative+3":"i överövermorgon","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-M":"L","days-standAlone-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-yyyyMMM":"MMM y","dateFormatItem-MMMMd":"d:'e' MMMM","dateFormatItem-yyMMM":"MMM -yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["f.Kr.","e.Kr."],"field-minute":"minut","field-dayperiod":"fm/em","days-standAlone-abbr":["sön","mån","tis","ons","tors","fre","lör"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-day-relative+-3":"i förrförrgår","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-day":"dag","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-zone":"tidszon","dateFormatItem-yyyyMM":"yyyy-MM","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"yy-MM","dateFormatItem-hm":"h:mm a","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"eraNames":["före Kristus","efter Kristus"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-month":"månad","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"fm","dateFormatItem-MMMMEd":"E d:'e' MMMM","dateFormat-short":"yyyy-MM-dd","dateFormatItem-MMd":"d/M","field-second":"sekund","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"vecka","dateFormat-medium":"d MMM y","dateFormatItem-yyyyQQQQ":"QQQQ y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_th.js b/lib/dijit/nls/dijit-all_th.js
new file mode 100644 (file)
index 0000000..ee65015
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_th");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.th");dojo.nls.colors.th={"lightsteelblue":"light steel blue","orangered":"ส้มแกมแดง","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"เทาเข้ม","ivory":"งาช้าง","greenyellow":"เขียวแกมเหลือง","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"เงิน","dimgrey":"dim gray","orange":"ส้ม","white":"ขาว","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"ชมพูเข้ม","lime":"เหลืองมะนาว","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"เขียวแกมน้ำเงินเข้ม","yellow":"เหลือง","linen":"linen","olive":"โอลีฟ","gold":"ทอง","lawngreen":"lawn green","lightyellow":"เหลืองอ่อน","tan":"tan","darkviolet":"ม่วงเข้ม","lightslategrey":"light slate gray","grey":"เทา","darkkhaki":"dark khaki","green":"เขียว","deepskyblue":"deep sky blue","aqua":"ฟ้าน้ำทะเล","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"แดงแกมม่วง","lightseagreen":"light sea green","cyan":"เขียวแกมน้ำเงิน","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"ม่วงลาเวนเดอร์","mediumseagreen":"medium sea green","maroon":"น้ำตาลแดง","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"น้ำเงินเข้ม","mediumvioletred":"medium violet-red","brown":"น้ำตาล","lightgray":"เทาอ่อน","sandybrown":"sandy brown","pink":"ชมพู","firebrick":"สีอิฐ","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"ช็อกโกแลต","springgreen":"spring green","moccasin":"ม็อคค่า","navy":"น้ำเงินเข้ม","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"ม่วง","gainsboro":"gainsboro","plum":"plum","red":"แดง","blue":"น้ำเงิน","forestgreen":"forest green","darkgreen":"เขียวเข้ม","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"แดงแกมม่วงเข้ม","thistle":"thistle","whitesmoke":"ขาวควัน","wheat":"wheat","violet":"ม่วง","lightskyblue":"ฟ้าอ่อน","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"แดงเลือดหมู","darksalmon":"dark salmon","darkred":"แดงเข้ม","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"เทาอ่อน","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"ส้มเข้ม","aquamarine":"aquamarine","lightgreen":"เขียวอ่อน","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"เทาเข้ม","lightcyan":"เขียวแกมน้ำเงินอ่อน","powderblue":"powder blue","blueviolet":"น้ำเงินม่วง","orchid":"orchid","dimgray":"dim gray","beige":"น้ำตาลเบจ","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"ชมพูอ่อน","limegreen":"เขียวมะนาว","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"เทา","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"ดำ","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"น้ำเงินอ่อน","palegreen":"pale green","azure":"น้ำเงินฟ้า","peachpuff":"peach puff","darkolivegreen":"เขียวโอลีฟเข้ม","yellowgreen":"เหลืองแกมเขียว"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.th");dijit._editor.nls.commands.th={"removeFormat":"ลบรูปแบบออก","copy":"คัดลอก","paste":"วาง","selectAll":"เลือกทั้งหมด","insertOrderedList":"ลำดับเลข","insertTable":"แทรก/แก้ไขตาราง","print":"พิมพ์","underline":"ขีดเส้นใต้","foreColor":"สีพื้นหน้า","htmlToggle":"ซอร์ส HTML","formatBlock":"ลักษณะย่อหน้า","newPage":"หน้าใหม่","insertHorizontalRule":"ไม้บรรทัดแนวนอน","delete":"ลบ","insertUnorderedList":"หัวข้อย่อย","tableProp":"คุณสมบัติตาราง","insertImage":"แทรกอิมเมจ","superscript":"ตัวยก","subscript":"ตัวห้อย","createLink":"สร้างลิงก์","undo":"เลิกทำ","fullScreen":"สลับจอภาพแบบเต็ม","italic":"ตัวเอียง","fontName":"ชื่อฟอนต์","justifyLeft":"จัดชิดซ้าย","unlink":"ลบลิงก์ออก","toggleTableBorder":"สลับเส้นขอบตาราง","viewSource":"ดูซอร์ส HTML","fontSize":"ขนาดฟอนต์","systemShortcut":"การดำเนินการ\"${0}\" ใช้งานได้เฉพาะกับเบราว์เซอร์ของคุณโดยใช้แป้นพิมพ์ลัด ใช้ ${1}","indent":"เพิ่มการเยื้อง","redo":"ทำซ้ำ","strikethrough":"ขีดทับ","justifyFull":"จัดชิดขอบ","justifyCenter":"จัดกึ่งกลาง","hiliteColor":"สีพื้นหลัง","deleteTable":"ลบตาราง","outdent":"ลดการเยื้อง","cut":"ตัด","plainFormatBlock":"ลักษณะย่อหน้า","toggleDir":"สลับทิศทาง","bold":"ตัวหนา","tabIndent":"เยื้องแท็บ","justifyRight":"จัดชิดขวา","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.th");dijit._editor.nls.FontChoice.th={"1":"xx-small","2":"x-small","formatBlock":"รูปแบบ","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"ย่อหน้า","pre":"การกำหนดรูปแบบล่วงหน้า","sans-serif":"sans-serif","fontName":"ฟอนต์","h1":"ส่วนหัว","h2":"ส่วนหัวย่อย","h3":"ส่วนย่อยของส่วนหัวย่อย","monospace":"monospace","fontSize":"ขนาด","cursive":"cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.th");dijit._editor.nls.LinkDialog.th={"text":"รายละเอียด","insertImageTitle":"คุณสมบัติอิมเมจ","set":"ตั้งค่า","newWindow":"หน้าต่างใหม่","topWindow":"หน้าต่างบนสุด","target":"เป้าหมาย:","createLinkTitle":"คุณสมบัติลิงก์","parentWindow":"หน้าต่างหลัก","currentWindow":"หน้าต่างปัจจุบัน","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.th");dojo.cldr.nls.currency.th={"HKD_displayName":"ดอลลาร์ฮ่องกง","CHF_displayName":"ฟรังก์สวิส","JPY_symbol":"¥","CAD_displayName":"ดอลลาร์แคนาดา","CNY_displayName":"หยวนเหรินหมินปี้ (สาธารณรัฐประชาชนจีน)","AUD_displayName":"ดอลลาร์ออสเตรเลีย","JPY_displayName":"เยนญี่ปุ่น","USD_displayName":"ดอลลาร์สหรัฐ","GBP_displayName":"ปอนด์สเตอร์ลิง (สหราชอาณาจักร)","EUR_displayName":"ยูโร","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.th");dojo.cldr.nls.gregorian.th={"months-format-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-weekday":"วันในสัปดาห์","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d/M/yyyy","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["ก่อน ค.ศ.","ค.ศ."],"dateFormat-long":"d MMMM y","months-format-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"dateTimeFormat-medium":"{1}, {0}","dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"หลังเที่ยง","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-Md":"d/M","field-era":"สมัย","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"timeFormat-short":"H:mm","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"timeFormat-long":"H นาฬิกา m นาที ss วินาที z","field-year":"ปี","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"ชั่วโมง","months-format-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"H นาฬิกา m นาที ss วินาที zzzz","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","field-day-relative+2":"มะรืนนี้","dateFormatItem-H":"H","field-day-relative+3":"สามวันต่อจากนี้","months-standAlone-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-M":"L","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","eraAbbr":["ปีก่อน ค.ศ.","ค.ศ."],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"เมื่อวาน","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"เมื่อวานซืน","field-day-relative+-3":"สามวันก่อน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1}, {0}","dateFormatItem-yMMMM":"MMMM y","field-day":"วัน","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-zone":"เขต","dateFormatItem-y":"y","months-standAlone-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"eraNames":["ปีก่อนคริสต์ศักราช","คริสต์ศักราช"],"days-format-narrow":["อ","จ","อ","พ","พ","ศ","ส"],"field-month":"เดือน","days-standAlone-narrow":["อ","จ","อ","พ","พ","ศ","ส"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"ก่อนเที่ยง","dateFormatItem-MMMMEd":"E d MMMM","dateFormat-short":"d/M/yyyy","field-second":"วินาที","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"สัปดาห์","dateFormat-medium":"d MMM y","dateFormatItem-yyyyM":"M/yyyy","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_tr.js b/lib/dijit/nls/dijit-all_tr.js
new file mode 100644 (file)
index 0000000..173d387
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_tr");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.tr");dojo.nls.colors.tr={"lightsteelblue":"açık metalik mavi","orangered":"turuncu kırmızı","midnightblue":"gece mavisi","cadetblue":"denizci mavisi","seashell":"deniz kabuğu","slategrey":"arduvaz grisi","coral":"mercan","darkturquoise":"koyu turkuaz","antiquewhite":"antik beyaz","mediumspringgreen":"orta bahar yeşili","salmon":"somon","darkgrey":"koyu gri","ivory":"fildişi","greenyellow":"yeşil-sarı","mistyrose":"gülkurusu","lightsalmon":"açık somon","silver":"gümüş","dimgrey":"soluk gri","orange":"turuncu","white":"beyaz","navajowhite":"navajo beyazı","royalblue":"parlak koyu mavi","deeppink":"koyu pembe","lime":"limon yeşili","oldlace":"eski dantel","chartreuse":"chartreuse","darkcyan":"koyu camgöbeği","yellow":"sarı","linen":"keten","olive":"zeytin","gold":"altın","lawngreen":"çimen yeşili","lightyellow":"açık sarı","tan":"güneş yanığı","darkviolet":"koyu eflatun","lightslategrey":"açık arduvaz grisi","grey":"gri","darkkhaki":"koyu haki","green":"yeşil","deepskyblue":"koyu gök mavisi","aqua":"deniz mavisi","sienna":"koyu kahve","mintcream":"naneli krem","rosybrown":"pembemsi kahverengi","mediumslateblue":"orta arduvaz mavisi","magenta":"macenta","lightseagreen":"açık deniz yeşili","cyan":"camgöbeği","olivedrab":"asker yeşili","darkgoldenrod":"koyu sarı","slateblue":"arduvaz mavisi","mediumaquamarine":"orta akuamarin","lavender":"lavanta","mediumseagreen":"orta deniz yeşili","maroon":"kestane","darkslategray":"koyu arduvaz grisi","mediumturquoise":"orta turkuaz","ghostwhite":"silik beyaz","darkblue":"koyu mavi","mediumvioletred":"orta menekşe kırmızısı","brown":"kahverengi","lightgray":"açık gri","sandybrown":"kum rengi","pink":"pembe","firebrick":"canlı kiremit","indigo":"çivit mavisi","snow":"kar","darkorchid":"koyu orkide","turquoise":"turkuaz","chocolate":"çikolata","springgreen":"bahar yeşili","moccasin":"mokosen","navy":"lacivert","lemonchiffon":"limoni","teal":"Teal mavi","floralwhite":"çiçek beyazı","cornflowerblue":"peygamber çiçeği mavisi","paleturquoise":"soluk turkuaz","purple":"mor","gainsboro":"gainsboro","plum":"erik","red":"kırmızı","blue":"mavi","forestgreen":"koyu deniz yeşili","darkgreen":"koyu yeşil","honeydew":"çam sakızı","darkseagreen":"koyu deniz yeşili","lightcoral":"açık mercan","palevioletred":"soluk menekşe kırmızısı","mediumpurple":"orta mor","saddlebrown":"açık kahve","darkmagenta":"koyu mor","thistle":"devedikeni","whitesmoke":"beyaz duman","wheat":"buğday","violet":"eflatun","lightskyblue":"açık gök mavisi","goldenrod":"sarısabır","mediumblue":"orta mavi","skyblue":"gök mavisi","crimson":"crimson","darksalmon":"koyu somon","darkred":"koyu kırmızı","darkslategrey":"koyu arduvaz grisi","peru":"peru","lightgrey":"açık gri","lightgoldenrodyellow":"açık sarısabır","blanchedalmond":"soluk badem","aliceblue":"alice mavisi","bisque":"bisküvi","slategray":"arduvaz grisi","palegoldenrod":"soluk sarısabır","darkorange":"koyu turuncu","aquamarine":"akuamarin","lightgreen":"açık yeşil","burlywood":"sarımsı kahverengi","dodgerblue":"toz mavisi","darkgray":"koyu gri","lightcyan":"açık camgöbeği","powderblue":"pudra mavisi","blueviolet":"mavi-mor","orchid":"orkide","dimgray":"soluk gri","beige":"bej","fuchsia":"fuşya","lavenderblush":"lavanta pembesi","hotpink":"sıcak pembe","steelblue":"metalik mavi","tomato":"domates","lightpink":"açık pembe","limegreen":"küf yeşili","indianred":"kızılderili kırmızısı","papayawhip":"papaya sapı","lightslategray":"açık arduvaz grisi","gray":"gri","mediumorchid":"orta orkide","cornsilk":"mısır rengi","black":"siyah","seagreen":"deniz yeşili","darkslateblue":"koyu arduvaz mavisi","khaki":"haki","lightblue":"açık mavi","palegreen":"soluk yeşil","azure":"azur mavisi","peachpuff":"açık şeftali","darkolivegreen":"koyu zeytin yeşili","yellowgreen":"sarı yeşil"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.tr");dijit._editor.nls.commands.tr={"removeFormat":"Biçimi Kaldır","copy":"Kopyala","paste":"Yapıştır","selectAll":"Tümünü Seç","insertOrderedList":"Numaralı Liste","insertTable":"Tablo Ekle/Düzenle","print":"Yazdır","underline":"Altı Çizili","foreColor":"Ön Plan Rengi","htmlToggle":"HTML Kaynağı","formatBlock":"Paragraf Stili","newPage":"Yeni Sayfa","insertHorizontalRule":"Yatay Kural","delete":"Sil","insertUnorderedList":"Madde İşaretli Liste","tableProp":"Tablo Özelliği","insertImage":"Resim Ekle","superscript":"Üst Simge","subscript":"Alt Simge","createLink":"Bağlantı Oluştur","undo":"Geri Al","fullScreen":"Tam Ekranı Aç/Kapat","italic":"İtalik","fontName":"Yazı Tipi Adı","justifyLeft":"Sola Hizala","unlink":"Bağlantıyı Kaldır","toggleTableBorder":"Tablo Kenarlığını Göster/Gizle","viewSource":"HTML Kaynağını Görüntüle","fontSize":"Yazı Tipi Boyutu","systemShortcut":"\"${0}\" işlemi yalnızca tarayıcınızda bir klavye kısayoluyla birlikte kullanılabilir. Şunu kullanın: ${1}.","indent":"Girinti","redo":"Yinele","strikethrough":"Üstü Çizili","justifyFull":"Yasla","justifyCenter":"Ortaya Hizala","hiliteColor":"Arka Plan Rengi","deleteTable":"Tabloyu Sil","outdent":"Çıkıntı","cut":"Kes","plainFormatBlock":"Paragraf Stili","toggleDir":"Yönü Değiştir","bold":"Kalın","tabIndent":"Sekme Girintisi","justifyRight":"Sağa Hizala","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.tr");dijit._editor.nls.FontChoice.tr={"1":"xx-küçük","2":"x-küçük","formatBlock":"Biçim","3":"küçük","4":"orta","5":"büyük","6":"x-büyük","7":"xx-büyük","fantasy":"fantazi","serif":"serif","p":"Paragraf","pre":"Önceden Biçimlendirilmiş","sans-serif":"sans-serif","fontName":"Yazı Tipi","h1":"Başlık","h2":"Alt Başlık","h3":"Alt Alt Başlık","monospace":"tek aralıklı","fontSize":"Boyut","cursive":"el yazısı","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.tr");dijit._editor.nls.LinkDialog.tr={"text":"Açıklama:","insertImageTitle":"Resim Özellikleri","set":"Ayarla","newWindow":"Yeni Pencere","topWindow":"En Üst Pencere","target":"Hedef:","createLinkTitle":"Bağlantı Özellikleri","parentWindow":"Üst Pencere","currentWindow":"Geçerli Pencere","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.tr");dojo.cldr.nls.currency.tr={"HKD_displayName":"Hong Kong Doları","CHF_displayName":"İsviçre Frangı","JPY_symbol":"¥","CAD_displayName":"Kanada Doları","CNY_displayName":"Çin Yuanı Renminbi","USD_symbol":"$","AUD_displayName":"Avustralya Doları","JPY_displayName":"Japon Yeni","USD_displayName":"ABD Doları","GBP_displayName":"İngiliz Sterlini","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.tr");dojo.cldr.nls.gregorian.tr={"months-format-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-weekday":"Haftanın Günü","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"dd.MM.yyyy EEE","dateFormatItem-MMMEd":"dd MMM E","eraNarrow":["MÖ","MS"],"dateFormat-long":"dd MMMM y","months-format-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"dd MMMM y EEEE","dateFormatItem-Md":"dd/MM","field-era":"Miladi Dönem","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"timeFormat-long":"HH:mm:ss z","field-year":"Yıl","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","field-hour":"Saat","months-format-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Bugün","field-day-relative+1":"Yarın","field-day-relative+2":"Yarından sonraki gün","dateFormatItem-H":"HH","field-day-relative+3":"Üç gün sonra","months-standAlone-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-M":"L","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-MMMMd":"dd MMMM","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"eraAbbr":["MÖ","MS"],"field-minute":"Dakika","field-dayperiod":"AM/PM","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"Dün","field-day-relative+-2":"Evvelsi gün","field-day-relative+-3":"Üç gün önce","dateFormatItem-MMMd":"dd MMM","dateFormatItem-MEd":"dd/MM E","dateFormatItem-yMMMM":"MMMM y","field-day":"Gün","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-zone":"Saat Dilimi","dateFormatItem-y":"y","months-standAlone-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"eraNames":["Milattan Önce","Milattan Sonra"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"field-month":"Ay","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"dd MMMM E","dateFormat-short":"dd.MM.yyyy","field-second":"Saniye","dateFormatItem-yMMMEd":"dd MMM y EEE","dateFormatItem-Ed":"d E","field-week":"Hafta","dateFormat-medium":"dd MMM y","dateFormatItem-mmss":"mm:ss","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"};
diff --git a/lib/dijit/nls/dijit-all_xx.js b/lib/dijit/nls/dijit-all_xx.js
new file mode 100644 (file)
index 0000000..7ac51c1
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_xx");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.xx");dojo.nls.colors.xx={"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.xx");dijit._editor.nls.commands.xx={"removeFormat":"Remove Format","copy":"Copy","paste":"Paste","selectAll":"Select All","insertOrderedList":"Numbered List","insertTable":"Insert/Edit Table","print":"Print","underline":"Underline","foreColor":"Foreground Color","htmlToggle":"HTML Source","formatBlock":"Paragraph Style","newPage":"New Page","insertHorizontalRule":"Horizontal Rule","delete":"Delete","appleKey":"⌘${0}","insertUnorderedList":"Bullet List","tableProp":"Table Property","insertImage":"Insert Image","superscript":"Superscript","subscript":"Subscript","createLink":"Create Link","undo":"Undo","fullScreen":"Toggle Full Screen","italic":"Italic","fontName":"Font Name","justifyLeft":"Align Left","unlink":"Remove Link","toggleTableBorder":"Toggle Table Border","viewSource":"View HTML Source","ctrlKey":"ctrl+${0}","fontSize":"Font Size","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","indent":"Indent","redo":"Redo","strikethrough":"Strikethrough","justifyFull":"Justify","justifyCenter":"Align Center","hiliteColor":"Background Color","deleteTable":"Delete Table","outdent":"Outdent","cut":"Cut","plainFormatBlock":"Paragraph Style","toggleDir":"Toggle Direction","bold":"Bold","tabIndent":"Tab Indent","justifyRight":"Align Right"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.xx");dijit._editor.nls.FontChoice.xx={"noFormat":"None","1":"xx-small","2":"x-small","formatBlock":"Format","3":"small","4":"medium","5":"large","6":"x-large","7":"xx-large","fantasy":"fantasy","serif":"serif","p":"Paragraph","pre":"Pre-formatted","sans-serif":"sans-serif","fontName":"Font","h1":"Heading","h2":"Subheading","h3":"Sub-subheading","monospace":"monospace","fontSize":"Size","cursive":"cursive"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.xx");dijit._editor.nls.LinkDialog.xx={"text":"Description:","insertImageTitle":"Image Properties","set":"Set","newWindow":"New Window","topWindow":"Topmost Window","target":"Target:","createLinkTitle":"Link Properties","parentWindow":"Parent Window","currentWindow":"Current Window","url":"URL:"};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:]","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"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.xx");dojo.cldr.nls.currency.xx={"USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.xx");dojo.cldr.nls.gregorian.xx={"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["BCE","CE"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"y MMMM d","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, y MMMM dd","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-era":"Era","dateFormatItem-yM":"y-M","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","field-year":"Year","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","dateFormatItem-H":"HH","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["BCE","CE"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Yesterday","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","field-day":"Day","days-format-wide":["1","2","3","4","5","6","7"],"field-zone":"Zone","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"eraNames":["BCE","CE"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"yyyy-MM-dd","field-second":"Second","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Week","dateFormat-medium":"y MMM d","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"};
diff --git a/lib/dijit/nls/dijit-all_zh-cn.js b/lib/dijit/nls/dijit-all_zh-cn.js
new file mode 100644 (file)
index 0000000..1949751
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_zh-cn");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.zh_cn");dojo.nls.colors.zh_cn={"lightsteelblue":"浅钢蓝色","orangered":"橙红色","midnightblue":"深蓝色","cadetblue":"灰蓝色","seashell":"海贝色","slategrey":"灰石色","coral":"珊瑚色","darkturquoise":"深粉蓝","antiquewhite":"古董白","mediumspringgreen":"间春绿色","salmon":"橙红","darkgrey":"深灰色","ivory":"象牙色","greenyellow":"绿黄色","mistyrose":"浅玫瑰色","lightsalmon":"淡橙色","silver":"银白色","dimgrey":"暗灰色","orange":"橙色","white":"白色","navajowhite":"纳瓦白","royalblue":"品蓝","deeppink":"深粉红色","lime":"淡黄绿色","oldlace":"老白色","chartreuse":"黄绿色","darkcyan":"深青绿","yellow":"黄色","linen":"亚麻色","olive":"橄榄绿","gold":"金黄色","lawngreen":"草绿色","lightyellow":"浅黄色","tan":"棕褐色","darkviolet":"深紫色","lightslategrey":"浅青灰","grey":"灰色","darkkhaki":"深卡其色","green":"绿色","deepskyblue":"深天蓝色","aqua":"浅绿色","sienna":"赭色","mintcream":"薄荷色","rosybrown":"褐玫瑰红","mediumslateblue":"间暗蓝色","magenta":"洋红色","lightseagreen":"浅海藻绿","cyan":"青蓝色","olivedrab":"草绿色","darkgoldenrod":"深金黄","slateblue":"石蓝色","mediumaquamarine":"间绿色","lavender":"淡紫色","mediumseagreen":"间海蓝色","maroon":"栗色","darkslategray":"深青灰","mediumturquoise":"间绿宝石色","ghostwhite":"苍白","darkblue":"深蓝","mediumvioletred":"间紫罗兰色","brown":"棕色","lightgray":"浅灰色","sandybrown":"沙褐色","pink":"粉红色","firebrick":"砖红","indigo":"靛青","snow":"雪白色","darkorchid":"深紫色","turquoise":"绿宝石色","chocolate":"巧克力色","springgreen":"春绿色","moccasin":"鹿皮色","navy":"藏青色","lemonchiffon":"柠檬绸色","teal":"水鸭色","floralwhite":"花白色","cornflowerblue":"浅蓝色","paleturquoise":"苍绿色","purple":"紫色","gainsboro":"淡灰色","plum":"杨李色","red":"红色","blue":"蓝色","forestgreen":"森林绿","darkgreen":"深绿色","honeydew":"蜜汁色","darkseagreen":"深海藻绿","lightcoral":"浅珊瑚色","palevioletred":"苍紫罗兰色","mediumpurple":"间紫色","saddlebrown":"重褐色","darkmagenta":"深洋红色","thistle":"蓟色","whitesmoke":"烟白色","wheat":"浅黄色","violet":"紫色","lightskyblue":"浅天蓝色","goldenrod":"金麒麟色","mediumblue":"间蓝色","skyblue":"天蓝色","crimson":"绯红色","darksalmon":"深橙红","darkred":"深红色","darkslategrey":"深青灰","peru":"秘鲁色","lightgrey":"浅灰色","lightgoldenrodyellow":"浅金黄色","blanchedalmond":"白杏色","aliceblue":"爱丽丝蓝","bisque":"桔黄色","slategray":"灰石色","palegoldenrod":"淡金黄色","darkorange":"深橙色","aquamarine":"碧绿色","lightgreen":"浅绿色","burlywood":"实木色","dodgerblue":"闪蓝色","darkgray":"深灰色","lightcyan":"浅青色","powderblue":"铁蓝","blueviolet":"蓝紫色","orchid":"紫色","dimgray":"暗灰色","beige":"米色","fuchsia":"紫红色","lavenderblush":"淡紫红","hotpink":"深粉红","steelblue":"钢蓝色","tomato":"西红柿色","lightpink":"浅粉红色","limegreen":"橙绿色","indianred":"印度红","papayawhip":"木瓜色","lightslategray":"浅青灰","gray":"灰色","mediumorchid":"间紫色","cornsilk":"米绸色","black":"黑色","seagreen":"海绿色","darkslateblue":"深青蓝","khaki":"卡其色","lightblue":"淡蓝色","palegreen":"淡绿色","azure":"天蓝色","peachpuff":"桃色","darkolivegreen":"深橄榄绿","yellowgreen":"黄绿色"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.zh_cn");dijit._editor.nls.commands.zh_cn={"removeFormat":"除去格式","copy":"复制","paste":"粘贴","selectAll":"全选","insertOrderedList":"编号列表","insertTable":"插入/编辑表","print":"打印","underline":"下划线","foreColor":"前景色","htmlToggle":"HTML 源代码","formatBlock":"段落样式","newPage":"新建页面","insertHorizontalRule":"水平线","delete":"删除","insertUnorderedList":"符号列表","tableProp":"表属性","insertImage":"插入图像","superscript":"上标","subscript":"下标","createLink":"创建链接","undo":"撤销","fullScreen":"切换全屏幕","italic":"斜体","fontName":"字体名称","justifyLeft":"左对齐","unlink":"除去链接","toggleTableBorder":"切换表边框","viewSource":"查看 HTML 源代码","fontSize":"字体大小","systemShortcut":"只能在浏览器中通过键盘快捷方式执行“${0}”操作。使用 ${1}。","indent":"增加缩进","redo":"重做","strikethrough":"删除线","justifyFull":"对齐","justifyCenter":"居中","hiliteColor":"背景色","deleteTable":"删除表","outdent":"减少缩进","cut":"剪切","plainFormatBlock":"段落样式","toggleDir":"固定方向","bold":"粗体","tabIndent":"制表符缩进","justifyRight":"右对齐","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.zh_cn");dijit._editor.nls.FontChoice.zh_cn={"1":"XXS 号","2":"XS 号","formatBlock":"格式","3":"S 号","4":"M 号","5":"L 号","6":"XL 号","7":"XXL 号","fantasy":"虚线","serif":"有衬线","p":"段落","pre":"预设有格式的","sans-serif":"无衬线","fontName":"字体","h1":"标题","h2":"子标题","h3":"二级子标题","monospace":"等宽字体","fontSize":"大小","cursive":"草书","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.zh_cn");dijit._editor.nls.LinkDialog.zh_cn={"text":"描述:","insertImageTitle":"图像属性","set":"设置","newWindow":"新窗口","topWindow":"最顶部窗口","target":"目标:","createLinkTitle":"链接属性","parentWindow":"父窗口","currentWindow":"当前窗口","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.zh_cn");dojo.cldr.nls.currency.zh_cn={"HKD_displayName":"港元","CHF_displayName":"瑞士法郎","CAD_displayName":"加拿大元","CNY_displayName":"人民币","AUD_displayName":"澳大利亚元","JPY_displayName":"日元","USD_displayName":"美元","CNY_symbol":"¥","GBP_displayName":"英镑","EUR_displayName":"欧元","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.zh_cn");dojo.cldr.nls.gregorian.zh_cn={"months-format-narrow":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-weekday":"周天","dateFormatItem-yQQQ":"y年QQQ","dateFormatItem-yMEd":"y年M月d日,E","dateFormatItem-MMMEd":"MMMd日E","eraNarrow":["公元前","公元"],"dayPeriods-format-wide-earlyMorning":"清晨","dayPeriods-format-wide-morning":"上午","dateFormat-long":"y年M月d日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"下午","dateFormat-full":"y年M月d日EEEE","dateFormatItem-Md":"M-d","field-era":"时期","dateFormatItem-yM":"yyyy-M","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第1季度","第2季度","第3季度","第4季度"],"timeFormat-long":"zah时mm分ss秒","field-year":"年","dateFormatItem-yMMM":"y年MMM","dateFormatItem-yQ":"y年QQQ","dateFormatItem-yyyyMMMM":"y年MMMM","field-hour":"小时","dateFormatItem-MMdd":"MM-dd","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy年第Q季度","timeFormat-full":"zzzzah时mm分ss秒","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"后天","dateFormatItem-H":"H时","months-standAlone-abbr":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"quarters-format-abbr":["1季","2季","3季","4季"],"quarters-standAlone-wide":["第1季度","第2季度","第3季度","第4季度"],"dateFormatItem-M":"L","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyMMM":"yy年MMM","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1季","2季","3季","4季"],"eraAbbr":["公元前","公元"],"field-minute":"分钟","field-dayperiod":"上午/下午","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dayPeriods-format-wide-night":"晚上","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨天","dateFormatItem-h":"ah","dateTimeFormat-long":"{1}{0}","field-day-relative+-2":"前天","dateFormatItem-MMMd":"MMMd日","dayPeriods-format-wide-midDay":"中午","dateFormatItem-MEd":"M-dE","dateTimeFormat-full":"{1}{0}","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"区域","dateFormatItem-y":"y年","months-standAlone-narrow":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyMM":"yy-MM","dateFormatItem-hm":"ah:mm","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-yMMMd":"y年MMMd日","eraNames":["公元前","公元"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-month":"月","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"上午","dateFormatItem-MMMMdd":"MMMMdd日","dayPeriods-format-wide-weeHours":"凌晨","dateFormat-short":"yy-M-d","dayPeriods-format-wide-afternoon":"下午","field-second":"秒钟","dateFormatItem-yMMMEd":"y年MMMd日EEE","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"yyyy-M-d","dateFormatItem-yyyyM":"y年M月","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"y年","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/dijit-all_zh-tw.js b/lib/dijit/nls/dijit-all_zh-tw.js
new file mode 100644 (file)
index 0000000..9f6f5f4
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_zh-tw");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.zh_tw");dojo.nls.colors.zh_tw={"lightsteelblue":"淡鐵藍色","orangered":"橙紅色","midnightblue":"午夜藍","cadetblue":"軍服藍","seashell":"海貝色","slategrey":"岩灰色","coral":"珊瑚紅","darkturquoise":"暗松石綠","antiquewhite":"米白色","mediumspringgreen":"中春綠色","salmon":"鮭紅色","darkgrey":"暗灰色","ivory":"象牙色","greenyellow":"綠黃色","mistyrose":"霧玫瑰色","lightsalmon":"淡鮭紅","silver":"銀色","dimgrey":"昏灰色","orange":"橙色","white":"白色","navajowhite":"印地安黃色","royalblue":"品藍色","deeppink":"深粉紅色","lime":"檸檬色","oldlace":"舊蕾絲色","chartreuse":"淡黃綠色","darkcyan":"暗青色","yellow":"黃色","linen":"亞麻色","olive":"橄欖色","gold":"金色","lawngreen":"草綠色","lightyellow":"淡黃色","tan":"皮革色","darkviolet":"暗紫羅蘭色","lightslategrey":"淡岩灰色","grey":"灰色","darkkhaki":"暗卡其色","green":"綠色","deepskyblue":"深天藍色","aqua":"水色","sienna":"黃土赭色","mintcream":"薄荷乳白色","rosybrown":"玫瑰褐","mediumslateblue":"中岩藍色","magenta":"紫紅色","lightseagreen":"淡海綠色","cyan":"青色","olivedrab":"橄欖綠","darkgoldenrod":"暗金菊色","slateblue":"岩藍色","mediumaquamarine":"中碧綠色","lavender":"薰衣草紫","mediumseagreen":"中海綠色","maroon":"栗色","darkslategray":"暗岩灰色","mediumturquoise":"中松石綠","ghostwhite":"幽靈色","darkblue":"暗藍色","mediumvioletred":"中紫羅蘭紅","brown":"褐色","lightgray":"淡灰色","sandybrown":"沙褐色","pink":"粉紅色","firebrick":"紅磚色","indigo":"靛藍色","snow":"雪白色","darkorchid":"暗蘭花色","turquoise":"松石綠","chocolate":"巧克力色","springgreen":"春綠色","moccasin":"鹿皮黃色","navy":"海軍藍","lemonchiffon":"奶油黃","teal":"深藍綠色","floralwhite":"花卉白","cornflowerblue":"矢車菊藍","paleturquoise":"灰松石綠","purple":"紫色","gainsboro":"石板灰","plum":"李紫色","red":"紅色","blue":"藍色","forestgreen":"森綠色","darkgreen":"暗綠色","honeydew":"密瓜色","darkseagreen":"暗海綠色","lightcoral":"淡珊瑚紅","palevioletred":"灰紫羅蘭紅","mediumpurple":"中紫色","saddlebrown":"鞍褐色","darkmagenta":"暗紫紅色","thistle":"薊色","whitesmoke":"白煙色","wheat":"小麥色","violet":"紫羅蘭色","lightskyblue":"淡天藍色","goldenrod":"金菊色","mediumblue":"中藍色","skyblue":"天藍色","crimson":"暗深紅色","darksalmon":"暗鮭紅","darkred":"暗紅色","darkslategrey":"暗岩灰色","peru":"祕魯色","lightgrey":"淡灰色","lightgoldenrodyellow":"淡金菊黃","blanchedalmond":"杏仁白","aliceblue":"愛麗絲藍","bisque":"橘黃色","slategray":"岩灰色","palegoldenrod":"灰金菊色","darkorange":"暗橙色","aquamarine":"碧綠色","lightgreen":"淡綠色","burlywood":"實木色","dodgerblue":"道奇藍","darkgray":"暗灰色","lightcyan":"淡青色","powderblue":"粉藍色","blueviolet":"藍紫色","orchid":"蘭花色","dimgray":"昏灰色","beige":"灰棕色","fuchsia":"海棠紅","lavenderblush":"薰衣草紫紅","hotpink":"暖粉紅色","steelblue":"鐵藍色","tomato":"蕃茄紅","lightpink":"淡粉紅色","limegreen":"檸檬綠","indianred":"印度紅","papayawhip":"番木瓜色","lightslategray":"淡岩灰色","gray":"灰色","mediumorchid":"中蘭紫色","cornsilk":"玉米黃","black":"黑色","seagreen":"海綠色","darkslateblue":"暗岩藍色","khaki":"卡其色","lightblue":"淡藍色","palegreen":"灰綠色","azure":"天藍色","peachpuff":"粉撲桃色","darkolivegreen":"暗橄欖綠","yellowgreen":"黃綠色"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.zh_tw");dijit._editor.nls.commands.zh_tw={"removeFormat":"移除格式","copy":"複製","paste":"貼上","selectAll":"全選","insertOrderedList":"編號清單","insertTable":"插入/編輯表格","print":"列印","underline":"底線","foreColor":"前景顏色","htmlToggle":"HTML 原始檔","formatBlock":"段落樣式","newPage":"新建頁面","insertHorizontalRule":"水平尺規","delete":"刪除","insertUnorderedList":"項目符號清單","tableProp":"表格內容","insertImage":"插入影像","superscript":"上標","subscript":"下標","createLink":"建立鏈結","undo":"復原","fullScreen":"切換全螢幕","italic":"斜體","fontName":"字型名稱","justifyLeft":"靠左對齊","unlink":"移除鏈結","toggleTableBorder":"切換表格邊框","viewSource":"檢視 HTML 原始檔","fontSize":"字型大小","systemShortcut":"\"${0}\" 動作只能在瀏覽器中透過使用鍵盤快速鍵來使用。請使用 ${1}。","indent":"縮排","redo":"重做","strikethrough":"加刪除線","justifyFull":"對齊","justifyCenter":"置中對齊","hiliteColor":"背景顏色","deleteTable":"刪除表格","outdent":"凸排","cut":"剪下","plainFormatBlock":"段落樣式","toggleDir":"切換方向","bold":"粗體","tabIndent":"定位點縮排","justifyRight":"靠右對齊","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.zh_tw");dijit._editor.nls.FontChoice.zh_tw={"1":"最小","2":"較小","formatBlock":"格式","3":"小","4":"中","5":"大","6":"較大","7":"最大","fantasy":"Fantasy","serif":"新細明體","p":"段落","pre":"預先格式化","sans-serif":"新細明體","fontName":"字型","h1":"標題","h2":"子標題","h3":"次子標題","monospace":"等寬","fontSize":"大小","cursive":"Cursive","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.zh_tw");dijit._editor.nls.LinkDialog.zh_tw={"text":"說明:","insertImageTitle":"影像內容","set":"設定","newWindow":"新視窗","topWindow":"最上面的視窗","target":"目標:","createLinkTitle":"鏈結內容","parentWindow":"上層視窗","currentWindow":"現行視窗","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.zh_tw");dojo.cldr.nls.currency.zh_tw={"BRE_displayName":"巴西克魯賽羅 (1990-1993)","DEM_displayName":"德國馬克","KGS_symbol":"som","CUP_displayName":"古巴披索","HUF_symbol":"Ft","BDT_symbol":"Tk","LSL_symbol":"M","VEF_symbol":"BsF","MDL_displayName":"摩杜雲列伊","DOP_displayName":"多明尼加披索","MTL_symbol":"Lm","NGN_displayName":"奈及利亞奈拉","KZT_displayName":"卡扎克斯坦坦吉","BGL_symbol":"lev","LTT_displayName":"立陶宛特羅","LAK_displayName":"寮國基普","LKR_displayName":"斯里蘭卡盧布","AOR_displayName":"安哥拉新寬扎 Reajustado (1995-1999)","XEU_displayName":"歐洲貨幣單位 XEU","SYP_symbol":"LS","USS_displayName":"美元 (同一天)","MNT_displayName":"蒙古圖格里克","AMD_symbol":"dram","MOP_displayName":"澳門元","TJR_displayName":"塔吉克斯坦盧布","LUC_displayName":"盧森堡可兌換法郎","LUL_displayName":"盧森堡金融法郎","MRO_symbol":"UM","AON_displayName":"安哥拉新寬扎 (1990-2000)","BEF_displayName":"比利時法郎","IEP_displayName":"愛爾蘭鎊","SBD_displayName":"索羅門群島元","GRD_displayName":"希臘德拉克馬","AZM_displayName":"阿塞拜彊馬特納","MTP_displayName":"馬爾他鎊","UGX_symbol":"U Sh","ARS_symbol":"Arg$","LVR_displayName":"拉脫維亞盧布","GNF_displayName":"幾內亞法郎","GIP_displayName":"直布羅陀鎊","SRG_displayName":"蘇里南盾","BAD_displayName":"波士尼亞-黑塞哥維那第納爾","FJD_displayName":"斐濟元","BAM_displayName":"波士尼亞-黑塞哥維那可轉換馬克","XBB_displayName":"歐洲貨幣單位 XBB","CDF_displayName":"剛果法郎","HRD_displayName":"克羅地亞第納爾","EQE_displayName":"埃奎維勒","BZD_displayName":"伯利茲元","MLF_displayName":"馬里法郎","VEB_symbol":"Be","EGP_displayName":"埃及鎊","MVR_displayName":"馬爾地夫海島盧非亞","KWD_symbol":"KD","TRL_symbol":"TL","ALL_symbol":"lek","SDP_displayName":"蘇丹鎊","NPR_displayName":"尼泊爾盧布","PHP_displayName":"菲律賓披索","DJF_symbol":"DF","WST_displayName":"西薩摩亞塔拉","JPY_displayName":"日圓","TMM_displayName":"土庫曼馬納特","STD_symbol":"Db","BGN_displayName":"保加利亞新列弗","KYD_displayName":"開曼群島美元","VUV_displayName":"萬那杜萬杜","IRR_displayName":"伊朗里亞爾","DJF_displayName":"吉布地法郎","BTN_symbol":"Nu","XDR_displayName":"特殊提款權","ECS_displayName":"厄瓜多蘇克雷","LSM_displayName":"馬洛蒂","MNT_symbol":"Tug","NLG_displayName":"荷蘭盾","MWK_displayName":"馬拉維克瓦查","IRR_symbol":"RI","OMR_symbol":"RO","JMD_symbol":"J$","PES_displayName":"秘魯太陽幣","SRG_symbol":"Sf","LYD_displayName":"利比亞第納爾","BRR_displayName":"巴西克魯賽羅","ETB_symbol":"Br","KMF_symbol":"CF","DKK_symbol":"DKr","XXX_displayName":"XXX","IDR_displayName":"印尼 - 盧布","DZD_symbol":"DA","TZS_symbol":"T Sh","SGD_symbol":"SGD","KGS_displayName":"吉爾吉斯索馬","BRN_displayName":"巴西克如爾達農瓦","AFN_symbol":"Af","ISK_displayName":"冰島克朗","LUF_displayName":"盧森堡法郎","MXN_symbol":"MEX$","GYD_symbol":"G$","TOP_symbol":"T$","SVC_displayName":"薩爾瓦多科郎","ZMK_displayName":"尚比亞克瓦查","TOP_displayName":"東加潘加","ITL_displayName":"義大利里拉","USN_displayName":"美元 (第二天)","KWD_displayName":"科威特第納爾","GEL_symbol":"lari","KMF_displayName":"科摩羅法郎","COP_symbol":"Col$","MYR_displayName":"馬來西亞 - 林吉特","XFU_displayName":"法國 UIC 法郎","GMD_displayName":"甘比亞達拉西","LVL_displayName":"拉脫維亞拉特銀幣","AUD_displayName":"澳幣","XPF_displayName":"CFP 法郎","LBP_displayName":"黎巴嫩鎊","SKK_symbol":"Sk","BYB_displayName":"白俄羅斯新盧布 (1994-1999)","MKD_displayName":"馬其頓第納爾","GWP_displayName":"幾內亞披索披索","CNY_displayName":"人民幣","HNL_symbol":"L","BOB_symbol":"Bs","JOD_displayName":"約旦第納爾","OMR_displayName":"阿曼里奧","BOV_displayName":"玻利維亞幕多","XPT_displayName":"白金","AUD_symbol":"AU$","NOK_displayName":"挪威克羅納","SCR_displayName":"塞舌爾群島盧布","XBA_displayName":"歐洲綜合單位","CSK_displayName":"捷克斯洛伐克硬克朗","PLZ_displayName":"波蘭茲羅提 (1950-1995)","UAK_displayName":"烏克蘭卡本瓦那茲","MGF_displayName":"馬達加斯加法郎","GNS_displayName":"幾內亞西里","YUN_displayName":"南斯拉夫 可轉換第納爾","UYU_symbol":"Ur$","GYD_displayName":"圭亞那元","QAR_displayName":"卡達爾里亞爾","BZD_symbol":"BZ$","JOD_symbol":"JD","ALL_displayName":"阿爾巴尼亞列克","BBD_displayName":"巴貝多元","RON_displayName":"羅馬尼亞列伊","XCD_symbol":"EC$","AMD_displayName":"亞美尼亞德拉姆","CYP_displayName":"賽浦路斯鎊","GBP_symbol":"£","SEK_displayName":"瑞典克羅納","MZN_symbol":"MTn","MMK_displayName":"緬甸元","ZAR_displayName":"南非蘭特","ECV_displayName":"厄瓜多爾由里達瓦康斯坦 (UVC)","LYD_symbol":"LD","VUV_symbol":"VT","AWG_displayName":"阿魯巴盾","CVE_symbol":"CVEsc","STD_displayName":"聖多美島和普林西比島多布拉","CAD_displayName":"加幣","ADP_displayName":"安道爾陪士特","MRO_displayName":"茅利塔尼亞烏吉亞","LSL_displayName":"賴索托羅蒂","TND_displayName":"突尼西亞第納爾","USD_symbol":"$","BMD_symbol":"Ber$","BAM_symbol":"KM","BRC_displayName":"巴西克魯賽羅 (1986-1989)","BMD_displayName":"百慕達幣","BRL_displayName":"巴西里拉","JMD_displayName":"牙買加元","SOS_displayName":"索馬利亞先令","SAR_displayName":"沙烏地里雅","PEI_displayName":"祕魯因蒂","ESP_displayName":"西班牙陪士特","HKD_displayName":"港幣","ESP_symbol":"₧","BWP_displayName":"波札那 - 普拉","TTD_displayName":"千里達及托巴哥元","BSD_displayName":"巴哈馬元","BIF_displayName":"蒲隆地法郎","FRF_displayName":"法國法郎","DKK_displayName":"丹麥克羅納","AED_displayName":"阿拉伯聯合大公國迪爾汗","GHS_symbol":"GH¢","AOK_displayName":"安哥拉寬扎(1977-1990)","ATS_displayName":"奧地利先令","PEN_displayName":"秘魯新太陽幣","CRC_displayName":"哥斯大黎加科郎","PAB_displayName":"巴拿馬巴波亞","CHE_displayName":"WIR 歐元","GQE_displayName":"赤道幾內亞埃奎勒","DZD_displayName":"阿爾及利亞第納爾","EEK_displayName":"愛沙尼亞克朗","YDD_displayName":"葉門第納爾","GHC_displayName":"迦納仙蔕","YER_symbol":"YRl","PLN_symbol":"Zl","NPR_symbol":"Nrs","MXP_displayName":"墨西哥銀披索 (1861-1992)","XAG_displayName":"XAG","XFO_displayName":"法國金法郎","GWE_displayName":"葡屬幾內亞埃斯庫多","BOB_displayName":"玻利維亞貨幣單位","CAD_symbol":"CA$","ZWD_displayName":"辛巴威元","SRD_displayName":"蘇利南元","ZRN_displayName":"薩伊新扎伊爾","XAU_displayName":"黃金","GTQ_symbol":"Q","KRW_symbol":"KRW","BOP_displayName":"玻利維亞披索","LBP_symbol":"LL","XBD_displayName":"歐洲會計單位(XBD)","TZS_displayName":"坦尚尼亞先令","XPF_symbol":"CFPF","TTD_symbol":"TT$","LRD_displayName":"賴比瑞亞元","KRW_displayName":"韓國圜","SHP_displayName":"聖赫勒拿鎊","NAD_symbol":"N$","MZE_displayName":"莫桑比克埃斯庫多","SDD_displayName":"蘇丹第納爾","HRK_displayName":"克羅地亞庫納","FKP_displayName":"福克蘭群島鎊","COP_displayName":"哥倫比亞披索","YUD_displayName":"南斯拉夫第納爾硬幣","YUM_displayName":"南斯拉夫挪威亞第納爾","BYR_symbol":"Rbl","THB_displayName":"泰銖","MGA_displayName":"馬達加斯加艾瑞爾","TWD_displayName":"新臺幣","UGS_displayName":"烏干達先令 (1966-1987)","SBD_symbol":"SI$","ZAL_displayName":"南非 - 蘭特 (金融)","GEL_displayName":"喬治拉里","ILP_displayName":"以色列鎊","MKD_symbol":"MDen","KES_displayName":"肯尼亞先令","CZK_displayName":"捷克克朗","UGX_displayName":"烏干達先令","KZT_symbol":"T","BGL_displayName":"保加利亞硬列弗","ARP_displayName":"阿根廷披索(1983-1985)","BBD_symbol":"BDS$","MYR_symbol":"RM","RUR_displayName":"俄羅斯盧布 (1991-1998)","ERN_displayName":"厄立特里亞納克法","BEF_symbol":"BF","CLF_displayName":"卡林油達佛曼跎","BRB_displayName":"巴西克魯薩多農瓦(1967-1986)","IDR_symbol":"Rp","IEP_symbol":"IR£","BHD_displayName":"巴林第納爾","SYP_displayName":"敘利亞鎊","BIF_symbol":"Fbu","SZL_displayName":"史瓦濟蘭里朗吉尼","INR_displayName":"印度盧布","PTE_displayName":"葡萄牙埃斯庫多","KPW_displayName":"北朝鮮幣","XOF_displayName":"西非法郎 BCEAO","DOP_symbol":"RD$","MXN_displayName":"墨西哥 - 披索","RWF_displayName":"盧安達法郎","ETB_displayName":"衣索比亞比爾","LTL_displayName":"立陶宛里塔","SZL_symbol":"E","QAR_symbol":"QR","SOS_symbol":"Sh.","BND_displayName":"汶萊元","SUR_displayName":"蘇聯盧布","AOA_displayName":"安哥拉寬扎","FJD_symbol":"F$","CVE_displayName":"維德角埃斯庫多","XTS_displayName":"XTS","CLP_displayName":"智利披索","HUF_displayName":"匈牙利 - 福林","LKR_symbol":"SL Re","SCR_symbol":"SR","TJS_displayName":"塔吉克索莫尼","MWK_symbol":"MK","GBP_displayName":"英鎊","TPE_displayName":"帝汶埃斯庫多","GNF_symbol":"GF","SGD_displayName":"新加坡幣","SLL_displayName":"獅子山利昂","MZM_symbol":"Mt","PHP_symbol":"Php","CYP_symbol":"£C","XAF_displayName":"西非法郎 BEAC","MTL_displayName":"馬爾他里拉","KHR_displayName":"柬埔寨瑞爾","ZRZ_displayName":"扎伊爾扎伊爾","KES_symbol":"K Sh","PKR_symbol":"Pra","IQD_symbol":"ID","BEC_displayName":"比利時法郎 (可轉換)","BEL_displayName":"比利時法郎 (金融)","AZN_displayName":"亞塞拜然蒙納特","FIM_displayName":"芬蘭馬克","PKR_displayName":"巴基斯坦盧布","UYP_displayName":"烏拉圭披索 (1975-1993)","ANG_symbol":"NA f.","CHW_displayName":"WIR 法郎","PLN_displayName":"波蘭茲羅提","RON_symbol":"0≤lei|1≤leu|1","BTN_displayName":"不丹那特倫","UAH_displayName":"烏克蘭格里夫那","YER_displayName":"也門里亞爾","UYU_displayName":"烏拉圭披索","CRC_symbol":"C","PGK_displayName":"巴布亞紐幾內亞基那","XBC_displayName":"歐洲會計單位(XBC)","EUR_displayName":"歐元","MUR_displayName":"模里西斯盧布","BYR_displayName":"白俄羅斯盧布","SEK_symbol":"SKr","BHD_symbol":"BD","IQD_displayName":"伊拉克第納爾","VEB_displayName":"委內瑞拉博利瓦","CLP_symbol":"Ch$","MZM_displayName":"莫三比克梅蒂卡爾","NZD_symbol":"$NZ","CHF_symbol":"Fr.","SIT_displayName":"斯洛維尼亞托勒","NOK_symbol":"NKr","XCD_displayName":"格瑞那達元","RUB_displayName":"俄羅斯盧布","BUK_displayName":"緬甸元 BUK","ILS_displayName":"以色列新謝克爾","KHR_symbol":"CR","NAD_displayName":"納米比亞元","HNL_displayName":"洪都拉斯倫皮拉","GTQ_displayName":"瓜地馬拉格查爾","EUR_symbol":"€","NZD_displayName":"紐西蘭幣","ARA_displayName":"阿根廷奧斯特納爾","ARS_displayName":"阿根廷披索","ANG_displayName":"荷屬安地列斯盾","MOP_symbol":"MOP","ZWD_symbol":"Z$","ITL_symbol":"₤","ZAR_symbol":"R","CHF_displayName":"瑞士法郎","USD_displayName":"美元","CNY_symbol":"¥","HKD_symbol":"HK$","JPY_symbol":"JP¥"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.zh_tw");dojo.cldr.nls.gregorian.zh_tw={"dateFormatItem-yM":"yyyy/M","field-minute":"分鐘","eraNames":["西元前","西元"],"field-weekday":"週天","dateFormatItem-MMdd":"MM/dd","field-day-relative+-3":"大前天","field-relative-day":"大後天","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"年代","field-hour":"小時","quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"timeFormat-full":"zzzzah時mm分ss秒","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-Ed":"d日(E)","dateFormatItem-yMMM":"y年M月","eraAbbr":["西元前","西元"],"field-day-relative+2":"後天","field-day-relative+3":"大後天","timeFormat-medium":"ah:mm:ss","field-zone":"區域","dateFormatItem-yyMM":"yy-MM","dateFormat-medium":"yyyy/M/d","quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-yMMMM":"y年M月","dateFormatItem-HHmmss":"H:mm:ss","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-week":"週","dateFormatItem-HHmm":"H:mm","timeFormat-long":"zah時mm分ss秒","dateFormatItem-H":"H時","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"field-second":"秒","dateFormatItem-MEd":"M/d(E)","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormat-short":"yy/M/d","dateFormatItem-yMMMEd":"y年M月d日EEE","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"yyyy/M/d(EEE)","dateTimeAvailableFormats":["d日(E)","H:mm","H:mm:ss","M-d(E)","MM/dd","M/d","yyyy/M","yyyy/M/d(EEE)","yyyy年M月","yyyy年M月","yyyy/MM","MMMMdd日","MMMd日","MM-dd","M-d","d日","mm:ss","mm:ss","yyyy年","yyyy-M","yyyy年M月d日,E","yyyy年MMM","yyyy年MMMd日EEE","yyyy年MMMM","yyyy年QQQ","y年QQQ","yy-MM","yy年MMM","yy年第Q季度","yyyy年","yyyy年M月","yyyy年MMMM"],"quarters-format-wide":["第1季","第2季","第3季","第4季"],"eraNarrow":["西元前","西元"],"dateFormatItem-yQQQ":"y年QQQ","dateFormatItem-MMMEd":"MMMd日E","dayPeriods-format-wide-earlyMorning":"清晨","dayPeriods-format-wide-morning":"上午","dateFormat-long":"y年M月d日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"下午","dateFormat-full":"y年M月d日EEEE","timeFormat-short":"ah:mm","field-year":"年","dateFormatItem-yQ":"y年QQQ","dateFormatItem-yyyyMMMM":"y年MMMM","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy年第Q季度","field-day-relative+0":"今天","field-day-relative+1":"明天","dateFormatItem-M":"L","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyMMM":"yy年MMM","dateFormatItem-Hm":"H:mm","field-dayperiod":"上午/下午","dayPeriods-format-wide-night":"晚上","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨天","dateFormatItem-h":"ah","dateTimeFormat-long":"{1}{0}","field-day-relative+-2":"前天","dateFormatItem-MMMd":"MMMd日","dayPeriods-format-wide-midDay":"中午","dateTimeFormat-full":"{1}{0}","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-y":"y年","dateFormatItem-hm":"ah:mm","dateFormatItem-yMMMd":"y年MMMd日","days-format-narrow":["日","一","二","三","四","五","六"],"field-month":"月","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"上午","dateFormatItem-MMMMdd":"MMMMdd日","dayPeriods-format-wide-weeHours":"凌晨","dayPeriods-format-wide-afternoon":"下午","dateFormatItem-yyyyM":"y年M月","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"y年","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/dijit-all_zh.js b/lib/dijit/nls/dijit-all_zh.js
new file mode 100644 (file)
index 0000000..12af91a
--- /dev/null
@@ -0,0 +1 @@
+dojo.provide("dijit.nls.dijit-all_zh");dojo.provide("dojo.nls.colors");dojo.nls.colors._built=true;dojo.provide("dojo.nls.colors.zh");dojo.nls.colors.zh={"lightsteelblue":"浅钢蓝色","orangered":"橙红色","midnightblue":"深蓝色","cadetblue":"灰蓝色","seashell":"海贝色","slategrey":"灰石色","coral":"珊瑚色","darkturquoise":"深粉蓝","antiquewhite":"古董白","mediumspringgreen":"间春绿色","salmon":"橙红","darkgrey":"深灰色","ivory":"象牙色","greenyellow":"绿黄色","mistyrose":"浅玫瑰色","lightsalmon":"淡橙色","silver":"银白色","dimgrey":"暗灰色","orange":"橙色","white":"白色","navajowhite":"纳瓦白","royalblue":"品蓝","deeppink":"深粉红色","lime":"淡黄绿色","oldlace":"老白色","chartreuse":"黄绿色","darkcyan":"深青绿","yellow":"黄色","linen":"亚麻色","olive":"橄榄绿","gold":"金黄色","lawngreen":"草绿色","lightyellow":"浅黄色","tan":"棕褐色","darkviolet":"深紫色","lightslategrey":"浅青灰","grey":"灰色","darkkhaki":"深卡其色","green":"绿色","deepskyblue":"深天蓝色","aqua":"浅绿色","sienna":"赭色","mintcream":"薄荷色","rosybrown":"褐玫瑰红","mediumslateblue":"间暗蓝色","magenta":"洋红色","lightseagreen":"浅海藻绿","cyan":"青蓝色","olivedrab":"草绿色","darkgoldenrod":"深金黄","slateblue":"石蓝色","mediumaquamarine":"间绿色","lavender":"淡紫色","mediumseagreen":"间海蓝色","maroon":"栗色","darkslategray":"深青灰","mediumturquoise":"间绿宝石色","ghostwhite":"苍白","darkblue":"深蓝","mediumvioletred":"间紫罗兰色","brown":"棕色","lightgray":"浅灰色","sandybrown":"沙褐色","pink":"粉红色","firebrick":"砖红","indigo":"靛青","snow":"雪白色","darkorchid":"深紫色","turquoise":"绿宝石色","chocolate":"巧克力色","springgreen":"春绿色","moccasin":"鹿皮色","navy":"藏青色","lemonchiffon":"柠檬绸色","teal":"水鸭色","floralwhite":"花白色","cornflowerblue":"浅蓝色","paleturquoise":"苍绿色","purple":"紫色","gainsboro":"淡灰色","plum":"杨李色","red":"红色","blue":"蓝色","forestgreen":"森林绿","darkgreen":"深绿色","honeydew":"蜜汁色","darkseagreen":"深海藻绿","lightcoral":"浅珊瑚色","palevioletred":"苍紫罗兰色","mediumpurple":"间紫色","saddlebrown":"重褐色","darkmagenta":"深洋红色","thistle":"蓟色","whitesmoke":"烟白色","wheat":"浅黄色","violet":"紫色","lightskyblue":"浅天蓝色","goldenrod":"金麒麟色","mediumblue":"间蓝色","skyblue":"天蓝色","crimson":"绯红色","darksalmon":"深橙红","darkred":"深红色","darkslategrey":"深青灰","peru":"秘鲁色","lightgrey":"浅灰色","lightgoldenrodyellow":"浅金黄色","blanchedalmond":"白杏色","aliceblue":"爱丽丝蓝","bisque":"桔黄色","slategray":"灰石色","palegoldenrod":"淡金黄色","darkorange":"深橙色","aquamarine":"碧绿色","lightgreen":"浅绿色","burlywood":"实木色","dodgerblue":"闪蓝色","darkgray":"深灰色","lightcyan":"浅青色","powderblue":"铁蓝","blueviolet":"蓝紫色","orchid":"紫色","dimgray":"暗灰色","beige":"米色","fuchsia":"紫红色","lavenderblush":"淡紫红","hotpink":"深粉红","steelblue":"钢蓝色","tomato":"西红柿色","lightpink":"浅粉红色","limegreen":"橙绿色","indianred":"印度红","papayawhip":"木瓜色","lightslategray":"浅青灰","gray":"灰色","mediumorchid":"间紫色","cornsilk":"米绸色","black":"黑色","seagreen":"海绿色","darkslateblue":"深青蓝","khaki":"卡其色","lightblue":"淡蓝色","palegreen":"淡绿色","azure":"天蓝色","peachpuff":"桃色","darkolivegreen":"深橄榄绿","yellowgreen":"黄绿色"};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._editor.nls.commands");dijit._editor.nls.commands._built=true;dojo.provide("dijit._editor.nls.commands.zh");dijit._editor.nls.commands.zh={"removeFormat":"除去格式","copy":"复制","paste":"粘贴","selectAll":"全选","insertOrderedList":"编号列表","insertTable":"插入/编辑表","print":"打印","underline":"下划线","foreColor":"前景色","htmlToggle":"HTML 源代码","formatBlock":"段落样式","newPage":"新建页面","insertHorizontalRule":"水平线","delete":"删除","insertUnorderedList":"符号列表","tableProp":"表属性","insertImage":"插入图像","superscript":"上标","subscript":"下标","createLink":"创建链接","undo":"撤销","fullScreen":"切换全屏幕","italic":"斜体","fontName":"字体名称","justifyLeft":"左对齐","unlink":"除去链接","toggleTableBorder":"切换表边框","viewSource":"查看 HTML 源代码","fontSize":"字体大小","systemShortcut":"只能在浏览器中通过键盘快捷方式执行“${0}”操作。使用 ${1}。","indent":"增加缩进","redo":"重做","strikethrough":"删除线","justifyFull":"对齐","justifyCenter":"居中","hiliteColor":"背景色","deleteTable":"删除表","outdent":"减少缩进","cut":"剪切","plainFormatBlock":"段落样式","toggleDir":"固定方向","bold":"粗体","tabIndent":"制表符缩进","justifyRight":"右对齐","appleKey":"⌘${0}","ctrlKey":"ctrl+${0}"};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("dijit._editor.nls.FontChoice");dijit._editor.nls.FontChoice._built=true;dojo.provide("dijit._editor.nls.FontChoice.zh");dijit._editor.nls.FontChoice.zh={"1":"XXS 号","2":"XS 号","formatBlock":"格式","3":"S 号","4":"M 号","5":"L 号","6":"XL 号","7":"XXL 号","fantasy":"虚线","serif":"有衬线","p":"段落","pre":"预设有格式的","sans-serif":"无衬线","fontName":"字体","h1":"标题","h2":"子标题","h3":"二级子标题","monospace":"等宽字体","fontSize":"大小","cursive":"草书","noFormat":"None"};dojo.provide("dijit._editor.nls.LinkDialog");dijit._editor.nls.LinkDialog._built=true;dojo.provide("dijit._editor.nls.LinkDialog.zh");dijit._editor.nls.LinkDialog.zh={"text":"描述:","insertImageTitle":"图像属性","set":"设置","newWindow":"新窗口","topWindow":"最顶部窗口","target":"目标:","createLinkTitle":"链接属性","parentWindow":"父窗口","currentWindow":"当前窗口","url":"URL:"};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:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"};dojo.provide("dojo.cldr.nls.currency");dojo.cldr.nls.currency._built=true;dojo.provide("dojo.cldr.nls.currency.zh");dojo.cldr.nls.currency.zh={"HKD_displayName":"港元","CHF_displayName":"瑞士法郎","CAD_displayName":"加拿大元","CNY_displayName":"人民币","AUD_displayName":"澳大利亚元","JPY_displayName":"日元","USD_displayName":"美元","CNY_symbol":"¥","GBP_displayName":"英镑","EUR_displayName":"欧元","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","EUR_symbol":"€"};dojo.provide("dojo.cldr.nls.gregorian");dojo.cldr.nls.gregorian._built=true;dojo.provide("dojo.cldr.nls.gregorian.zh");dojo.cldr.nls.gregorian.zh={"months-format-narrow":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-weekday":"周天","dateFormatItem-yQQQ":"y年QQQ","dateFormatItem-yMEd":"y年M月d日,E","dateFormatItem-MMMEd":"MMMd日E","eraNarrow":["公元前","公元"],"dayPeriods-format-wide-earlyMorning":"清晨","dayPeriods-format-wide-morning":"上午","dateFormat-long":"y年M月d日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"下午","dateFormat-full":"y年M月d日EEEE","dateFormatItem-Md":"M-d","field-era":"时期","dateFormatItem-yM":"yyyy-M","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第1季度","第2季度","第3季度","第4季度"],"timeFormat-long":"zah时mm分ss秒","field-year":"年","dateFormatItem-yMMM":"y年MMM","dateFormatItem-yQ":"y年QQQ","dateFormatItem-yyyyMMMM":"y年MMMM","field-hour":"小时","dateFormatItem-MMdd":"MM-dd","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy年第Q季度","timeFormat-full":"zzzzah时mm分ss秒","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"后天","dateFormatItem-H":"H时","months-standAlone-abbr":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"quarters-format-abbr":["1季","2季","3季","4季"],"quarters-standAlone-wide":["第1季度","第2季度","第3季度","第4季度"],"dateFormatItem-M":"L","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyMMM":"yy年MMM","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1季","2季","3季","4季"],"eraAbbr":["公元前","公元"],"field-minute":"分钟","field-dayperiod":"上午/下午","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dayPeriods-format-wide-night":"晚上","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨天","dateFormatItem-h":"ah","dateTimeFormat-long":"{1}{0}","field-day-relative+-2":"前天","dateFormatItem-MMMd":"MMMd日","dayPeriods-format-wide-midDay":"中午","dateFormatItem-MEd":"M-dE","dateTimeFormat-full":"{1}{0}","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"区域","dateFormatItem-y":"y年","months-standAlone-narrow":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyMM":"yy-MM","dateFormatItem-hm":"ah:mm","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-yMMMd":"y年MMMd日","eraNames":["公元前","公元"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-month":"月","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"上午","dateFormatItem-MMMMdd":"MMMMdd日","dayPeriods-format-wide-weeHours":"凌晨","dateFormat-short":"yy-M-d","dayPeriods-format-wide-afternoon":"下午","field-second":"秒钟","dateFormatItem-yMMMEd":"y年MMMd日EEE","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"yyyy-M-d","dateFormatItem-yyyyM":"y年M月","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"y年","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"};
diff --git a/lib/dijit/nls/el/common.js b/lib/dijit/nls/el/common.js
new file mode 100644 (file)
index 0000000..8e7a36a
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"ΟΚ","buttonCancel":"Ακύρωση","buttonSave":"Αποθήκευση","itemClose":"Κλείσιμο"})
\ No newline at end of file
diff --git a/lib/dijit/nls/el/loading.js b/lib/dijit/nls/el/loading.js
new file mode 100644 (file)
index 0000000..9567b3c
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Φόρτωση...","errorState":"Σας ζητούμε συγνώμη, παρουσιάστηκε σφάλμα"})
\ No newline at end of file
diff --git a/lib/dijit/nls/es/common.js b/lib/dijit/nls/es/common.js
new file mode 100644 (file)
index 0000000..b4feef9
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"Aceptar","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Cerrar"})
\ No newline at end of file
diff --git a/lib/dijit/nls/es/loading.js b/lib/dijit/nls/es/loading.js
new file mode 100644 (file)
index 0000000..dc969a3
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error"})
\ No newline at end of file
diff --git a/lib/dijit/nls/fi/common.js b/lib/dijit/nls/fi/common.js
new file mode 100644 (file)
index 0000000..8b2fc26
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Peruuta","buttonSave":"Tallenna","itemClose":"Sulje"})
\ No newline at end of file
diff --git a/lib/dijit/nls/fi/loading.js b/lib/dijit/nls/fi/loading.js
new file mode 100644 (file)
index 0000000..73e10a1
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Lataus on meneillään...","errorState":"On ilmennyt virhe."})
\ No newline at end of file
diff --git a/lib/dijit/nls/fr/common.js b/lib/dijit/nls/fr/common.js
new file mode 100644 (file)
index 0000000..9f6aabe
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Annuler","buttonSave":"Sauvegarder","itemClose":"Fermer"})
\ No newline at end of file
diff --git a/lib/dijit/nls/fr/loading.js b/lib/dijit/nls/fr/loading.js
new file mode 100644 (file)
index 0000000..ec7192b
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Chargement...","errorState":"Une erreur est survenue"})
\ No newline at end of file
diff --git a/lib/dijit/nls/he/common.js b/lib/dijit/nls/he/common.js
new file mode 100644 (file)
index 0000000..b04d1cc
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"אישור","buttonCancel":"ביטול","buttonSave":"שמירה","itemClose":"סגירה"})
\ No newline at end of file
diff --git a/lib/dijit/nls/he/loading.js b/lib/dijit/nls/he/loading.js
new file mode 100644 (file)
index 0000000..7b1d5f3
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"טעינה...‏","errorState":"אירעה שגיאה"})
\ No newline at end of file
diff --git a/lib/dijit/nls/hu/common.js b/lib/dijit/nls/hu/common.js
new file mode 100644 (file)
index 0000000..21a773f
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Mégse","buttonSave":"Mentés","itemClose":"Bezárás"})
\ No newline at end of file
diff --git a/lib/dijit/nls/hu/loading.js b/lib/dijit/nls/hu/loading.js
new file mode 100644 (file)
index 0000000..d61e9a2
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Betöltés...","errorState":"Sajnálom, hiba történt"})
\ No newline at end of file
diff --git a/lib/dijit/nls/it/common.js b/lib/dijit/nls/it/common.js
new file mode 100644 (file)
index 0000000..6b3dc74
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Annulla","buttonSave":"Salva","itemClose":"Chiudi"})
\ No newline at end of file
diff --git a/lib/dijit/nls/it/loading.js b/lib/dijit/nls/it/loading.js
new file mode 100644 (file)
index 0000000..60d05e0
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ja/common.js b/lib/dijit/nls/ja/common.js
new file mode 100644 (file)
index 0000000..b0b48c6
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"キャンセル","buttonSave":"保存","itemClose":"閉じる"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ja/loading.js b/lib/dijit/nls/ja/loading.js
new file mode 100644 (file)
index 0000000..fa67d67
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"ロード中...","errorState":"エラーが発生しました。"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ko/common.js b/lib/dijit/nls/ko/common.js
new file mode 100644 (file)
index 0000000..8e12bbf
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"확인","buttonCancel":"취소","buttonSave":"저장","itemClose":"닫기"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ko/loading.js b/lib/dijit/nls/ko/loading.js
new file mode 100644 (file)
index 0000000..5d1ca12
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 발생했습니다."})
\ No newline at end of file
diff --git a/lib/dijit/nls/loading.js b/lib/dijit/nls/loading.js
new file mode 100644 (file)
index 0000000..1d6fa9b
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Loading...","errorState":"Sorry, an error occurred"})
\ No newline at end of file
diff --git a/lib/dijit/nls/nb/common.js b/lib/dijit/nls/nb/common.js
new file mode 100644 (file)
index 0000000..73e38c7
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Lagre","itemClose":"Lukk"})
\ No newline at end of file
diff --git a/lib/dijit/nls/nb/loading.js b/lib/dijit/nls/nb/loading.js
new file mode 100644 (file)
index 0000000..dbc314d
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Laster inn...","errorState":"Det oppsto en feil"})
\ No newline at end of file
diff --git a/lib/dijit/nls/nl/common.js b/lib/dijit/nls/nl/common.js
new file mode 100644 (file)
index 0000000..fa4c66e
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Annuleren","buttonSave":"Opslaan","itemClose":"Sluiten"})
\ No newline at end of file
diff --git a/lib/dijit/nls/nl/loading.js b/lib/dijit/nls/nl/loading.js
new file mode 100644 (file)
index 0000000..c9870fd
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Bezig met laden...","errorState":"Er is een fout opgetreden"})
\ No newline at end of file
diff --git a/lib/dijit/nls/pl/common.js b/lib/dijit/nls/pl/common.js
new file mode 100644 (file)
index 0000000..c84e539
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Anuluj","buttonSave":"Zapisz","itemClose":"Zamknij"})
\ No newline at end of file
diff --git a/lib/dijit/nls/pl/loading.js b/lib/dijit/nls/pl/loading.js
new file mode 100644 (file)
index 0000000..eed3c3e
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Ładowanie...","errorState":"Niestety, wystąpił błąd"})
\ No newline at end of file
diff --git a/lib/dijit/nls/pt-pt/common.js b/lib/dijit/nls/pt-pt/common.js
new file mode 100644 (file)
index 0000000..7992705
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Fechar"})
\ No newline at end of file
diff --git a/lib/dijit/nls/pt-pt/loading.js b/lib/dijit/nls/pt-pt/loading.js
new file mode 100644 (file)
index 0000000..80257d3
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"A carregar...","errorState":"Lamentamos, mas ocorreu um erro"})
\ No newline at end of file
diff --git a/lib/dijit/nls/pt/common.js b/lib/dijit/nls/pt/common.js
new file mode 100644 (file)
index 0000000..b94e6bc
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Salvar","itemClose":"Fechar"})
\ No newline at end of file
diff --git a/lib/dijit/nls/pt/loading.js b/lib/dijit/nls/pt/loading.js
new file mode 100644 (file)
index 0000000..88cda7a
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Carregando...","errorState":"Desculpe, ocorreu um erro"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ro/common.js b/lib/dijit/nls/ro/common.js
new file mode 100644 (file)
index 0000000..e28d4e7
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Anulare","buttonSave":"Salvare","itemClose":"Închidere"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ro/loading.js b/lib/dijit/nls/ro/loading.js
new file mode 100644 (file)
index 0000000..273efb4
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Încărcare...","errorState":"Ne pare rău, a apărut o eroare "})
\ No newline at end of file
diff --git a/lib/dijit/nls/ru/common.js b/lib/dijit/nls/ru/common.js
new file mode 100644 (file)
index 0000000..9a76d09
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"ОК","buttonCancel":"Отмена","buttonSave":"Сохранить","itemClose":"Закрыть"})
\ No newline at end of file
diff --git a/lib/dijit/nls/ru/loading.js b/lib/dijit/nls/ru/loading.js
new file mode 100644 (file)
index 0000000..55cd03b
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Загрузка...","errorState":"Извините, возникла ошибка"})
\ No newline at end of file
diff --git a/lib/dijit/nls/sk/common.js b/lib/dijit/nls/sk/common.js
new file mode 100644 (file)
index 0000000..59a12d1
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Zrušiť","buttonSave":"Uložiť","itemClose":"Zatvoriť"})
\ No newline at end of file
diff --git a/lib/dijit/nls/sk/loading.js b/lib/dijit/nls/sk/loading.js
new file mode 100644 (file)
index 0000000..e805bd8
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Zavádzanie...","errorState":"Nastala chyba"})
\ No newline at end of file
diff --git a/lib/dijit/nls/sl/common.js b/lib/dijit/nls/sl/common.js
new file mode 100644 (file)
index 0000000..4704cc5
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"V redu","buttonCancel":"Prekliči","buttonSave":"Shrani","itemClose":"Zapri"})
\ No newline at end of file
diff --git a/lib/dijit/nls/sl/loading.js b/lib/dijit/nls/sl/loading.js
new file mode 100644 (file)
index 0000000..4100866
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Nalaganje...","errorState":"Oprostite, prišlo je do napake."})
\ No newline at end of file
diff --git a/lib/dijit/nls/sv/common.js b/lib/dijit/nls/sv/common.js
new file mode 100644 (file)
index 0000000..cd3444f
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Spara","itemClose":"Stäng"})
\ No newline at end of file
diff --git a/lib/dijit/nls/sv/loading.js b/lib/dijit/nls/sv/loading.js
new file mode 100644 (file)
index 0000000..95b90d2
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Läser in...","errorState":"Det uppstod ett fel."})
\ No newline at end of file
diff --git a/lib/dijit/nls/th/common.js b/lib/dijit/nls/th/common.js
new file mode 100644 (file)
index 0000000..be06dd0
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"ตกลง","buttonCancel":"ยกเลิก","buttonSave":"บันทึก","itemClose":"ปิด"})
\ No newline at end of file
diff --git a/lib/dijit/nls/th/loading.js b/lib/dijit/nls/th/loading.js
new file mode 100644 (file)
index 0000000..bb6b75d
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"กำลังโหลด...","errorState":"ขออภัย เกิดข้อผิดพลาด"})
\ No newline at end of file
diff --git a/lib/dijit/nls/tr/common.js b/lib/dijit/nls/tr/common.js
new file mode 100644 (file)
index 0000000..e89e645
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"Tamam","buttonCancel":"İptal","buttonSave":"Kaydet","itemClose":"Kapat"})
\ No newline at end of file
diff --git a/lib/dijit/nls/tr/loading.js b/lib/dijit/nls/tr/loading.js
new file mode 100644 (file)
index 0000000..b0ed738
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"Yükleniyor...","errorState":"Üzgünüz, bir hata oluştu"})
\ No newline at end of file
diff --git a/lib/dijit/nls/zh-tw/common.js b/lib/dijit/nls/zh-tw/common.js
new file mode 100644 (file)
index 0000000..5d3fee0
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"確定","buttonCancel":"取消","buttonSave":"儲存","itemClose":"關閉"})
\ No newline at end of file
diff --git a/lib/dijit/nls/zh-tw/loading.js b/lib/dijit/nls/zh-tw/loading.js
new file mode 100644 (file)
index 0000000..0078541
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"載入中...","errorState":"抱歉,發生錯誤"})
\ No newline at end of file
diff --git a/lib/dijit/nls/zh/common.js b/lib/dijit/nls/zh/common.js
new file mode 100644 (file)
index 0000000..0bb6267
--- /dev/null
@@ -0,0 +1 @@
+({"buttonOk":"确定","buttonCancel":"取消","buttonSave":"保存","itemClose":"关闭"})
\ No newline at end of file
diff --git a/lib/dijit/nls/zh/loading.js b/lib/dijit/nls/zh/loading.js
new file mode 100644 (file)
index 0000000..c4b6fd7
--- /dev/null
@@ -0,0 +1 @@
+({"loadingState":"正在加载...","errorState":"对不起,发生了错误"})
\ No newline at end of file
diff --git a/lib/dijit/resources/_modules.js b/lib/dijit/resources/_modules.js
new file mode 100644 (file)
index 0000000..8d3fc5d
--- /dev/null
@@ -0,0 +1,7 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+
diff --git a/lib/dijit/robot.js b/lib/dijit/robot.js
new file mode 100644 (file)
index 0000000..5035cf5
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.robot"]){
+dojo._hasResource["dijit.robot"]=true;
+dojo.provide("dijit.robot");
+dojo.require("dojo.robot");
+}
diff --git a/lib/dijit/robotx.js b/lib/dijit/robotx.js
new file mode 100644 (file)
index 0000000..8f86dd8
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.robotx"]){
+dojo._hasResource["dijit.robotx"]=true;
+dojo.provide("dijit.robotx");
+dojo.require("dijit.robot");
+dojo.require("dojo.robotx");
+dojo.experimental("dijit.robotx");
+(function(){
+var _1=doh.robot._updateDocument;
+dojo.mixin(doh.robot,{_updateDocument:function(){
+_1();
+var _2=dojo.global;
+if(_2["dijit"]){
+dijit=_2.dijit;
+}
+}});
+})();
+}
diff --git a/lib/dijit/themes/a11y/README.txt b/lib/dijit/themes/a11y/README.txt
new file mode 100644 (file)
index 0000000..a809354
--- /dev/null
@@ -0,0 +1,3 @@
+This folder contains images used by all themes when in "high-contrast" mode.
+
+If you think you need to put something here, please talk to Becky or Bill first.
\ No newline at end of file
diff --git a/lib/dijit/themes/a11y/colors3x4-rtl.png b/lib/dijit/themes/a11y/colors3x4-rtl.png
new file mode 100644 (file)
index 0000000..51a7d11
Binary files /dev/null and b/lib/dijit/themes/a11y/colors3x4-rtl.png differ
diff --git a/lib/dijit/themes/a11y/colors3x4.png b/lib/dijit/themes/a11y/colors3x4.png
new file mode 100644 (file)
index 0000000..5125cb6
Binary files /dev/null and b/lib/dijit/themes/a11y/colors3x4.png differ
diff --git a/lib/dijit/themes/a11y/colors7x10-rtl.png b/lib/dijit/themes/a11y/colors7x10-rtl.png
new file mode 100644 (file)
index 0000000..c191e90
Binary files /dev/null and b/lib/dijit/themes/a11y/colors7x10-rtl.png differ
diff --git a/lib/dijit/themes/a11y/colors7x10.png b/lib/dijit/themes/a11y/colors7x10.png
new file mode 100644 (file)
index 0000000..d1354af
Binary files /dev/null and b/lib/dijit/themes/a11y/colors7x10.png differ
diff --git a/lib/dijit/themes/a11y/indeterminate_progress.gif b/lib/dijit/themes/a11y/indeterminate_progress.gif
new file mode 100644 (file)
index 0000000..66f535c
Binary files /dev/null and b/lib/dijit/themes/a11y/indeterminate_progress.gif differ
diff --git a/lib/dijit/themes/claro/Calendar.css b/lib/dijit/themes/claro/Calendar.css
new file mode 100644 (file)
index 0000000..3a3256e
--- /dev/null
@@ -0,0 +1,206 @@
+
+.claro .dijitCalendar {
+       border:solid 1px #b5bcc7;
+       background-color:#d4ebff;
+       background-image:url("images/calendarContainerImages.png");
+       background-position:0px -448px;
+       background-repeat:repeat-x;
+       text-align:center;
+       padding:6px 5px 3px 5px;
+       -moz-border-radius:4px;
+       -webkit-border-radius:4px;      
+}
+.dj_ie6 .claro .dijitCalendar {
+       background-image:none;
+}
+.claro .dijitCalendar img {
+       border:none;
+}
+.claro .dijitCalendarHover,
+.claro .dijitCalendarActive {
+       background-color: #b7dcff;
+       border:solid 1px #769dc0;
+}
+.claro .dijitCalendarMonthContainer th {
+       text-align:center;
+       padding-bottom:4px;
+       vertical-align:middle;
+}
+.claro .dijitCalendarMonthLabelSpacer {
+       display:none;
+}
+.claro .dijitCalendarMonthLabel {
+       color:#000000;
+       font-size: 1.091em;
+       display: block;
+}
+.claro .dijitCalendarIncrementControl {
+       width:18px;
+       height:16px;
+       background-image: url("images/calendarArrows.png");
+       background-repeat: no-repeat;
+}
+.dj_ie6 .claro .dijitCalendarIncrementControl {
+       background-image: url("images/calendarArrows8bit.png");
+}
+.claro .dijitCalendarIncrease {
+       background-position:-18px 0px;
+}
+.claro .dijitCalendarArrowHover .dijitCalendarDecrease {
+       background-position:-36px 0px;
+}
+.claro .dijitCalendarArrowHover .dijitCalendarIncrease {
+       background-position:-55px 0px;
+}
+.claro .dijitCalendarArrowActive .dijitCalendarDecrease {
+       background-position:-72px 0px;
+}
+.claro .dijitCalendarArrowActive .dijitCalendarIncrease {
+       background-position:-91px 0px;
+}
+.claro .dijitA11ySideArrow {
+       
+       display: none;
+}
+.claro .dijitDayLabels th {
+       padding:0px 4px 0px 4px;
+       border-bottom:solid 1px #99b5cd;
+       font-weight:bold;
+       text-align:center;
+}
+.claro .dijitCalendarDayLabelTemplate {
+       padding-bottom:0em;
+       text-align:center;
+       border-bottom:1px solid #99B5CD;
+       font-size:0.909em;
+       padding:0 3px 2px;
+}
+.claro .dijitCalendarDateTemplate {
+       text-align:center;
+       background-color:#fff;
+       background-image:url("images/calendarContainerImages.png");
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       border-bottom: 1px solid #dadde1;
+       padding-top:0px;
+       font-size:0.909em;
+       font-family: Arial;
+       font-weight:bold;
+       letter-spacing:.05em;
+       text-align:center;
+}
+.dj_ie6 .claro .dijitCalendarDateTemplate {
+       background-image: none;
+}
+.claro .dijitCalendarPreviousMonth,
+.claro .dijitCalendarNextMonth {
+       background-color:#ebf3f9;
+       background-image:none;
+       border-bottom:solid 1px #d2dae8;
+       color:#547da1;
+}
+.claro .dijitCalendarDateTemplate .dijitCalendarDateLabel {
+       text-decoration:none;
+       display:block;
+       padding:3px 5px 3px 4px;
+       border:solid 1px #fff;
+       color:#1e1e1e;
+       background-color:rgba(171,212,251,0);   
+       -webkit-transition-property:background-color, border;
+       -webkit-transition-duration:.35s;
+}
+.claro .dijitCalendarPreviousMonth .dijitCalendarDateLabel,
+.claro .dijitCalendarNextMonth .dijitCalendarDateLabel{
+       color:#547da1;
+       border-color:#ebf3f9;
+}
+.claro .dijitCalendarYearContainer {
+       vertical-align:middle;
+}
+.claro .dijitCalendarYearControl {
+       padding: 1px 2px 2px 2px;
+}
+.claro .dijitCalendarYearLabel {
+       padding:2px 0px 0px 0px;
+       margin:0;
+}
+.claro .dijitCalendarYearLabel span {
+       
+       vertical-align:middle;
+}
+.claro .dijitCalendarSelectedYear {
+       padding:0px 3px;
+}
+.claro .dijitCalendarNextYear,
+.claro .dijitCalendarPreviousYear {
+       padding: 1px 6px 1px 6px;
+       font-size:0.909em;
+}
+.claro .dijitCalendarSelectedYear {
+       font-size:1.091em;
+       color:#000;
+}
+.claro .dijitCalendarHoveredDate .dijitCalendarDateLabel{
+       background-color:#abd4fb;
+       border:solid 1px #729dc2;
+       color:#000;
+       -webkit-transition-duration:.2s;
+}
+.claro .dijitCalendarNextYearHover,
+.claro .dijitCalendarPreviousYearHover {
+       color:#000;
+       border:solid 1px #fefefe;
+       padding: 0px 5px 0px 5px;       
+       background-color:#eaf4fe;
+}
+.claro .dijitCalendarNextYearActive,
+.claro .dijitCalendarPreviousYearActive {
+       border: solid 1px #87b3d9;
+       padding: 0px 5px 0px 5px;       
+       background-color:#90bde6;
+}
+.claro .dijitCalendarActiveDate .dijitCalendarDateLabel {
+       background-image:url("images/calendarContainerImages.png");
+       background-position:0px -300px;
+       background-color:#75b5f0;
+       border:solid 1px #fff;
+       -webkit-transition-duration:.1s;
+}
+.dj_ie6 .claro .dijitCalendarActiveDate .dijitCalendarDateLabel {
+       background-image:none;
+}
+.claro .dijitCalendarSelectedDate .dijitCalendarDateLabel {
+       color:#000;
+       background-color:#e7f4ff;
+       border-color:#accfed;
+}
+.claro .dijitCalendarDisabledDate .dijitCalendarDateLabel {
+       text-decoration:line-through;
+       
+       
+       background-color: transparent;
+       border-width: 0px;
+       padding: 4px 6px 4px 5px;
+       color: #547DA1;
+}
+.claro .dijitCalendarMonthContainer .dijitMenu{
+       
+       top: 20px !important;
+       left: 0px;
+       border-color: #769dc0;
+       background-color: #fff;
+       text-align:center;
+       background-image: none;
+}
+.claro .dijitCalendarMonthContainer .dijitMenu .dijitCalendarMonthLabel{
+       border-top: solid 1px #fff;
+       border-bottom: solid 1px #fff;
+       padding: 2px 20px;
+}
+.claro .dijitCalendarMonthContainer .dijitMenu .dijitMenuItemHover {
+       background-color: #abd6ff;
+       border-color: #769dc0;
+       border-width:1px 0px;
+       background-image: url("images/commonHighlight.png");
+       background-repeat:repeat-x;
+}
diff --git a/lib/dijit/themes/claro/Calendar_rtl.css b/lib/dijit/themes/claro/Calendar_rtl.css
new file mode 100644 (file)
index 0000000..0f35d60
--- /dev/null
@@ -0,0 +1,18 @@
+.claro .dijitCalendarRtl .dijitCalendarIncrease{
+       background-position: 0px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarDecrease {
+       background-position: -18px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease {
+       background-position: -36px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease {
+       background-position: -55px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease {
+       background-position: -72px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease {
+       background-position: -91px 0px;
+}
diff --git a/lib/dijit/themes/claro/ColorPalette.css b/lib/dijit/themes/claro/ColorPalette.css
new file mode 100644 (file)
index 0000000..87a25ae
--- /dev/null
@@ -0,0 +1,18 @@
+
+.claro  .dijitColorPalette {
+       outline: 1px solid #769dc0; 
+       border: 1px solid #c0ccdf;
+       background:#fff;
+       -moz-border-radius: 0px;
+}
+.claro .dijitColorPalette .dijitPaletteImg {
+       
+       border: 1px solid #cecece;
+}
+.claro .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       border: 1px solid #000;
+}
+.claro .dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg,
+.claro .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg {
+       border: 2px solid #000;
+}
diff --git a/lib/dijit/themes/claro/Common.css b/lib/dijit/themes/claro/Common.css
new file mode 100644 (file)
index 0000000..dd68ce1
--- /dev/null
@@ -0,0 +1,70 @@
+
+.claro .dijitPopup {
+       box-shadow: 0px 1px 5px rgba(0,0,0,0.25);
+       -webkit-box-shadow: 0px 1px 5px rgba(0,0,0,0.25);
+       -moz-box-shadow: 0px 1px 5px rgba(0,0,0,0.25);
+}
+.claro .dijitTooltipDialogPopup {
+       
+       box-shadow: none;
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+}
+.claro .dijitComboBoxHighlightMatch {
+       background-color:#a5beda;
+}
+.claro .dijitFocusedLabel {
+       
+       outline: 1px dotted #666666;
+}
+.claro .dijitContentPaneLoading {
+       background:url('images/loadingAnimation.gif') no-repeat left center;
+       padding-left:25px;
+}
+.claro .dijitContentPaneError {
+    background:url('../../icons/images/commonIconsObjActEnabled.png') no-repeat left center;
+    background-position: -496px; 
+       no-repeat left center;
+       padding-left:25px;
+}
+.claro .dojoDndItemBefore,
+.claro .dojoDndItemAfter{
+       border-top: 1px solid #769DC0;
+}
+.claro .dojoDndItemOver {
+       cursor:pointer;
+       }
+.claro table.dojoDndAvatar {
+       border: 1px solid #b5bcc7;
+       border-collapse: collapse;
+       background-color: #fff;
+       -webkit-box-shadow:0px 1px 3px rgba(0, 0, 0, .25);
+}
+.claro .dojoDndAvatarHeader td { 
+       height: 20px;
+       padding-left:21px;
+}
+.claro.dojoDndMove .dojoDndAvatarHeader, .claro.dojoDndCopy .dojoDndAvatarHeader {
+       background-image: url(images/dnd.png);
+       background-repeat: no-repeat;
+       background-position:2px -122px;
+}
+.claro .dojoDndAvatarItem td {
+       padding: 5px;
+}
+.claro.dojoDndMove .dojoDndAvatarHeader        {
+       background-color: #f58383; 
+       background-position:2px -103px;
+}
+.claro.dojoDndCopy .dojoDndAvatarHeader        {
+       background-color: #f58383; 
+       background-position:2px -68px;
+}
+.claro.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader  {
+       background-color: #97e68d; 
+       background-position:2px -33px;
+}
+.claro.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader  {
+       background-color: #97e68d;
+       background-position:2px 2px;
+}
diff --git a/lib/dijit/themes/claro/Dialog.css b/lib/dijit/themes/claro/Dialog.css
new file mode 100644 (file)
index 0000000..10b5134
--- /dev/null
@@ -0,0 +1,162 @@
+
+.claro .dijitDialog {
+       border: 1px solid #769dc0;
+       box-shadow:0px 1px 5px rgba(0,0,0,0.25);
+       -webkit-box-shadow:0px 1px 5px rgba(0,0,0,0.25);
+       -moz-box-shadow: 0px 1px 5px rgba(0,0,0,0.25);
+} 
+.claro .dijitDialogPaneContent {
+       background: #fff repeat-x top left;
+       border-top: 1px solid #769dc0;
+       padding:10px 8px;
+       position: relative;
+}
+.claro .dijitDialogPaneContentArea {
+        
+       margin: -10px -8px;
+       padding: 10px 8px;
+}
+.claro .dijitDialogPaneActionBar {
+       
+       background-color: #f2f2f2;
+       padding: 3px 5px 2px 7px;
+       text-align: right;
+       border-top: 1px solid #cdcdcd;
+       margin: 10px -8px -10px;
+}
+.claro .dijitDialogPaneActionBar .dijitButton {
+       float: none;
+}
+.claro .dijitDialogTitleBar {
+       
+       border: 1px solid #fff;
+       border-top:none;
+       background-color: #abd6ff;
+       background-image: url("images/titlebar.png");
+       background-repeat:repeat-x;
+       padding: 5px 7px 4px 7px;
+}
+.claro .dijitDialogTitle {
+       
+       padding: 0px 1px;
+       font-size:1.091em;
+}
+.claro .dijitDialogCloseIcon {
+       
+       background: url("images/dialogCloseIcon.png");
+       background-repeat:no-repeat;
+       position: absolute;
+       right: 5px;
+       height: 15px;
+       width: 21px;
+}
+.dj_ie6 .claro .dijitDialogCloseIcon {
+       background-image: url("images/dialogCloseIcon8bit.png");
+}
+.claro .dijitDialogCloseIconHover {
+       background-position:-21px;
+}
+.claro .dijitDialogCloseIconActive {
+       background-position:-42px;
+}
+.claro .dijitTooltip,
+.claro .dijitTooltipDialog {
+       
+       background: transparent;        
+}
+.dijitTooltipBelow {
+       
+       padding-top: 13px;
+       padding-left:3px;
+       padding-right:3px;
+}
+.dijitTooltipAbove {
+       
+       padding-bottom: 13px;
+       padding-left:3px;
+       padding-right:3px;
+}
+.claro .dijitTooltipContainer {
+       
+       background-color:#fff;
+       background-image:url("images/tooltip.png");
+       background-repeat:repeat-x;
+       background-position:-575px 100%;
+       border:1px solid #769DC0;
+       padding:6px 8px;
+       border-radius: 4px;
+       -webkit-border-radius: 4px;
+       -moz-border-radius: 4px;
+       box-shadow:0px 1px 3px rgba(0,0,0,0.25);
+       -webkit-box-shadow:0px 1px 3px rgba(0,0,0,0.25);
+       -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.25);
+       font-size: 1em;
+} 
+.dj_ie6 .claro .dijitTooltipContainer {
+       background-image: none;
+}
+.claro .dijitTooltipConnector {
+       
+       border: 0px;
+       z-index: 2;
+       background-image:url("images/tooltip.png");
+       background-repeat:no-repeat;
+       width:16px;
+       height:14px;
+}
+.dj_ie6 .claro .dijitTooltipConnector {
+       background-image:url("images/tooltip8bit.png");
+}
+.claro .dijitTooltipABRight .dijitTooltipConnector {
+       
+       left: auto !important;
+       right: 3px;
+}
+.claro .dijitTooltipBelow .dijitTooltipConnector {
+       
+       top: 0px;
+       left: 3px;
+       background-position:-31px 0%;
+       width:16px;
+       height:14px;
+}
+.claro .dijitTooltipAbove .dijitTooltipConnector {
+       
+       bottom: 0px;
+       left: 3px;
+       background-position:-15px 0%;
+       width:16px;
+       height:14px;
+}
+.dj_ie7 .claro .dijitTooltipAbove .dijitTooltipConnector,
+.dj_ie6 .claro .dijitTooltipAbove .dijitTooltipConnector {
+       bottom: -1px;
+}
+.claro .dijitTooltipLeft {
+       padding-right: 14px;
+}
+.dj_ie6 .claro .dijitTooltipLeft {
+       padding-left: 15px;
+}
+.claro .dijitTooltipLeft .dijitTooltipConnector {
+       
+       right: 0px;
+       bottom: 3px;
+       background-position:0px 0%;
+       width:16px;
+       height:14px;
+}
+.claro .dijitTooltipRight {
+       padding-left: 14px;
+}
+.claro .dijitTooltipRight .dijitTooltipConnector {
+       
+       left: 0px;
+       bottom: 3px;
+       background-position:-48px 0%;
+       width:16px;
+       height:14px;
+}
+.claro .dijitDialogUnderlay {
+       background: #fff;
+}
diff --git a/lib/dijit/themes/claro/Dialog_rtl.css b/lib/dijit/themes/claro/Dialog_rtl.css
new file mode 100644 (file)
index 0000000..7bb72e7
--- /dev/null
@@ -0,0 +1,9 @@
+
+.claro .dijitDialogRtl .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
+.claro .dijitDialogRtl .dijitDialogPaneActionBar {
+       text-align: left;
+       padding: 3px 7px 2px 5px;
+}
diff --git a/lib/dijit/themes/claro/Editor.css b/lib/dijit/themes/claro/Editor.css
new file mode 100644 (file)
index 0000000..b9af7e7
--- /dev/null
@@ -0,0 +1,36 @@
+
+.claro .dijitEditorIFrameContainer{
+       padding:3px 3px 1px 10px;
+}
+.claro .dijitEditorIFrame {
+       background-color: #fff;
+}
+.claro .dijitEditor {
+       border: 1px solid #b5bcc7;
+}
+.claro .dijitEditor .dijitEditorIFrameContainer{
+       background-color: #fff;
+       background-image: url('form/images/textBox_back.png');
+       background-repeat:repeat-x;
+}
+.dj_ie6 .claro .dijitEditor .dijitEditorIFrameContainer{
+       background-image: none;
+}
+.claro .dijitEditorHover .dijitEditorIFrameContainer,
+.claro .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame{
+       background-color: #eef7ff;
+}
+.claro .dijitEditorFocused .dijitEditorIFrameContainer,
+.claro .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame{
+       
+       background-color: #fff;
+}
+.claro .dijitEditorDisabled {
+       border: 1px solid #d3d3d3;
+       color: #818181;
+}
+.claro .dijitDisabled .dijitEditorIFrame,
+.claro .dijitDisabled .dijitEditorIFrameContainer {
+       background-color: #efefef;
+       background-image: none;
+}
diff --git a/lib/dijit/themes/claro/Editor_rtl.css b/lib/dijit/themes/claro/Editor_rtl.css
new file mode 100644 (file)
index 0000000..b09efaa
--- /dev/null
@@ -0,0 +1,4 @@
+
+.claro .dijitEditorRtl .dijitEditorIFrameContainer{
+       padding:3px 10px 1px 3px;
+}
diff --git a/lib/dijit/themes/claro/InlineEditBox.css b/lib/dijit/themes/claro/InlineEditBox.css
new file mode 100644 (file)
index 0000000..b92c24e
--- /dev/null
@@ -0,0 +1,11 @@
+
+.claro .dijitInlineEditBoxDisplayMode {
+       border: 1px solid transparent;
+}
+.claro .dijitInlineEditBoxDisplayModeHover {
+       background-color: #e2f1ff;
+       border: solid 1px #769dc0;
+}
+.dj_ie6 .claro .dijitInlineEditBoxDisplayMode {
+       border: none;
+}
diff --git a/lib/dijit/themes/claro/Menu.css b/lib/dijit/themes/claro/Menu.css
new file mode 100644 (file)
index 0000000..4bb0be6
--- /dev/null
@@ -0,0 +1,143 @@
+
+.claro .dijitMenuBar {
+       border: 1px solid #b5bcc7;
+       margin: 0px;
+       padding: 0px;
+       background-color: #e6e6e7;
+       background-image: url("images/commonHighlight.png");
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+}
+.dj_ie6 .claro .dijitMenuBar {
+       background-image:none;
+}
+.claro .dijitMenu {
+       background-repeat:repeat-y;
+       background-color:#fff;
+       border: 1px solid #769dc0;
+       
+       margin: -1px 0;
+}
+.claro .dijitMenuBar .dijitMenuItem {  
+       padding: 6px 10px 7px;
+       background-position:0px 100px;
+       color:#4a4a4a;
+       margin:-1px;
+}      
+.claro .dijitMenuItem {
+       background-image: url("images/menuHighlight.png");
+       background-position:0px -40px;
+       background-repeat:repeat-x;
+}
+.claro .dijitMenuTable {
+       border-collapse:separate;
+       border-spacing:0 0;
+       padding:0px;
+}
+.claro .dijitMenuItem td{
+       padding:1px;
+}
+.claro .dijitMenuPassive .dijitMenuItemHover,
+.claro .dijitMenuPassive .dijitMenuItemSelected {
+       background-color: #abd6ff;
+       border:solid 1px #769dc0;
+       background-position:0px 0px;
+       color:#000;
+       padding: 5px 9px 6px;
+}
+.claro .dijitMenuPassive .dijitMenuItemActive{
+       background-position:0px -177px;
+}
+.dj_ie6 .claro .dijitMenuItem,
+.dj_ie6 .claro .dijitMenuPassive .dijitMenuItem {
+       background-image: none;
+}
+.claro .dijitMenuActive .dijitMenuItemHover,
+.claro .dijitMenuActive .dijitMenuItemSelected {
+       border:solid 1px #769dc0;
+       padding: 5px 9px 6px;
+       background-color: #9dcfff;
+       background-position:0px 0px;
+       color:#000;
+}
+.dj_ie .claro .dijitMenuActive .dijitMenuItemHover,
+.dj_ie .claro .dijitMenuActive .dijitMenuItemSelected,
+.dj_ie .claro .dijitMenuPassive .dijitMenuItemHover,
+.dj_ie .claro .dijitMenuPassive .dijitMenuItemSelected {
+       padding-top: 6px;
+       padding-bottom: 5px;
+       margin-top: -3px;
+}
+.claro .dijitMenuActive .dijitMenuItemActive{
+       background-color: #7dbefa;
+       background-position:0px -177px;
+}
+.claro .dijitMenuItemActive {
+       background-position:0px -177px;
+}
+.claro td.dijitMenuItemIconCell {
+ padding: 2px;
+ margin: 0px 0px 0px 4px;
+}
+.claro td.dijitMenuItemLabel {
+       padding-top: 5px;
+       padding-bottom: 5px;
+}
+.claro .dijitMenuExpand {
+       width: 7px;
+       height: 7px;
+       background-image: url('images/spriteArrows.png');
+       background-position: -14px 0px;
+       margin-right:3px;
+}
+.claro .dijitMenuItemDisabled .dijitMenuItemIconCell {
+       opacity:1;
+}
+.claro .dijitMenuSeparatorTop {
+       height: auto;
+       margin-top:1px; 
+       border-bottom: 1px solid #b5bcc7
+}
+.claro .dijitMenuSeparatorBottom{
+       height: auto;
+       margin-bottom:1px;
+}
+.claro .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.claro .dijitCheckedMenuItemIcon {
+       background-image: url('form/images/checkboxRadioButtonStates.png');
+       background-repeat:no-repeat;
+       background-position: -15px 50%;
+       width:15px;
+       height:16px;
+}
+.dj_ie6 .claro .dijitCheckedMenuItemIcon {
+       background-image: url('form/images/checkboxAndRadioButtons_IE6.png');
+}
+.claro .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: 0 50%;
+}
+.claro .dijitComboBoxMenu {
+       margin-left:0px;
+       background-image: none;
+}
+.claro .dijitComboBoxMenu .dijitMenuItem{
+       padding:2px 0px;
+       text-indent:6px;
+       border-width:1px 0px 1px 0px;
+       border-style:solid;
+       border-color:#fff;
+}
+.claro .dijitComboBoxMenu .dijitMenuItemSelected {
+       color:#000;
+       border-color:#768dc0;
+       background-color:#abd6ff;
+}
+.claro .dijitComboBoxMenuActive .dijitMenuItemSelected {
+       background-position:0px -177px;
+       background-color:#7dbefa;
+}
+.claro .dijitMenuPreviousButton, .claro .dijitMenuNextButton {
+       font-style: italic;
+}
diff --git a/lib/dijit/themes/claro/Menu_rtl.css b/lib/dijit/themes/claro/Menu_rtl.css
new file mode 100644 (file)
index 0000000..6ba061b
--- /dev/null
@@ -0,0 +1,8 @@
+.claro .dijitMenuItemRtl .dijitMenuExpand {
+       background-position: -7px 0px;
+       margin-right: 0px;
+       margin-left: 3px;
+}
+.claro .dijitMenuItemRtl .dijitMenuItemIcon {
+       margin:0px 4px 0px 0px;
+}
diff --git a/lib/dijit/themes/claro/ProgressBar.css b/lib/dijit/themes/claro/ProgressBar.css
new file mode 100644 (file)
index 0000000..13e8f26
--- /dev/null
@@ -0,0 +1,28 @@
+
+.claro .dijitProgressBar {
+       margin:2px 0px 2px 0px;
+}
+.claro .dijitProgressBarEmpty {
+       
+       background:#fff url("images/progressBarEmpty.png") repeat-none left;
+       border-color: #769dc0;
+}
+.claro .dijitProgressBarTile {
+       
+       background:#9dcfff url("images/progressBarFull.png") repeat-x top;      
+}
+.dj_ie6 .claro .dijitProgressBarTile {
+       background-image: none;
+} 
+.claro .dijitProgressBarFull {
+       border-right:1px solid #769dc0;
+}
+.claro .dijitProgressBarLabel {
+       
+       color:#293a4b;
+}
+.claro .dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+       background:#cad2de url("images/progressBarAnim.gif") repeat-x top;
+} 
diff --git a/lib/dijit/themes/claro/TimePicker.css b/lib/dijit/themes/claro/TimePicker.css
new file mode 100644 (file)
index 0000000..a5ddf91
--- /dev/null
@@ -0,0 +1,102 @@
+
+.claro .dijitTimePicker .dijitButtonNode {
+       padding: 0 0;
+       border-radius: 0;
+       -moz-border-radius: 0;
+       -webkit-border-radius: 0;
+}
+.claro .dijitTimePicker{
+       border:1px #b5bcc7 solid;
+       border-top:none;
+       border-bottom:none;
+       background-color:#fff;
+}
+.claro .dijitTimePickerItem{
+       
+       background-image: url("images/commonHighlight.png");
+       background-position:0px -1px;
+       background-repeat:repeat-x;
+       border-top:solid 1px #b5bcc7;
+       border-bottom:solid 1px #b5bcc7;
+       margin-right:-1px;
+       margin-left:-1px;
+       margin-top:-1px;
+}
+.dj_ie6 .claro .dijitTimePickerItem {
+       background-image: none;
+}
+.claro .dijitTimePickerTick {
+       
+       color:#7a7a7a;
+       background-color:#f2f2f2;
+       font-size:0.818em;
+}
+.claro .dijitTimePickerMarker {
+       
+       color:#000;
+       background-color:#e3f2ff;
+       font-size: 1em;
+       white-space: nowrap;
+}
+.claro .dijitTimePickerTickHover,
+.claro .dijitTimePickerMarkerHover,
+.claro .dijitTimePickerMarkerSelected,
+.claro .dijitTimePickerTickSelected {
+       background-color: #83c0fa;
+       color:#000;
+       border:solid 1px #b5bcc7;
+       margin-left:-7px;
+       margin-right:-7px;
+}
+.claro .dijitTimePickerMarkerSelected,
+.claro .dijitTimePickerTickSelected {
+       font-size: 1em;
+       }
+.dj_ie .claro .dijitTimePickerTickHover,
+.dj_ie .claro .dijitTimePickerMarkerHover,
+.dj_ie .claro .dijitTimePickerMarkerSelected,
+.dj_ie .claro .dijitTimePickerTickSelected  {
+       width: 114%;
+}
+.dj_ie6 .claro .dijitTimePickerTickHover,
+.dj_ie6 .claro .dijitTimePickerMarkerHover,
+.dj_ie6 .claro .dijitTimePickerMarkerSelected,
+.dj_ie6 .claro .dijitTimePickerTickSelected  {
+       position: relative;     
+       zoom: 1; 
+}
+.claro .dijitTimePickerTick .dijitTimePickerItemInner {
+       padding:1px;
+       margin:0px;
+}
+.claro .dijitTimePicker .dijitButtonNode {
+       border-left:none;
+       border-right:none;
+       border-color:#b5bcc7;
+       background-color: #f6f7fa;
+       background-image: url("images/commonHighlight.png");
+       background-position:0px -1px;
+       background-repeat:repeat-x;
+}
+.dj_ie6 .claro .dijitTimePicker .dijitButtonNode {
+       background-image: none;
+}
+.claro .dijitTimePicker .dijitArrowButtonInner{
+       height: 100%; 
+       background-image: url("form/images/commonFormArrows.png");
+       background-repeat: no-repeat;
+       background-position:-140px 45%;
+}
+.claro .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner{
+       background-position:-35px 45%;
+}
+.claro .dijitTimePicker .dijitUpArrowHover, 
+.claro .dijitTimePicker .dijitDownArrowHover {
+       background-color: #abd6ff;
+}
+.claro .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner {
+       background-position:-175px 45%;
+}
+.claro .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner {
+       background-position:-70px 45%;
+}
diff --git a/lib/dijit/themes/claro/TimePicker_rtl.css b/lib/dijit/themes/claro/TimePicker_rtl.css
new file mode 100644 (file)
index 0000000..a1bf2fb
--- /dev/null
@@ -0,0 +1,9 @@
+
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickHover,
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerHover,
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerSelected,
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickSelected {
+       margin-left:-6px;
+       margin-right:-8px;
+       width: 114%;    
+}
diff --git a/lib/dijit/themes/claro/TitlePane.css b/lib/dijit/themes/claro/TitlePane.css
new file mode 100644 (file)
index 0000000..a0191fc
--- /dev/null
@@ -0,0 +1,54 @@
+
+.claro .dijitTitlePaneTitle {
+       background-color: #e6e6e7;
+       background-image: url("images/titlebar.png");
+       background-repeat:repeat-x;
+       border:1px solid #b5bcc7;
+       padding: 0px 7px 3px 7px;
+       min-height:17px;
+       color:#131313;
+}
+.dj_ie6 .claro .dijitTitlePaneTitle {
+       background-image: none;
+}
+.claro .dijitTitlePaneTitleHover {
+       background-color: #abd6ff;
+       border-color: #769dc0;
+}
+.claro .dijitTitlePaneTitleActive {
+       background-color: #7dbefa;
+       border-color: #769dc0;
+       background-position:0px -136px;
+}
+.claro .dijitTitlePaneTitleFocus {
+       margin-top:3px;
+       padding-bottom:2px;
+}
+.claro .dijitTitlePane .dijitArrowNode {
+       background-image: url('images/spriteArrows.png');
+       background-repeat: no-repeat;
+       height: 8px;
+       width: 7px;
+}
+.claro .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background-position: 0px 0px;
+}
+.claro .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: -14px 0px;
+}
+.claro .dijitTitlePaneFocused .dijitTitlePaneTextNode {
+       color:#000;
+}
+.claro .dijitTitlePaneContentOuter {
+       background: #ffffff;
+       border:1px solid #b5bcc7;
+       border-top:none;
+}
+.claro .dijitTitlePaneContentInner {
+       padding:10px;
+}
+.claro .dijitTitlePaneTextNode {
+       margin-left: 4px;
+       margin-right: 4px;
+       vertical-align:text-top;
+}
diff --git a/lib/dijit/themes/claro/TitlePane_rtl.css b/lib/dijit/themes/claro/TitlePane_rtl.css
new file mode 100644 (file)
index 0000000..09ca395
--- /dev/null
@@ -0,0 +1,4 @@
+
+.claro .dijitTitlePaneRtl .dijitClosed .dijitArrowNode {
+       background-position: -7px 0px;
+}
diff --git a/lib/dijit/themes/claro/Toolbar.css b/lib/dijit/themes/claro/Toolbar.css
new file mode 100644 (file)
index 0000000..2189dcd
--- /dev/null
@@ -0,0 +1,133 @@
+
+.claro .dijitToolbar {
+       border-bottom: 1px solid #b5bcc7;
+       background-color: #f1f1f1;
+       background-image: url("images/commonHighlight.png");
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       padding: 2px 0px 2px 4px;
+       zoom: 1;
+}
+.claro .dijitToolbar label {
+       padding: 0px 3px 0 6px;
+}
+.claro .dijitToolbar .dijitButtonNode {
+       border:none;
+       padding: 2px;
+       background-image: url("images/commonHighlight.png");
+       background-position:0 -30px;
+       background-repeat:repeat-x;
+       background-color:rgba(171,214,255,0);
+       border-radius: 2px;     
+       -moz-border-radius: 2px;        
+       -webkit-border-radius: 2px;     
+       -moz-box-shadow: none;
+       -webkit-box-shadow: none;
+       -webkit-transition-property:background-color;
+       -webkit-transition-duration:.3s, .35s;
+}
+.claro .dijitToolbar .dijitComboButton .dijitButtonNode{
+       padding: 3px 2px 3px 2px;       
+}
+.dj_ie .claro .dijitToolbar .dijitButtonNode {
+       background-color: transparent;   
+}
+.dj_ie6 .claro .dijitToolbar .dijitButtonNode {
+       background: none;       
+}
+.claro .dijitToolbar .dijitComboBox .dijitButtonNode {
+       padding: 0px;
+}
+.claro .dijitToolbar .dijitComboButton {
+       padding: 1px;
+}
+.claro .dijitToolbar .dijitButtonHover .dijitButtonNode,
+.claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode,
+.claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode {
+       background-position:0 0;
+       border:solid 1px #769dc0;
+       background-color: #abd6ff;
+       padding: 1px;
+}
+.claro .dijitToolbar .dijitComboButtonHover {
+       background-color: #abd6ff;
+       border: solid 1px #769dc0;
+       padding: 0px;
+}
+.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode,
+.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton {
+       background-position:0 0;
+       padding: 2px;
+}
+.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton {
+       background-color: #7dd6fa;
+}
+.claro .dijitToolbar .dijitButtonActive .dijitButtonNode,
+.claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode,
+.claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode {
+       border:solid 1px #769dc0;
+       background-color:#7dbefa;
+       background-position:0px -177px;
+       padding: 1px;
+}
+.claro .dijitToolbar .dijitComboButtonActive {
+       -webkit-transition-duration:.2s;
+       border: solid 1px #769dc0;
+       padding: 0px;
+}
+.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode {
+       background-color: #7dbefa;
+       background-position:0px -177px;
+       padding: 2px;
+}
+.claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonActive {
+       background-color: #7dbefa;
+}
+.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode {
+       border-color: #769dc0;
+       background-color:#fff;
+       padding: 1px;
+}
+.dj_ie6 .claro .dijitToolbar .dijitButtonContents, 
+.dj_ie7 .claro .dijitToolbar .dijitButtonContents {
+       margin: -2px 0;
+       padding: 0;
+}
+.dj_ie6 .claro .dijitToolbar {
+       background-image: none;
+}
+.dj_ie6 .claro .dijitToolbar .dijitButtonNode {
+       margin: 1px; 
+       border: none;
+}
+.dj_ie6 .claro .dijitToolbar .dijitButtonHover .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover,
+.dj_ie6 .claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitButtonActive .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNodeActive,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonActive,
+.dj_ie6 .claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode,
+.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode {
+       margin: 0;      
+       border-width: 1px;
+       border-style: solid;
+       background-image: none;
+}
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNodeActive,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonActive {
+       padding: 1px;   
+}
+.claro .dijitToolbarSeparator {
+       
+       background: url('../../icons/images/editorIconsEnabled.png');
+}
+.claro .dijitDisabled .dijitToolbar {
+       background:none;
+       background-color:#f5f5f5;
+       border-bottom: 1px solid #d3d3d3;
+}
diff --git a/lib/dijit/themes/claro/Tree.css b/lib/dijit/themes/claro/Tree.css
new file mode 100644 (file)
index 0000000..739a493
--- /dev/null
@@ -0,0 +1,88 @@
+
+.claro .dijitTreeNode {
+    zoom: 1;   
+}
+.claro .dijitTreeIsRoot {
+    background-image: none;
+}
+.claro .dijitTreeRow {
+       
+       padding: 4px 1px 2px 0px;
+       margin-left: 1px;
+       background-image: url("images/commonHighlight.png");
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       border-color: rgba(118,157,192,0);
+       background-color: rgba(171,214,255,0);
+       -webkit-transition-property:background-color, border-color;
+       -webkit-transition-duration:.25s ;
+       -webkit-transition-timing-function: ease-out;
+}
+.dj_ie6 .claro .dijitTreeRow {
+       background-image: none;
+}
+.claro .dijitTreeRowSelected {
+       background-repeat:repeat-x;
+       background-color:#d8edff;
+       padding: 3px 0px 1px;
+       margin-left: 0px;
+       border:solid 1px #c3e2fd;
+       color:#000;
+}
+.claro .dijitTreeRowHover {
+       background-color:#abd6ff;
+       padding: 3px 0px 1px;
+       margin-left: 0px;
+       border:solid 1px #769dc0;
+       color:#000;
+       -webkit-transition-duration:.25s ; 
+}
+.claro .dijitTreeRowActive {
+       background-color:#7dbefa;
+       background-position:0px -177px;
+       padding: 3px 0px 1px;
+       margin-left: 0px;
+       border:solid 1px #769dc0;
+       color:#000;
+}
+.dj_ie6 .claro .dijitTreeRowActive {
+       background-image: none;
+}
+.claro .dijitTreeRowFocused {
+       background-repeat: repeat;
+}
+.claro .dijitTreeExpando {
+       background-image: url('images/treeExpandImages.png');
+    width: 16px;
+    height: 16px;
+       background-position: -35px 0px          
+}
+.dj_ie6 .claro .dijitTreeExpando {
+       background-image: url('images/treeExpandImages8bit.png');
+}
+.claro .dijitTreeRowHover .dijitTreeExpandoOpened {
+       background-position: -53px 0px;
+}
+.claro .dijitTreeExpandoClosed {
+       background-position: 1px 0px;
+}
+.claro .dijitTreeRowHover .dijitTreeExpandoClosed {
+       background-position: -17px 0px;
+}
+.claro .dijitTreeExpandoLeaf{
+       background-image:none;
+}
+.claro .dijitTreeExpandoLoading {
+       background-image: url('images/loadingAnimation.gif');
+}
+.claro .dijitTreeNode .dojoDndItemBefore,
+.claro .dijitTreeNode .dojoDndItemAfter {
+       border-bottom: none;
+       border-top: none;
+}
+.claro .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
+       border-top: 2px solid #369;
+}
+.claro .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
+       border-bottom: 2px solid #369;
+}
diff --git a/lib/dijit/themes/claro/claro.css b/lib/dijit/themes/claro/claro.css
new file mode 100644 (file)
index 0000000..7ed7f18
--- /dev/null
@@ -0,0 +1,4689 @@
+
+.dijitReset {
+       
+       margin:0;
+       border:0;
+       padding:0;
+       line-height:normal;
+       font: inherit;
+       color: inherit;
+}
+.dijit_a11y .dijitReset {
+       -moz-appearance: none; 
+}
+.dijitInline {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+       border:0;
+       padding:0;
+       vertical-align:middle;
+       #vertical-align: auto;  
+}
+.dijitHidden {
+       
+       display: none !important;
+}
+.dijitVisible {
+       
+       display: block !important;      
+       position: relative;                     
+}
+.dijitInputContainer {
+       
+       #zoom: 1;
+       overflow: hidden;
+       float: none !important; 
+       position:relative;
+}
+.dj_ie INPUT.dijitTextBox,
+.dj_ie .dijitTextBox INPUT {
+       font-size: 100%;
+}
+.dijitTextBox .dijitSpinnerButtonContainer,
+.dijitTextBox .dijitArrowButtonContainer,
+.dijitTextBox .dijitValidationContainer {
+       float: right;
+       text-align: center;
+}
+.dijitTextBox INPUT.dijitInputField {
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+}
+.dijitTextBox .dijitValidationContainer {
+       display: none;
+}
+.dijitInlineTable {
+       
+       display:inline-table;
+       display:inline-block;           
+       #zoom: 1; 
+       #display:inline; 
+       box-sizing: content-box; -moz-box-sizing: content-box;
+       border:0;
+       padding:0;
+}
+.dijitTeeny {
+       font-size:1px;
+       line-height:1px;
+}
+.dijitOffScreen {
+       position: absolute;
+       visibility: hidden;
+       left: 50%;
+       top: -10000px;
+}
+.dijitPopup {
+       position: absolute;
+       background-color: transparent;
+       margin: 0;
+       border: 0;
+       padding: 0;
+}
+.dijit_a11y .dijitPopup,
+.dijit_ally .dijitPopup DIV,
+.dijit_a11y .dijitPopup TABLE,
+.dijit_a11y .dijitTooltipContainer {
+       background-color: white !important;
+}
+.dijitPositionOnly {
+       
+       padding: 0 !important;
+       border: 0 !important;
+       background-color: transparent !important;
+       background-image: none !important;
+       height: auto !important;
+       width: auto !important;
+}
+.dijitNonPositionOnly {
+       
+       float: none !important;
+       position: static !important;
+       margin: 0 0 0 0 !important;
+       vertical-align: middle !important;
+}
+.dijitBackgroundIframe {
+       
+       position: absolute;
+       left: 0;
+       top: 0;
+       width: 100%;
+       height: 100%;
+       z-index: -1;
+       border: 0;
+       padding: 0;
+       margin: 0;
+}
+.dijitDisplayNone {
+       
+       display:none !important;
+}
+.dijitContainer {
+       
+       overflow: hidden;       
+}
+.dijit_a11y * {
+       background-image:none !important;
+}
+.dijit_a11y .dijitIcon,
+.dijit_a11y DIV.dijitArrowButtonInner, 
+.dijit_a11y SPAN.dijitArrowButtonInner,
+.dijit_a11y IMG.dijitArrowButtonInner,
+.dijit_a11y .dijitCalendarIncrementControl {
+       
+       display: none;
+}
+.dijitSpinner DIV.dijitArrowButtonInner {
+       display: block; 
+}
+.dijit_a11y .dijitA11ySideArrow {
+       display: inline !important; 
+       cursor: pointer;
+}
+.dijit_a11y .dijitCalendarDateLabel {
+       padding: 1px;
+}
+.dijit_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {
+       border-style: dotted !important;
+       border-width: 1px;
+       padding: 0px;
+}
+.dijit_a11y .dijitCalendarDateTemplate {
+       padding-bottom: 0.1em !important;       
+}
+.dijit_a11y .dijit * {
+       background:white !important;
+       color:black !important;
+}
+.dijit_a11y .dijitButtonNode {
+       border-color: black!important;
+       border-style: outset!important;
+       border-width: medium!important;
+}
+.dijit_a11y .dijitTextBoxReadOnly .dijitInputField,
+.dijit_a11y .dijitTextBoxReadOnly .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitButtonNode * {
+       vertical-align: middle;
+}
+.dijitButtonNode .dijitArrowButtonInner {
+       
+       background: no-repeat center;
+       width: 12px;
+       height: 12px;
+       direction: ltr; 
+}
+.dijitLeft {
+       
+       background-position:left top;
+       background-repeat:no-repeat;
+}
+.dijitStretch {
+       
+       white-space:nowrap;                     
+       background-repeat:repeat-x;
+}
+.dijitRight {
+       
+       #display:inline;                                
+       background-position:right top;
+       background-repeat:no-repeat;
+}
+.dijitToggleButton,
+.dijitButton,
+.dijitDropDownButton,
+.dijitComboButton {
+       
+       margin: 0.2em;
+}
+.dijitButtonContents {
+       display: block;         
+}
+td.dijitButtonContents {
+       display: table-cell;    
+}
+.dijitButtonNode IMG {
+       
+       vertical-align:middle;
+       
+}
+TABLE.dijitComboButton { 
+       
+       border-collapse: collapse;
+       border:0;
+       padding:0;
+       margin:0;
+}
+.dijitToolbar .dijitComboButton {
+       
+       border-collapse: separate;
+}
+.dijitToolbar .dijitToggleButton,
+.dijitToolbar .dijitButton,
+.dijitToolbar .dijitDropDownButton,
+.dijitToolbar .dijitComboButton {
+       margin: 0;
+}
+.dijitToolbar .dijitButtonContents {
+       
+       padding: 1px 2px;
+}
+.dj_ie .dijitComboButton {
+       
+       margin-bottom: -3px;
+}
+.dj_webkit .dijitToolbar .dijitDropDownButton {
+       padding-left: 0.3em;
+}
+.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {
+       padding:0;
+}
+.dijitButtonNode {
+       
+       border:1px solid gray;
+       margin:0;
+       line-height:normal;
+       vertical-align: middle;
+       #vertical-align: auto;
+       text-align:center;
+       white-space: nowrap;
+}
+.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {
+       
+       line-height:inherit;
+}
+.dijitTextBox .dijitButtonNode {
+       border-width: 0;
+}
+.dijitButtonNode,
+.dijitButtonNode * {
+       cursor: pointer;
+}
+.dj_ie .dijitButtonNode {
+       
+       zoom: 1;
+}
+.dj_ie .dijitButtonNode button {
+       
+       overflow: visible;
+}
+DIV.dijitArrowButton {
+       float: right;
+}
+.dijitTextBox {
+       border: solid black 1px;
+       #overflow: hidden; 
+       width: 15em;    
+       vertical-align: middle;
+       #vertical-align: auto;
+}
+.dijitTextBoxReadOnly,
+.dijitTextBoxDisabled {
+       color: gray;
+}
+.dj_webkit .dijitTextBoxDisabled INPUT {
+       color: #eee; 
+}
+.dj_webkit TEXTAREA.dijitTextAreaDisabled {
+       color: #333; 
+}
+.dj_gecko .dijitTextBoxReadOnly INPUT,
+.dj_gecko .dijitTextBoxDisabled INPUT {
+       -moz-user-input: none; 
+}
+.dijitPlaceHolder {
+       
+       color: #AAAAAA;
+       font-style: italic;
+       position: absolute;
+       top: 0;
+       left: 0;
+       #filter: ""; 
+}
+.dijitTimeTextBox {
+       width: 8em;
+}
+.dijitTextBox INPUT:focus {
+       outline: none;  
+}
+.dijitTextBoxFocused {
+       outline: auto 5px -webkit-focus-ring-color;
+}
+.dijitTextBox INPUT {
+       float: left; 
+}
+.dijitInputInner {
+       
+       border:0 !important;
+       vertical-align:middle !important;
+       background-color:transparent !important;
+       width:100% !important;
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+}
+.dijit_a11y .dijitTextBox INPUT {
+       margin: 0 !important;
+}
+.dijitTextBoxError INPUT.dijitValidationInner,
+.dijitTextBox INPUT.dijitArrowButtonInner {
+       
+       text-indent: -1em !important;
+       direction: ltr !important;
+       text-align: left !important;
+       height: auto !important;
+       #text-indent: 0 !important;
+       #letter-spacing: -5em !important;
+       #text-align: right !important;
+}
+.dj_ie .dijitTextBox INPUT,
+.dj_ie INPUT.dijitTextBox {
+       overflow-y: visible; 
+       line-height: normal; 
+}
+.dj_ie7 .dijitTextBox INPUT.dijitValidationInner,
+.dj_ie7 .dijitTextBox INPUT.dijitArrowButtonInner {
+       line-height: 86%; 
+}
+.dj_ie6 .dijitTextBox INPUT,
+.dj_ie6 INPUT.dijitTextBox,
+.dj_iequirks .dijitTextBox INPUT.dijitValidationInner,
+.dj_iequirks .dijitTextBox INPUT.dijitArrowButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitSpinnerButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitInputInner,
+.dj_iequirks INPUT.dijitTextBox {
+       line-height: 100%; 
+}
+.dijit_a11y INPUT.dijitValidationInner,
+.dijit_a11y INPUT.dijitArrowButtonInner {
+       
+       text-indent: 0 !important;
+       width: 1em !important;
+       #text-align: left !important;
+}
+.dijitTextBoxError .dijitValidationContainer {
+       display: inline;
+       cursor: default;
+}
+.dijitSpinner .dijitSpinnerButtonContainer,
+.dijitComboBox .dijitArrowButtonContainer {
+       
+       border-width: 0 0 0 1px !important; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       
+       border-width: 0;
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       clear: both; 
+}
+.dijit_a11y .dijitTextBox .dijitValidationContainer,
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBox .dijitArrowButtonContainer {
+       
+       border: solid black !important;
+       border-width: 0 0 0 1px !important;
+}
+.dj_ie .dijitToolbar .dijitComboBox {
+       
+       vertical-align: middle;
+}
+.dijitTextBox .dijitSpinnerButtonContainer {
+       width: 1em;
+       position: relative !important;
+       overflow: hidden;
+}
+.dijitSpinner .dijitSpinnerButtonInner {
+       width:1em;
+       visibility:hidden !important; 
+       overflow-x:hidden;
+}
+.dijitComboBox .dijitButtonNode,
+.dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 0;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border: 0 none !important;
+}
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner,
+.dijit_a11y .dijitSpinnerButtonContainer INPUT {
+       width: 1em !important;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner {
+       margin: 0 auto !important; 
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.3em !important;
+       padding-right: 0.3em !important;
+       margin-left: 0.3em !important;
+       margin-right: 0.3em !important;
+       width: 1.4em !important;
+}
+.dj_ie7 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.0em !important; 
+       padding-right: 0.0em !important;
+       width: 1em !important;
+}
+.dj_ie6 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0.1em !important;
+       margin-right: 0.1em !important;
+       width: 1em !important;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+       width: 2em !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       
+       padding: 0;
+       position: absolute !important;
+       right: 0;
+       float: none;
+       height: 50%;
+       width: 100%;
+       bottom: auto;
+       left: 0;
+       right: auto;
+}
+.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: auto;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitArrowButton {
+       overflow: visible !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {
+       top: 50%;
+       border-top-width: 1px !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {
+       #bottom: 50%;   
+       top: 0;
+}
+.dijitSpinner .dijitArrowButtonInner {
+       margin: auto;
+       overflow-x: hidden;
+       height: 100% !important;
+}
+.dj_iequirks .dijitSpinner .dijitArrowButtonInner {
+       height: auto !important;
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       -moz-transform: scale(0.5);
+       -moz-transform-origin: center top;
+       -webkit-transform: scale(0.5);
+       -webkit-transform-origin: center top;
+       -o-transform: scale(0.5);
+       -o-transform-origin: center top;
+       transform: scale(0.5);
+       transform-origin: left top;
+       padding-top: 0;
+       padding-bottom: 0;
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       width: 100%;
+}
+.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       zoom: 50%; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {
+       overflow: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 100%;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 1em; 
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       visibility: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       vertical-align:top;
+       visibility: visible;
+}
+.dijit_a11y .dijitSpinnerButtonContainer {
+       width: 1em;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 1px 0px 0px 0px;
+       border-style: solid !important;
+}
+.dijitCheckBox,
+.dijitRadio,
+.dijitCheckBoxInput {
+       padding: 0;
+       border: 0;
+       width: 16px;
+       height: 16px;
+       background-position:center center;
+       background-repeat:no-repeat;
+       overflow: hidden;
+}
+.dijitCheckBox INPUT,
+.dijitRadio INPUT {
+       margin: 0;
+       padding: 0;
+       display: block;
+}
+.dijitCheckBoxInput {
+       
+       opacity: 0.01;
+}
+.dj_ie .dijitCheckBoxInput {
+       filter: alpha(opacity=0);
+}
+.dijit_a11y .dijitCheckBox,
+.dijit_a11y .dijitRadio {
+       
+       width: auto !important;
+       height: auto !important;
+}
+.dijit_a11y .dijitCheckBoxInput {
+       opacity: 1;
+       filter: none;
+       width: auto;
+       height: auto;
+}
+.dijitProgressBarEmpty {
+       
+       position:relative;overflow:hidden;
+       border:1px solid black;         
+       z-index:0;                      
+}
+.dijitProgressBarFull {
+       
+       position:absolute;
+       overflow:hidden;
+       z-index:-1;
+       top:0;
+       width:100%;
+}
+.dj_ie6 .dijitProgressBarFull {
+       height:1.6em;
+}
+.dijitProgressBarTile {
+       
+       position:absolute;
+       overflow:hidden;
+       top:0;
+       left:0;
+       bottom:0;
+       right:0;
+       margin:0;
+       padding:0;
+       width:auto;
+       height:auto;
+       background-color:#aaa;
+       background-attachment: fixed;
+}
+.dijit_a11y .dijitProgressBarTile {
+       
+       border-width:2px;
+       border-style:solid;
+       background-color:transparent !important;
+}
+.dj_ie6 .dijitProgressBarTile {
+       
+       position:static;
+       
+       height:1.6em;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarLabel {
+       visibility:hidden;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+}
+.dijitProgressBarIndeterminateHighContrastImage {
+       display:none;
+}
+.dijit_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {
+       display:block;
+       position:absolute;
+       top:0;
+       bottom:0;
+       margin:0;
+       padding:0;
+       width:100%;
+       height:auto;
+}
+.dijitProgressBarLabel {
+       display:block;
+       position:static;
+       width:100%;
+       text-align:center;
+       background-color:transparent !important;
+}
+.dijitTooltip {
+       position: absolute;
+       z-index: 2000;
+       display: block;
+       
+       left: 50%;
+       top: -10000px;
+       overflow: visible;
+}
+.dijitTooltipContainer {
+       border: solid black 2px;
+       background: #b8b5b5;
+       color: black;
+       font-size: small;
+}
+.dijitTooltipFocusNode {
+       padding: 2px 2px 2px 2px;
+}
+.dijitTooltipConnector {
+       position: absolute;
+}
+.dijit_a11y .dijitTooltipConnector {
+       display: none;  
+}
+.dijitTooltipData {
+       display:none;
+}
+.dijitLayoutContainer {
+       position: relative;
+       display: block;
+       overflow: hidden;
+}
+body .dijitAlignTop,
+body .dijitAlignBottom,
+body .dijitAlignLeft,
+body .dijitAlignRight {
+       position: absolute;
+       overflow: hidden;
+}
+body .dijitAlignClient { position: absolute; }
+.dijitBorderContainer, .dijitBorderContainerNoGutter {
+       position:relative;
+       overflow: hidden;
+}
+.dijitBorderContainerPane,
+.dijitBorderContainerNoGutterPane {
+       position: absolute !important;  
+       z-index: 2;             
+}
+.dijitBorderContainer > .dijitTextArea {
+       
+       resize: none;
+}
+.dijitGutter {
+       
+       position: absolute;
+       font-size: 1px;         
+}
+.dijitSplitter {
+       position: absolute;
+       overflow: hidden;
+       z-index: 10;            
+       background-color: #fff;
+       border-color: gray;
+       border-style: solid;
+       border-width: 0;
+}
+.dj_ie .dijitSplitter {
+       z-index: 1;     
+}
+.dijitSplitterActive {
+       z-index: 11 !important;
+}
+.dijitSplitterCover {
+       position:absolute;
+       z-index:-1;
+       top:0;
+       left:0;
+       width:100%;
+       height:100%;
+}
+.dijitSplitterCoverActive {
+       z-index:3 !important;
+}
+.dj_ie .dijitSplitterCover {
+       background: white;
+       filter: alpha(opacity=0);
+}
+.dijitSplitterH {
+       height: 7px;
+       border-top:1px;
+       border-bottom:1px;
+       cursor: ns-resize;
+}
+.dijitSplitterV {
+       width: 7px;
+       border-left:1px;
+       border-right:1px;
+       cursor: ew-resize;
+}
+.dijitSplitContainer {
+       position: relative;
+       overflow: hidden;
+       display: block;
+}
+.dj_ff3 .dijit_a11y div.dijitSplitter:focus {
+       outline-style:dotted;
+       outline-width: 2px;
+}
+.dijitSplitPane {
+       position: absolute;
+}
+.dijitSplitContainerSizerH,
+.dijitSplitContainerSizerV {
+       position:absolute;
+       font-size: 1px;
+       cursor: move;
+       cursor: w-resize;
+       background-color: ThreeDFace;
+       border: 1px solid;
+       border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
+       margin: 0;
+}
+.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {
+       overflow:hidden;
+       position:absolute;
+       top:49%;
+}
+.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {
+       position:absolute;
+       left:49%;
+}
+.dijitSplitterShadow,
+.dijitSplitContainerVirtualSizerH,
+.dijitSplitContainerVirtualSizerV {
+       font-size: 1px;
+       background-color: ThreeDShadow;
+       -moz-opacity: 0.5;
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+       margin: 0;
+}
+.dj_ie .dijitSplitterV, .dijitSplitContainerVirtualSizerH {
+       cursor: w-resize;
+}
+.dj_ie .dijitSplitterH, .dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {
+       cursor: n-resize;
+}
+.dijit_a11y .dijitSplitterH {
+       border-top:1px solid #d3d3d3 !important;
+       border-bottom:1px solid #d3d3d3 !important;
+}
+.dijit_a11y .dijitSplitterV {
+       border-left:1px solid #d3d3d3 !important;
+       border-right:1px solid #d3d3d3 !important;
+}
+.dijitContentPane {
+       display: block;
+       overflow: auto; 
+}
+.dijitContentPaneSingleChild {
+       
+       overflow: hidden;
+}
+.dijitTitlePane {
+       display: block;
+       overflow: hidden;
+}
+.dijitTitlePaneTitle {
+       cursor: pointer;
+}
+.dijitFixedOpen {
+       
+       cursor: default;
+}
+.dijitTitlePaneTitle * {
+       vertical-align: middle;
+}
+.dijitTitlePane .dijitArrowNodeInner {
+       
+       display: none;
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNodeInner {
+       
+       display:inline !important;
+       font-family: monospace;         
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNode {
+       
+       display:none;
+}
+.dj_ie6 .dijitTitlePaneContentOuter,
+.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {
+       
+       zoom: 1;
+}
+.dijitColorPalette {
+       border: 1px solid #999;
+       background: #fff;
+       position: relative;
+}
+img.dijitColorPaletteUnder {
+       
+       border-style: none;
+       position: absolute;
+       left: 0;
+       top: 0;
+}
+.dijitColorPalette .dijitPaletteTable {
+       
+       padding: 2px 3px 3px 3px;
+       position: relative;
+       overflow: hidden;
+       outline: 0;
+       border-collapse: separate;
+}
+.dj_ie6 .dijitColorPalette .dijitPaletteTable,
+.dj_ie7 .dijitColorPalette .dijitPaletteTable,
+.dj_iequirks .dijitColorPalette .dijitPaletteTable {
+       
+       padding: 0;
+       margin: 2px 3px 3px 3px;
+}
+.dijitColorPalette .dijitPaletteCell {
+       
+       height: 20px;
+       width: 20px;
+       font-size: 1px;
+       vertical-align: middle;
+       text-align: center;
+}
+.dijitColorPalette .dijitPaletteImg {
+       
+       width: 16px;
+       height: 14px;
+       border: 1px solid #999;
+       cursor: default;
+       vertical-align: middle;
+}
+.dj_iequirks .dijitColorPalette .dijitPaletteImg {
+       margin: 1px;    
+}
+.dijitPaletteTable td {
+               padding: 0px;
+}
+.dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       
+       border: 1px solid #000;
+}
+.dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg,
+.dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg {
+       border: 2px solid #000;
+}
+.dijit_a11y .dijitColorPalette .dijitPaletteTable,
+.dijit_a11y .dijitColorPalette .dijitPaletteTable * {
+       
+       background-color: transparent !important;
+}
+.dj_gecko .dijit_a11y .dijitColorPalette .dijitPaletteCellFocused .dijitPaletteImg {
+       border: 3px dotted #000;        
+       margin: -1px;
+}
+.dijit_a11y  .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       border: 2px solid #000 !important;
+}
+.dijitAccordionContainer {
+       border:1px solid #b7b7b7;
+       border-top:0 !important;
+}
+.dijitAccordionTitle {
+       cursor: pointer;
+}
+.dijitAccordionTitleSelected {
+       cursor: default;
+}
+.dijitAccordionTitle .arrowTextUp,
+.dijitAccordionTitle .arrowTextDown {
+       display: none;
+       font-size: 0.65em;
+       font-weight: normal !important;
+}
+.dijit_a11y .dijitAccordionTitle .arrowTextUp,
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextDown {
+       display: inline;
+}
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextUp {
+       display: none;
+}
+.dj_ie6 .dijitAccordionTitle,
+.dj_iequirks .dijitAccordionTitle {
+       
+       zoom: 1;
+}
+.dijitCalendarContainer {
+       width: auto;    
+}
+.dijitCalendarContainer th, .dijitCalendarContainer td {
+       padding: 0;
+}
+.dijitCalendarNextYear {
+       margin:0 0 0 0.55em;
+}
+.dijitCalendarPreviousYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarIncrementControl {
+       vertical-align: middle;
+}
+.dijitCalendarIncrementControl,
+.dijitCalendarDateTemplate,
+.dijitCalendarMonthLabel,
+.dijitCalendarPreviousYear,
+.dijitCalendarNextYear {
+       cursor: pointer;
+}
+.dijitCalendarDisabledDate {
+       color: gray;
+       text-decoration: line-through;
+       cursor: default;
+}
+.dijitSpacer {
+       
+       position: relative;
+       height: 1px;
+       overflow: hidden;
+       visibility: hidden;
+}
+.dijitMenu {
+       border:1px solid black;
+       background-color:white;
+}
+.dijitMenuTable {
+       border-collapse:collapse;
+       border-width:0;
+       background-color:white;
+}
+.dj_webkit .dijitMenuTable td[colspan="2"]{
+       border-right:hidden;
+}
+.dijitMenuItem {
+       text-align: left;
+       white-space: nowrap;
+       padding:.1em .2em;
+       cursor:pointer;
+}
+.dijitMenuPassive .dijitMenuItemHover,
+.dijitMenuItemSelected {
+       
+       background-color:black;
+       color:white;
+}
+.dijitMenuItemIcon, .dijitMenuExpand {
+       background-repeat: no-repeat;
+}
+.dijitMenuItemDisabled * {
+       
+       opacity:0.5;
+       cursor:default;
+}
+.dj_ie .dijit_a11y .dijitMenuItemDisabled,
+.dj_ie .dijit_a11y .dijitMenuItemDisabled td,
+.dj_ie .dijitMenuItemDisabled *,
+.dj_ie .dijitMenuItemDisabled td {
+       color:gray !important;
+       filter: alpha(opacity=35);
+}
+.dijitMenuItemLabel {
+       position: relative;
+       vertical-align: middle;
+}
+.dijit_a11y .dijitMenuItemSelected {
+       border: 1px dotted black !important;
+}
+.dj_ff3 .dijit_a11y .dijitMenuItem td {
+       padding: none !important;
+       background:none !important;
+}
+.dijit_a11y .dijitMenuItemSelected .dijitMenuItemLabel {
+       border-width: 1px;
+       border-style: solid;
+}
+.dj_ie8 .dijit_a11y .dijitMenuItemLabel {
+       position:static;
+}
+.dijitMenuExpandA11y {
+       display: none;
+}
+.dijit_a11y .dijitMenuExpandA11y {
+       display: inline;
+}
+.dijitMenuSeparator td {
+       border: 0;
+       padding: 0;
+}
+.dijitMenuSeparatorTop {
+       height: 50%;
+       margin: 0;
+       margin-top:3px;
+       font-size: 1px;
+}
+.dijitMenuSeparatorBottom {
+       height: 50%;
+       margin: 0;
+       margin-bottom:3px;
+       font-size: 1px;
+}
+.dijitCheckedMenuItemIconChar {
+       vertical-align: middle;
+       visibility:hidden;
+}
+.dijitCheckedMenuItemChecked .dijitCheckedMenuItemIconChar {
+       visibility: visible;
+}
+.dijit_a11y .dijitCheckedMenuItemIconChar {
+       display:inline !important;
+}
+.dijit_a11y .dijitCheckedMenuItemIcon {
+       display: none;
+}
+.dj_ie .dijit_a11y .dijitMenuBar .dijitMenuItem {
+       
+       margin: 0px;
+}
+.dijitStackController .dijitToggleButtonChecked * {
+       cursor: default;        
+}
+.dijitTabContainerNoLayout {
+       width: 100%;    
+}
+.dijitTabContainerBottom-tabs,
+.dijitTabContainerTop-tabs,
+.dijitTabContainerLeft-tabs,
+.dijitTabContainerRight-tabs {
+       overflow: visible !important;  
+}
+.dijitTabContainerBottom-container,
+.dijitTabContainerTop-container,
+.dijitTabContainerLeft-container,
+.dijitTabContainerRight-container {
+       z-index:0;
+       overflow: hidden;
+       border: 1px solid black;
+}
+.nowrapTabStrip {
+       width: 50000px;
+       display: block;
+       position: relative;
+}
+.dijitTabListWrapper {
+       overflow: hidden;
+}
+.dijit_a11y .tabStripButton img {
+       
+       display: none;
+}
+.dijitTabContainerTop-tabs {
+       border-bottom: 1px solid black;
+}
+.dijitTabContainerTop-container {
+       border-top: 0px;
+}
+.dijitTabContainerLeft-tabs {
+       border-right: 1px solid black;
+       float: left;
+}
+.dijitTabContainerLeft-container {
+       border-left: 0px;
+}
+.dijitTabContainerBottom-tabs {
+       border-top: 1px solid black;
+}
+.dijitTabContainerBottom-container {
+       border-bottom: 0px;
+}
+.dijitTabContainerRight-tabs {
+       border-left: 1px solid black;
+       float: left;
+}
+.dijitTabContainerRight-container {
+       border-right: 0px;
+}
+DIV.dijitTabDisabled, .dj_ie DIV.dijitTabDisabled {
+       cursor: auto;
+}
+.dijitTab {
+       position:relative;
+       cursor:pointer;
+       white-space:nowrap;
+       z-index:3;
+}
+.dijitTab * {
+       
+       vertical-align: middle;
+}
+.dijitTabChecked {
+       cursor: default;        
+}
+.dijitTabContainerTop-tabs .dijitTab {
+       top: 1px;       
+}
+.dijitTabContainerBottom-tabs .dijitTab {
+       top: -1px;      
+}
+.dijitTabContainerLeft-tabs .dijitTab {
+       left: 1px;      
+}
+.dijitTabContainerRight-tabs .dijitTab {
+       left: -1px;     
+}
+.dijitTabContainerTop-tabs .dijitTab,
+.dijitTabContainerBottom-tabs .dijitTab {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+}
+.dijitTabInnerDiv {
+       position:relative;
+}
+.tabStripButton {
+       z-index: 12;
+}
+.dijitTabButtonDisabled .tabStripButton {
+       display: none;
+}
+.dijitTabCloseButton {
+       margin-left: 1em;
+}
+.dijitTabCloseText {
+       display:none;
+}
+.dijit_a11y .dijitTabCloseButton {
+       background-image: none !important;
+       width: auto !important;
+       height: auto !important;
+       border: thin dotted;    
+}
+.dijit_a11y .dijitTabCloseButtonHover {
+       border:thin solid;      
+}
+.dijit_a11y .dijitTabCloseText {
+       display: inline;
+}
+.dijit_a11y .dijitTabChecked {
+       
+       border-style:dashed !important;
+}
+.dijit_a11y .dijitTabInnerDiv {
+       border-left:none !important;
+ }
+.dijitTabPane,
+.dijitStackContainer-child,
+.dijitAccordionContainer-child {
+       
+    border: none !important;
+}
+.dijitInlineEditBoxDisplayMode {
+       border: 1px solid transparent;  
+       cursor: text;
+}
+.dijit_a11y .dijitInlineEditBoxDisplayMode,
+.dj_ie6 .dijitInlineEditBoxDisplayMode {
+       
+       border: none;
+}
+.dijitInlineEditBoxDisplayModeHover,
+.dijit_a11y .dijitInlineEditBoxDisplayModeHover,
+.dj_ie6 .dijitInlineEditBoxDisplayModeHover {
+       
+       background-color: #e2ebf2;
+       border: solid 1px black;
+}
+.dijitInlineEditBoxDisplayModeDisabled {
+       cursor: default;
+}
+.dijitTreeIndent {
+       
+       width: 19px;
+}
+.dijitTreeRow, .dijitTreeContent {
+       white-space: nowrap;
+}
+.dijitTreeRow img {
+       
+       vertical-align: middle;
+}
+.dijitTreeContent {
+    cursor: default;
+}
+.dijitExpandoText {
+       display: none;
+}
+.dijit_a11y .dijitExpandoText {
+       display: inline;
+       padding-left: 10px;
+       padding-right: 10px;
+       font-family: monospace;
+       border-style: solid;
+       border-width: thin;
+       cursor: pointer;
+}
+.dijitTreeLabel {
+       margin: 0px 4px;
+}
+.dijitDialog {
+       position: absolute;
+       z-index: 999;
+       overflow: hidden;       
+}
+.dijitDialogTitleBar {
+       cursor: move;
+}
+.dijitDialogFixed .dijitDialogTitleBar {
+       cursor:default;
+}
+.dijitDialogCloseIcon {
+       cursor: pointer;
+}
+.dijitDialogUnderlayWrapper {
+       position: absolute;
+       left: 0;
+       top: 0;
+       z-index: 998;
+       display: none;
+       background: transparent !important;
+}
+.dijitDialogUnderlay {
+       background: #eee;
+       opacity: 0.5;
+}
+.dj_ie .dijitDialogUnderlay {
+       filter: alpha(opacity=50);
+}
+.dijit_a11y .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitDialog {
+       opacity: 1 !important;
+       background-color: white !important;
+}
+.dijitDialog .closeText {
+       display:none;
+       
+       position:absolute;
+}
+.dijit_a11y .dijitDialog .closeText {
+       display:inline;
+}
+.dijitSliderMoveable {
+       z-index:99;
+       position:absolute !important;
+       display:block;
+       vertical-align:middle;
+}
+.dijitSliderMoveableH {
+       right:0;
+}
+.dijitSliderMoveableV {
+       right:50%;
+}
+.dijit_a11y DIV.dijitSliderImageHandle,
+.dijitSliderImageHandle {
+       margin:0;
+       padding:0;
+       position:relative !important;
+       border:8px solid gray;
+       width:0;
+       height:0;
+       cursor: pointer;
+}
+.dj_iequirks .dijit_a11y .dijitSliderImageHandle {
+       font-size: 0;
+}
+.dj_ie7 .dijitSliderImageHandle {
+       overflow: hidden; 
+}
+.dj_ie7 .dijit_a11y .dijitSliderImageHandle {
+       overflow: visible; 
+}
+.dijit_a11y .dijitSliderFocused .dijitSliderImageHandle {
+       border:4px solid #000;
+       height:8px;
+       width:8px;
+}
+.dijitSliderImageHandleV {
+       top:-8px;
+       right: -50%;
+}
+.dijitSliderImageHandleH {
+       left:50%;
+       top:-5px;
+       vertical-align:top;
+}
+.dijitSliderBar {
+       border-style:solid;
+       border-color:black;
+       cursor: pointer;
+}
+.dijitSliderBarContainerV {
+       position:relative;
+       height:100%;
+       z-index:1;
+}
+.dijitSliderBarContainerH {
+       position:relative;
+       z-index:1;
+}
+.dijitSliderBarH {
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBarV {
+       width:4px;
+       border-width:0 1px;
+}
+.dijitSliderProgressBar {
+       background-color:red;
+       z-index:1;
+}
+.dijitSliderProgressBarV {
+       position:static !important;
+       height:0%;
+       vertical-align:top;
+       text-align:left;
+}
+.dijitSliderProgressBarH {
+       position:absolute !important;
+       width:0%;
+       vertical-align:middle;
+       overflow:visible;
+}
+.dijitSliderRemainingBar {
+       overflow:hidden;
+       background-color:transparent;
+       z-index:1;
+}
+.dijitSliderRemainingBarV {
+       height:100%;
+       text-align:left;
+}
+.dijitSliderRemainingBarH {
+       width:100% !important;
+}
+.dijitSliderBumper {
+       overflow:hidden;
+       z-index:1;
+}
+.dijitSliderBumperV {
+       width:4px;
+       height:8px;
+       border-width:0 1px;
+}
+.dijitSliderBumperH {
+       width:8px;
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBottomBumper,
+.dijitSliderLeftBumper {
+       background-color:red;
+}
+.dijitSliderTopBumper,
+.dijitSliderRightBumper {
+       background-color:transparent;
+}
+.dijitSliderDecoration {
+       text-align:center;
+}
+.dijitSliderV TD {
+       position: relative; 
+}
+.dijitSliderDecorationH {
+       width: 100%;
+}
+.dijitSliderDecorationV {
+       height: 100%;
+}
+.dijitSliderButton {
+       font-family:monospace;
+       margin:0;
+       padding:0;
+       display:block;
+}
+.dijit_a11y .dijitSliderButtonInner {
+       visibility:visible !important;
+}
+.dijitSliderButtonContainer {
+       text-align:center;
+       height:0;       
+}
+.dijitSliderButtonContainer * {
+       cursor: pointer;
+}
+.dijitSlider .dijitButtonNode {
+       padding:0;
+       display:block;
+}
+.dijitRuleContainer {
+       position:relative;
+       overflow:visible;
+}
+.dijitRuleContainerV {
+       height:100%;
+       line-height:0;
+       float:left;
+       text-align:left;
+}
+.dj_opera .dijitRuleContainerV {
+       line-height:2%;
+}
+.dj_ie .dijitRuleContainerV {
+       line-height:normal;
+}
+.dj_gecko .dijitRuleContainerV {
+       margin:0 0 1px 0; 
+}
+.dijitRuleMark {
+       position:absolute;
+       border:1px solid black;
+       line-height:0;
+       height:100%;
+}
+.dijitRuleMarkH {
+       width:0;
+       border-top-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+}
+.dijitRuleLabelContainer {
+       position:absolute;
+}
+.dijitRuleLabelContainerH {
+       text-align:center;
+       display:inline-block;
+}
+.dijitRuleLabelH {
+       position:relative;
+       left:-50%;
+}
+.dijitRuleLabelV {
+       
+       text-overflow: ellipsis;
+       white-space: nowrap;
+       overflow: hidden;
+}
+.dijitRuleMarkV {
+       height:0;
+       border-right-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+       width:100%;
+       left:0;
+}
+.dj_ie .dijitRuleLabelContainerV {
+       margin-top:-.55em;
+}
+.dijit_a11y .dijitSliderReadOnly,
+.dijit_a11y .dijitSliderDisabled {
+       opacity:0.6;
+}
+.dj_ie .dijit_a11y .dijitSliderReadOnly .dijitSliderBar,
+.dj_ie .dijit_a11y .dijitSliderDisabled .dijitSliderBar {
+       filter: alpha(opacity=40);
+}
+.dijit_a11y .dijitSlider .dijitSliderButtonContainer DIV {
+       font-family: monospace; 
+       font-size: 1em;
+       line-height: 1em;
+       height: auto;
+       width: auto;
+       margin: 0px 4px;
+}
+.dijit_a11y .dijitButtonContents .dijitButtonText,
+.dijit_a11y .dijitTab .tabLabel {
+       display: inline !important;
+}
+.dijitTextArea {
+       width:100%;
+       overflow-y: auto;       
+}
+.dijitTextArea[cols] {
+       width:auto; 
+}
+.dj_ie .dijitTextAreaCols {
+       width:auto;
+}
+.dijitToolbarSeparator {
+       height: 18px;
+       width: 5px;
+       padding: 0 1px;
+       margin: 0;
+}
+.dijitIEFixedToolbar {
+       position:absolute;
+       
+       top: expression(eval((document.documentElement||document.body).scrollTop));
+}
+.dijitEditor {
+       display: block; 
+}
+.dijitEditorDisabled,
+.dijitEditorReadOnly {
+       color: gray;
+}
+.dijitTimePickerItemInner {
+       text-align:center;
+       border:0;
+       padding:2px 8px 2px 8px;
+}
+.dijitTimePickerTick,
+.dijitTimePickerMarker {
+       border-bottom:1px solid gray;
+}
+.dijitTimePicker .dijitDownArrowButton {
+       border-top: none !important;
+}
+.dijitTimePickerTick {
+       color:#CCC;
+}
+.dijitTimePickerMarker {
+       color:black;
+       background-color:#CCC;
+}
+.dijitTimePickerItemSelected {
+       font-weight:bold;
+       color:#333;
+       background-color:#b7cdee;
+}
+.dijitTimePickerItemHover {
+       background-color:gray;
+       color:white;
+       cursor:pointer;
+}
+.dijit_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       border: solid 4px black;
+}
+.dijit_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {
+       border: dashed 4px black;
+}
+.dijitToggleButtonIconChar {
+       
+       display:none !important;
+}
+.dijit_a11y .dijitToggleButton .dijitToggleButtonIconChar {
+       display:inline !important;
+       visibility:hidden;
+}
+.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {
+       font-family: "Arial Unicode MS";        
+}
+.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
+       display: inline !important; 
+       visibility:visible !important;
+}
+.dijitArrowButtonChar {
+        display:none !important;
+}
+.dijit_a11y .dijitArrowButtonChar {
+        display:inline !important;
+}
+.dijit_a11y .dijitDropDownButton .dijitArrowButtonInner,
+.dijit_a11y .dijitComboButton .dijitArrowButtonInner {
+       display:none !important;
+}
+.dijitSelect {
+       margin: 0.2em;
+       border-collapse: collapse;
+}
+.dj_ie .dijitSelect,
+.dj_ie7 .dijitSelect,
+.dj_iequirks .dijitSelect {
+       vertical-align: middle; 
+}
+.dj_ie8 .dijitSelect .dijitButtonText {
+       vertical-align: top;
+}
+.dijitToolbar .dijitSelect {
+       margin: 0;
+}
+.dj_webkit .dijitToolbar .dijitSelect {
+       padding-left: 0.3em;
+}
+.dijit_a11y .dijitSelectDisabled .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitSelect .dijitButtonContents {
+       padding: 0px;
+       background: transparent none;
+       white-space: nowrap;
+       text-align: left;
+}
+.dijitSelectFixedWidth .dijitButtonContents {
+       width: 100%;
+}
+.dijitSelectMenu .dijitMenuItemIcon {
+       
+       display:none;
+}
+.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,
+.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {
+       
+       position: static;
+}
+.dijitSelectLabel *
+{
+       vertical-align: baseline;
+}
+.dijitSelectSelectedOption * {
+       font-weight: bold;
+}
+.dijitSelectMenu {
+       border-width: 1px;
+}
+.dijitSelectMenu .dijitMenuTable {
+       margin: 0px;
+       background-color: transparent;
+}
+.dijitForceStatic {
+       position: static !important;
+}
+.dijitReadOnly *,
+.dijitDisabled *,
+.dijitReadOnly,
+.dijitDisabled {
+       
+       cursor: default;
+}
+.claro {
+       font-family:Verdana,Arial,Helvetica,sans-serif;
+       font-size: .688em;
+       color: #131313;
+}
+h1 {
+       font-size: 1.545em; 
+       font-weight: normal;
+       line-height: 1em; 
+       margin-top: 1em;
+       margin-bottom:0.727em;
+}
+.claro .dijitDialog h1 { 
+       margin-top:0em; 
+}
+h2 { 
+       font-size: 1.364em; 
+       line-height: 1.455em; 
+       margin-top:1em; 
+       margin-bottom:0.60em;
+       font-weight: normal;
+}
+h3, h4, h5, h6 {
+       font-size:1.091em; 
+       font-weight: normal; 
+       line-height: 1.5em; 
+       margin-top: 1.5em; 
+       margin-bottom: 0;
+}
+p { 
+       font-size: 1em; 
+       line-height: 1.3em;
+}
+blockquote { 
+       font-size: 0.916em; 
+       margin-top: 3.272em; 
+       margin-bottom: 3.272em; 
+       line-height: 1.636em; 
+       padding: 1.636em; 
+       border-top: 1px solid #ccc; 
+       border-bottom: 1px solid #ccc;
+}
+ol li, ul li { 
+       font-size: 1em; 
+       line-height: 1.5em; 
+       margin: 0;
+}
+pre, code { 
+       font-size:115%;
+       *font-size:100%;
+       font-family:inherit; 
+       background-color: #efefef; 
+       border: 1px solid #ccc;
+}
+pre { 
+       border-width: 1px 0; 
+       padding: 1.5em;
+}
+table {  font-size:100%; }
+table.dojoTabular { 
+       border-collapse: collapse; 
+       border-spacing: 0; 
+       border: 1px solid #ccc; 
+       margin: 0 1.5em;
+}
+.dojoTabular th { 
+       text-align: center; 
+       font-weight: bold;
+}
+table.dojoTabular thead, table.dojoTabular tfoot { 
+       background-color: #efefef; 
+       border: 1px solid #ccc; 
+       border-width: 1px 0; 
+}
+table.dojoTabular thead tr th,
+table.dojoTabular thead tr td,
+table.dojoTabular tbody tr td,
+table.dojoTabular tfoot tr td { 
+       padding: 0.25em 0.5em;
+}
+       
+.dijitIconSave,
+.dijitIconPrint,
+.dijitIconCut,
+.dijitIconCopy,
+.dijitIconClear,
+.dijitIconDelete,
+.dijitIconUndo,
+.dijitIconEdit,
+.dijitIconNewTask,
+.dijitIconEditTask,
+.dijitIconEditProperty,
+.dijitIconTask,
+.dijitIconFilter,
+.dijitIconConfigure,
+.dijitIconSearch,
+.dijitIconApplication,
+.dijitIconBookmark,
+.dijitIconChart,
+.dijitIconConnector,
+.dijitIconDatabase,
+.dijitIconDocuments,
+.dijitIconMail,
+.dijitLeaf,
+.dijitIconFile,
+.dijitIconFunction,
+.dijitIconKey,
+.dijitIconPackage,
+.dijitIconSample,
+.dijitIconTable,
+.dijitIconUsers,
+.dijitFolderClosed,
+.dijitIconFolderClosed,
+.dijitFolderOpened,
+.dijitIconFolderOpen,
+.dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled.png); 
+       width: 16px;
+       height: 16px;
+}
+.dj_ie6 .dijitIconSave,
+.dj_ie6 .dijitIconPrint,
+.dj_ie6 .dijitIconCut,
+.dj_ie6 .dijitIconCopy,
+.dj_ie6 .dijitIconClear,
+.dj_ie6 .dijitIconDelete,
+.dj_ie6 .dijitIconUndo,
+.dj_ie6 .dijitIconEdit,
+.dj_ie6 .dijitIconNewTask,
+.dj_ie6 .dijitIconEditTask,
+.dj_ie6 .dijitIconEditProperty,
+.dj_ie6 .dijitIconTask,
+.dj_ie6 .dijitIconFilter,
+.dj_ie6 .dijitIconConfigure,
+.dj_ie6 .dijitIconSearch,
+.dj_ie6 .dijitIconApplication,
+.dj_ie6 .dijitIconBookmark,
+.dj_ie6 .dijitIconChart,
+.dj_ie6 .dijitIconConnector,
+.dj_ie6 .dijitIconDatabase,
+.dj_ie6 .dijitIconDocuments,
+.dj_ie6 .dijitIconMail,
+.dj_ie6 .dijitLeaf,
+.dj_ie6 .dijitIconFile,
+.dj_ie6 .dijitIconFunction,
+.dj_ie6 .dijitIconKey,
+.dj_ie6 .dijitIconPackage,
+.dj_ie6 .dijitIconSample,
+.dj_ie6 .dijitIconTable,
+.dj_ie6 .dijitIconUsers,
+.dj_ie6 .dijitFolderClosed,
+.dj_ie6 .dijitIconFolderClosed,
+.dj_ie6 .dijitFolderOpened,
+.dj_ie6 .dijitIconFolderOpen,
+.dj_ie6 .dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled8bit.png);
+}
+.dijitDisabled .dijitIconSave,
+.dijitDisabled .dijitIconPrint,
+.dijitDisabled .dijitIconCut,
+.dijitDisabled .dijitIconCopy,
+.dijitDisabled .dijitIconClear,
+.dijitDisabled .dijitIconDelete,
+.dijitDisabled .dijitIconUndo,
+.dijitDisabled .dijitIconEdit,
+.dijitDisabled .dijitIconNewTask,
+.dijitDisabled .dijitIconEditTask,
+.dijitDisabled .dijitIconEditProperty,
+.dijitDisabled .dijitIconTask,
+.dijitDisabled .dijitIconFilter,
+.dijitDisabled .dijitIconConfigure,
+.dijitDisabled .dijitIconSearch,
+.dijitDisabled .dijitIconApplication,
+.dijitDisabled .dijitIconBookmark,
+.dijitDisabled .dijitIconChart,
+.dijitDisabled .dijitIconConnector,
+.dijitDisabled .dijitIconDatabase,
+.dijitDisabled .dijitIconDocuments,
+.dijitDisabled .dijitIconMail,
+.dijitDisabled .dijitLeaf,
+.dijitDisabled .dijitIconFile,
+.dijitDisabled .dijitIconFunction,
+.dijitDisabled .dijitIconKey,
+.dijitDisabled .dijitIconPackage,
+.dijitDisabled .dijitIconSample,
+.dijitDisabled .dijitIconTable,
+.dijitDisabled .dijitIconUsers,
+.dijitDisabled .dijitFolderClosed,
+.dijitDisabled .dijitIconFolderClosed,
+.dijitDisabled .dijitFolderOpened,
+.dijitDisabled .dijitIconFolderOpen,
+.dijitDisabled .dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActDisabled.png); 
+}
+.dijitIconSave { background-position: 0px; }
+.dijitIconPrint { background-position: -16px; }
+.dijitIconCut { background-position: -32px; }
+.dijitIconCopy { background-position: -48px; }
+.dijitIconClear { background-position: -64px; }
+.dijitIconDelete { background-position: -80px; }
+.dijitIconUndo { background-position: -96px; }
+.dijitIconEdit { background-position: -112px; }
+.dijitIconNewTask { background-position: -128px; }
+.dijitIconEditTask { background-position: -144px; }
+.dijitIconEditProperty { background-position: -166px; }
+.dijitIconTask { background-position: -176px; }
+.dijitIconFilter { background-position: -192px; }
+.dijitIconConfigure { background-position: -208px; }
+.dijitIconSearch { background-position: -224px; }
+.dijitIconError { background-position: -496px; } 
+.dijitIconApplication { background-position: -240px; }
+.dijitIconBookmark { background-position: -256px; }
+.dijitIconChart { background-position: -272px; }
+.dijitIconConnector { background-position: -288px; }
+.dijitIconDatabase { background-position: -304px; }
+.dijitIconDocuments { background-position: -320px; }
+.dijitIconMail { background-position: -336px; }
+.dijitIconFile, .dijitLeaf { background-position: -352px; }
+.dijitIconFunction { background-position: -368px; }
+.dijitIconKey { background-position: -384px; }
+.dijitIconPackage{ background-position: -400px; }
+.dijitIconSample { background-position: -416px; }
+.dijitIconTable { background-position: -432px; }
+.dijitIconUsers { background-position: -448px; }
+.dijitIconFolderClosed, .dijitFolderClosed { background-position: -464px; }
+.dijitIconFolderOpen, .dijitFolderOpened { background-position: -480px; }
+.claro .dijitPopup {
+       box-shadow: 0px 1px 5px rgba(0,0,0,0.25);
+       -webkit-box-shadow: 0px 1px 5px rgba(0,0,0,0.25);
+       -moz-box-shadow: 0px 1px 5px rgba(0,0,0,0.25);
+}
+.claro .dijitTooltipDialogPopup {
+       
+       box-shadow: none;
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+}
+.claro .dijitComboBoxHighlightMatch {
+       background-color:#a5beda;
+}
+.claro .dijitFocusedLabel {
+       
+       outline: 1px dotted #666666;
+}
+.claro .dijitContentPaneLoading {
+       background:url(images/loadingAnimation.gif) no-repeat left center;
+       padding-left:25px;
+}
+.claro .dijitContentPaneError {
+    background:url(../../icons/images/commonIconsObjActEnabled.png) no-repeat left center;
+    background-position: -496px; 
+       no-repeat left center;
+       padding-left:25px;
+}
+.claro .dojoDndItemBefore,
+.claro .dojoDndItemAfter{
+       border-top: 1px solid #769DC0;
+}
+.claro .dojoDndItemOver {
+       cursor:pointer;
+       }
+.claro table.dojoDndAvatar {
+       border: 1px solid #b5bcc7;
+       border-collapse: collapse;
+       background-color: #fff;
+       -webkit-box-shadow:0px 1px 3px rgba(0, 0, 0, .25);
+}
+.claro .dojoDndAvatarHeader td { 
+       height: 20px;
+       padding-left:21px;
+}
+.claro.dojoDndMove .dojoDndAvatarHeader, .claro.dojoDndCopy .dojoDndAvatarHeader {
+       background-image: url(images/dnd.png);
+       background-repeat: no-repeat;
+       background-position:2px -122px;
+}
+.claro .dojoDndAvatarItem td {
+       padding: 5px;
+}
+.claro.dojoDndMove .dojoDndAvatarHeader        {
+       background-color: #f58383; 
+       background-position:2px -103px;
+}
+.claro.dojoDndCopy .dojoDndAvatarHeader        {
+       background-color: #f58383; 
+       background-position:2px -68px;
+}
+.claro.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader  {
+       background-color: #97e68d; 
+       background-position:2px -33px;
+}
+.claro.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader  {
+       background-color: #97e68d;
+       background-position:2px 2px;
+}
+.claro .dijitTextBoxError .dijitValidationContainer {
+       background-color: #d46363;
+       background-image: url(form/images/error.png);
+       background-position: top center;
+       border: solid #d46464 0px;
+       border-left-width: 1px;
+       width: 9px;
+}
+.claro .dijitTextBoxError .dijitValidationIcon {
+       width: 0px;
+       background-color: transparent !important; 
+}
+.claro .dijitTextBox .dijitInputContainer,
+.claro .dijitTextArea,
+.claro .dijitInputField .dijitPlaceHolder {
+       padding: 2px;
+}
+.claro .dijitTextBox,
+.claro .dijitTextBox .dijitButtonNode {
+       
+       border-color: #b5bcc7;
+       -webkit-transition-property:background-color, border;
+       -webkit-transition-duration:.35s;
+}
+.claro .dijitTextBox {
+       background-color: #f7fcff;
+}
+.claro .dijitTextBoxHover,
+.claro .dijitTextBoxHover .dijitButtonNode {
+       border-color: #769dc0;
+       -webkit-transition-duration:.25s;
+}
+.claro .dijitTextBoxHover {
+       background-color: #e9f4fe;
+       background-image: url(form/images/textBox_back.png);
+       background-repeat: repeat-x;
+}
+.claro .dijitTextBoxError,
+.claro .dijitTextBoxError .dijitButtonNode {
+       border-color: #d46464;
+}
+.claro .dijitTextBoxError,
+.claro .dijitTextBoxError .dijitInputContainer {
+       background-color: #fdf7f7;
+}
+.claro .dijitTextBoxFocused,
+.claro .dijitTextBoxFocused .dijitButtonNode {
+       border-color:#769dc0;
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitTextBoxFocused {
+       background-color: #fff;
+       background-image: url(form/images/textBox_back.png);
+       background-repeat: repeat-x;
+}
+.claro .dijitTextBoxFocused .dijitInputContainer {
+       background: #fff;
+}
+.claro .dijitTextBoxErrorFocused,
+.claro .dijitTextBoxErrorFocused .dijitButtonNode {
+       border-color: #ce4f4f;
+}
+.claro .dijitTextBoxDisabled,
+.claro .dijitTextBoxDisabled .dijitButtonNode {
+       border-color: #d3d3d3;
+}
+.claro .dijitTextBoxDisabled {
+       background-color: #efefef;
+       background-image: none;
+       color: #818181;
+}
+.claro .dijitComboBox .dijitArrowButtonInner {
+       background-image: url(form/images/commonFormArrows.png);
+       background-position:-35px 53%;
+       background-repeat: no-repeat;
+       margin: 0px;
+       width:16px;
+       height:100%;
+       border: 1px solid #fff;
+}
+.claro .dijitTextBox .dijitInputField {
+       padding-top: 1px; 
+       padding-bottom: 1px;
+}
+.claro .dijitTextBox .dijitInputInner {
+       
+       padding: 1px 2px 1px 0; 
+}
+.claro .dijitTextBox .dijitValidationContainer {
+       padding: 0 0 2px 0; 
+}
+.claro .dijitComboBox .dijitButtonNode {
+       background-color: #ebeef4;
+       background-image: url(form/images/formHighlight.png);
+       background-repeat:repeat-x;
+}
+.claro .dijitComboBoxHover .dijitButtonNode {
+       background-color:#abd6ff;
+}
+.claro .dijitComboBoxHover .dijitArrowButtonInner {
+       background-position:-70px 53%;
+}
+.claro .dijitComboBoxFocused .dijitButtonNode {
+       background-color:#7dbefa;
+       background-position:0px -177px;
+       padding: 1px;
+}      
+.claro .dijitComboBoxFocused .dijitArrowButtonInner {
+       background-position:-70px 53%;
+       border: 0px none;
+}
+.claro div.dijitComboBoxDisabled .dijitArrowButtonInner {
+       
+       background-position:0px 50%;
+       background-color:#f1f1f1;
+}
+.dj_ff3 .claro .dijitInputField input[type="hidden"] {
+       display: none;
+       height: 0;
+       width: 0;
+}
+.dj_ie6 .claro .dijitTextBox,
+.dj_ie6 .claro .dijitComboBox .dijitButtonNode {
+       background-image: none;
+}
+.dj_quirks .claro .dijitComboBox .dijitArrowButtonInner {
+       border: 0px;
+}
+.dj_quirks .claro .dijitComboBox .dijitArrowButtonContainer {
+       padding: 1px;
+}
+.claro .dijitButtonNode {
+       
+       -webkit-transition-property:background-color;
+       -webkit-transition-duration:.3s;
+}
+.claro .dijitButton .dijitButtonNode,
+.claro .dijitDropDownButton .dijitButtonNode,
+.claro .dijitComboButton .dijitButtonNode,
+.claro .dijitToggleButton .dijitButtonNode {
+       
+       border: 1px solid #769dc0;
+       padding:2px 4px 4px 4px;
+       background-image: url(form/images/button.png);
+       background-position: center top;
+       background-repeat: repeat-x;
+       background-color: #e4f2ff;
+       border-radius: 4px;
+       -moz-border-radius: 4px;
+       -webkit-border-radius: 4px;
+       box-shadow:0px 1px 1px rgba(0,0,0,0.15);
+       -webkit-box-shadow:0px 1px 1px rgba(0,0,0,0.15);
+       -moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.15);  
+}
+.claro .dijitComboButton .dijitArrowButton {
+       border-left-width: 0px;
+       padding: 4px 2px 4px 2px;       
+}
+.claro .dijitArrowButtonInner {
+       width: 15px;
+       height: 15px;
+       margin: 0 auto;
+       background-image:url(form/images/buttonArrows.png);
+       background-repeat:no-repeat;
+       background-position:-51px 53%;
+}
+.claro .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -77px 53%;
+}
+.claro .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -26px 53%;
+}
+.claro .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: 0px 53%;
+}
+.claro .dijitDisabled .dijitArrowButtonInner {
+       background-position: -151px 53%;
+}
+.claro .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -177px 53%;
+}
+.claro .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -126px 53%;
+}
+.claro .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -100px 53%;
+}
+.claro .dijitButtonText {
+       padding: 0 0.3em;
+       text-align: center;
+}
+.claro .dijitDisabled .dijitButtonText {
+       color: #7F7F7F;
+}
+.claro .dijitButtonHover .dijitButtonNode,
+.claro .dijitDropDownButtonHover .dijitButtonNode,
+.claro .dijitComboButton .dijitButtonNodeHover, 
+.claro .dijitComboButton .dijitDownArrowButtonHover,
+.claro .dijitToggleButtonHover .dijitButtonNode {
+       background-color: #afd9ff;
+       color:#000;
+       -webkit-transition-duration:.2s;
+}
+.claro .dijitButtonActive .dijitButtonNode, 
+.claro .dijitDropDownButtonActive .dijitButtonNode,
+.claro .dijitComboButtonActive .dijitButtonNode,
+.claro .dijitToggleButtonActive .dijitButtonNode {
+       background-color: #99cfff;
+       box-shadow:0px 0px 0px rgba(0,0,0,0);
+       -webkit-box-shadow:0px 0px 0px rgba(0,0,0,0);
+       -moz-box-shadow: 0px 0px 0px rgba(0,0,0,0);
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitButtonDisabled,
+.claro .dijitDropDownButtonDisabled,
+.claro .dijitComboButtonDisabled,
+.claro .dijitToggleButtonDisabled {
+       background-image: none;
+       outline: none;
+}
+.claro .dijitButtonDisabled .dijitButtonNode,
+.claro .dijitDropDownButtonDisabled .dijitButtonNode,
+.claro .dijitComboButtonDisabled .dijitButtonNode,
+.claro .dijitToggleButtonDisabled .dijitButtonNode { 
+       background-position:0px -149px;
+       background-color: #e3e3e3;
+       border: solid 1px #c9c9c9;
+       color: #696969;
+       box-shadow:0px 0px 0px rgba(0,0,0,0);
+       -webkit-box-shadow:0px 0px 0px rgba(0,0,0,0);
+       -moz-box-shadow: 0px 0px 0px rgba(0,0,0,0);
+}
+.claro .dijitComboButtonDisabled .dijitArrowButton{ 
+       border-left-width: 0px;
+}
+.claro table.dijitComboButton {
+       border-collapse: separate;      
+}
+.dj_ie6 .claro .dijitButtonNode {
+       background-image: none;
+}
+.claro .dijitComboButton .dijitStretch {
+       -moz-border-radius: 4px 0px 0px 4px;
+       -webkit-border-top-left-radius: 4px;
+       -webkit-border-top-right-radius: 0px;
+       -webkit-border-bottom-right-radius: 0px;
+       -webkit-border-bottom-left-radius: 4px;
+}
+.claro .dijitComboButton .dijitArrowButton {
+       -moz-border-radius: 0px 4px 4px 0px;
+       -webkit-border-top-left-radius: 0px;
+       -webkit-border-top-right-radius: 4px;
+       -webkit-border-bottom-right-radius: 4px;
+       -webkit-border-bottom-left-radius: 0px;
+}
+.claro .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url(images/checkmarkNoBorder.png);
+}
+.dj_ie6 .claro .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url(images/checkmarkNoBorder.gif);
+}
+.claro .dijitCheckBox,
+.claro .dijitCheckBoxIcon                      {
+       background-image: url(form/images/checkboxRadioButtonStates.png); 
+       background-repeat: no-repeat;
+       width: 15px;
+       height: 16px;
+       margin: 0 2px 0 0;
+       padding: 0;
+}
+.dj_ie6 .claro .dijitCheckBox,
+.dj_ie6 .claro .dijitCheckBoxIcon                      {
+       background-image: url(form/images/checkboxAndRadioButtons_IE6.png); 
+}
+.claro .dijitCheckBox,
+.claro .dijitToggleButton .dijitCheckBoxIcon {
+       
+       background-position: -15px;
+}
+.claro .dijitCheckBoxChecked,
+.claro .dijitToggleButtonChecked .dijitCheckBoxIcon {
+       
+       background-position: -0px;
+}
+.claro .dijitCheckBoxDisabled {
+       
+       background-position: -75px;
+}
+.claro .dijitCheckBoxCheckedDisabled {
+       
+       background-position: -60px;
+}
+.claro .dijitCheckBoxHover {
+       
+       background-position: -45px;
+}
+.claro .dijitCheckBoxCheckedHover {
+       
+       background-position: -30px;
+}
+.claro .dijitToggleButton .dijitRadio,
+.claro .dijitToggleButton .dijitRadioIcon {
+       background-image: url(form/images/checkboxRadioButtonStates.png);
+}
+.dj_ie6 .claro .dijitToggleButton .dijitRadio,
+.dj_ie6 .claro .dijitToggleButton .dijitRadioIcon {
+       background-image: url(form/images/checkboxAndRadioButtons_IE6.png);
+}
+.claro .dijitRadio,
+.claro .dijitRadioIcon {               
+       background-image: url(form/images/checkboxRadioButtonStates.png); 
+       background-repeat: no-repeat;
+       width: 15px;
+       height: 15px;
+       margin: 0px 2px 0px 0px;
+       padding: 0px;
+}
+.dj_ie6 .claro .dijitRadio,
+.dj_ie6 .claro .dijitRadioIcon {               
+       background-image: url(form/images/checkboxAndRadioButtons_IE6.png); 
+}
+.claro .dijitRadio{
+       
+       background-position: -105px;
+}
+.claro .dijitToggleButton .dijitRadioIcon {
+       
+       background-position: -107px;
+}
+.claro .dijitRadioDisabled {
+       
+       background-position: -165px;
+}
+.claro .dijitRadioHover {
+       
+       background-position: -135px;
+}
+.claro .dijitRadioChecked{
+       background-position: -90px;
+}
+.claro .dijitToggleButtonChecked .dijitRadioIcon {
+       background-position: -92px;
+}
+.claro .dijitRadioCheckedHover{
+       background-position: -120px;
+}
+.claro .dijitRadioCheckedDisabled {
+       
+       background-position: -150px;
+}
+.claro .dijitSelect .dijitButtonText {
+       padding: 0px 5px 2px 5px;
+}
+.claro .dijitSelect {
+       border: 1px solid #b5bcc7;
+       background-color: #f7fcff;
+       border-collapse: separate;
+}
+.dj_ie6 .claro .dijitSelect,
+.dj_ie6 .claro .dijitSelect .dijitButtonNode {
+       background-image:none;
+}
+.claro .dijitSelect .dijitButtonContents {
+       border: 0px solid #b5bcc7;
+       border-right-width: 1px;
+}
+.claro .dijitSelect .dijitArrowButton {
+       padding: 0;
+       border: 1px solid #fff; 
+       border-top:none;
+       background-color:#ebeef4;
+       background-image: url(form/images/formHighlight.png);
+       background-repeat:repeat-x;
+}
+.claro .dijitSelect .dijitArrowButton .dijitArrowButtonInner {
+       background-image: url(form/images/commonFormArrows.png);
+       background-position:-35px 70%;
+       background-repeat: no-repeat;
+       width:16px;
+       height:16px;
+       display:block;
+}
+.claro .dijitSelectHover {
+       border: 1px solid #769dc0;
+       background-color: #e9f4fe;
+       background-image: url(form/images/textBox_back.png);
+       background-repeat: repeat-x;
+}
+.claro .dijitSelectHover .dijitButtonContents {
+       border-color:#81a5c6;
+}
+.claro .dijitSelectHover .dijitArrowButton {
+       background-color:#abd6ff;
+}
+.claro .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner {
+       background-position:-70px 70%;
+}
+.claro .dijitSelectFocused {
+       border: 1px solid #769dc0;
+}
+.claro .dijitSelectFocused .dijitButtonContents {
+       border-color:#81a5c6;
+}
+.claro .dijitSelectFocused .dijitArrowButton {
+       background-color:#7dbefa;
+       background-position:0px -177px;
+       border: none;
+       padding: 0px 1px;
+}
+.claro .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner {
+       background-position:-70px 70%;
+       margin-bottom: 1px;
+}
+.claro .dijitSelectDisabled {
+       border: 1px solid #d3d3d3;
+       background-color: #efefef;
+       background-image: none;
+       color: #818181;
+}
+.claro .dijitSelectDisabled .dijitArrowButton { 
+       background-color: #efefef;
+}
+.claro .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner {
+       background-position:0px 70%
+}
+.claro .dijitSelectMenu td.dijitMenuItemIconCell,
+.claro .dijitSelectMenu td.dijitMenuArrowCell { 
+       
+       display: none;  
+}
+.claro .dijitSelectMenu td.dijitMenuItemLabel {
+       
+       padding-left: 5px;
+       padding-right: 5px;
+}
+.claro .dijitSelectMenu .dijitMenuSeparatorTop {
+       border-bottom:1px solid #769dc0;
+}
+.claro .dijitTabPaneWrapper {
+       background:#fff;
+}
+.claro .dijitTabPaneWrapper,
+.claro .dijitTabContainerTop-tabs,
+.claro .dijitTabContainerBottom-tabs,
+.claro .dijitTabContainerLeft-tabs,
+.claro .dijitTabContainerRight-tabs {
+       
+       border-color: #b5bcc7;
+}
+.claro .dijitTabCloseButton {
+       background: url(layout/images/tabClose.png) no-repeat;
+       width: 14px;
+       height: 14px;
+       margin-left: 5px;
+       margin-right:-3px;
+}
+.claro .dijitTabCloseButtonHover {
+       background-position:-14px;
+}
+.claro .dijitTabCloseButtonActive {
+       background-position:-28px;
+}
+.claro .dijitTabSpacer {
+       
+       display: none;
+}
+.claro .dijitTabInnerDiv {
+       background-color:#e6e6e7;
+       -webkit-transition-property:background-color, border;
+       -webkit-transition-duration:.35s;
+       color:#4a4a4a;
+}
+.claro .dijitTabHover .dijitTabInnerDiv {
+       background-color:#a9d6ff;
+       -webkit-transition-duration:.25s;
+       color:#000;
+}
+.claro .dijitTabActive .dijitTabInnerDiv {
+       background-color:#8bc4f9;
+       color:#000;
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitTabChecked .dijitTabInnerDiv {
+       background-color:#b2d4f3;
+       color:#000;
+}
+.claro .dijitTabContent {
+       border: 1px solid #b5bcc7;
+}
+.claro .dijitTabHover .dijitTabContent,
+.claro .dijitTabActive .dijitTabContent {
+       border-color: #769dc0;
+}
+.claro .dijitTabChecked .dijitTabContent {
+       color:#000;
+       border-color: #b5bcc7;  
+}
+.claro .tabStripButton .dijitTabInnerDiv {
+       background-color: transparent;
+}
+.claro .tabStripButton .dijitTabContent {
+       border: none;
+}
+.claro .dijitTabContainerTop-tabs .dijitTab {
+       top: 1px;       
+       margin-right: 1px;
+       padding-top: 3px;
+}
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTab {
+       top: 3px;
+}
+.claro .dijitTabContainerTop-tabs .dijitTabContent {
+       padding:3px 8px 3px 4px;
+       border-bottom: 1px;
+       background-image:url(layout/images/tabTop.png);
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       min-width: 60px;
+       text-align: center;
+}
+.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent {
+       padding-bottom: 4px;
+       padding-top: 6px;
+}
+.dj_ie .claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent {
+       border-bottom: none;
+}
+.claro .dijitTabContainerTop-tabs .dijitTabInnerDiv {
+       background-image:url(layout/images/tabTop.png);
+       background-position:0px -248px;
+       background-position:bottom;
+       background-repeat:repeat-x;
+       box-shadow: 0px -1px 1px rgba(0, 0, 0, 0.04);
+       -webkit-box-shadow: 0px -1px 1px rgba(0, 0, 0, 0.04);
+       -moz-box-shadow: 0px -1px 1px rgba(0, 0, 0, 0.04);
+}
+.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background-image:none;
+       box-shadow: 0px -1px 2px rgba(0, 0, 0, 0.05);
+       -webkit-box-shadow: 0px -1px 2px rgba(0, 0, 0, 0.05);
+       -moz-box-shadow: 0px -1px 2px rgba(0, 0, 0, 0.05);
+}
+.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent {
+       background-position:0px -102px;
+       background-repeat:repeat-x;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTab {
+       top: -1px;      
+       margin-right: 1px;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabContent {
+       padding:3px 8px 4px 4px;
+       border-top: none;
+       background-image: url(layout/images/tabBottom.png);
+       background-position:0px -249px;
+       background-repeat: repeat-x;
+       background-position:bottom;
+       min-width: 60px;
+       text-align: center;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTab {
+       padding-bottom: 3px;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv {
+       background-image: url(layout/images/tabBottom.png);
+       background-position: top;
+       background-repeat: repeat-x;
+       box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.04);
+       -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.04);
+       -moz-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.04);
+       
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabContent {
+       padding-bottom: 7px;
+       padding-top: 4px;
+       background-position:0px -119px;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabChecked {
+       padding-bottom: 0;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background-image:none;
+       box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);
+       -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);
+       -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);
+}
+.claro .dijitTabContainerLeft-tabs .dijitTab {
+       left: 1px;      
+       margin-bottom: 1px;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       background-image: url(layout/images/tabLeft.png);
+       background-position: -347px -340px;
+       background-repeat: repeat-y;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabContent {
+       padding:3px 8px 4px 4px;
+       background-image: url(layout/images/tabLeft.png);
+       background-repeat: repeat-y;
+       background-position:0px 0px;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabContent {
+       padding-right: 9px;
+       border-right: none;
+       background-image: none;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background-position:0px -179px;
+       background-repeat:repeat-y;
+       box-shadow: -1px 0px 2px rgba(0, 0, 0, .05);
+       -webkit-box-shadow: -1px 0px 2px rgba(0, 0, 0, .05);
+       -moz-box-shadow: -1px 0px 2px rgba(0, 0, 0, 0.05);
+}
+.claro .dijitTabContainerRight-tabs .dijitTab {
+       left: -1px;     
+       margin-bottom: 1px;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabInnerDiv {
+       background-image: url(layout/images/tabRight.png);
+       background-repeat: repeat-y;
+       background-position: -1px -347px;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabContent {
+       padding:3px 8px 4px 4px;
+       background-image: url(layout/images/tabRight.png);
+       background-position:right top;
+       background-repeat: repeat-y;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabContent {
+       padding-left: 5px;
+       border-left: none;
+       background-image: none;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background-position:-348px -179px;
+       box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.07);
+       -webkit-box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.07);
+       -moz-box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.07);
+}
+.claro .dijitTabContainerTop-tabs .dijitTabInnerDiv,
+.claro .dijitTabContainerTop-tabs .dijitTabContent {
+       border-radius: 2px 2px 0px 0px;
+       -moz-border-radius: 2px 2px 0px 0px;
+       -webkit-border-top-left-radius:2px;
+       -webkit-border-top-right-radius:2px;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv,
+.claro .dijitTabContainerBottom-tabs .dijitTabContent{
+       border-radius: 0px 0px 2px 2px;
+       -moz-border-radius: 0px 0px 2px 2px;
+       -webkit-border-bottom-right-radius:2px;
+       -webkit-border-bottom-left-radius:2px;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv,
+.claro .dijitTabContainerLeft-tabs .dijitTabContent{
+       border-radius: 2px 0px 0px 2px;
+       -moz-border-radius: 2px 0px 0px 2px;
+       -webkit-border-top-left-radius:2px;
+       -webkit-border-bottom-left-radius:2px;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabInnerDiv,
+.claro .dijitTabContainerRight-tabs .dijitTabContent{
+       border-radius: 0px 2px 2px 0px;
+       -moz-border-radius: 0px 2px 2px 0px;
+       -webkit-border-top-right-radius:2px;
+       -webkit-border-bottom-right-radius:2px;
+}
+.claro .tabStripButton {
+       background-color:#deecf9;
+       border: 1px solid #b5bcc7;
+}
+.claro .dijitTabListContainer-top .tabStripButton {
+       padding: 4px 3px;
+       margin-top:7px;
+       background-image: url(layout/images/tabTop.png);
+       background-position:0px 0px;
+}
+.claro .dijitTabListContainer-bottom .tabStripButton {
+       padding:5px 3px;
+       margin-bottom:4px;
+       background-image: url(layout/images/tabTop.png);
+       background-position:0px -248px;
+       background-position:bottom;
+}
+.claro .tabStripButtonHover {
+       background-color:#a6d2fb;
+}
+.claro .tabStripButtonActive {
+       background-color:#7dbefa;
+}
+.claro .dijitTabStripIcon {
+       height:15px;
+       width:15px;
+       margin: 0 auto;
+       background:url(form/images/buttonArrows.png) no-repeat -75px 50%;
+       background-color: transparent;
+}
+.claro .dijitTabStripSlideRightIcon{
+       background-position: -24px 50%;
+}
+.claro .dijitTabStripMenuIcon {
+       background-position: -51px 50%;
+}
+.claro .dijitTabListContainer-top .tabStripButtonDisabled,
+.claro .dijitTabListContainer-bottom .tabStripButtonDisabled {
+       background-color:#dddddd;
+       border:1px solid #c9c9c9;
+}
+.claro .tabStripButtonDisabled .dijitTabStripSlideLeftIcon {
+       background-position:-175px 50%;
+}
+.claro .tabStripButtonDisabled .dijitTabStripSlideRightIcon {
+       background-position: -124px 50%;
+}
+.claro .tabStripButtonDisabled .dijitTabStripMenuIcon {
+       background-position: -151px 50%;
+} 
+.claro .dijitTabContainerNested .dijitTabListWrapper {
+       height: auto;
+}
+.claro .dijitTabContainerNested .dijitTabContainerTop-tabs {
+       border-bottom:solid 1px #b5bcc7;
+       padding:1px 2px 4px;
+       margin-top:-2px;
+}
+.claro .dijitTabContainerTabListNested .dijitTabContent {
+       background:rgba(255, 255, 255, 0) none repeat scroll 0 0;
+       border: none;
+       padding: 4px;
+       border-color: rgba(118,157,192,0);
+       -webkit-transition-property:background-color, border-color;
+       -webkit-transition-duration:.3s;
+}
+.claro .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv {
+       
+       background: none;
+       border: none;
+       top: 0px;
+       box-shadow: none;
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+}
+.claro .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent {
+       background-color:#eaf4fc;
+       border-radius: 2px 2px 2px 2px;
+       -moz-border-radius: 2px 2px 2px 2px;
+       -webkit-border-radius:2px;
+       border:solid 1px #c8dff3;
+       padding: 3px;
+       webkit-transition-duration:.2s;
+}
+.claro .dijitTabContainerTabListNested .dijitTabHover .tabLabel {
+       text-decoration: none;
+}
+.claro .dijitTabContainerTabListNested .dijitTabActive .dijitTabContent {
+       border-radius: 2px 2px 2px 2px;
+       -moz-border-radius: 2px 2px 2px 2px;
+       -webkit-border-radius:2px;
+       border:solid 1px #a8c7e2;
+       padding: 3px;
+       background:#b9d9f5 url(layout/images/tabNested.png) repeat-x;
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent {
+       border-radius: 2px 2px 2px 2px;
+       -moz-border-radius: 2px 2px 2px 2px;
+       -webkit-border-radius:2px;
+       padding: 3px;
+       border:solid 1px #a8c7e2;
+       background-position: 0px 105px;
+       background-color:#d4e8f9;
+}
+.claro .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {
+       text-decoration: none;
+       background-image:none;
+}
+.claro .dijitTabPaneWrapperNested {
+       border: none;
+}
+.dj_ie6 .claro .dijitTabContent,
+.dj_ie6 .claro .dijitTabInnerDiv,
+.dj_ie6 .dijitTabListContainer-top .tabStripButton,
+.dj_ie6 .dijitTabListContainer-bottom .tabStripButton{
+       background-image: none;
+}
+.claro .dijitDialog {
+       border: 1px solid #769dc0;
+       box-shadow:0px 1px 5px rgba(0,0,0,0.25);
+       -webkit-box-shadow:0px 1px 5px rgba(0,0,0,0.25);
+       -moz-box-shadow: 0px 1px 5px rgba(0,0,0,0.25);
+} 
+.claro .dijitDialogPaneContent {
+       background: #fff repeat-x top left;
+       border-top: 1px solid #769dc0;
+       padding:10px 8px;
+       position: relative;
+}
+.claro .dijitDialogPaneContentArea {
+        
+       margin: -10px -8px;
+       padding: 10px 8px;
+}
+.claro .dijitDialogPaneActionBar {
+       
+       background-color: #f2f2f2;
+       padding: 3px 5px 2px 7px;
+       text-align: right;
+       border-top: 1px solid #cdcdcd;
+       margin: 10px -8px -10px;
+}
+.claro .dijitDialogPaneActionBar .dijitButton {
+       float: none;
+}
+.claro .dijitDialogTitleBar {
+       
+       border: 1px solid #fff;
+       border-top:none;
+       background-color: #abd6ff;
+       background-image: url(images/titlebar.png);
+       background-repeat:repeat-x;
+       padding: 5px 7px 4px 7px;
+}
+.claro .dijitDialogTitle {
+       
+       padding: 0px 1px;
+       font-size:1.091em;
+}
+.claro .dijitDialogCloseIcon {
+       
+       background: url(images/dialogCloseIcon.png);
+       background-repeat:no-repeat;
+       position: absolute;
+       right: 5px;
+       height: 15px;
+       width: 21px;
+}
+.dj_ie6 .claro .dijitDialogCloseIcon {
+       background-image: url(images/dialogCloseIcon8bit.png);
+}
+.claro .dijitDialogCloseIconHover {
+       background-position:-21px;
+}
+.claro .dijitDialogCloseIconActive {
+       background-position:-42px;
+}
+.claro .dijitTooltip,
+.claro .dijitTooltipDialog {
+       
+       background: transparent;        
+}
+.dijitTooltipBelow {
+       
+       padding-top: 13px;
+       padding-left:3px;
+       padding-right:3px;
+}
+.dijitTooltipAbove {
+       
+       padding-bottom: 13px;
+       padding-left:3px;
+       padding-right:3px;
+}
+.claro .dijitTooltipContainer {
+       
+       background-color:#fff;
+       background-image:url(images/tooltip.png);
+       background-repeat:repeat-x;
+       background-position:-575px 100%;
+       border:1px solid #769DC0;
+       padding:6px 8px;
+       border-radius: 4px;
+       -webkit-border-radius: 4px;
+       -moz-border-radius: 4px;
+       box-shadow:0px 1px 3px rgba(0,0,0,0.25);
+       -webkit-box-shadow:0px 1px 3px rgba(0,0,0,0.25);
+       -moz-box-shadow: 0px 1px 3px rgba(0,0,0,0.25);
+       font-size: 1em;
+} 
+.dj_ie6 .claro .dijitTooltipContainer {
+       background-image: none;
+}
+.claro .dijitTooltipConnector {
+       
+       border: 0px;
+       z-index: 2;
+       background-image:url(images/tooltip.png);
+       background-repeat:no-repeat;
+       width:16px;
+       height:14px;
+}
+.dj_ie6 .claro .dijitTooltipConnector {
+       background-image:url(images/tooltip8bit.png);
+}
+.claro .dijitTooltipABRight .dijitTooltipConnector {
+       
+       left: auto !important;
+       right: 3px;
+}
+.claro .dijitTooltipBelow .dijitTooltipConnector {
+       
+       top: 0px;
+       left: 3px;
+       background-position:-31px 0%;
+       width:16px;
+       height:14px;
+}
+.claro .dijitTooltipAbove .dijitTooltipConnector {
+       
+       bottom: 0px;
+       left: 3px;
+       background-position:-15px 0%;
+       width:16px;
+       height:14px;
+}
+.dj_ie7 .claro .dijitTooltipAbove .dijitTooltipConnector,
+.dj_ie6 .claro .dijitTooltipAbove .dijitTooltipConnector {
+       bottom: -1px;
+}
+.claro .dijitTooltipLeft {
+       padding-right: 14px;
+}
+.dj_ie6 .claro .dijitTooltipLeft {
+       padding-left: 15px;
+}
+.claro .dijitTooltipLeft .dijitTooltipConnector {
+       
+       right: 0px;
+       bottom: 3px;
+       background-position:0px 0%;
+       width:16px;
+       height:14px;
+}
+.claro .dijitTooltipRight {
+       padding-left: 14px;
+}
+.claro .dijitTooltipRight .dijitTooltipConnector {
+       
+       left: 0px;
+       bottom: 3px;
+       background-position:-48px 0%;
+       width:16px;
+       height:14px;
+}
+.claro .dijitDialogUnderlay {
+       background: #fff;
+}
+.claro .dijitAccordionContainer {
+       border:none;
+}
+.claro .dijitAccordionInnerContainer {
+       background-color: #e6e6e7;      
+       border:solid 1px #b5bcc7;
+       margin-bottom:1px;
+       -webkit-transition-property:background-color,border;
+       -webkit-transition-duration:.3s;
+       -webkit-transition-timing-function:linear;
+}
+.claro .dijitAccordionTitle {
+       background-color: transparent;  
+       background-image: url(layout/images/accordion.png);
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       padding: 5px 7px 2px 7px;
+       min-height:17px;
+       color:#4a4a4a;
+}
+.dj_ie6 .claro .dijitAccordionTitle {
+       background-image: none;
+}
+.claro .dijitAccordionContainer .dijitAccordionContainer-child {
+       background-color:#fff;
+       
+       border:1px solid #92bce1 !important;
+       margin: 0px 2px 2px;
+       padding: 9px;
+}
+.claro .dijitAccordionInnerContainerActive {
+       border:1px solid #769DC0;
+       background-color:#7dbefa;
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitAccordionInnerContainerActive .dijitAccordionTitle {
+       background-position:0px -136px;
+       color:#000;
+}
+.claro .dijitAccordionInnerContainerSelected {
+       border-color:#92bce1;
+       background-color: #cde8ff;
+}
+.claro .dijitAccordionInnerContainerSelected .dijitAccordionTitle {
+       color:#000;
+       background-position: 0 0;       
+}
+.claro .dijitAccordionInnerContainerHover dijitAccordionTitle {
+       
+       color:#000;
+}
+.claro .dijitAccordionInnerContainerHover,
+.claro .dijitAccordionInnerContainerSelectedActive {
+       border:1px solid #769DC0;
+       background-color:#9dcfff;
+       -webkit-transition-duration:.2s;
+}
+.claro .dijitAccordionInnerContainerSelectedHover .dijitAccordionContainer-child,
+.claro .dijitAccordionInnerContainerSelectedActive .dijitAccordionContainer-child {
+       background-color:#ffffff;
+       border:1px solid #769DC0 !important;
+       -webkit-box-shadow:inset 0px 0px 3px rgba(0, 0, 0, .25);
+       -moz-box-shadow:inset 0px 0px 3px rgba(0, 0, 0, .25);
+}
+.claro .dijitContentPane {
+       padding: 8px;
+}              
+.claro .dijitTabContainerTop-dijitContentPane,
+.claro .dijitTabContainerLeft-dijitContentPane,
+.claro .dijitTabContainerBottom-dijitContentPane,
+.claro .dijitTabContainerRight-dijitContentPane,
+.claro .dijitAccordionContainer-dijitContentPane {
+       background-color: #fff;
+       padding: 8px;           
+}
+.claro .dijitSplitContainer-dijitContentPane,
+.claro .dijitBorderContainer-dijitContentPane {
+       background-color: #fff;         
+       padding: 8px;
+}
+.claro .dijitCalendar {
+       border:solid 1px #b5bcc7;
+       background-color:#d4ebff;
+       background-image:url(images/calendarContainerImages.png);
+       background-position:0px -448px;
+       background-repeat:repeat-x;
+       text-align:center;
+       padding:6px 5px 3px 5px;
+       -moz-border-radius:4px;
+       -webkit-border-radius:4px;      
+}
+.dj_ie6 .claro .dijitCalendar {
+       background-image:none;
+}
+.claro .dijitCalendar img {
+       border:none;
+}
+.claro .dijitCalendarHover,
+.claro .dijitCalendarActive {
+       background-color: #b7dcff;
+       border:solid 1px #769dc0;
+}
+.claro .dijitCalendarMonthContainer th {
+       text-align:center;
+       padding-bottom:4px;
+       vertical-align:middle;
+}
+.claro .dijitCalendarMonthLabelSpacer {
+       display:none;
+}
+.claro .dijitCalendarMonthLabel {
+       color:#000000;
+       font-size: 1.091em;
+       display: block;
+}
+.claro .dijitCalendarIncrementControl {
+       width:18px;
+       height:16px;
+       background-image: url(images/calendarArrows.png);
+       background-repeat: no-repeat;
+}
+.dj_ie6 .claro .dijitCalendarIncrementControl {
+       background-image: url(images/calendarArrows8bit.png);
+}
+.claro .dijitCalendarIncrease {
+       background-position:-18px 0px;
+}
+.claro .dijitCalendarArrowHover .dijitCalendarDecrease {
+       background-position:-36px 0px;
+}
+.claro .dijitCalendarArrowHover .dijitCalendarIncrease {
+       background-position:-55px 0px;
+}
+.claro .dijitCalendarArrowActive .dijitCalendarDecrease {
+       background-position:-72px 0px;
+}
+.claro .dijitCalendarArrowActive .dijitCalendarIncrease {
+       background-position:-91px 0px;
+}
+.claro .dijitA11ySideArrow {
+       
+       display: none;
+}
+.claro .dijitDayLabels th {
+       padding:0px 4px 0px 4px;
+       border-bottom:solid 1px #99b5cd;
+       font-weight:bold;
+       text-align:center;
+}
+.claro .dijitCalendarDayLabelTemplate {
+       padding-bottom:0em;
+       text-align:center;
+       border-bottom:1px solid #99B5CD;
+       font-size:0.909em;
+       padding:0 3px 2px;
+}
+.claro .dijitCalendarDateTemplate {
+       text-align:center;
+       background-color:#fff;
+       background-image:url(images/calendarContainerImages.png);
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       border-bottom: 1px solid #dadde1;
+       padding-top:0px;
+       font-size:0.909em;
+       font-family: Arial;
+       font-weight:bold;
+       letter-spacing:.05em;
+       text-align:center;
+}
+.dj_ie6 .claro .dijitCalendarDateTemplate {
+       background-image: none;
+}
+.claro .dijitCalendarPreviousMonth,
+.claro .dijitCalendarNextMonth {
+       background-color:#ebf3f9;
+       background-image:none;
+       border-bottom:solid 1px #d2dae8;
+       color:#547da1;
+}
+.claro .dijitCalendarDateTemplate .dijitCalendarDateLabel {
+       text-decoration:none;
+       display:block;
+       padding:3px 5px 3px 4px;
+       border:solid 1px #fff;
+       color:#1e1e1e;
+       background-color:rgba(171,212,251,0);   
+       -webkit-transition-property:background-color, border;
+       -webkit-transition-duration:.35s;
+}
+.claro .dijitCalendarPreviousMonth .dijitCalendarDateLabel,
+.claro .dijitCalendarNextMonth .dijitCalendarDateLabel{
+       color:#547da1;
+       border-color:#ebf3f9;
+}
+.claro .dijitCalendarYearContainer {
+       vertical-align:middle;
+}
+.claro .dijitCalendarYearControl {
+       padding: 1px 2px 2px 2px;
+}
+.claro .dijitCalendarYearLabel {
+       padding:2px 0px 0px 0px;
+       margin:0;
+}
+.claro .dijitCalendarYearLabel span {
+       
+       vertical-align:middle;
+}
+.claro .dijitCalendarSelectedYear {
+       padding:0px 3px;
+}
+.claro .dijitCalendarNextYear,
+.claro .dijitCalendarPreviousYear {
+       padding: 1px 6px 1px 6px;
+       font-size:0.909em;
+}
+.claro .dijitCalendarSelectedYear {
+       font-size:1.091em;
+       color:#000;
+}
+.claro .dijitCalendarHoveredDate .dijitCalendarDateLabel{
+       background-color:#abd4fb;
+       border:solid 1px #729dc2;
+       color:#000;
+       -webkit-transition-duration:.2s;
+}
+.claro .dijitCalendarNextYearHover,
+.claro .dijitCalendarPreviousYearHover {
+       color:#000;
+       border:solid 1px #fefefe;
+       padding: 0px 5px 0px 5px;       
+       background-color:#eaf4fe;
+}
+.claro .dijitCalendarNextYearActive,
+.claro .dijitCalendarPreviousYearActive {
+       border: solid 1px #87b3d9;
+       padding: 0px 5px 0px 5px;       
+       background-color:#90bde6;
+}
+.claro .dijitCalendarActiveDate .dijitCalendarDateLabel {
+       background-image:url(images/calendarContainerImages.png);
+       background-position:0px -300px;
+       background-color:#75b5f0;
+       border:solid 1px #fff;
+       -webkit-transition-duration:.1s;
+}
+.dj_ie6 .claro .dijitCalendarActiveDate .dijitCalendarDateLabel {
+       background-image:none;
+}
+.claro .dijitCalendarSelectedDate .dijitCalendarDateLabel {
+       color:#000;
+       background-color:#e7f4ff;
+       border-color:#accfed;
+}
+.claro .dijitCalendarDisabledDate .dijitCalendarDateLabel {
+       text-decoration:line-through;
+       
+       
+       background-color: transparent;
+       border-width: 0px;
+       padding: 4px 6px 4px 5px;
+       color: #547DA1;
+}
+.claro .dijitCalendarMonthContainer .dijitMenu{
+       
+       top: 20px !important;
+       left: 0px;
+       border-color: #769dc0;
+       background-color: #fff;
+       text-align:center;
+       background-image: none;
+}
+.claro .dijitCalendarMonthContainer .dijitMenu .dijitCalendarMonthLabel{
+       border-top: solid 1px #fff;
+       border-bottom: solid 1px #fff;
+       padding: 2px 20px;
+}
+.claro .dijitCalendarMonthContainer .dijitMenu .dijitMenuItemHover {
+       background-color: #abd6ff;
+       border-color: #769dc0;
+       border-width:1px 0px;
+       background-image: url(images/commonHighlight.png);
+       background-repeat:repeat-x;
+}
+.claro .dijitMenuBar {
+       border: 1px solid #b5bcc7;
+       margin: 0px;
+       padding: 0px;
+       background-color: #e6e6e7;
+       background-image: url(images/commonHighlight.png);
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+}
+.dj_ie6 .claro .dijitMenuBar {
+       background-image:none;
+}
+.claro .dijitMenu {
+       background-repeat:repeat-y;
+       background-color:#fff;
+       border: 1px solid #769dc0;
+       
+       margin: -1px 0;
+}
+.claro .dijitMenuBar .dijitMenuItem {  
+       padding: 6px 10px 7px;
+       background-position:0px 100px;
+       color:#4a4a4a;
+       margin:-1px;
+}      
+.claro .dijitMenuItem {
+       background-image: url(images/menuHighlight.png);
+       background-position:0px -40px;
+       background-repeat:repeat-x;
+}
+.claro .dijitMenuTable {
+       border-collapse:separate;
+       border-spacing:0 0;
+       padding:0px;
+}
+.claro .dijitMenuItem td{
+       padding:1px;
+}
+.claro .dijitMenuPassive .dijitMenuItemHover,
+.claro .dijitMenuPassive .dijitMenuItemSelected {
+       background-color: #abd6ff;
+       border:solid 1px #769dc0;
+       background-position:0px 0px;
+       color:#000;
+       padding: 5px 9px 6px;
+}
+.claro .dijitMenuPassive .dijitMenuItemActive{
+       background-position:0px -177px;
+}
+.dj_ie6 .claro .dijitMenuItem,
+.dj_ie6 .claro .dijitMenuPassive .dijitMenuItem {
+       background-image: none;
+}
+.claro .dijitMenuActive .dijitMenuItemHover,
+.claro .dijitMenuActive .dijitMenuItemSelected {
+       border:solid 1px #769dc0;
+       padding: 5px 9px 6px;
+       background-color: #9dcfff;
+       background-position:0px 0px;
+       color:#000;
+}
+.dj_ie .claro .dijitMenuActive .dijitMenuItemHover,
+.dj_ie .claro .dijitMenuActive .dijitMenuItemSelected,
+.dj_ie .claro .dijitMenuPassive .dijitMenuItemHover,
+.dj_ie .claro .dijitMenuPassive .dijitMenuItemSelected {
+       padding-top: 6px;
+       padding-bottom: 5px;
+       margin-top: -3px;
+}
+.claro .dijitMenuActive .dijitMenuItemActive{
+       background-color: #7dbefa;
+       background-position:0px -177px;
+}
+.claro .dijitMenuItemActive {
+       background-position:0px -177px;
+}
+.claro td.dijitMenuItemIconCell {
+ padding: 2px;
+ margin: 0px 0px 0px 4px;
+}
+.claro td.dijitMenuItemLabel {
+       padding-top: 5px;
+       padding-bottom: 5px;
+}
+.claro .dijitMenuExpand {
+       width: 7px;
+       height: 7px;
+       background-image: url(images/spriteArrows.png);
+       background-position: -14px 0px;
+       margin-right:3px;
+}
+.claro .dijitMenuItemDisabled .dijitMenuItemIconCell {
+       opacity:1;
+}
+.claro .dijitMenuSeparatorTop {
+       height: auto;
+       margin-top:1px; 
+       border-bottom: 1px solid #b5bcc7
+}
+.claro .dijitMenuSeparatorBottom{
+       height: auto;
+       margin-bottom:1px;
+}
+.claro .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.claro .dijitCheckedMenuItemIcon {
+       background-image: url(form/images/checkboxRadioButtonStates.png);
+       background-repeat:no-repeat;
+       background-position: -15px 50%;
+       width:15px;
+       height:16px;
+}
+.dj_ie6 .claro .dijitCheckedMenuItemIcon {
+       background-image: url(form/images/checkboxAndRadioButtons_IE6.png);
+}
+.claro .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: 0 50%;
+}
+.claro .dijitComboBoxMenu {
+       margin-left:0px;
+       background-image: none;
+}
+.claro .dijitComboBoxMenu .dijitMenuItem{
+       padding:2px 0px;
+       text-indent:6px;
+       border-width:1px 0px 1px 0px;
+       border-style:solid;
+       border-color:#fff;
+}
+.claro .dijitComboBoxMenu .dijitMenuItemSelected {
+       color:#000;
+       border-color:#768dc0;
+       background-color:#abd6ff;
+}
+.claro .dijitComboBoxMenuActive .dijitMenuItemSelected {
+       background-position:0px -177px;
+       background-color:#7dbefa;
+}
+.claro .dijitMenuPreviousButton, .claro .dijitMenuNextButton {
+       font-style: italic;
+}
+.claro .dijitSliderBar {
+       border-style: solid;
+       outline: 1px;
+}
+.claro .dijitSliderFocused .dijitSliderBar {
+       border-color: #769dc0;
+}
+.claro .dijitSliderHover .dijitSliderBar {
+       border-color: #769dc0;
+}
+.claro .dijitSliderDisabled .dijitSliderBar {
+       background-image: none;
+       border-color: #d3d3d3;
+}
+.claro .dijitRuleLabelsContainerH {
+       padding: 2px 0px;
+}
+.claro .dijitSlider .dijitSliderProgressBarH,
+.claro .dijitSlider .dijitSliderLeftBumper{
+       background-image: url(form/images/sliderHorizontal.png);
+       background-repeat:repeat-x;
+       background-position:0 -20px;
+       border-color: #b5bcc7;
+       background-color: #cfe5fa;
+}
+.claro .dijitSlider .dijitSliderRemainingBarH,
+.claro .dijitSlider .dijitSliderRightBumper{
+       background-image: url(form/images/sliderHorizontal.png);
+       background-repeat:repeat-x;
+       background-position:0 -11px;
+       border-color: #b5bcc7;
+       background-color: #fff;
+}
+.claro .dijitSliderRightBumper {
+       border-right: solid 1px #b5bcc7;
+}
+.claro .dijitSliderLeftBumper {
+       border-left: solid 1px #b5bcc7;
+}
+.claro .dijitSliderHover .dijitSliderProgressBarH,
+.claro .dijitSliderHover .dijitSliderLeftBumper{
+       background-position:0 -20px;
+       background-color: #abd6ff;
+       border-color: #769dc0;
+}
+.claro .dijitSliderHover .dijitSliderRemainingBarH,
+.claro .dijitSliderHover .dijitSliderRightBumper{
+       background-position:0 0px;
+       background-color: #fff;
+       border-color: #769dc0;
+}
+.claro .dijitSliderFocused .dijitSliderProgressBarH,
+.claro .dijitSliderFocused .dijitSliderLeftBumper{
+       background-position:0 -30px;
+       background-color: #abd6ff;
+       border-color: #769dc0;
+}
+.claro .dijitSliderFocused .dijitSliderRemainingBarH,
+.claro .dijitSliderFocused .dijitSliderRightBumper{
+       background-position:0 -9px;
+       background-color: #fff;
+       border-color: #769dc0;
+}
+.claro .dijitSliderDisabled .dijitSliderProgressBarH,
+.claro .dijitSliderDisabled .dijitSliderLeftBumper{
+       background-color: #cdcdcd;
+       background-image:none;
+}
+.claro .dijitSliderDisabled .dijitSliderRemainingBarH,
+.claro .dijitSliderDisabled .dijitSliderRightBumper{
+       background-color: #efefef;
+}
+.claro .dijitRuleLabelsContainerV {
+       padding: 0px 2px;
+}
+.claro .dijitSlider .dijitSliderProgressBarV,
+.claro .dijitSlider .dijitSliderBottomBumper{
+       background-image: url(form/images/sliderVertical.png);
+       background-repeat:repeat-y;
+       background-position:-36px 0;
+       border-color: #b5bcc7;
+       background-color: #cfe5fa;
+}
+.claro .dijitSlider .dijitSliderRemainingBarV,
+.claro .dijitSlider .dijitSliderTopBumper{
+       background-image: url(form/images/sliderVertical.png);
+       background-repeat:repeat-y;
+       background-position:-3px 0;
+       border-color: #b5bcc7;
+       background-color: #fff;
+}
+.claro .dijitSliderBottomBumper {
+       border-bottom: solid 1px #b5bcc7;
+}
+.claro .dijitSliderTopBumper {
+       border-top: solid 1px #b5bcc7;
+}
+.claro .dijitSliderHover .dijitSliderProgressBarV,
+.claro .dijitSliderHover .dijitSliderBottomBumper{
+       background-position:-36px 0;
+       background-color: #abd6ff;
+}
+.claro .dijitSliderHover .dijitSliderRemainingBarV,
+.claro .dijitSliderHover .dijitSliderTopBumper{
+       background-position:0 0;
+       background-color: #fff;
+}
+.claro .dijitSliderFocused .dijitSliderProgressBarV,
+.claro .dijitSliderFocused .dijitSliderBottomBumper{
+       background-position:-56px 0;
+       background-color: #abd6ff;
+}
+.claro .dijitSliderFocused .dijitSliderRemainingBarV,
+.claro .dijitSliderFocused .dijitSliderTopBumper{
+       background-position:-18px 0;
+       background-color: #fff;
+}
+.claro .dijitSliderDisabled .dijitSliderProgressBarV,
+.claro .dijitSliderDisabled .dijitSliderBottomBumper{
+       background-color: #cdcdcd;
+}
+.claro .dijitSliderDisabled .dijitSliderRemainingBarV,
+.claro .dijitSliderDisabled .dijitSliderTopBumper{
+       background-color: #efefef;
+}
+.claro .dijitSliderImageHandleH {
+       border: 0px;
+       width: 18px;
+       height: 16px;
+       background-image: url(form/images/sliderThumbs.png);
+       background-repeat:no-repeat;
+       background-position:0 0;
+}
+.claro .dijitSliderHover .dijitSliderImageHandleH {
+       background-position:-18px 0;
+}
+.claro .dijitSliderFocused .dijitSliderImageHandleH {
+       background-position:-36px 0;
+}
+.claro .dijitSliderProgressBarH .dijitSliderThumbHover{
+       background-position:-36px 0;
+}
+.claro .dijitSliderProgressBarH .dijitSliderThumbActive{
+       background-position:-36px 0;
+}
+.claro .dijitSliderReadOnly .dijitSliderImageHandleH,
+.claro .dijitSliderDisabled .dijitSliderImageHandleH {
+       background-position:-54px 0;
+}
+.claro .dijitSliderImageHandleV {
+       border: 0px;
+       width: 18px;
+       height: 16px;
+       background-image: url(form/images/sliderThumbs.png);
+       background-repeat:no-repeat;
+       background-position:-289px 0;
+}
+.claro .dijitSliderHover .dijitSliderImageHandleV {
+       background-position:-307px 0;
+}
+.claro .dijitSliderFocused .dijitSliderImageHandleV {
+       background-position:-325px 0;
+}
+.claro .dijitSliderProgressBarV .dijitSliderThumbHover{
+       background-position:-325px 0;
+}
+.claro .dijitSliderProgressBarV .dijitSliderThumbActive{
+       background-position:-325px 0;
+}
+.claro .dijitSliderReadOnly .dijitSliderImageHandleV,
+.claro .dijitSliderDisabled .dijitSliderImageHandleV {
+       background-position:-343px 0;
+}
+.claro .dijitSliderButtonContainerH{
+       padding: 1px 3px 1px 2px;
+}
+.claro .dijitSliderButtonContainerV{
+       padding: 3px 1px 2px 1px;
+}
+.claro .dijitSliderDecrementIconH,
+.claro .dijitSliderIncrementIconH,
+.claro .dijitSliderDecrementIconV,
+.claro .dijitSliderIncrementIconV {
+       background-image: url(form/images/commonFormArrows.png);
+       background-repeat:no-repeat;
+       background-color: #e9ecf2;
+       -moz-border-radius: 2px;
+       -webkit-border-radius: 2px;
+       border: solid 1px #b5bcc7;
+       font-size: 1px;
+}
+.claro .dijitSliderDecrementIconH,
+.claro .dijitSliderIncrementIconH {
+       height: 12px;
+       width: 9px;
+}
+.claro .dijitSliderDecrementIconV,
+.claro .dijitSliderIncrementIconV {
+       height: 9px;
+       width: 12px;
+}
+.claro .dijitSliderActive .dijitSliderDecrementIconH,
+.claro .dijitSliderActive .dijitSliderIncrementIconH,
+.claro .dijitSliderActive .dijitSliderDecrementIconV,
+.claro .dijitSliderActive .dijitSliderIncrementIconV,
+.claro .dijitSliderHover .dijitSliderDecrementIconH,
+.claro .dijitSliderHover .dijitSliderIncrementIconH,
+.claro .dijitSliderHover .dijitSliderDecrementIconV,
+.claro .dijitSliderHover .dijitSliderIncrementIconV {
+       border: solid 1px #769dc0;
+       background-color:#fff;
+}
+.claro .dijitSliderDecrementIconH {
+       background-position:-357px 50%;
+}
+.claro .dijitSliderActive .dijitSliderDecrementIconH
+.claro .dijitSliderHover .dijitSliderDecrementIconH {
+       background-position:-393px 50%;
+}
+.claro .dijitSliderIncrementIconH {
+       background-position:-251px 50%;
+}
+.claro .dijitSliderActive .dijitSliderIncrementIconH
+.claro .dijitSliderHover .dijitSliderIncrementIconH {
+       background-position:-283px 50%;
+}
+.claro .dijitSliderDecrementIconV {
+       background-position:-38px 50%;
+}
+.claro .dijitSliderActive .dijitSliderDecrementIconV
+.claro .dijitSliderHover .dijitSliderDecrementIconV {
+       background-position:-73px 50%;
+}
+.claro .dijitSliderIncrementIconV {
+       background-position:-143px 49%;
+}
+.claro .dijitSliderActive .dijitSliderIncrementIconV
+.claro .dijitSliderHover .dijitSliderIncrementIconV {
+       background-position:-178px 49%;
+}
+.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover,
+.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover,
+.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover,
+.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover {
+       background-color: #cce3fc;
+}
+.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive,
+.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive,
+.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive,
+.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive {
+       background-color: #a5d0fc;
+       border-color:#6591b9;
+}
+.claro .dijitSliderButtonInner {
+       visibility: hidden;
+}
+.claro .dijitSliderDisabled .dijitSliderBar{
+       border-color: #d3d3d3;
+}
+.claro .dijitSliderReadOnly *,.claro .dijitSliderDisabled * {
+       border-color: #d3d3d3;
+       color: #bdbdbd;
+}
+.claro .dijitSliderReadOnly .dijitSliderDecrementIconH,
+.claro .dijitSliderDisabled .dijitSliderDecrementIconH {
+       background-position:-321px 50%;
+       background-color:#e9e9e9;
+}
+.claro .dijitSliderReadOnly .dijitSliderIncrementIconH,
+.claro .dijitSliderDisabled .dijitSliderIncrementIconH {
+       background-position:-215px 50%;
+       background-color:#e9e9e9;
+}
+.claro .dijitSliderReadOnly .dijitSliderDecrementIconV,
+.claro .dijitSliderDisabled .dijitSliderDecrementIconV {
+       background-position:-3px 49%;
+       background-color:#e9e9e9;
+}
+.claro .dijitSliderReadOnly .dijitSliderIncrementIconV,
+.claro .dijitSliderDisabled .dijitSliderIncrementIconV {
+       background-position:-107px 49%;
+       background-color:#e9e9e9;
+}
+.dj_ie6 .claro .dijitSlider .dijitSliderProgressBarH,
+.dj_ie6 .claro .dijitSlider .dijitSliderLeftBumper,
+.dj_ie6 .claro .dijitSlider .dijitSliderRemainingBarH,
+.dj_ie6 .claro .dijitSlider .dijitSliderRightBumper,
+.dj_ie6 .claro .dijitSlider .dijitSliderProgressBarV,
+.dj_ie6 .claro .dijitSlider .dijitSliderTopBumper,
+.dj_ie6 .claro .dijitSlider .dijitSliderRemainingBarV,
+.dj_ie6 .claro .dijitSlider .dijitSliderBottomBumper {
+       background-image:none;
+}
+.claro  .dijitColorPalette {
+       outline: 1px solid #769dc0; 
+       border: 1px solid #c0ccdf;
+       background:#fff;
+       -moz-border-radius: 0px;
+}
+.claro .dijitColorPalette .dijitPaletteImg {
+       
+       border: 1px solid #cecece;
+}
+.claro .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       border: 1px solid #000;
+}
+.claro .dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg,
+.claro .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg {
+       border: 2px solid #000;
+}
+.claro .dijitInlineEditBoxDisplayMode {
+       border: 1px solid transparent;
+}
+.claro .dijitInlineEditBoxDisplayModeHover {
+       background-color: #e2f1ff;
+       border: solid 1px #769dc0;
+}
+.dj_ie6 .claro .dijitInlineEditBoxDisplayMode {
+       border: none;
+}
+.claro .dijitProgressBar {
+       margin:2px 0px 2px 0px;
+}
+.claro .dijitProgressBarEmpty {
+       
+       background:#fff url(images/progressBarEmpty.png) repeat-none left;
+       border-color: #769dc0;
+}
+.claro .dijitProgressBarTile {
+       
+       background:#9dcfff url(images/progressBarFull.png) repeat-x top;        
+}
+.dj_ie6 .claro .dijitProgressBarTile {
+       background-image: none;
+} 
+.claro .dijitProgressBarFull {
+       border-right:1px solid #769dc0;
+}
+.claro .dijitProgressBarLabel {
+       
+       color:#293a4b;
+}
+.claro .dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+       background:#cad2de url(images/progressBarAnim.gif) repeat-x top;
+} 
+.claro .dijitTimePicker .dijitButtonNode {
+       padding: 0 0;
+       border-radius: 0;
+       -moz-border-radius: 0;
+       -webkit-border-radius: 0;
+}
+.claro .dijitTimePicker{
+       border:1px #b5bcc7 solid;
+       border-top:none;
+       border-bottom:none;
+       background-color:#fff;
+}
+.claro .dijitTimePickerItem{
+       
+       background-image: url(images/commonHighlight.png);
+       background-position:0px -1px;
+       background-repeat:repeat-x;
+       border-top:solid 1px #b5bcc7;
+       border-bottom:solid 1px #b5bcc7;
+       margin-right:-1px;
+       margin-left:-1px;
+       margin-top:-1px;
+}
+.dj_ie6 .claro .dijitTimePickerItem {
+       background-image: none;
+}
+.claro .dijitTimePickerTick {
+       
+       color:#7a7a7a;
+       background-color:#f2f2f2;
+       font-size:0.818em;
+}
+.claro .dijitTimePickerMarker {
+       
+       color:#000;
+       background-color:#e3f2ff;
+       font-size: 1em;
+       white-space: nowrap;
+}
+.claro .dijitTimePickerTickHover,
+.claro .dijitTimePickerMarkerHover,
+.claro .dijitTimePickerMarkerSelected,
+.claro .dijitTimePickerTickSelected {
+       background-color: #83c0fa;
+       color:#000;
+       border:solid 1px #b5bcc7;
+       margin-left:-7px;
+       margin-right:-7px;
+}
+.claro .dijitTimePickerMarkerSelected,
+.claro .dijitTimePickerTickSelected {
+       font-size: 1em;
+       }
+.dj_ie .claro .dijitTimePickerTickHover,
+.dj_ie .claro .dijitTimePickerMarkerHover,
+.dj_ie .claro .dijitTimePickerMarkerSelected,
+.dj_ie .claro .dijitTimePickerTickSelected  {
+       width: 114%;
+}
+.dj_ie6 .claro .dijitTimePickerTickHover,
+.dj_ie6 .claro .dijitTimePickerMarkerHover,
+.dj_ie6 .claro .dijitTimePickerMarkerSelected,
+.dj_ie6 .claro .dijitTimePickerTickSelected  {
+       position: relative;     
+       zoom: 1; 
+}
+.claro .dijitTimePickerTick .dijitTimePickerItemInner {
+       padding:1px;
+       margin:0px;
+}
+.claro .dijitTimePicker .dijitButtonNode {
+       border-left:none;
+       border-right:none;
+       border-color:#b5bcc7;
+       background-color: #f6f7fa;
+       background-image: url(images/commonHighlight.png);
+       background-position:0px -1px;
+       background-repeat:repeat-x;
+}
+.dj_ie6 .claro .dijitTimePicker .dijitButtonNode {
+       background-image: none;
+}
+.claro .dijitTimePicker .dijitArrowButtonInner{
+       height: 100%; 
+       background-image: url(form/images/commonFormArrows.png);
+       background-repeat: no-repeat;
+       background-position:-140px 45%;
+}
+.claro .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner{
+       background-position:-35px 45%;
+}
+.claro .dijitTimePicker .dijitUpArrowHover, 
+.claro .dijitTimePicker .dijitDownArrowHover {
+       background-color: #abd6ff;
+}
+.claro .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner {
+       background-position:-175px 45%;
+}
+.claro .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner {
+       background-position:-70px 45%;
+}
+.claro .dijitBorderContainer {
+       border: 1px #b5bcc7 solid;
+       padding: 5px;
+}
+.claro .dijitSplitContainer-child,
+.claro .dijitBorderContainer-child {
+       
+       border: 1px #b5bcc7 solid;
+}
+.claro .dijitBorderContainer-dijitTabContainerTop,
+.claro .dijitBorderContainer-dijitTabContainerBottom,
+.claro .dijitBorderContainer-dijitTabContainerLeft,
+.claro .dijitBorderContainer-dijitTabContainerRight,
+.claro .dijitBorderContainer-dijitAccordionContainer {
+       
+        border: none;
+}
+.claro .dijitBorderContainer-dijitBorderContainer {
+       
+       border: 1px #c0ccdf solid;
+       padding: 5px;
+}
+.claro .dijitSplitterH,
+.claro .dijitGutterH {
+       background:none;
+       border:0;
+       height:5px;
+}
+.claro .dijitSplitterH .dijitSplitterThumb {
+       background:#dde2e9 none;
+       height:1px;
+       top:2px;
+       width:19px;
+}
+.claro .dijitSplitterV,
+.claro .dijitGutterV {
+       background:none;
+       border:0;
+       width:5px;
+       margin: 0;
+}
+.claro .dijitSplitterV .dijitSplitterThumb {
+       background:#dde2e9 none;
+       height:19px;
+       left:2px;
+       width:1px;
+       margin: 0;
+}
+.claro .dijitSplitterHHover {
+       font-size: 1px;
+       background: url(layout/images/splitterHorizontalHover.png) no-repeat center top;
+}
+.claro .dijitSplitterHHover .dijitSplitterThumb {
+       background:#769dc0 none;
+}
+.claro .dijitSplitterVHover {
+       font-size: 1px;
+       background: url(layout/images/splitterVerticalHover.png) no-repeat center left;
+}
+.claro .dijitSplitterVHover .dijitSplitterThumb {
+       background:#769dc0 none;
+}
+.dj_ie6 .dijitSplitterHHover,
+.dj_ie6 .claro .dijitSplitterVHover {
+       background-color:#cfe9ff;
+       background-image:none;
+}
+.claro .dijitSplitterHActive {
+       font-size: 1px;
+       background-color:#abd4fb;
+       border-top:blue;
+}
+.claro .dijitSplitterVActive {
+       font-size: 1px;
+       background-color:#abd4fb;
+}
+.claro .dijitTreeNode {
+    zoom: 1;   
+}
+.claro .dijitTreeIsRoot {
+    background-image: none;
+}
+.claro .dijitTreeRow {
+       
+       padding: 4px 1px 2px 0px;
+       margin-left: 1px;
+       background-image: url(images/commonHighlight.png);
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       border-color: rgba(118,157,192,0);
+       background-color: rgba(171,214,255,0);
+       -webkit-transition-property:background-color, border-color;
+       -webkit-transition-duration:.25s ;
+       -webkit-transition-timing-function: ease-out;
+}
+.dj_ie6 .claro .dijitTreeRow {
+       background-image: none;
+}
+.claro .dijitTreeRowSelected {
+       background-repeat:repeat-x;
+       background-color:#d8edff;
+       padding: 3px 0px 1px;
+       margin-left: 0px;
+       border:solid 1px #c3e2fd;
+       color:#000;
+}
+.claro .dijitTreeRowHover {
+       background-color:#abd6ff;
+       padding: 3px 0px 1px;
+       margin-left: 0px;
+       border:solid 1px #769dc0;
+       color:#000;
+       -webkit-transition-duration:.25s ; 
+}
+.claro .dijitTreeRowActive {
+       background-color:#7dbefa;
+       background-position:0px -177px;
+       padding: 3px 0px 1px;
+       margin-left: 0px;
+       border:solid 1px #769dc0;
+       color:#000;
+}
+.dj_ie6 .claro .dijitTreeRowActive {
+       background-image: none;
+}
+.claro .dijitTreeRowFocused {
+       background-repeat: repeat;
+}
+.claro .dijitTreeExpando {
+       background-image: url(images/treeExpandImages.png);
+    width: 16px;
+    height: 16px;
+       background-position: -35px 0px          
+}
+.dj_ie6 .claro .dijitTreeExpando {
+       background-image: url(images/treeExpandImages8bit.png);
+}
+.claro .dijitTreeRowHover .dijitTreeExpandoOpened {
+       background-position: -53px 0px;
+}
+.claro .dijitTreeExpandoClosed {
+       background-position: 1px 0px;
+}
+.claro .dijitTreeRowHover .dijitTreeExpandoClosed {
+       background-position: -17px 0px;
+}
+.claro .dijitTreeExpandoLeaf{
+       background-image:none;
+}
+.claro .dijitTreeExpandoLoading {
+       background-image: url(images/loadingAnimation.gif);
+}
+.claro .dijitTreeNode .dojoDndItemBefore,
+.claro .dijitTreeNode .dojoDndItemAfter {
+       border-bottom: none;
+       border-top: none;
+}
+.claro .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
+       border-top: 2px solid #369;
+}
+.claro .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
+       border-bottom: 2px solid #369;
+}
+.claro .dijitToolbar {
+       border-bottom: 1px solid #b5bcc7;
+       background-color: #f1f1f1;
+       background-image: url(images/commonHighlight.png);
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       padding: 2px 0px 2px 4px;
+       zoom: 1;
+}
+.claro .dijitToolbar label {
+       padding: 0px 3px 0 6px;
+}
+.claro .dijitToolbar .dijitButtonNode {
+       border:none;
+       padding: 2px;
+       background-image: url(images/commonHighlight.png);
+       background-position:0 -30px;
+       background-repeat:repeat-x;
+       background-color:rgba(171,214,255,0);
+       border-radius: 2px;     
+       -moz-border-radius: 2px;        
+       -webkit-border-radius: 2px;     
+       -moz-box-shadow: none;
+       -webkit-box-shadow: none;
+       -webkit-transition-property:background-color;
+       -webkit-transition-duration:.3s, .35s;
+}
+.claro .dijitToolbar .dijitComboButton .dijitButtonNode{
+       padding: 3px 2px 3px 2px;       
+}
+.dj_ie .claro .dijitToolbar .dijitButtonNode {
+       background-color: transparent;   
+}
+.dj_ie6 .claro .dijitToolbar .dijitButtonNode {
+       background: none;       
+}
+.claro .dijitToolbar .dijitComboBox .dijitButtonNode {
+       padding: 0px;
+}
+.claro .dijitToolbar .dijitComboButton {
+       padding: 1px;
+}
+.claro .dijitToolbar .dijitButtonHover .dijitButtonNode,
+.claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode,
+.claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode {
+       background-position:0 0;
+       border:solid 1px #769dc0;
+       background-color: #abd6ff;
+       padding: 1px;
+}
+.claro .dijitToolbar .dijitComboButtonHover {
+       background-color: #abd6ff;
+       border: solid 1px #769dc0;
+       padding: 0px;
+}
+.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode,
+.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton {
+       background-position:0 0;
+       padding: 2px;
+}
+.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton {
+       background-color: #7dd6fa;
+}
+.claro .dijitToolbar .dijitButtonActive .dijitButtonNode,
+.claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode,
+.claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode {
+       border:solid 1px #769dc0;
+       background-color:#7dbefa;
+       background-position:0px -177px;
+       padding: 1px;
+}
+.claro .dijitToolbar .dijitComboButtonActive {
+       -webkit-transition-duration:.2s;
+       border: solid 1px #769dc0;
+       padding: 0px;
+}
+.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode {
+       background-color: #7dbefa;
+       background-position:0px -177px;
+       padding: 2px;
+}
+.claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonActive {
+       background-color: #7dbefa;
+}
+.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode {
+       border-color: #769dc0;
+       background-color:#fff;
+       padding: 1px;
+}
+.dj_ie6 .claro .dijitToolbar .dijitButtonContents, 
+.dj_ie7 .claro .dijitToolbar .dijitButtonContents {
+       margin: -2px 0;
+       padding: 0;
+}
+.dj_ie6 .claro .dijitToolbar {
+       background-image: none;
+}
+.dj_ie6 .claro .dijitToolbar .dijitButtonNode {
+       margin: 1px; 
+       border: none;
+}
+.dj_ie6 .claro .dijitToolbar .dijitButtonHover .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover,
+.dj_ie6 .claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitButtonActive .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNodeActive,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonActive,
+.dj_ie6 .claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode,
+.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode {
+       margin: 0;      
+       border-width: 1px;
+       border-style: solid;
+       background-image: none;
+}
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitButtonNodeActive,
+.dj_ie6 .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonActive {
+       padding: 1px;   
+}
+.claro .dijitToolbarSeparator {
+       
+       background: url(../../icons/images/editorIconsEnabled.png);
+}
+.claro .dijitDisabled .dijitToolbar {
+       background:none;
+       background-color:#f5f5f5;
+       border-bottom: 1px solid #d3d3d3;
+}
+.claro .dijitEditorIFrameContainer{
+       padding:3px 3px 1px 10px;
+}
+.claro .dijitEditorIFrame {
+       background-color: #fff;
+}
+.claro .dijitEditor {
+       border: 1px solid #b5bcc7;
+}
+.claro .dijitEditor .dijitEditorIFrameContainer{
+       background-color: #fff;
+       background-image: url(form/images/textBox_back.png);
+       background-repeat:repeat-x;
+}
+.dj_ie6 .claro .dijitEditor .dijitEditorIFrameContainer{
+       background-image: none;
+}
+.claro .dijitEditorHover .dijitEditorIFrameContainer,
+.claro .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame{
+       background-color: #eef7ff;
+}
+.claro .dijitEditorFocused .dijitEditorIFrameContainer,
+.claro .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame{
+       
+       background-color: #fff;
+}
+.claro .dijitEditorDisabled {
+       border: 1px solid #d3d3d3;
+       color: #818181;
+}
+.claro .dijitDisabled .dijitEditorIFrame,
+.claro .dijitDisabled .dijitEditorIFrameContainer {
+       background-color: #efefef;
+       background-image: none;
+}
+.dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled.png); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.dijitDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled.png); 
+}
+.dijitEditorIconSep { background-position: 0px; }
+.dijitEditorIconSave { background-position: -18px; }
+.dijitEditorIconPrint { background-position: -36px; }
+.dijitEditorIconCut { background-position: -54px; }
+.dijitEditorIconCopy { background-position: -72px; }
+.dijitEditorIconPaste { background-position: -90px; }
+.dijitEditorIconDelete { background-position: -108px; }
+.dijitEditorIconCancel { background-position: -126px; }
+.dijitEditorIconUndo { background-position: -144px; }
+.dijitEditorIconRedo { background-position: -162px; }
+.dijitEditorIconSelectAll { background-position: -180px; }
+.dijitEditorIconBold { background-position: -198px; }
+.dijitEditorIconItalic { background-position: -216px; }
+.dijitEditorIconUnderline { background-position: -234px; }
+.dijitEditorIconStrikethrough { background-position: -252px; }
+.dijitEditorIconSuperscript { background-position: -270px; }
+.dijitEditorIconSubscript { background-position: -288px; }
+.dijitEditorIconJustifyCenter { background-position: -306px; }
+.dijitEditorIconJustifyFull { background-position: -324px; }
+.dijitEditorIconJustifyLeft { background-position: -342px; }
+.dijitEditorIconJustifyRight { background-position: -360px; }
+.dijitEditorIconIndent { background-position: -378px; }
+.dijitEditorIconOutdent { background-position: -396px; }
+.dijitEditorIconListBulletIndent { background-position: -414px; }
+.dijitEditorIconListBulletOutdent { background-position: -432px; }
+.dijitEditorIconListNumIndent { background-position: -450px; }
+.dijitEditorIconListNumOutdent { background-position: -468px; }
+.dijitEditorIconTabIndent { background-position: -486px; }
+.dijitEditorIconLeftToRight { background-position: -504px; }
+.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir { background-position: -522px; }
+.dijitEditorIconBackColor { background-position: -540px; }
+.dijitEditorIconForeColor { background-position: -558px; }
+.dijitEditorIconHiliteColor { background-position: -576px; }
+.dijitEditorIconNewPage { background-position: -594px; }
+.dijitEditorIconInsertImage { background-position: -612px; }
+.dijitEditorIconInsertTable { background-position: -630px; }
+.dijitEditorIconSpace { background-position: -648px; }
+.dijitEditorIconInsertHorizontalRule { background-position: -666px; }
+.dijitEditorIconInsertOrderedList { background-position: -684px; }
+.dijitEditorIconInsertUnorderedList { background-position: -702px; }
+.dijitEditorIconCreateLink { background-position: -720px; }
+.dijitEditorIconUnlink { background-position: -738px; }
+.dijitEditorIconViewSource { background-position: -756px; }
+.dijitEditorIconRemoveFormat { background-position: -774px; }
+.dijitEditorIconFullScreen { background-position: -792px; }
+.dijitEditorIconWikiword { background-position: -810px; }
+.claro .dijitTitlePaneTitle {
+       background-color: #e6e6e7;
+       background-image: url(images/titlebar.png);
+       background-repeat:repeat-x;
+       border:1px solid #b5bcc7;
+       padding: 0px 7px 3px 7px;
+       min-height:17px;
+       color:#131313;
+}
+.dj_ie6 .claro .dijitTitlePaneTitle {
+       background-image: none;
+}
+.claro .dijitTitlePaneTitleHover {
+       background-color: #abd6ff;
+       border-color: #769dc0;
+}
+.claro .dijitTitlePaneTitleActive {
+       background-color: #7dbefa;
+       border-color: #769dc0;
+       background-position:0px -136px;
+}
+.claro .dijitTitlePaneTitleFocus {
+       margin-top:3px;
+       padding-bottom:2px;
+}
+.claro .dijitTitlePane .dijitArrowNode {
+       background-image: url(images/spriteArrows.png);
+       background-repeat: no-repeat;
+       height: 8px;
+       width: 7px;
+}
+.claro .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background-position: 0px 0px;
+}
+.claro .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: -14px 0px;
+}
+.claro .dijitTitlePaneFocused .dijitTitlePaneTextNode {
+       color:#000;
+}
+.claro .dijitTitlePaneContentOuter {
+       background: #ffffff;
+       border:1px solid #b5bcc7;
+       border-top:none;
+}
+.claro .dijitTitlePaneContentInner {
+       padding:10px;
+}
+.claro .dijitTitlePaneTextNode {
+       margin-left: 4px;
+       margin-right: 4px;
+       vertical-align:text-top;
+}
+.claro .dijitSpinnerButtonContainer {
+       overflow: hidden;
+       position: relative;
+       width: auto;
+       padding: 0 2px;
+}
+.claro .dijitSpinnerButtonContainer .dijitSpinnerButtonInner {
+       border-width: 1px 0; 
+       border-style: solid none;
+}
+.claro .dijitSpinner .dijitArrowButton {
+       width:auto;
+       background-color: #ebeef4;
+       background-image: url(form/images/formHighlight.png);
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       overflow: hidden;
+}
+.dj_iequirks .claro .dijitSpinner .dijitArrowButton {
+       overflow: visible; 
+}
+.claro .dijitSpinner .dijitSpinnerButtonInner {
+       width: 15px;
+}
+.claro .dijitSpinner .dijitArrowButtonInner {
+       border:solid 1px #fff;
+       border-bottom-width: 0; 
+       background-image: url(form/images/commonFormArrows.png);
+       background-repeat: no-repeat;
+       height: 100%;
+       width:15px;
+       padding-left: 1px;
+       padding-right: 1px;
+       
+       background-position:-139px center;
+       
+       display: block;
+       margin: -1px 0px -1px 0px;      
+       #margin-top: 0; 
+}
+.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner {
+       width: 19px;
+}
+.claro .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {
+       background-position:-34px;
+}
+.claro .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding: 0;
+}
+.claro .dijitUpArrowButtonActive,
+.claro .dijitDownArrowButtonActive {
+       background-color:#abd6ff;
+}
+.claro .dijitSpinner .dijitUpArrowButtonHover,
+.claro .dijitSpinner .dijitDownArrowButtonHover,
+.claro .dijitSpinnerFocused .dijitArrowButton {
+       background-color: #a0d1ff;
+}
+.claro .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner {
+       background-position:-174px;
+}
+.claro .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner {
+       background-position:-69px;
+}
+.claro .dijitSpinnerFocused {
+       background-color: #fff;
+       background-image: none;
+}
+.claro .dijitSpinner .dijitDownArrowButtonActive,
+.claro .dijitSpinner .dijitUpArrowButtonActive {
+       background-color: #3299f9;
+       background-position:0px -177px;
+}
+.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner,
+.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner {
+       
+       border: 0px;
+       padding: 1px;
+       margin-right:2px;
+       margin-bottom:1px;
+}
+.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner {
+       background-position:-173px;
+}
+.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner {
+       background-position:-68px;
+}
+.claro .dijitSpinnerDisabled .dijitArrowButtonInner {
+       background-color: #f1f1f1;
+}
+.claro .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position:-104px;
+}
+.claro .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner {
+       background-position:1px;
+}
+.dj_ie7 .claro .dijitSpinner {
+       overflow:visible;
+} 
+.dijitRtl .dijitPlaceHolder {
+       left: auto;
+       right: 0;
+}
+.dijitMenuItemRtl {
+       text-align: right;
+}
+.dj_iequirks .dijitComboButtonRtl BUTTON {
+       
+       float:left;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitComboBoxRtl .dijitArrowButtonContainer {
+       
+       border-right-width: 1px !important;
+       border-right-style: solid !important;
+       border-left-width: 0px !important;
+       border-left-style: none !important;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijit_a11y .dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBoxRtl .dijitArrowButtonContainer {
+       border-right: 1px solid black !important;
+       border-left: 0px none black !important;
+}
+.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {
+       right: 0;
+       left: auto;
+}
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitArrowButtonContainer {
+       float: left;
+}
+.dijitCalendarRtl .dijitCalendarNextYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarRtl .dijitCalendarPreviousYear {
+       margin:0 0 0 0.55em;
+}
+.dijitSliderRtl .dijitSliderImageHandleV {
+       left:auto;
+}
+.dijitSliderRtl .dijitSliderImageHandleH {
+       left:-50%;
+}
+.dijitSliderRtl .dijitSliderMoveableH {
+       right:auto;
+       left:0;
+}
+.dijitSliderRtl .dijitRuleContainerV {
+       float:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleContainerV {
+       text-align:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelV {
+       text-align:left;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelH {
+       zoom:1;
+}
+.dijitSliderRtl .dijitSliderProgressBarH {
+       
+       float:right;
+       right:0;
+       left:auto;
+}
+.dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError {
+       background-position:right;
+       padding-right:25px;
+}
+.dijitTabRtl .dijitTabCloseButton {
+       margin-left: 0px;
+       margin-right: 1em;
+}
+.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {
+       width:100%;
+}
+.dijitColorPaletteRtl .dijitColorPaletteUnder {
+       
+       left: auto;
+       right: 0;
+}
+.dijitSelectRtl .dijitButtonContents {
+       text-align: right;
+}
+.claro .dijitTextBoxRtlError .dijitValidationContainer {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.claro .dijitComboButtonRtl .dijitStretch {
+       -moz-border-radius: 0px 4px 4px 0px;
+       -webkit-border-top-left-radius: 0px;
+    -webkit-border-top-right-radius: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -webkit-border-bottom-left-radius: 0px;    
+}
+.claro .dijitComboButtonRtl .dijitArrowButton {
+       -moz-border-radius:  4px 0px 0px  4px;
+       -webkit-border-top-left-radius:4px;
+    -webkit-border-top-right-radius:0px;
+    -webkit-border-bottom-right-radius:0px;
+    -webkit-border-bottom-left-radius:4px;
+       padding:3px 0px 4px;
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.claro .dijitTabContainerTop-tabs .dijitTabRtl,
+.claro .dijitTabContainerBottom-tabs .dijitTabRtl {
+       margin-right: 0;
+       margin-left: 1px;
+}
+.claro .dijitTabRtl {
+       -moz-box-orient:horizontal;
+       text-align: right;
+}
+.dj_ie7 .claro .dijitTabRtl .dijitTabContent {
+       display: block;
+       left: 0;
+}
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl,
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabCheckedRtl {
+       top: 1px;
+}
+.dj_ie7 .claro .tabStripButtonRtl .dijitButtonContents,
+.dj_ie8 .claro .tabStripButtonRtl .dijitButtonContents,        
+.dj_ie6 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie6 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie7 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_iequirks .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_iequirks .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv {
+       float:left;
+}
+.dj_ie6 .claro .dijitTabRtl .tabLabel,
+.dj_ie6 .claro .dijitTabContainerRight-tabs .dijitTabRtl,
+.dj_ie6 .claro .dijitTabContainerLeft-tabs .dijitTabRtl,
+.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie7 .claro .dijitTabContainerLeft-tabs .dijitTabRtl .dijitTabInnerDiv {
+       
+       zoom:1;
+}
+.dj_ie6 .claro .dijitTabRtl .dijitTabCloseButton,
+.dj_ie7 .claro .dijitTabRtl .dijitTabCloseButton,
+.dj_iequirks .claro .dijitTabRtl .dijitTabCloseButton {
+       margin-right:5px;
+}
+.dj_ie6 .claro .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,
+.dj_ie6 .claro .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {
+       width:1%;
+}
+.dj_ie6 .dijitTabContainerTopStrip,
+.dj_ie6 .dijitTabContainerBottomStrip {
+       position:absolute;
+}
+.dj_iequirks .claro .dijitTabContainerTopRtl .dijitTabContainerTopStrip {
+       padding-top: 10px;
+}
+.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtlChecked .dijitTabInnerDiv {
+       background-position:-341px -179px;
+}
+.dj_ie6 .dijitTabContainerTopRtl .dijitTabStripIcon,
+.dj_ie6 .dijitTabContainerBottomRtl .dijitTabStripIcon {
+   position: relative;
+}
+.dj_ie6-rtl .claro .dijitTabContainerTop-tabs {        
+       
+       padding-left: 3px;
+}
+.dj_iequirks-rtl .claro .dijitTabListWrapper {
+       
+       border-left: 1px solid #fff;
+       border-right: 1px solid #fff;
+}
+.claro .dijitSliderRtl .dijitSliderProgressBarH,
+.claro .dijitSliderRtl .dijitSliderRemainingBarH,
+.claro .dijitSliderRtl .dijitSliderLeftBumper,
+.claro .dijitSliderRtl .dijitSliderRightBumper,
+.claro .dijitSliderRtl .dijitSliderTopBumper {
+       background-position: top right;
+}
+.claro .dijitSliderRtl .dijitSliderProgressBarV,
+.claro .dijitSliderRtl .dijitSliderRemainingBarV,
+.claro .dijitSliderRtl .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.claro .dijitSliderRtl .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.claro .dijitSliderRtl .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.claro .dijitSliderRtl .dijitSliderIncrementIconH {
+       background-position:-357px 50%;
+}
+.claro .dijitSliderRtl .dijitSliderDecrementIconH {
+       background-position:-251px 50%;
+}
+.claro .dijitSelectRtl .dijitButtonContents {
+       border-right-width: 0px;
+       border-left-width: 1px;
+}
+.claro .dijitDialogRtl .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
+.claro .dijitDialogRtl .dijitDialogPaneActionBar {
+       text-align: left;
+       padding: 3px 7px 2px 5px;
+}
+.claro .dijitEditorRtl .dijitEditorIFrameContainer{
+       padding:3px 10px 1px 3px;
+}
+.dijitEditorRtl .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitToolbarRtl .dijitToolbarSeparator {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png);
+}
+.dijitRtl .dijitIconSave,
+.dijitRtl .dijitIconPrint,
+.dijitRtl .dijitIconCut,
+.dijitRtl .dijitIconCopy,
+.dijitRtl .dijitIconClear,
+.dijitRtl .dijitIconDelete,
+.dijitRtl .dijitIconUndo,
+.dijitRtl .dijitIconEdit,
+.dijitRtl .dijitIconNewTask,
+.dijitRtl .dijitIconEditTask,
+.dijitRtl .dijitIconEditProperty,
+.dijitRtl .dijitIconTask,
+.dijitRtl .dijitIconFilter,
+.dijitRtl .dijitIconConfigure,
+.dijitRtl .dijitIconSearch,
+.dijitRtl .dijitIconApplication,
+.dijitRtl .dijitIconBookmark,
+.dijitRtl .dijitIconChart,
+.dijitRtl .dijitIconConnector,
+.dijitRtl .dijitIconDatabase,
+.dijitRtl .dijitIconDocuments,
+.dijitRtl .dijitIconMail,
+.dijitRtl .dijitLeaf,
+.dijitRtl .dijitIconFile,
+.dijitRtl .dijitIconFunction,
+.dijitRtl .dijitIconKey,
+.dijitRtl .dijitIconPackage,
+.dijitRtl .dijitIconSample,
+.dijitRtl .dijitIconTable,
+.dijitRtl .dijitIconUsers,
+.dijitRtl .dijitFolderClosed,
+.dijitRtl .dijitIconFolderClosed,
+.dijitRtl .dijitFolderOpened,
+.dijitRtl .dijitIconFolderOpen,
+.dijitRtl .dijitIconError, .dijitRtl .dijitContentPaneError { 
+       background-image: url(../../icons/images/commonIconsObjActEnabled_rtl.png); 
+       width: 16px;
+       height: 16px;
+}
+.dj_ie6 .dijitRtl .dijitIconSave,
+.dj_ie6 .dijitRtl .dijitIconPrint,
+.dj_ie6 .dijitRtl .dijitIconCut,
+.dj_ie6 .dijitRtl .dijitIconCopy,
+.dj_ie6 .dijitRtl .dijitIconClear,
+.dj_ie6 .dijitRtl .dijitIconDelete,
+.dj_ie6 .dijitRtl .dijitIconUndo,
+.dj_ie6 .dijitRtl .dijitIconEdit,
+.dj_ie6 .dijitRtl .dijitIconNewTask,
+.dj_ie6 .dijitRtl .dijitIconEditTask,
+.dj_ie6 .dijitRtl .dijitIconEditProperty,
+.dj_ie6 .dijitRtl .dijitIconTask,
+.dj_ie6 .dijitRtl .dijitIconFilter,
+.dj_ie6 .dijitRtl .dijitIconConfigure,
+.dj_ie6 .dijitRtl .dijitIconSearch,
+.dj_ie6 .dijitRtl .dijitIconApplication,
+.dj_ie6 .dijitRtl .dijitIconBookmark,
+.dj_ie6 .dijitRtl .dijitIconChart,
+.dj_ie6 .dijitRtl .dijitIconConnector,
+.dj_ie6 .dijitRtl .dijitIconDatabase,
+.dj_ie6 .dijitRtl .dijitIconDocuments,
+.dj_ie6 .dijitRtl .dijitIconMail,
+.dj_ie6 .dijitRtl .dijitLeaf,
+.dj_ie6 .dijitRtl .dijitIconFile,
+.dj_ie6 .dijitRtl .dijitIconFunction,
+.dj_ie6 .dijitRtl .dijitIconKey,
+.dj_ie6 .dijitRtl .dijitIconPackage,
+.dj_ie6 .dijitRtl .dijitIconSample,
+.dj_ie6 .dijitRtl .dijitIconTable,
+.dj_ie6 .dijitRtl .dijitIconUsers,
+.dj_ie6 .dijitRtl .dijitFolderClosed,
+.dj_ie6 .dijitRtl .dijitIconFolderClosed,
+.dj_ie6 .dijitRtl .dijitFolderOpened,
+.dj_ie6 .dijitRtl .dijitIconFolderOpen,
+.dj_ie6 .dijitRtl .dijitIconError, .dj_ie6 .dijitRtl .dijitContentPaneError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled8bit_rtl.png);
+}
+.dijitRtl .dijitDisabled .dijitIconSave,
+.dijitRtl .dijitDisabled .dijitIconPrint,
+.dijitRtl .dijitDisabled .dijitIconCut,
+.dijitRtl .dijitDisabled .dijitIconCopy,
+.dijitRtl .dijitDisabled .dijitIconClear,
+.dijitRtl .dijitDisabled .dijitIconDelete,
+.dijitRtl .dijitDisabled .dijitIconUndo,
+.dijitRtl .dijitDisabled .dijitIconEdit,
+.dijitRtl .dijitDisabled .dijitIconNewTask,
+.dijitRtl .dijitDisabled .dijitIconEditTask,
+.dijitRtl .dijitDisabled .dijitIconEditProperty,
+.dijitRtl .dijitDisabled .dijitIconTask,
+.dijitRtl .dijitDisabled .dijitIconFilter,
+.dijitRtl .dijitDisabled .dijitIconConfigure,
+.dijitRtl .dijitDisabled .dijitIconSearch,
+.dijitRtl .dijitDisabled .dijitIconApplication,
+.dijitRtl .dijitDisabled .dijitIconBookmark,
+.dijitRtl .dijitDisabled .dijitIconChart,
+.dijitRtl .dijitDisabled .dijitIconConnector,
+.dijitRtl .dijitDisabled .dijitIconDatabase,
+.dijitRtl .dijitDisabled .dijitIconDocuments,
+.dijitRtl .dijitDisabled .dijitIconMail,
+.dijitRtl .dijitDisabled .dijitLeaf,
+.dijitRtl .dijitDisabled .dijitIconFile,
+.dijitRtl .dijitDisabled .dijitIconFunction,
+.dijitRtl .dijitDisabled .dijitIconKey,
+.dijitRtl .dijitDisabled .dijitIconPackage,
+.dijitRtl .dijitDisabled .dijitIconSample,
+.dijitRtl .dijitDisabled .dijitIconTable,
+.dijitRtl .dijitDisabled .dijitIconUsers,
+.dijitRtl .dijitDisabled .dijitFolderClosed,
+.dijitRtl .dijitDisabled .dijitIconFolderClosed,
+.dijitRtl .dijitDisabled .dijitFolderOpened,
+.dijitRtl .dijitDisabled .dijitIconFolderOpen,
+.dijitRtl .dijitDisabled .dijitIconError, .dijitRtl .dijitDisabled .dijitContentPaneError {
+       background-image: url(../../icons/images/commonIconsObjActDisabled_rtl.png); 
+}
+.dijitRtl .dijitContentPaneLoading {
+       background:url(../../icons/images/loadingAnimation_rtl.gif) no-repeat;
+}
+.claro .dijitTitlePaneRtl .dijitClosed .dijitArrowNode {
+       background-position: -7px 0px;
+}
+.claro .dijitMenuItemRtl .dijitMenuExpand {
+       background-position: -7px 0px;
+       margin-right: 0px;
+       margin-left: 3px;
+}
+.claro .dijitMenuItemRtl .dijitMenuItemIcon {
+       margin:0px 4px 0px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarIncrease{
+       background-position: 0px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarDecrease {
+       background-position: -18px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease {
+       background-position: -36px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease {
+       background-position: -55px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease {
+       background-position: -72px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease {
+       background-position: -91px 0px;
+}
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickHover,
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerHover,
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerSelected,
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickSelected {
+       margin-left:-6px;
+       margin-right:-8px;
+       width: 114%;    
+}
diff --git a/lib/dijit/themes/claro/claro_rtl.css b/lib/dijit/themes/claro/claro_rtl.css
new file mode 100644 (file)
index 0000000..01a0342
--- /dev/null
@@ -0,0 +1,380 @@
+
+.dijitRtl .dijitPlaceHolder {
+       left: auto;
+       right: 0;
+}
+.dijitMenuItemRtl {
+       text-align: right;
+}
+.dj_iequirks .dijitComboButtonRtl BUTTON {
+       
+       float:left;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitComboBoxRtl .dijitArrowButtonContainer {
+       
+       border-right-width: 1px !important;
+       border-right-style: solid !important;
+       border-left-width: 0px !important;
+       border-left-style: none !important;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijit_a11y .dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBoxRtl .dijitArrowButtonContainer {
+       border-right: 1px solid black !important;
+       border-left: 0px none black !important;
+}
+.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {
+       right: 0;
+       left: auto;
+}
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitArrowButtonContainer {
+       float: left;
+}
+.dijitCalendarRtl .dijitCalendarNextYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarRtl .dijitCalendarPreviousYear {
+       margin:0 0 0 0.55em;
+}
+.dijitSliderRtl .dijitSliderImageHandleV {
+       left:auto;
+}
+.dijitSliderRtl .dijitSliderImageHandleH {
+       left:-50%;
+}
+.dijitSliderRtl .dijitSliderMoveableH {
+       right:auto;
+       left:0;
+}
+.dijitSliderRtl .dijitRuleContainerV {
+       float:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleContainerV {
+       text-align:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelV {
+       text-align:left;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelH {
+       zoom:1;
+}
+.dijitSliderRtl .dijitSliderProgressBarH {
+       
+       float:right;
+       right:0;
+       left:auto;
+}
+.dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError {
+       background-position:right;
+       padding-right:25px;
+}
+.dijitTabRtl .dijitTabCloseButton {
+       margin-left: 0px;
+       margin-right: 1em;
+}
+.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {
+       width:100%;
+}
+.dijitColorPaletteRtl .dijitColorPaletteUnder {
+       
+       left: auto;
+       right: 0;
+}
+.dijitSelectRtl .dijitButtonContents {
+       text-align: right;
+}
+.claro .dijitTextBoxRtlError .dijitValidationContainer {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.claro .dijitComboButtonRtl .dijitStretch {
+       -moz-border-radius: 0px 4px 4px 0px;
+       -webkit-border-top-left-radius: 0px;
+    -webkit-border-top-right-radius: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -webkit-border-bottom-left-radius: 0px;    
+}
+.claro .dijitComboButtonRtl .dijitArrowButton {
+       -moz-border-radius:  4px 0px 0px  4px;
+       -webkit-border-top-left-radius:4px;
+    -webkit-border-top-right-radius:0px;
+    -webkit-border-bottom-right-radius:0px;
+    -webkit-border-bottom-left-radius:4px;
+       padding:3px 0px 4px;
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.claro .dijitTabContainerTop-tabs .dijitTabRtl,
+.claro .dijitTabContainerBottom-tabs .dijitTabRtl {
+       margin-right: 0;
+       margin-left: 1px;
+}
+.claro .dijitTabRtl {
+       -moz-box-orient:horizontal;
+       text-align: right;
+}
+.dj_ie7 .claro .dijitTabRtl .dijitTabContent {
+       display: block;
+       left: 0;
+}
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl,
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabCheckedRtl {
+       top: 1px;
+}
+.dj_ie7 .claro .tabStripButtonRtl .dijitButtonContents,
+.dj_ie8 .claro .tabStripButtonRtl .dijitButtonContents,        
+.dj_ie6 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie6 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie7 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_iequirks .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_iequirks .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv {
+       float:left;
+}
+.dj_ie6 .claro .dijitTabRtl .tabLabel,
+.dj_ie6 .claro .dijitTabContainerRight-tabs .dijitTabRtl,
+.dj_ie6 .claro .dijitTabContainerLeft-tabs .dijitTabRtl,
+.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie7 .claro .dijitTabContainerLeft-tabs .dijitTabRtl .dijitTabInnerDiv {
+       
+       zoom:1;
+}
+.dj_ie6 .claro .dijitTabRtl .dijitTabCloseButton,
+.dj_ie7 .claro .dijitTabRtl .dijitTabCloseButton,
+.dj_iequirks .claro .dijitTabRtl .dijitTabCloseButton {
+       margin-right:5px;
+}
+.dj_ie6 .claro .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,
+.dj_ie6 .claro .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {
+       width:1%;
+}
+.dj_ie6 .dijitTabContainerTopStrip,
+.dj_ie6 .dijitTabContainerBottomStrip {
+       position:absolute;
+}
+.dj_iequirks .claro .dijitTabContainerTopRtl .dijitTabContainerTopStrip {
+       padding-top: 10px;
+}
+.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtlChecked .dijitTabInnerDiv {
+       background-position:-341px -179px;
+}
+.dj_ie6 .dijitTabContainerTopRtl .dijitTabStripIcon,
+.dj_ie6 .dijitTabContainerBottomRtl .dijitTabStripIcon {
+   position: relative;
+}
+.dj_ie6-rtl .claro .dijitTabContainerTop-tabs {        
+       
+       padding-left: 3px;
+}
+.dj_iequirks-rtl .claro .dijitTabListWrapper {
+       
+       border-left: 1px solid #fff;
+       border-right: 1px solid #fff;
+}
+.claro .dijitSliderRtl .dijitSliderProgressBarH,
+.claro .dijitSliderRtl .dijitSliderRemainingBarH,
+.claro .dijitSliderRtl .dijitSliderLeftBumper,
+.claro .dijitSliderRtl .dijitSliderRightBumper,
+.claro .dijitSliderRtl .dijitSliderTopBumper {
+       background-position: top right;
+}
+.claro .dijitSliderRtl .dijitSliderProgressBarV,
+.claro .dijitSliderRtl .dijitSliderRemainingBarV,
+.claro .dijitSliderRtl .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.claro .dijitSliderRtl .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.claro .dijitSliderRtl .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.claro .dijitSliderRtl .dijitSliderIncrementIconH {
+       background-position:-357px 50%;
+}
+.claro .dijitSliderRtl .dijitSliderDecrementIconH {
+       background-position:-251px 50%;
+}
+.claro .dijitSelectRtl .dijitButtonContents {
+       border-right-width: 0px;
+       border-left-width: 1px;
+}
+.claro .dijitDialogRtl .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
+.claro .dijitDialogRtl .dijitDialogPaneActionBar {
+       text-align: left;
+       padding: 3px 7px 2px 5px;
+}
+.claro .dijitEditorRtl .dijitEditorIFrameContainer{
+       padding:3px 10px 1px 3px;
+}
+.dijitEditorRtl .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitToolbarRtl .dijitToolbarSeparator {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png);
+}
+.dijitRtl .dijitIconSave,
+.dijitRtl .dijitIconPrint,
+.dijitRtl .dijitIconCut,
+.dijitRtl .dijitIconCopy,
+.dijitRtl .dijitIconClear,
+.dijitRtl .dijitIconDelete,
+.dijitRtl .dijitIconUndo,
+.dijitRtl .dijitIconEdit,
+.dijitRtl .dijitIconNewTask,
+.dijitRtl .dijitIconEditTask,
+.dijitRtl .dijitIconEditProperty,
+.dijitRtl .dijitIconTask,
+.dijitRtl .dijitIconFilter,
+.dijitRtl .dijitIconConfigure,
+.dijitRtl .dijitIconSearch,
+.dijitRtl .dijitIconApplication,
+.dijitRtl .dijitIconBookmark,
+.dijitRtl .dijitIconChart,
+.dijitRtl .dijitIconConnector,
+.dijitRtl .dijitIconDatabase,
+.dijitRtl .dijitIconDocuments,
+.dijitRtl .dijitIconMail,
+.dijitRtl .dijitLeaf,
+.dijitRtl .dijitIconFile,
+.dijitRtl .dijitIconFunction,
+.dijitRtl .dijitIconKey,
+.dijitRtl .dijitIconPackage,
+.dijitRtl .dijitIconSample,
+.dijitRtl .dijitIconTable,
+.dijitRtl .dijitIconUsers,
+.dijitRtl .dijitFolderClosed,
+.dijitRtl .dijitIconFolderClosed,
+.dijitRtl .dijitFolderOpened,
+.dijitRtl .dijitIconFolderOpen,
+.dijitRtl .dijitIconError, .dijitRtl .dijitContentPaneError { 
+       background-image: url(../../icons/images/commonIconsObjActEnabled_rtl.png); 
+       width: 16px;
+       height: 16px;
+}
+.dj_ie6 .dijitRtl .dijitIconSave,
+.dj_ie6 .dijitRtl .dijitIconPrint,
+.dj_ie6 .dijitRtl .dijitIconCut,
+.dj_ie6 .dijitRtl .dijitIconCopy,
+.dj_ie6 .dijitRtl .dijitIconClear,
+.dj_ie6 .dijitRtl .dijitIconDelete,
+.dj_ie6 .dijitRtl .dijitIconUndo,
+.dj_ie6 .dijitRtl .dijitIconEdit,
+.dj_ie6 .dijitRtl .dijitIconNewTask,
+.dj_ie6 .dijitRtl .dijitIconEditTask,
+.dj_ie6 .dijitRtl .dijitIconEditProperty,
+.dj_ie6 .dijitRtl .dijitIconTask,
+.dj_ie6 .dijitRtl .dijitIconFilter,
+.dj_ie6 .dijitRtl .dijitIconConfigure,
+.dj_ie6 .dijitRtl .dijitIconSearch,
+.dj_ie6 .dijitRtl .dijitIconApplication,
+.dj_ie6 .dijitRtl .dijitIconBookmark,
+.dj_ie6 .dijitRtl .dijitIconChart,
+.dj_ie6 .dijitRtl .dijitIconConnector,
+.dj_ie6 .dijitRtl .dijitIconDatabase,
+.dj_ie6 .dijitRtl .dijitIconDocuments,
+.dj_ie6 .dijitRtl .dijitIconMail,
+.dj_ie6 .dijitRtl .dijitLeaf,
+.dj_ie6 .dijitRtl .dijitIconFile,
+.dj_ie6 .dijitRtl .dijitIconFunction,
+.dj_ie6 .dijitRtl .dijitIconKey,
+.dj_ie6 .dijitRtl .dijitIconPackage,
+.dj_ie6 .dijitRtl .dijitIconSample,
+.dj_ie6 .dijitRtl .dijitIconTable,
+.dj_ie6 .dijitRtl .dijitIconUsers,
+.dj_ie6 .dijitRtl .dijitFolderClosed,
+.dj_ie6 .dijitRtl .dijitIconFolderClosed,
+.dj_ie6 .dijitRtl .dijitFolderOpened,
+.dj_ie6 .dijitRtl .dijitIconFolderOpen,
+.dj_ie6 .dijitRtl .dijitIconError, .dj_ie6 .dijitRtl .dijitContentPaneError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled8bit_rtl.png);
+}
+.dijitRtl .dijitDisabled .dijitIconSave,
+.dijitRtl .dijitDisabled .dijitIconPrint,
+.dijitRtl .dijitDisabled .dijitIconCut,
+.dijitRtl .dijitDisabled .dijitIconCopy,
+.dijitRtl .dijitDisabled .dijitIconClear,
+.dijitRtl .dijitDisabled .dijitIconDelete,
+.dijitRtl .dijitDisabled .dijitIconUndo,
+.dijitRtl .dijitDisabled .dijitIconEdit,
+.dijitRtl .dijitDisabled .dijitIconNewTask,
+.dijitRtl .dijitDisabled .dijitIconEditTask,
+.dijitRtl .dijitDisabled .dijitIconEditProperty,
+.dijitRtl .dijitDisabled .dijitIconTask,
+.dijitRtl .dijitDisabled .dijitIconFilter,
+.dijitRtl .dijitDisabled .dijitIconConfigure,
+.dijitRtl .dijitDisabled .dijitIconSearch,
+.dijitRtl .dijitDisabled .dijitIconApplication,
+.dijitRtl .dijitDisabled .dijitIconBookmark,
+.dijitRtl .dijitDisabled .dijitIconChart,
+.dijitRtl .dijitDisabled .dijitIconConnector,
+.dijitRtl .dijitDisabled .dijitIconDatabase,
+.dijitRtl .dijitDisabled .dijitIconDocuments,
+.dijitRtl .dijitDisabled .dijitIconMail,
+.dijitRtl .dijitDisabled .dijitLeaf,
+.dijitRtl .dijitDisabled .dijitIconFile,
+.dijitRtl .dijitDisabled .dijitIconFunction,
+.dijitRtl .dijitDisabled .dijitIconKey,
+.dijitRtl .dijitDisabled .dijitIconPackage,
+.dijitRtl .dijitDisabled .dijitIconSample,
+.dijitRtl .dijitDisabled .dijitIconTable,
+.dijitRtl .dijitDisabled .dijitIconUsers,
+.dijitRtl .dijitDisabled .dijitFolderClosed,
+.dijitRtl .dijitDisabled .dijitIconFolderClosed,
+.dijitRtl .dijitDisabled .dijitFolderOpened,
+.dijitRtl .dijitDisabled .dijitIconFolderOpen,
+.dijitRtl .dijitDisabled .dijitIconError, .dijitRtl .dijitDisabled .dijitContentPaneError {
+       background-image: url(../../icons/images/commonIconsObjActDisabled_rtl.png); 
+}
+.dijitRtl .dijitContentPaneLoading {
+       background:url(../../icons/images/loadingAnimation_rtl.gif) no-repeat;
+}
+.claro .dijitTitlePaneRtl .dijitClosed .dijitArrowNode {
+       background-position: -7px 0px;
+}
+.claro .dijitMenuItemRtl .dijitMenuExpand {
+       background-position: -7px 0px;
+       margin-right: 0px;
+       margin-left: 3px;
+}
+.claro .dijitMenuItemRtl .dijitMenuItemIcon {
+       margin:0px 4px 0px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarIncrease{
+       background-position: 0px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarDecrease {
+       background-position: -18px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease {
+       background-position: -36px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease {
+       background-position: -55px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease {
+       background-position: -72px 0px;
+}
+.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease {
+       background-position: -91px 0px;
+}
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickHover,
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerHover,
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerMarkerSelected,
+.dj_ie .claro .dijitTimePickerRtl .dijitTimePickerTickSelected {
+       margin-left:-6px;
+       margin-right:-8px;
+       width: 114%;    
+}
diff --git a/lib/dijit/themes/claro/document.css b/lib/dijit/themes/claro/document.css
new file mode 100644 (file)
index 0000000..72f9b1b
--- /dev/null
@@ -0,0 +1,81 @@
+
+.claro {
+       font-family:Verdana,Arial,Helvetica,sans-serif;
+       font-size: .688em;
+       color: #131313;
+}
+h1 {
+       font-size: 1.545em; 
+       font-weight: normal;
+       line-height: 1em; 
+       margin-top: 1em;
+       margin-bottom:0.727em;
+}
+.claro .dijitDialog h1 { 
+       margin-top:0em; 
+}
+h2 { 
+       font-size: 1.364em; 
+       line-height: 1.455em; 
+       margin-top:1em; 
+       margin-bottom:0.60em;
+       font-weight: normal;
+}
+h3, h4, h5, h6 {
+       font-size:1.091em; 
+       font-weight: normal; 
+       line-height: 1.5em; 
+       margin-top: 1.5em; 
+       margin-bottom: 0;
+}
+p { 
+       font-size: 1em; 
+       line-height: 1.3em;
+}
+blockquote { 
+       font-size: 0.916em; 
+       margin-top: 3.272em; 
+       margin-bottom: 3.272em; 
+       line-height: 1.636em; 
+       padding: 1.636em; 
+       border-top: 1px solid #ccc; 
+       border-bottom: 1px solid #ccc;
+}
+ol li, ul li { 
+       font-size: 1em; 
+       line-height: 1.5em; 
+       margin: 0;
+}
+pre, code { 
+       font-size:115%;
+       *font-size:100%;
+       font-family:inherit; 
+       background-color: #efefef; 
+       border: 1px solid #ccc;
+}
+pre { 
+       border-width: 1px 0; 
+       padding: 1.5em;
+}
+table {  font-size:100%; }
+table.dojoTabular { 
+       border-collapse: collapse; 
+       border-spacing: 0; 
+       border: 1px solid #ccc; 
+       margin: 0 1.5em;
+}
+.dojoTabular th { 
+       text-align: center; 
+       font-weight: bold;
+}
+table.dojoTabular thead, table.dojoTabular tfoot { 
+       background-color: #efefef; 
+       border: 1px solid #ccc; 
+       border-width: 1px 0; 
+}
+table.dojoTabular thead tr th,
+table.dojoTabular thead tr td,
+table.dojoTabular tbody tr td,
+table.dojoTabular tfoot tr td { 
+       padding: 0.25em 0.5em;
+}
diff --git a/lib/dijit/themes/claro/form/Button.css b/lib/dijit/themes/claro/form/Button.css
new file mode 100644 (file)
index 0000000..a2a15c0
--- /dev/null
@@ -0,0 +1,125 @@
+
+.claro .dijitButtonNode {
+       
+       -webkit-transition-property:background-color;
+       -webkit-transition-duration:.3s;
+}
+.claro .dijitButton .dijitButtonNode,
+.claro .dijitDropDownButton .dijitButtonNode,
+.claro .dijitComboButton .dijitButtonNode,
+.claro .dijitToggleButton .dijitButtonNode {
+       
+       border: 1px solid #769dc0;
+       padding:2px 4px 4px 4px;
+       background-image: url("images/button.png");
+       background-position: center top;
+       background-repeat: repeat-x;
+       background-color: #e4f2ff;
+       border-radius: 4px;
+       -moz-border-radius: 4px;
+       -webkit-border-radius: 4px;
+       box-shadow:0px 1px 1px rgba(0,0,0,0.15);
+       -webkit-box-shadow:0px 1px 1px rgba(0,0,0,0.15);
+       -moz-box-shadow: 0px 1px 1px rgba(0,0,0,0.15);  
+}
+.claro .dijitComboButton .dijitArrowButton {
+       border-left-width: 0px;
+       padding: 4px 2px 4px 2px;       
+}
+.claro .dijitArrowButtonInner {
+       width: 15px;
+       height: 15px;
+       margin: 0 auto;
+       background-image:url("images/buttonArrows.png");
+       background-repeat:no-repeat;
+       background-position:-51px 53%;
+}
+.claro .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -77px 53%;
+}
+.claro .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -26px 53%;
+}
+.claro .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: 0px 53%;
+}
+.claro .dijitDisabled .dijitArrowButtonInner {
+       background-position: -151px 53%;
+}
+.claro .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -177px 53%;
+}
+.claro .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -126px 53%;
+}
+.claro .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -100px 53%;
+}
+.claro .dijitButtonText {
+       padding: 0 0.3em;
+       text-align: center;
+}
+.claro .dijitDisabled .dijitButtonText {
+       color: #7F7F7F;
+}
+.claro .dijitButtonHover .dijitButtonNode,
+.claro .dijitDropDownButtonHover .dijitButtonNode,
+.claro .dijitComboButton .dijitButtonNodeHover, 
+.claro .dijitComboButton .dijitDownArrowButtonHover,
+.claro .dijitToggleButtonHover .dijitButtonNode {
+       background-color: #afd9ff;
+       color:#000;
+       -webkit-transition-duration:.2s;
+}
+.claro .dijitButtonActive .dijitButtonNode, 
+.claro .dijitDropDownButtonActive .dijitButtonNode,
+.claro .dijitComboButtonActive .dijitButtonNode,
+.claro .dijitToggleButtonActive .dijitButtonNode {
+       background-color: #99cfff;
+       box-shadow:0px 0px 0px rgba(0,0,0,0);
+       -webkit-box-shadow:0px 0px 0px rgba(0,0,0,0);
+       -moz-box-shadow: 0px 0px 0px rgba(0,0,0,0);
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitButtonDisabled,
+.claro .dijitDropDownButtonDisabled,
+.claro .dijitComboButtonDisabled,
+.claro .dijitToggleButtonDisabled {
+       background-image: none;
+       outline: none;
+}
+.claro .dijitButtonDisabled .dijitButtonNode,
+.claro .dijitDropDownButtonDisabled .dijitButtonNode,
+.claro .dijitComboButtonDisabled .dijitButtonNode,
+.claro .dijitToggleButtonDisabled .dijitButtonNode { 
+       background-position:0px -149px;
+       background-color: #e3e3e3;
+       border: solid 1px #c9c9c9;
+       color: #696969;
+       box-shadow:0px 0px 0px rgba(0,0,0,0);
+       -webkit-box-shadow:0px 0px 0px rgba(0,0,0,0);
+       -moz-box-shadow: 0px 0px 0px rgba(0,0,0,0);
+}
+.claro .dijitComboButtonDisabled .dijitArrowButton{ 
+       border-left-width: 0px;
+}
+.claro table.dijitComboButton {
+       border-collapse: separate;      
+}
+.dj_ie6 .claro .dijitButtonNode {
+       background-image: none;
+}
+.claro .dijitComboButton .dijitStretch {
+       -moz-border-radius: 4px 0px 0px 4px;
+       -webkit-border-top-left-radius: 4px;
+       -webkit-border-top-right-radius: 0px;
+       -webkit-border-bottom-right-radius: 0px;
+       -webkit-border-bottom-left-radius: 4px;
+}
+.claro .dijitComboButton .dijitArrowButton {
+       -moz-border-radius: 0px 4px 4px 0px;
+       -webkit-border-top-left-radius: 0px;
+       -webkit-border-top-right-radius: 4px;
+       -webkit-border-bottom-right-radius: 4px;
+       -webkit-border-bottom-left-radius: 0px;
+}
diff --git a/lib/dijit/themes/claro/form/Button_rtl.css b/lib/dijit/themes/claro/form/Button_rtl.css
new file mode 100644 (file)
index 0000000..f1484b1
--- /dev/null
@@ -0,0 +1,18 @@
+
+.claro .dijitComboButtonRtl .dijitStretch {
+       -moz-border-radius: 0px 4px 4px 0px;
+       -webkit-border-top-left-radius: 0px;
+    -webkit-border-top-right-radius: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -webkit-border-bottom-left-radius: 0px;    
+}
+.claro .dijitComboButtonRtl .dijitArrowButton {
+       -moz-border-radius:  4px 0px 0px  4px;
+       -webkit-border-top-left-radius:4px;
+    -webkit-border-top-right-radius:0px;
+    -webkit-border-bottom-right-radius:0px;
+    -webkit-border-bottom-left-radius:4px;
+       padding:3px 0px 4px;
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
diff --git a/lib/dijit/themes/claro/form/Checkbox.css b/lib/dijit/themes/claro/form/Checkbox.css
new file mode 100644 (file)
index 0000000..be3604d
--- /dev/null
@@ -0,0 +1,46 @@
+
+.claro .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url('../images/checkmarkNoBorder.png');
+}
+.dj_ie6 .claro .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url('../images/checkmarkNoBorder.gif');
+}
+.claro .dijitCheckBox,
+.claro .dijitCheckBoxIcon                      {
+       background-image: url('images/checkboxRadioButtonStates.png'); 
+       background-repeat: no-repeat;
+       width: 15px;
+       height: 16px;
+       margin: 0 2px 0 0;
+       padding: 0;
+}
+.dj_ie6 .claro .dijitCheckBox,
+.dj_ie6 .claro .dijitCheckBoxIcon                      {
+       background-image: url('images/checkboxAndRadioButtons_IE6.png'); 
+}
+.claro .dijitCheckBox,
+.claro .dijitToggleButton .dijitCheckBoxIcon {
+       
+       background-position: -15px;
+}
+.claro .dijitCheckBoxChecked,
+.claro .dijitToggleButtonChecked .dijitCheckBoxIcon {
+       
+       background-position: -0px;
+}
+.claro .dijitCheckBoxDisabled {
+       
+       background-position: -75px;
+}
+.claro .dijitCheckBoxCheckedDisabled {
+       
+       background-position: -60px;
+}
+.claro .dijitCheckBoxHover {
+       
+       background-position: -45px;
+}
+.claro .dijitCheckBoxCheckedHover {
+       
+       background-position: -30px;
+}
diff --git a/lib/dijit/themes/claro/form/Common.css b/lib/dijit/themes/claro/form/Common.css
new file mode 100644 (file)
index 0000000..b04061b
--- /dev/null
@@ -0,0 +1,132 @@
+
+.claro .dijitTextBoxError .dijitValidationContainer {
+       background-color: #d46363;
+       background-image: url('images/error.png');
+       background-position: top center;
+       border: solid #d46464 0px;
+       border-left-width: 1px;
+       width: 9px;
+}
+.claro .dijitTextBoxError .dijitValidationIcon {
+       width: 0px;
+       background-color: transparent !important; 
+}
+.claro .dijitTextBox .dijitInputContainer,
+.claro .dijitTextArea,
+.claro .dijitInputField .dijitPlaceHolder {
+       padding: 2px;
+}
+.claro .dijitTextBox,
+.claro .dijitTextBox .dijitButtonNode {
+       
+       border-color: #b5bcc7;
+       -webkit-transition-property:background-color, border;
+       -webkit-transition-duration:.35s;
+}
+.claro .dijitTextBox {
+       background-color: #f7fcff;
+}
+.claro .dijitTextBoxHover,
+.claro .dijitTextBoxHover .dijitButtonNode {
+       border-color: #769dc0;
+       -webkit-transition-duration:.25s;
+}
+.claro .dijitTextBoxHover {
+       background-color: #e9f4fe;
+       background-image: url('images/textBox_back.png');
+       background-repeat: repeat-x;
+}
+.claro .dijitTextBoxError,
+.claro .dijitTextBoxError .dijitButtonNode {
+       border-color: #d46464;
+}
+.claro .dijitTextBoxError,
+.claro .dijitTextBoxError .dijitInputContainer {
+       background-color: #fdf7f7;
+}
+.claro .dijitTextBoxFocused,
+.claro .dijitTextBoxFocused .dijitButtonNode {
+       border-color:#769dc0;
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitTextBoxFocused {
+       background-color: #fff;
+       background-image: url('images/textBox_back.png');
+       background-repeat: repeat-x;
+}
+.claro .dijitTextBoxFocused .dijitInputContainer {
+       background: #fff;
+}
+.claro .dijitTextBoxErrorFocused,
+.claro .dijitTextBoxErrorFocused .dijitButtonNode {
+       border-color: #ce4f4f;
+}
+.claro .dijitTextBoxDisabled,
+.claro .dijitTextBoxDisabled .dijitButtonNode {
+       border-color: #d3d3d3;
+}
+.claro .dijitTextBoxDisabled {
+       background-color: #efefef;
+       background-image: none;
+       color: #818181;
+}
+.claro .dijitComboBox .dijitArrowButtonInner {
+       background-image: url("images/commonFormArrows.png");
+       background-position:-35px 53%;
+       background-repeat: no-repeat;
+       margin: 0px;
+       width:16px;
+       height:100%;
+       border: 1px solid #fff;
+}
+.claro .dijitTextBox .dijitInputField {
+       padding-top: 1px; 
+       padding-bottom: 1px;
+}
+.claro .dijitTextBox .dijitInputInner {
+       
+       padding: 1px 2px 1px 0; 
+}
+.claro .dijitTextBox .dijitValidationContainer {
+       padding: 0 0 2px 0; 
+}
+.claro .dijitComboBox .dijitButtonNode {
+       background-color: #ebeef4;
+       background-image: url("images/formHighlight.png");
+       background-repeat:repeat-x;
+}
+.claro .dijitComboBoxHover .dijitButtonNode {
+       background-color:#abd6ff;
+}
+.claro .dijitComboBoxHover .dijitArrowButtonInner {
+       background-position:-70px 53%;
+}
+.claro .dijitComboBoxFocused .dijitButtonNode {
+       background-color:#7dbefa;
+       background-position:0px -177px;
+       padding: 1px;
+}      
+.claro .dijitComboBoxFocused .dijitArrowButtonInner {
+       background-position:-70px 53%;
+       border: 0px none;
+}
+.claro div.dijitComboBoxDisabled .dijitArrowButtonInner {
+       
+       background-position:0px 50%;
+       background-color:#f1f1f1;
+}
+.dj_ff3 .claro .dijitInputField input[type="hidden"] {
+       display: none;
+       height: 0;
+       width: 0;
+}
+.dj_ie6 .claro .dijitTextBox,
+.dj_ie6 .claro .dijitComboBox .dijitButtonNode {
+       background-image: none;
+}
+.dj_quirks .claro .dijitComboBox .dijitArrowButtonInner {
+       border: 0px;
+}
+.dj_quirks .claro .dijitComboBox .dijitArrowButtonContainer {
+       padding: 1px;
+}
diff --git a/lib/dijit/themes/claro/form/Common_rtl.css b/lib/dijit/themes/claro/form/Common_rtl.css
new file mode 100644 (file)
index 0000000..065f0c7
--- /dev/null
@@ -0,0 +1,5 @@
+
+.claro .dijitTextBoxRtlError .dijitValidationContainer {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
diff --git a/lib/dijit/themes/claro/form/NumberSpinner.css b/lib/dijit/themes/claro/form/NumberSpinner.css
new file mode 100644 (file)
index 0000000..66b97da
--- /dev/null
@@ -0,0 +1,100 @@
+
+.claro .dijitSpinnerButtonContainer {
+       overflow: hidden;
+       position: relative;
+       width: auto;
+       padding: 0 2px;
+}
+.claro .dijitSpinnerButtonContainer .dijitSpinnerButtonInner {
+       border-width: 1px 0; 
+       border-style: solid none;
+}
+.claro .dijitSpinner .dijitArrowButton {
+       width:auto;
+       background-color: #ebeef4;
+       background-image: url("images/formHighlight.png");
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       overflow: hidden;
+}
+.dj_iequirks .claro .dijitSpinner .dijitArrowButton {
+       overflow: visible; 
+}
+.claro .dijitSpinner .dijitSpinnerButtonInner {
+       width: 15px;
+}
+.claro .dijitSpinner .dijitArrowButtonInner {
+       border:solid 1px #fff;
+       border-bottom-width: 0; 
+       background-image: url("images/commonFormArrows.png");
+       background-repeat: no-repeat;
+       height: 100%;
+       width:15px;
+       padding-left: 1px;
+       padding-right: 1px;
+       
+       background-position:-139px center;
+       
+       display: block;
+       margin: -1px 0px -1px 0px;      
+       #margin-top: 0; 
+}
+.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner {
+       width: 19px;
+}
+.claro .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {
+       background-position:-34px;
+}
+.claro .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding: 0;
+}
+.claro .dijitUpArrowButtonActive,
+.claro .dijitDownArrowButtonActive {
+       background-color:#abd6ff;
+}
+.claro .dijitSpinner .dijitUpArrowButtonHover,
+.claro .dijitSpinner .dijitDownArrowButtonHover,
+.claro .dijitSpinnerFocused .dijitArrowButton {
+       background-color: #a0d1ff;
+}
+.claro .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner {
+       background-position:-174px;
+}
+.claro .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner {
+       background-position:-69px;
+}
+.claro .dijitSpinnerFocused {
+       background-color: #fff;
+       background-image: none;
+}
+.claro .dijitSpinner .dijitDownArrowButtonActive,
+.claro .dijitSpinner .dijitUpArrowButtonActive {
+       background-color: #3299f9;
+       background-position:0px -177px;
+}
+.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner,
+.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner {
+       
+       border: 0px;
+       padding: 1px;
+       margin-right:2px;
+       margin-bottom:1px;
+}
+.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner {
+       background-position:-173px;
+}
+.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner {
+       background-position:-68px;
+}
+.claro .dijitSpinnerDisabled .dijitArrowButtonInner {
+       background-color: #f1f1f1;
+}
+.claro .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position:-104px;
+}
+.claro .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner {
+       background-position:1px;
+}
+.dj_ie7 .claro .dijitSpinner {
+       overflow:visible;
+} 
diff --git a/lib/dijit/themes/claro/form/RadioButton.css b/lib/dijit/themes/claro/form/RadioButton.css
new file mode 100644 (file)
index 0000000..b9058d1
--- /dev/null
@@ -0,0 +1,51 @@
+
+.claro .dijitToggleButton .dijitRadio,
+.claro .dijitToggleButton .dijitRadioIcon {
+       background-image: url('images/checkboxRadioButtonStates.png');
+}
+.dj_ie6 .claro .dijitToggleButton .dijitRadio,
+.dj_ie6 .claro .dijitToggleButton .dijitRadioIcon {
+       background-image: url('images/checkboxAndRadioButtons_IE6.png');
+}
+.claro .dijitRadio,
+.claro .dijitRadioIcon {               
+       background-image: url('images/checkboxRadioButtonStates.png'); 
+       background-repeat: no-repeat;
+       width: 15px;
+       height: 15px;
+       margin: 0px 2px 0px 0px;
+       padding: 0px;
+}
+.dj_ie6 .claro .dijitRadio,
+.dj_ie6 .claro .dijitRadioIcon {               
+       background-image: url('images/checkboxAndRadioButtons_IE6.png'); 
+}
+.claro .dijitRadio{
+       
+       background-position: -105px;
+}
+.claro .dijitToggleButton .dijitRadioIcon {
+       
+       background-position: -107px;
+}
+.claro .dijitRadioDisabled {
+       
+       background-position: -165px;
+}
+.claro .dijitRadioHover {
+       
+       background-position: -135px;
+}
+.claro .dijitRadioChecked{
+       background-position: -90px;
+}
+.claro .dijitToggleButtonChecked .dijitRadioIcon {
+       background-position: -92px;
+}
+.claro .dijitRadioCheckedHover{
+       background-position: -120px;
+}
+.claro .dijitRadioCheckedDisabled {
+       
+       background-position: -150px;
+}
diff --git a/lib/dijit/themes/claro/form/Select.css b/lib/dijit/themes/claro/form/Select.css
new file mode 100644 (file)
index 0000000..c8f1d43
--- /dev/null
@@ -0,0 +1,89 @@
+
+.claro .dijitSelect .dijitButtonText {
+       padding: 0px 5px 2px 5px;
+}
+.claro .dijitSelect {
+       border: 1px solid #b5bcc7;
+       background-color: #f7fcff;
+       border-collapse: separate;
+}
+.dj_ie6 .claro .dijitSelect,
+.dj_ie6 .claro .dijitSelect .dijitButtonNode {
+       background-image:none;
+}
+.claro .dijitSelect .dijitButtonContents {
+       border: 0px solid #b5bcc7;
+       border-right-width: 1px;
+}
+.claro .dijitSelect .dijitArrowButton {
+       padding: 0;
+       border: 1px solid #fff; 
+       border-top:none;
+       background-color:#ebeef4;
+       background-image: url("images/formHighlight.png");
+       background-repeat:repeat-x;
+}
+.claro .dijitSelect .dijitArrowButton .dijitArrowButtonInner {
+       background-image: url("images/commonFormArrows.png");
+       background-position:-35px 70%;
+       background-repeat: no-repeat;
+       width:16px;
+       height:16px;
+       display:block;
+}
+.claro .dijitSelectHover {
+       border: 1px solid #769dc0;
+       background-color: #e9f4fe;
+       background-image: url('images/textBox_back.png');
+       background-repeat: repeat-x;
+}
+.claro .dijitSelectHover .dijitButtonContents {
+       border-color:#81a5c6;
+}
+.claro .dijitSelectHover .dijitArrowButton {
+       background-color:#abd6ff;
+}
+.claro .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner {
+       background-position:-70px 70%;
+}
+.claro .dijitSelectFocused {
+       border: 1px solid #769dc0;
+}
+.claro .dijitSelectFocused .dijitButtonContents {
+       border-color:#81a5c6;
+}
+.claro .dijitSelectFocused .dijitArrowButton {
+       background-color:#7dbefa;
+       background-position:0px -177px;
+       border: none;
+       padding: 0px 1px;
+}
+.claro .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner {
+       background-position:-70px 70%;
+       margin-bottom: 1px;
+}
+.claro .dijitSelectDisabled {
+       border: 1px solid #d3d3d3;
+       background-color: #efefef;
+       background-image: none;
+       color: #818181;
+}
+.claro .dijitSelectDisabled .dijitArrowButton { 
+       background-color: #efefef;
+}
+.claro .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner {
+       background-position:0px 70%
+}
+.claro .dijitSelectMenu td.dijitMenuItemIconCell,
+.claro .dijitSelectMenu td.dijitMenuArrowCell { 
+       
+       display: none;  
+}
+.claro .dijitSelectMenu td.dijitMenuItemLabel {
+       
+       padding-left: 5px;
+       padding-right: 5px;
+}
+.claro .dijitSelectMenu .dijitMenuSeparatorTop {
+       border-bottom:1px solid #769dc0;
+}
diff --git a/lib/dijit/themes/claro/form/Select_rtl.css b/lib/dijit/themes/claro/form/Select_rtl.css
new file mode 100644 (file)
index 0000000..4379750
--- /dev/null
@@ -0,0 +1,4 @@
+.claro .dijitSelectRtl .dijitButtonContents {
+       border-right-width: 0px;
+       border-left-width: 1px;
+}
diff --git a/lib/dijit/themes/claro/form/Slider.css b/lib/dijit/themes/claro/form/Slider.css
new file mode 100644 (file)
index 0000000..51c2c23
--- /dev/null
@@ -0,0 +1,294 @@
+
+.claro .dijitSliderBar {
+       border-style: solid;
+       outline: 1px;
+}
+.claro .dijitSliderFocused .dijitSliderBar {
+       border-color: #769dc0;
+}
+.claro .dijitSliderHover .dijitSliderBar {
+       border-color: #769dc0;
+}
+.claro .dijitSliderDisabled .dijitSliderBar {
+       background-image: none;
+       border-color: #d3d3d3;
+}
+.claro .dijitRuleLabelsContainerH {
+       padding: 2px 0px;
+}
+.claro .dijitSlider .dijitSliderProgressBarH,
+.claro .dijitSlider .dijitSliderLeftBumper{
+       background-image: url("images/sliderHorizontal.png");
+       background-repeat:repeat-x;
+       background-position:0 -20px;
+       border-color: #b5bcc7;
+       background-color: #cfe5fa;
+}
+.claro .dijitSlider .dijitSliderRemainingBarH,
+.claro .dijitSlider .dijitSliderRightBumper{
+       background-image: url("images/sliderHorizontal.png");
+       background-repeat:repeat-x;
+       background-position:0 -11px;
+       border-color: #b5bcc7;
+       background-color: #fff;
+}
+.claro .dijitSliderRightBumper {
+       border-right: solid 1px #b5bcc7;
+}
+.claro .dijitSliderLeftBumper {
+       border-left: solid 1px #b5bcc7;
+}
+.claro .dijitSliderHover .dijitSliderProgressBarH,
+.claro .dijitSliderHover .dijitSliderLeftBumper{
+       background-position:0 -20px;
+       background-color: #abd6ff;
+       border-color: #769dc0;
+}
+.claro .dijitSliderHover .dijitSliderRemainingBarH,
+.claro .dijitSliderHover .dijitSliderRightBumper{
+       background-position:0 0px;
+       background-color: #fff;
+       border-color: #769dc0;
+}
+.claro .dijitSliderFocused .dijitSliderProgressBarH,
+.claro .dijitSliderFocused .dijitSliderLeftBumper{
+       background-position:0 -30px;
+       background-color: #abd6ff;
+       border-color: #769dc0;
+}
+.claro .dijitSliderFocused .dijitSliderRemainingBarH,
+.claro .dijitSliderFocused .dijitSliderRightBumper{
+       background-position:0 -9px;
+       background-color: #fff;
+       border-color: #769dc0;
+}
+.claro .dijitSliderDisabled .dijitSliderProgressBarH,
+.claro .dijitSliderDisabled .dijitSliderLeftBumper{
+       background-color: #cdcdcd;
+       background-image:none;
+}
+.claro .dijitSliderDisabled .dijitSliderRemainingBarH,
+.claro .dijitSliderDisabled .dijitSliderRightBumper{
+       background-color: #efefef;
+}
+.claro .dijitRuleLabelsContainerV {
+       padding: 0px 2px;
+}
+.claro .dijitSlider .dijitSliderProgressBarV,
+.claro .dijitSlider .dijitSliderBottomBumper{
+       background-image: url("images/sliderVertical.png");
+       background-repeat:repeat-y;
+       background-position:-36px 0;
+       border-color: #b5bcc7;
+       background-color: #cfe5fa;
+}
+.claro .dijitSlider .dijitSliderRemainingBarV,
+.claro .dijitSlider .dijitSliderTopBumper{
+       background-image: url("images/sliderVertical.png");
+       background-repeat:repeat-y;
+       background-position:-3px 0;
+       border-color: #b5bcc7;
+       background-color: #fff;
+}
+.claro .dijitSliderBottomBumper {
+       border-bottom: solid 1px #b5bcc7;
+}
+.claro .dijitSliderTopBumper {
+       border-top: solid 1px #b5bcc7;
+}
+.claro .dijitSliderHover .dijitSliderProgressBarV,
+.claro .dijitSliderHover .dijitSliderBottomBumper{
+       background-position:-36px 0;
+       background-color: #abd6ff;
+}
+.claro .dijitSliderHover .dijitSliderRemainingBarV,
+.claro .dijitSliderHover .dijitSliderTopBumper{
+       background-position:0 0;
+       background-color: #fff;
+}
+.claro .dijitSliderFocused .dijitSliderProgressBarV,
+.claro .dijitSliderFocused .dijitSliderBottomBumper{
+       background-position:-56px 0;
+       background-color: #abd6ff;
+}
+.claro .dijitSliderFocused .dijitSliderRemainingBarV,
+.claro .dijitSliderFocused .dijitSliderTopBumper{
+       background-position:-18px 0;
+       background-color: #fff;
+}
+.claro .dijitSliderDisabled .dijitSliderProgressBarV,
+.claro .dijitSliderDisabled .dijitSliderBottomBumper{
+       background-color: #cdcdcd;
+}
+.claro .dijitSliderDisabled .dijitSliderRemainingBarV,
+.claro .dijitSliderDisabled .dijitSliderTopBumper{
+       background-color: #efefef;
+}
+.claro .dijitSliderImageHandleH {
+       border: 0px;
+       width: 18px;
+       height: 16px;
+       background-image: url("images/sliderThumbs.png");
+       background-repeat:no-repeat;
+       background-position:0 0;
+}
+.claro .dijitSliderHover .dijitSliderImageHandleH {
+       background-position:-18px 0;
+}
+.claro .dijitSliderFocused .dijitSliderImageHandleH {
+       background-position:-36px 0;
+}
+.claro .dijitSliderProgressBarH .dijitSliderThumbHover{
+       background-position:-36px 0;
+}
+.claro .dijitSliderProgressBarH .dijitSliderThumbActive{
+       background-position:-36px 0;
+}
+.claro .dijitSliderReadOnly .dijitSliderImageHandleH,
+.claro .dijitSliderDisabled .dijitSliderImageHandleH {
+       background-position:-54px 0;
+}
+.claro .dijitSliderImageHandleV {
+       border: 0px;
+       width: 18px;
+       height: 16px;
+       background-image: url("images/sliderThumbs.png");
+       background-repeat:no-repeat;
+       background-position:-289px 0;
+}
+.claro .dijitSliderHover .dijitSliderImageHandleV {
+       background-position:-307px 0;
+}
+.claro .dijitSliderFocused .dijitSliderImageHandleV {
+       background-position:-325px 0;
+}
+.claro .dijitSliderProgressBarV .dijitSliderThumbHover{
+       background-position:-325px 0;
+}
+.claro .dijitSliderProgressBarV .dijitSliderThumbActive{
+       background-position:-325px 0;
+}
+.claro .dijitSliderReadOnly .dijitSliderImageHandleV,
+.claro .dijitSliderDisabled .dijitSliderImageHandleV {
+       background-position:-343px 0;
+}
+.claro .dijitSliderButtonContainerH{
+       padding: 1px 3px 1px 2px;
+}
+.claro .dijitSliderButtonContainerV{
+       padding: 3px 1px 2px 1px;
+}
+.claro .dijitSliderDecrementIconH,
+.claro .dijitSliderIncrementIconH,
+.claro .dijitSliderDecrementIconV,
+.claro .dijitSliderIncrementIconV {
+       background-image: url('images/commonFormArrows.png');
+       background-repeat:no-repeat;
+       background-color: #e9ecf2;
+       -moz-border-radius: 2px;
+       -webkit-border-radius: 2px;
+       border: solid 1px #b5bcc7;
+       font-size: 1px;
+}
+.claro .dijitSliderDecrementIconH,
+.claro .dijitSliderIncrementIconH {
+       height: 12px;
+       width: 9px;
+}
+.claro .dijitSliderDecrementIconV,
+.claro .dijitSliderIncrementIconV {
+       height: 9px;
+       width: 12px;
+}
+.claro .dijitSliderActive .dijitSliderDecrementIconH,
+.claro .dijitSliderActive .dijitSliderIncrementIconH,
+.claro .dijitSliderActive .dijitSliderDecrementIconV,
+.claro .dijitSliderActive .dijitSliderIncrementIconV,
+.claro .dijitSliderHover .dijitSliderDecrementIconH,
+.claro .dijitSliderHover .dijitSliderIncrementIconH,
+.claro .dijitSliderHover .dijitSliderDecrementIconV,
+.claro .dijitSliderHover .dijitSliderIncrementIconV {
+       border: solid 1px #769dc0;
+       background-color:#fff;
+}
+.claro .dijitSliderDecrementIconH {
+       background-position:-357px 50%;
+}
+.claro .dijitSliderActive .dijitSliderDecrementIconH
+.claro .dijitSliderHover .dijitSliderDecrementIconH {
+       background-position:-393px 50%;
+}
+.claro .dijitSliderIncrementIconH {
+       background-position:-251px 50%;
+}
+.claro .dijitSliderActive .dijitSliderIncrementIconH
+.claro .dijitSliderHover .dijitSliderIncrementIconH {
+       background-position:-283px 50%;
+}
+.claro .dijitSliderDecrementIconV {
+       background-position:-38px 50%;
+}
+.claro .dijitSliderActive .dijitSliderDecrementIconV
+.claro .dijitSliderHover .dijitSliderDecrementIconV {
+       background-position:-73px 50%;
+}
+.claro .dijitSliderIncrementIconV {
+       background-position:-143px 49%;
+}
+.claro .dijitSliderActive .dijitSliderIncrementIconV
+.claro .dijitSliderHover .dijitSliderIncrementIconV {
+       background-position:-178px 49%;
+}
+.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover,
+.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover,
+.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover,
+.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover {
+       background-color: #cce3fc;
+}
+.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive,
+.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive,
+.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive,
+.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive {
+       background-color: #a5d0fc;
+       border-color:#6591b9;
+}
+.claro .dijitSliderButtonInner {
+       visibility: hidden;
+}
+.claro .dijitSliderDisabled .dijitSliderBar{
+       border-color: #d3d3d3;
+}
+.claro .dijitSliderReadOnly *,.claro .dijitSliderDisabled * {
+       border-color: #d3d3d3;
+       color: #bdbdbd;
+}
+.claro .dijitSliderReadOnly .dijitSliderDecrementIconH,
+.claro .dijitSliderDisabled .dijitSliderDecrementIconH {
+       background-position:-321px 50%;
+       background-color:#e9e9e9;
+}
+.claro .dijitSliderReadOnly .dijitSliderIncrementIconH,
+.claro .dijitSliderDisabled .dijitSliderIncrementIconH {
+       background-position:-215px 50%;
+       background-color:#e9e9e9;
+}
+.claro .dijitSliderReadOnly .dijitSliderDecrementIconV,
+.claro .dijitSliderDisabled .dijitSliderDecrementIconV {
+       background-position:-3px 49%;
+       background-color:#e9e9e9;
+}
+.claro .dijitSliderReadOnly .dijitSliderIncrementIconV,
+.claro .dijitSliderDisabled .dijitSliderIncrementIconV {
+       background-position:-107px 49%;
+       background-color:#e9e9e9;
+}
+.dj_ie6 .claro .dijitSlider .dijitSliderProgressBarH,
+.dj_ie6 .claro .dijitSlider .dijitSliderLeftBumper,
+.dj_ie6 .claro .dijitSlider .dijitSliderRemainingBarH,
+.dj_ie6 .claro .dijitSlider .dijitSliderRightBumper,
+.dj_ie6 .claro .dijitSlider .dijitSliderProgressBarV,
+.dj_ie6 .claro .dijitSlider .dijitSliderTopBumper,
+.dj_ie6 .claro .dijitSlider .dijitSliderRemainingBarV,
+.dj_ie6 .claro .dijitSlider .dijitSliderBottomBumper {
+       background-image:none;
+}
diff --git a/lib/dijit/themes/claro/form/Slider_rtl.css b/lib/dijit/themes/claro/form/Slider_rtl.css
new file mode 100644 (file)
index 0000000..ebff426
--- /dev/null
@@ -0,0 +1,26 @@
+.claro .dijitSliderRtl .dijitSliderProgressBarH,
+.claro .dijitSliderRtl .dijitSliderRemainingBarH,
+.claro .dijitSliderRtl .dijitSliderLeftBumper,
+.claro .dijitSliderRtl .dijitSliderRightBumper,
+.claro .dijitSliderRtl .dijitSliderTopBumper {
+       background-position: top right;
+}
+.claro .dijitSliderRtl .dijitSliderProgressBarV,
+.claro .dijitSliderRtl .dijitSliderRemainingBarV,
+.claro .dijitSliderRtl .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.claro .dijitSliderRtl .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.claro .dijitSliderRtl .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.claro .dijitSliderRtl .dijitSliderIncrementIconH {
+       background-position:-357px 50%;
+}
+.claro .dijitSliderRtl .dijitSliderDecrementIconH {
+       background-position:-251px 50%;
+}
diff --git a/lib/dijit/themes/claro/form/images/button.png b/lib/dijit/themes/claro/form/images/button.png
new file mode 100644 (file)
index 0000000..cb787cb
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/button.png differ
diff --git a/lib/dijit/themes/claro/form/images/buttonArrows.png b/lib/dijit/themes/claro/form/images/buttonArrows.png
new file mode 100644 (file)
index 0000000..642eff3
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/buttonArrows.png differ
diff --git a/lib/dijit/themes/claro/form/images/button_grad_d.png b/lib/dijit/themes/claro/form/images/button_grad_d.png
new file mode 100644 (file)
index 0000000..3a71a46
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/button_grad_d.png differ
diff --git a/lib/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png b/lib/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png
new file mode 100644 (file)
index 0000000..92d2221
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png differ
diff --git a/lib/dijit/themes/claro/form/images/checkboxRadioButtonStates.png b/lib/dijit/themes/claro/form/images/checkboxRadioButtonStates.png
new file mode 100644 (file)
index 0000000..2d06a82
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/checkboxRadioButtonStates.png differ
diff --git a/lib/dijit/themes/claro/form/images/commonFormArrows.png b/lib/dijit/themes/claro/form/images/commonFormArrows.png
new file mode 100644 (file)
index 0000000..6d04742
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/commonFormArrows.png differ
diff --git a/lib/dijit/themes/claro/form/images/error.png b/lib/dijit/themes/claro/form/images/error.png
new file mode 100644 (file)
index 0000000..46de1cd
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/error.png differ
diff --git a/lib/dijit/themes/claro/form/images/formHighlight.png b/lib/dijit/themes/claro/form/images/formHighlight.png
new file mode 100644 (file)
index 0000000..f90eb25
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/formHighlight.png differ
diff --git a/lib/dijit/themes/claro/form/images/shadow.png b/lib/dijit/themes/claro/form/images/shadow.png
new file mode 100644 (file)
index 0000000..72d60e6
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/shadow.png differ
diff --git a/lib/dijit/themes/claro/form/images/sliderHorizontal.png b/lib/dijit/themes/claro/form/images/sliderHorizontal.png
new file mode 100644 (file)
index 0000000..d769a64
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/sliderHorizontal.png differ
diff --git a/lib/dijit/themes/claro/form/images/sliderThumbs.png b/lib/dijit/themes/claro/form/images/sliderThumbs.png
new file mode 100644 (file)
index 0000000..70ab2fe
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/sliderThumbs.png differ
diff --git a/lib/dijit/themes/claro/form/images/sliderVertical.png b/lib/dijit/themes/claro/form/images/sliderVertical.png
new file mode 100644 (file)
index 0000000..9d69d04
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/sliderVertical.png differ
diff --git a/lib/dijit/themes/claro/form/images/textBox_back.png b/lib/dijit/themes/claro/form/images/textBox_back.png
new file mode 100644 (file)
index 0000000..dfc752a
Binary files /dev/null and b/lib/dijit/themes/claro/form/images/textBox_back.png differ
diff --git a/lib/dijit/themes/claro/images/calendarArrows.png b/lib/dijit/themes/claro/images/calendarArrows.png
new file mode 100644 (file)
index 0000000..3f6faa5
Binary files /dev/null and b/lib/dijit/themes/claro/images/calendarArrows.png differ
diff --git a/lib/dijit/themes/claro/images/calendarArrows8bit.png b/lib/dijit/themes/claro/images/calendarArrows8bit.png
new file mode 100644 (file)
index 0000000..ab9d66c
Binary files /dev/null and b/lib/dijit/themes/claro/images/calendarArrows8bit.png differ
diff --git a/lib/dijit/themes/claro/images/calendarContainerImages.png b/lib/dijit/themes/claro/images/calendarContainerImages.png
new file mode 100644 (file)
index 0000000..44fa088
Binary files /dev/null and b/lib/dijit/themes/claro/images/calendarContainerImages.png differ
diff --git a/lib/dijit/themes/claro/images/checkmarkNoBorder.gif b/lib/dijit/themes/claro/images/checkmarkNoBorder.gif
new file mode 100644 (file)
index 0000000..324bfb3
Binary files /dev/null and b/lib/dijit/themes/claro/images/checkmarkNoBorder.gif differ
diff --git a/lib/dijit/themes/claro/images/checkmarkNoBorder.png b/lib/dijit/themes/claro/images/checkmarkNoBorder.png
new file mode 100644 (file)
index 0000000..9cec0c0
Binary files /dev/null and b/lib/dijit/themes/claro/images/checkmarkNoBorder.png differ
diff --git a/lib/dijit/themes/claro/images/commonHighlight.png b/lib/dijit/themes/claro/images/commonHighlight.png
new file mode 100644 (file)
index 0000000..f90eb25
Binary files /dev/null and b/lib/dijit/themes/claro/images/commonHighlight.png differ
diff --git a/lib/dijit/themes/claro/images/dialogCloseIcon.png b/lib/dijit/themes/claro/images/dialogCloseIcon.png
new file mode 100644 (file)
index 0000000..a605c71
Binary files /dev/null and b/lib/dijit/themes/claro/images/dialogCloseIcon.png differ
diff --git a/lib/dijit/themes/claro/images/dialogCloseIcon8bit.png b/lib/dijit/themes/claro/images/dialogCloseIcon8bit.png
new file mode 100644 (file)
index 0000000..d2b063b
Binary files /dev/null and b/lib/dijit/themes/claro/images/dialogCloseIcon8bit.png differ
diff --git a/lib/dijit/themes/claro/images/dnd.png b/lib/dijit/themes/claro/images/dnd.png
new file mode 100644 (file)
index 0000000..8cb04aa
Binary files /dev/null and b/lib/dijit/themes/claro/images/dnd.png differ
diff --git a/lib/dijit/themes/claro/images/loading.gif b/lib/dijit/themes/claro/images/loading.gif
new file mode 100644 (file)
index 0000000..6e7c8e5
Binary files /dev/null and b/lib/dijit/themes/claro/images/loading.gif differ
diff --git a/lib/dijit/themes/claro/images/loadingAnimation.gif b/lib/dijit/themes/claro/images/loadingAnimation.gif
new file mode 100644 (file)
index 0000000..d76e4cd
Binary files /dev/null and b/lib/dijit/themes/claro/images/loadingAnimation.gif differ
diff --git a/lib/dijit/themes/claro/images/menuHighlight.png b/lib/dijit/themes/claro/images/menuHighlight.png
new file mode 100644 (file)
index 0000000..22328a7
Binary files /dev/null and b/lib/dijit/themes/claro/images/menuHighlight.png differ
diff --git a/lib/dijit/themes/claro/images/progressBarAnim.gif b/lib/dijit/themes/claro/images/progressBarAnim.gif
new file mode 100644 (file)
index 0000000..30c0d9d
Binary files /dev/null and b/lib/dijit/themes/claro/images/progressBarAnim.gif differ
diff --git a/lib/dijit/themes/claro/images/progressBarEmpty.png b/lib/dijit/themes/claro/images/progressBarEmpty.png
new file mode 100644 (file)
index 0000000..e0a6856
Binary files /dev/null and b/lib/dijit/themes/claro/images/progressBarEmpty.png differ
diff --git a/lib/dijit/themes/claro/images/progressBarFull.png b/lib/dijit/themes/claro/images/progressBarFull.png
new file mode 100644 (file)
index 0000000..280f51d
Binary files /dev/null and b/lib/dijit/themes/claro/images/progressBarFull.png differ
diff --git a/lib/dijit/themes/claro/images/spriteArrows.png b/lib/dijit/themes/claro/images/spriteArrows.png
new file mode 100644 (file)
index 0000000..608f4c7
Binary files /dev/null and b/lib/dijit/themes/claro/images/spriteArrows.png differ
diff --git a/lib/dijit/themes/claro/images/titlebar.png b/lib/dijit/themes/claro/images/titlebar.png
new file mode 100644 (file)
index 0000000..4818103
Binary files /dev/null and b/lib/dijit/themes/claro/images/titlebar.png differ
diff --git a/lib/dijit/themes/claro/images/tooltip.png b/lib/dijit/themes/claro/images/tooltip.png
new file mode 100644 (file)
index 0000000..aca1498
Binary files /dev/null and b/lib/dijit/themes/claro/images/tooltip.png differ
diff --git a/lib/dijit/themes/claro/images/tooltip8bit.png b/lib/dijit/themes/claro/images/tooltip8bit.png
new file mode 100644 (file)
index 0000000..51f65f1
Binary files /dev/null and b/lib/dijit/themes/claro/images/tooltip8bit.png differ
diff --git a/lib/dijit/themes/claro/images/treeExpandImages.png b/lib/dijit/themes/claro/images/treeExpandImages.png
new file mode 100644 (file)
index 0000000..75cf385
Binary files /dev/null and b/lib/dijit/themes/claro/images/treeExpandImages.png differ
diff --git a/lib/dijit/themes/claro/images/treeExpandImages8bit.png b/lib/dijit/themes/claro/images/treeExpandImages8bit.png
new file mode 100644 (file)
index 0000000..290b2e1
Binary files /dev/null and b/lib/dijit/themes/claro/images/treeExpandImages8bit.png differ
diff --git a/lib/dijit/themes/claro/images/treeExpand_loading.gif b/lib/dijit/themes/claro/images/treeExpand_loading.gif
new file mode 100644 (file)
index 0000000..424d376
Binary files /dev/null and b/lib/dijit/themes/claro/images/treeExpand_loading.gif differ
diff --git a/lib/dijit/themes/claro/layout/AccordionContainer.css b/lib/dijit/themes/claro/layout/AccordionContainer.css
new file mode 100644 (file)
index 0000000..77b8bd9
--- /dev/null
@@ -0,0 +1,65 @@
+
+.claro .dijitAccordionContainer {
+       border:none;
+}
+.claro .dijitAccordionInnerContainer {
+       background-color: #e6e6e7;      
+       border:solid 1px #b5bcc7;
+       margin-bottom:1px;
+       -webkit-transition-property:background-color,border;
+       -webkit-transition-duration:.3s;
+       -webkit-transition-timing-function:linear;
+}
+.claro .dijitAccordionTitle {
+       background-color: transparent;  
+       background-image: url("images/accordion.png");
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       padding: 5px 7px 2px 7px;
+       min-height:17px;
+       color:#4a4a4a;
+}
+.dj_ie6 .claro .dijitAccordionTitle {
+       background-image: none;
+}
+.claro .dijitAccordionContainer .dijitAccordionContainer-child {
+       background-color:#fff;
+       
+       border:1px solid #92bce1 !important;
+       margin: 0px 2px 2px;
+       padding: 9px;
+}
+.claro .dijitAccordionInnerContainerActive {
+       border:1px solid #769DC0;
+       background-color:#7dbefa;
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitAccordionInnerContainerActive .dijitAccordionTitle {
+       background-position:0px -136px;
+       color:#000;
+}
+.claro .dijitAccordionInnerContainerSelected {
+       border-color:#92bce1;
+       background-color: #cde8ff;
+}
+.claro .dijitAccordionInnerContainerSelected .dijitAccordionTitle {
+       color:#000;
+       background-position: 0 0;       
+}
+.claro .dijitAccordionInnerContainerHover dijitAccordionTitle {
+       
+       color:#000;
+}
+.claro .dijitAccordionInnerContainerHover,
+.claro .dijitAccordionInnerContainerSelectedActive {
+       border:1px solid #769DC0;
+       background-color:#9dcfff;
+       -webkit-transition-duration:.2s;
+}
+.claro .dijitAccordionInnerContainerSelectedHover .dijitAccordionContainer-child,
+.claro .dijitAccordionInnerContainerSelectedActive .dijitAccordionContainer-child {
+       background-color:#ffffff;
+       border:1px solid #769DC0 !important;
+       -webkit-box-shadow:inset 0px 0px 3px rgba(0, 0, 0, .25);
+       -moz-box-shadow:inset 0px 0px 3px rgba(0, 0, 0, .25);
+}
diff --git a/lib/dijit/themes/claro/layout/BorderContainer.css b/lib/dijit/themes/claro/layout/BorderContainer.css
new file mode 100644 (file)
index 0000000..333a458
--- /dev/null
@@ -0,0 +1,77 @@
+
+.claro .dijitBorderContainer {
+       border: 1px #b5bcc7 solid;
+       padding: 5px;
+}
+.claro .dijitSplitContainer-child,
+.claro .dijitBorderContainer-child {
+       
+       border: 1px #b5bcc7 solid;
+}
+.claro .dijitBorderContainer-dijitTabContainerTop,
+.claro .dijitBorderContainer-dijitTabContainerBottom,
+.claro .dijitBorderContainer-dijitTabContainerLeft,
+.claro .dijitBorderContainer-dijitTabContainerRight,
+.claro .dijitBorderContainer-dijitAccordionContainer {
+       
+        border: none;
+}
+.claro .dijitBorderContainer-dijitBorderContainer {
+       
+       border: 1px #c0ccdf solid;
+       padding: 5px;
+}
+.claro .dijitSplitterH,
+.claro .dijitGutterH {
+       background:none;
+       border:0;
+       height:5px;
+}
+.claro .dijitSplitterH .dijitSplitterThumb {
+       background:#dde2e9 none;
+       height:1px;
+       top:2px;
+       width:19px;
+}
+.claro .dijitSplitterV,
+.claro .dijitGutterV {
+       background:none;
+       border:0;
+       width:5px;
+       margin: 0;
+}
+.claro .dijitSplitterV .dijitSplitterThumb {
+       background:#dde2e9 none;
+       height:19px;
+       left:2px;
+       width:1px;
+       margin: 0;
+}
+.claro .dijitSplitterHHover {
+       font-size: 1px;
+       background: url("images/splitterHorizontalHover.png") no-repeat center top;
+}
+.claro .dijitSplitterHHover .dijitSplitterThumb {
+       background:#769dc0 none;
+}
+.claro .dijitSplitterVHover {
+       font-size: 1px;
+       background: url("images/splitterVerticalHover.png") no-repeat center left;
+}
+.claro .dijitSplitterVHover .dijitSplitterThumb {
+       background:#769dc0 none;
+}
+.dj_ie6 .dijitSplitterHHover,
+.dj_ie6 .claro .dijitSplitterVHover {
+       background-color:#cfe9ff;
+       background-image:none;
+}
+.claro .dijitSplitterHActive {
+       font-size: 1px;
+       background-color:#abd4fb;
+       border-top:blue;
+}
+.claro .dijitSplitterVActive {
+       font-size: 1px;
+       background-color:#abd4fb;
+}
diff --git a/lib/dijit/themes/claro/layout/ContentPane.css b/lib/dijit/themes/claro/layout/ContentPane.css
new file mode 100644 (file)
index 0000000..f9f543c
--- /dev/null
@@ -0,0 +1,17 @@
+
+.claro .dijitContentPane {
+       padding: 8px;
+}              
+.claro .dijitTabContainerTop-dijitContentPane,
+.claro .dijitTabContainerLeft-dijitContentPane,
+.claro .dijitTabContainerBottom-dijitContentPane,
+.claro .dijitTabContainerRight-dijitContentPane,
+.claro .dijitAccordionContainer-dijitContentPane {
+       background-color: #fff;
+       padding: 8px;           
+}
+.claro .dijitSplitContainer-dijitContentPane,
+.claro .dijitBorderContainer-dijitContentPane {
+       background-color: #fff;         
+       padding: 8px;
+}
diff --git a/lib/dijit/themes/claro/layout/TabContainer.css b/lib/dijit/themes/claro/layout/TabContainer.css
new file mode 100644 (file)
index 0000000..95fe2c2
--- /dev/null
@@ -0,0 +1,348 @@
+
+.claro .dijitTabPaneWrapper {
+       background:#fff;
+}
+.claro .dijitTabPaneWrapper,
+.claro .dijitTabContainerTop-tabs,
+.claro .dijitTabContainerBottom-tabs,
+.claro .dijitTabContainerLeft-tabs,
+.claro .dijitTabContainerRight-tabs {
+       
+       border-color: #b5bcc7;
+}
+.claro .dijitTabCloseButton {
+       background: url("images/tabClose.png") no-repeat;
+       width: 14px;
+       height: 14px;
+       margin-left: 5px;
+       margin-right:-3px;
+}
+.claro .dijitTabCloseButtonHover {
+       background-position:-14px;
+}
+.claro .dijitTabCloseButtonActive {
+       background-position:-28px;
+}
+.claro .dijitTabSpacer {
+       
+       display: none;
+}
+.claro .dijitTabInnerDiv {
+       background-color:#e6e6e7;
+       -webkit-transition-property:background-color, border;
+       -webkit-transition-duration:.35s;
+       color:#4a4a4a;
+}
+.claro .dijitTabHover .dijitTabInnerDiv {
+       background-color:#a9d6ff;
+       -webkit-transition-duration:.25s;
+       color:#000;
+}
+.claro .dijitTabActive .dijitTabInnerDiv {
+       background-color:#8bc4f9;
+       color:#000;
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitTabChecked .dijitTabInnerDiv {
+       background-color:#b2d4f3;
+       color:#000;
+}
+.claro .dijitTabContent {
+       border: 1px solid #b5bcc7;
+}
+.claro .dijitTabHover .dijitTabContent,
+.claro .dijitTabActive .dijitTabContent {
+       border-color: #769dc0;
+}
+.claro .dijitTabChecked .dijitTabContent {
+       color:#000;
+       border-color: #b5bcc7;  
+}
+.claro .tabStripButton .dijitTabInnerDiv {
+       background-color: transparent;
+}
+.claro .tabStripButton .dijitTabContent {
+       border: none;
+}
+.claro .dijitTabContainerTop-tabs .dijitTab {
+       top: 1px;       
+       margin-right: 1px;
+       padding-top: 3px;
+}
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTab {
+       top: 3px;
+}
+.claro .dijitTabContainerTop-tabs .dijitTabContent {
+       padding:3px 8px 3px 4px;
+       border-bottom: 1px;
+       background-image:url("images/tabTop.png");
+       background-position:0px 0px;
+       background-repeat:repeat-x;
+       min-width: 60px;
+       text-align: center;
+}
+.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent {
+       padding-bottom: 4px;
+       padding-top: 6px;
+}
+.dj_ie .claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent {
+       border-bottom: none;
+}
+.claro .dijitTabContainerTop-tabs .dijitTabInnerDiv {
+       background-image:url("images/tabTop.png");
+       background-position:0px -248px;
+       background-position:bottom;
+       background-repeat:repeat-x;
+       box-shadow: 0px -1px 1px rgba(0, 0, 0, 0.04);
+       -webkit-box-shadow: 0px -1px 1px rgba(0, 0, 0, 0.04);
+       -moz-box-shadow: 0px -1px 1px rgba(0, 0, 0, 0.04);
+}
+.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background-image:none;
+       box-shadow: 0px -1px 2px rgba(0, 0, 0, 0.05);
+       -webkit-box-shadow: 0px -1px 2px rgba(0, 0, 0, 0.05);
+       -moz-box-shadow: 0px -1px 2px rgba(0, 0, 0, 0.05);
+}
+.claro .dijitTabContainerTop-tabs .dijitTabChecked .dijitTabContent {
+       background-position:0px -102px;
+       background-repeat:repeat-x;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTab {
+       top: -1px;      
+       margin-right: 1px;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabContent {
+       padding:3px 8px 4px 4px;
+       border-top: none;
+       background-image: url("images/tabBottom.png");
+       background-position:0px -249px;
+       background-repeat: repeat-x;
+       background-position:bottom;
+       min-width: 60px;
+       text-align: center;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTab {
+       padding-bottom: 3px;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv {
+       background-image: url("images/tabBottom.png");
+       background-position: top;
+       background-repeat: repeat-x;
+       box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.04);
+       -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.04);
+       -moz-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.04);
+       
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabContent {
+       padding-bottom: 7px;
+       padding-top: 4px;
+       background-position:0px -119px;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabChecked {
+       padding-bottom: 0;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background-image:none;
+       box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);
+       -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);
+       -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);
+}
+.claro .dijitTabContainerLeft-tabs .dijitTab {
+       left: 1px;      
+       margin-bottom: 1px;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       background-image: url("images/tabLeft.png");
+       background-position: -347px -340px;
+       background-repeat: repeat-y;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabContent {
+       padding:3px 8px 4px 4px;
+       background-image: url("images/tabLeft.png");
+       background-repeat: repeat-y;
+       background-position:0px 0px;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabContent {
+       padding-right: 9px;
+       border-right: none;
+       background-image: none;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background-position:0px -179px;
+       background-repeat:repeat-y;
+       box-shadow: -1px 0px 2px rgba(0, 0, 0, .05);
+       -webkit-box-shadow: -1px 0px 2px rgba(0, 0, 0, .05);
+       -moz-box-shadow: -1px 0px 2px rgba(0, 0, 0, 0.05);
+}
+.claro .dijitTabContainerRight-tabs .dijitTab {
+       left: -1px;     
+       margin-bottom: 1px;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabInnerDiv {
+       background-image: url("images/tabRight.png");
+       background-repeat: repeat-y;
+       background-position: -1px -347px;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabContent {
+       padding:3px 8px 4px 4px;
+       background-image: url("images/tabRight.png");
+       background-position:right top;
+       background-repeat: repeat-y;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabContent {
+       padding-left: 5px;
+       border-left: none;
+       background-image: none;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background-position:-348px -179px;
+       box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.07);
+       -webkit-box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.07);
+       -moz-box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.07);
+}
+.claro .dijitTabContainerTop-tabs .dijitTabInnerDiv,
+.claro .dijitTabContainerTop-tabs .dijitTabContent {
+       border-radius: 2px 2px 0px 0px;
+       -moz-border-radius: 2px 2px 0px 0px;
+       -webkit-border-top-left-radius:2px;
+       -webkit-border-top-right-radius:2px;
+}
+.claro .dijitTabContainerBottom-tabs .dijitTabInnerDiv,
+.claro .dijitTabContainerBottom-tabs .dijitTabContent{
+       border-radius: 0px 0px 2px 2px;
+       -moz-border-radius: 0px 0px 2px 2px;
+       -webkit-border-bottom-right-radius:2px;
+       -webkit-border-bottom-left-radius:2px;
+}
+.claro .dijitTabContainerLeft-tabs .dijitTabInnerDiv,
+.claro .dijitTabContainerLeft-tabs .dijitTabContent{
+       border-radius: 2px 0px 0px 2px;
+       -moz-border-radius: 2px 0px 0px 2px;
+       -webkit-border-top-left-radius:2px;
+       -webkit-border-bottom-left-radius:2px;
+}
+.claro .dijitTabContainerRight-tabs .dijitTabInnerDiv,
+.claro .dijitTabContainerRight-tabs .dijitTabContent{
+       border-radius: 0px 2px 2px 0px;
+       -moz-border-radius: 0px 2px 2px 0px;
+       -webkit-border-top-right-radius:2px;
+       -webkit-border-bottom-right-radius:2px;
+}
+.claro .tabStripButton {
+       background-color:#deecf9;
+       border: 1px solid #b5bcc7;
+}
+.claro .dijitTabListContainer-top .tabStripButton {
+       padding: 4px 3px;
+       margin-top:7px;
+       background-image: url("images/tabTop.png");
+       background-position:0px 0px;
+}
+.claro .dijitTabListContainer-bottom .tabStripButton {
+       padding:5px 3px;
+       margin-bottom:4px;
+       background-image: url("images/tabTop.png");
+       background-position:0px -248px;
+       background-position:bottom;
+}
+.claro .tabStripButtonHover {
+       background-color:#a6d2fb;
+}
+.claro .tabStripButtonActive {
+       background-color:#7dbefa;
+}
+.claro .dijitTabStripIcon {
+       height:15px;
+       width:15px;
+       margin: 0 auto;
+       background:url("../form/images/buttonArrows.png") no-repeat -75px 50%;
+       background-color: transparent;
+}
+.claro .dijitTabStripSlideRightIcon{
+       background-position: -24px 50%;
+}
+.claro .dijitTabStripMenuIcon {
+       background-position: -51px 50%;
+}
+.claro .dijitTabListContainer-top .tabStripButtonDisabled,
+.claro .dijitTabListContainer-bottom .tabStripButtonDisabled {
+       background-color:#dddddd;
+       border:1px solid #c9c9c9;
+}
+.claro .tabStripButtonDisabled .dijitTabStripSlideLeftIcon {
+       background-position:-175px 50%;
+}
+.claro .tabStripButtonDisabled .dijitTabStripSlideRightIcon {
+       background-position: -124px 50%;
+}
+.claro .tabStripButtonDisabled .dijitTabStripMenuIcon {
+       background-position: -151px 50%;
+} 
+.claro .dijitTabContainerNested .dijitTabListWrapper {
+       height: auto;
+}
+.claro .dijitTabContainerNested .dijitTabContainerTop-tabs {
+       border-bottom:solid 1px #b5bcc7;
+       padding:1px 2px 4px;
+       margin-top:-2px;
+}
+.claro .dijitTabContainerTabListNested .dijitTabContent {
+       background:rgba(255, 255, 255, 0) none repeat scroll 0 0;
+       border: none;
+       padding: 4px;
+       border-color: rgba(118,157,192,0);
+       -webkit-transition-property:background-color, border-color;
+       -webkit-transition-duration:.3s;
+}
+.claro .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv {
+       
+       background: none;
+       border: none;
+       top: 0px;
+       box-shadow: none;
+       -webkit-box-shadow: none;
+       -moz-box-shadow: none;
+}
+.claro .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent {
+       background-color:#eaf4fc;
+       border-radius: 2px 2px 2px 2px;
+       -moz-border-radius: 2px 2px 2px 2px;
+       -webkit-border-radius:2px;
+       border:solid 1px #c8dff3;
+       padding: 3px;
+       webkit-transition-duration:.2s;
+}
+.claro .dijitTabContainerTabListNested .dijitTabHover .tabLabel {
+       text-decoration: none;
+}
+.claro .dijitTabContainerTabListNested .dijitTabActive .dijitTabContent {
+       border-radius: 2px 2px 2px 2px;
+       -moz-border-radius: 2px 2px 2px 2px;
+       -webkit-border-radius:2px;
+       border:solid 1px #a8c7e2;
+       padding: 3px;
+       background:#b9d9f5 url("images/tabNested.png") repeat-x;
+       -webkit-transition-duration:.1s;
+}
+.claro .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent {
+       border-radius: 2px 2px 2px 2px;
+       -moz-border-radius: 2px 2px 2px 2px;
+       -webkit-border-radius:2px;
+       padding: 3px;
+       border:solid 1px #a8c7e2;
+       background-position: 0px 105px;
+       background-color:#d4e8f9;
+}
+.claro .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {
+       text-decoration: none;
+       background-image:none;
+}
+.claro .dijitTabPaneWrapperNested {
+       border: none;
+}
+.dj_ie6 .claro .dijitTabContent,
+.dj_ie6 .claro .dijitTabInnerDiv,
+.dj_ie6 .dijitTabListContainer-top .tabStripButton,
+.dj_ie6 .dijitTabListContainer-bottom .tabStripButton{
+       background-image: none;
+}
diff --git a/lib/dijit/themes/claro/layout/TabContainer_rtl.css b/lib/dijit/themes/claro/layout/TabContainer_rtl.css
new file mode 100644 (file)
index 0000000..156cea9
--- /dev/null
@@ -0,0 +1,67 @@
+.claro .dijitTabContainerTop-tabs .dijitTabRtl,
+.claro .dijitTabContainerBottom-tabs .dijitTabRtl {
+       margin-right: 0;
+       margin-left: 1px;
+}
+.claro .dijitTabRtl {
+       -moz-box-orient:horizontal;
+       text-align: right;
+}
+.dj_ie7 .claro .dijitTabRtl .dijitTabContent {
+       display: block;
+       left: 0;
+}
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl,
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabCheckedRtl {
+       top: 1px;
+}
+.dj_ie7 .claro .tabStripButtonRtl .dijitButtonContents,
+.dj_ie8 .claro .tabStripButtonRtl .dijitButtonContents,        
+.dj_ie6 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie6 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie7 .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie7 .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_iequirks .claro .dijitTabContainerTop-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_iequirks .claro .dijitTabContainerBottom-tabs .dijitTabRtl .dijitTabInnerDiv {
+       float:left;
+}
+.dj_ie6 .claro .dijitTabRtl .tabLabel,
+.dj_ie6 .claro .dijitTabContainerRight-tabs .dijitTabRtl,
+.dj_ie6 .claro .dijitTabContainerLeft-tabs .dijitTabRtl,
+.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtl .dijitTabInnerDiv,
+.dj_ie7 .claro .dijitTabContainerLeft-tabs .dijitTabRtl .dijitTabInnerDiv {
+       
+       zoom:1;
+}
+.dj_ie6 .claro .dijitTabRtl .dijitTabCloseButton,
+.dj_ie7 .claro .dijitTabRtl .dijitTabCloseButton,
+.dj_iequirks .claro .dijitTabRtl .dijitTabCloseButton {
+       margin-right:5px;
+}
+.dj_ie6 .claro .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,
+.dj_ie6 .claro .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {
+       width:1%;
+}
+.dj_ie6 .dijitTabContainerTopStrip,
+.dj_ie6 .dijitTabContainerBottomStrip {
+       position:absolute;
+}
+.dj_iequirks .claro .dijitTabContainerTopRtl .dijitTabContainerTopStrip {
+       padding-top: 10px;
+}
+.dj_ie7 .claro .dijitTabContainerRight-tabs .dijitTabRtlChecked .dijitTabInnerDiv {
+       background-position:-341px -179px;
+}
+.dj_ie6 .dijitTabContainerTopRtl .dijitTabStripIcon,
+.dj_ie6 .dijitTabContainerBottomRtl .dijitTabStripIcon {
+   position: relative;
+}
+.dj_ie6-rtl .claro .dijitTabContainerTop-tabs {        
+       
+       padding-left: 3px;
+}
+.dj_iequirks-rtl .claro .dijitTabListWrapper {
+       
+       border-left: 1px solid #fff;
+       border-right: 1px solid #fff;
+}
diff --git a/lib/dijit/themes/claro/layout/images/accordion.png b/lib/dijit/themes/claro/layout/images/accordion.png
new file mode 100644 (file)
index 0000000..4818103
Binary files /dev/null and b/lib/dijit/themes/claro/layout/images/accordion.png differ
diff --git a/lib/dijit/themes/claro/layout/images/splitterHorizontalHover.png b/lib/dijit/themes/claro/layout/images/splitterHorizontalHover.png
new file mode 100644 (file)
index 0000000..0f5b691
Binary files /dev/null and b/lib/dijit/themes/claro/layout/images/splitterHorizontalHover.png differ
diff --git a/lib/dijit/themes/claro/layout/images/splitterVerticalHover.png b/lib/dijit/themes/claro/layout/images/splitterVerticalHover.png
new file mode 100644 (file)
index 0000000..2c3c696
Binary files /dev/null and b/lib/dijit/themes/claro/layout/images/splitterVerticalHover.png differ
diff --git a/lib/dijit/themes/claro/layout/images/tabBottom.png b/lib/dijit/themes/claro/layout/images/tabBottom.png
new file mode 100644 (file)
index 0000000..bf23240
Binary files /dev/null and b/lib/dijit/themes/claro/layout/images/tabBottom.png differ
diff --git a/lib/dijit/themes/claro/layout/images/tabClose.png b/lib/dijit/themes/claro/layout/images/tabClose.png
new file mode 100644 (file)
index 0000000..f3b2363
Binary files /dev/null and b/lib/dijit/themes/claro/layout/images/tabClose.png differ
diff --git a/lib/dijit/themes/claro/layout/images/tabLeft.png b/lib/dijit/themes/claro/layout/images/tabLeft.png
new file mode 100644 (file)
index 0000000..8e9fcba
Binary files /dev/null and b/lib/dijit/themes/claro/layout/images/tabLeft.png differ
diff --git a/lib/dijit/themes/claro/layout/images/tabNested.png b/lib/dijit/themes/claro/layout/images/tabNested.png
new file mode 100644 (file)
index 0000000..0140cf4
Binary files /dev/null and b/lib/dijit/themes/claro/layout/images/tabNested.png differ
diff --git a/lib/dijit/themes/claro/layout/images/tabRight.png b/lib/dijit/themes/claro/layout/images/tabRight.png
new file mode 100644 (file)
index 0000000..0aaae53
Binary files /dev/null and b/lib/dijit/themes/claro/layout/images/tabRight.png differ
diff --git a/lib/dijit/themes/claro/layout/images/tabTop.png b/lib/dijit/themes/claro/layout/images/tabTop.png
new file mode 100644 (file)
index 0000000..db7626e
Binary files /dev/null and b/lib/dijit/themes/claro/layout/images/tabTop.png differ
diff --git a/lib/dijit/themes/dijit.css b/lib/dijit/themes/dijit.css
new file mode 100644 (file)
index 0000000..0d83023
--- /dev/null
@@ -0,0 +1,1654 @@
+
+.dijitReset {
+       
+       margin:0;
+       border:0;
+       padding:0;
+       line-height:normal;
+       font: inherit;
+       color: inherit;
+}
+.dijit_a11y .dijitReset {
+       -moz-appearance: none; 
+}
+.dijitInline {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+       border:0;
+       padding:0;
+       vertical-align:middle;
+       #vertical-align: auto;  
+}
+.dijitHidden {
+       
+       display: none !important;
+}
+.dijitVisible {
+       
+       display: block !important;      
+       position: relative;                     
+}
+.dijitInputContainer {
+       
+       #zoom: 1;
+       overflow: hidden;
+       float: none !important; 
+       position:relative;
+}
+.dj_ie INPUT.dijitTextBox,
+.dj_ie .dijitTextBox INPUT {
+       font-size: 100%;
+}
+.dijitTextBox .dijitSpinnerButtonContainer,
+.dijitTextBox .dijitArrowButtonContainer,
+.dijitTextBox .dijitValidationContainer {
+       float: right;
+       text-align: center;
+}
+.dijitTextBox INPUT.dijitInputField {
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+}
+.dijitTextBox .dijitValidationContainer {
+       display: none;
+}
+.dijitInlineTable {
+       
+       display:inline-table;
+       display:inline-block;           
+       #zoom: 1; 
+       #display:inline; 
+       box-sizing: content-box; -moz-box-sizing: content-box;
+       border:0;
+       padding:0;
+}
+.dijitTeeny {
+       font-size:1px;
+       line-height:1px;
+}
+.dijitOffScreen {
+       position: absolute;
+       visibility: hidden;
+       left: 50%;
+       top: -10000px;
+}
+.dijitPopup {
+       position: absolute;
+       background-color: transparent;
+       margin: 0;
+       border: 0;
+       padding: 0;
+}
+.dijit_a11y .dijitPopup,
+.dijit_ally .dijitPopup DIV,
+.dijit_a11y .dijitPopup TABLE,
+.dijit_a11y .dijitTooltipContainer {
+       background-color: white !important;
+}
+.dijitPositionOnly {
+       
+       padding: 0 !important;
+       border: 0 !important;
+       background-color: transparent !important;
+       background-image: none !important;
+       height: auto !important;
+       width: auto !important;
+}
+.dijitNonPositionOnly {
+       
+       float: none !important;
+       position: static !important;
+       margin: 0 0 0 0 !important;
+       vertical-align: middle !important;
+}
+.dijitBackgroundIframe {
+       
+       position: absolute;
+       left: 0;
+       top: 0;
+       width: 100%;
+       height: 100%;
+       z-index: -1;
+       border: 0;
+       padding: 0;
+       margin: 0;
+}
+.dijitDisplayNone {
+       
+       display:none !important;
+}
+.dijitContainer {
+       
+       overflow: hidden;       
+}
+.dijit_a11y * {
+       background-image:none !important;
+}
+.dijit_a11y .dijitIcon,
+.dijit_a11y DIV.dijitArrowButtonInner, 
+.dijit_a11y SPAN.dijitArrowButtonInner,
+.dijit_a11y IMG.dijitArrowButtonInner,
+.dijit_a11y .dijitCalendarIncrementControl {
+       
+       display: none;
+}
+.dijitSpinner DIV.dijitArrowButtonInner {
+       display: block; 
+}
+.dijit_a11y .dijitA11ySideArrow {
+       display: inline !important; 
+       cursor: pointer;
+}
+.dijit_a11y .dijitCalendarDateLabel {
+       padding: 1px;
+}
+.dijit_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {
+       border-style: dotted !important;
+       border-width: 1px;
+       padding: 0px;
+}
+.dijit_a11y .dijitCalendarDateTemplate {
+       padding-bottom: 0.1em !important;       
+}
+.dijit_a11y .dijit * {
+       background:white !important;
+       color:black !important;
+}
+.dijit_a11y .dijitButtonNode {
+       border-color: black!important;
+       border-style: outset!important;
+       border-width: medium!important;
+}
+.dijit_a11y .dijitTextBoxReadOnly .dijitInputField,
+.dijit_a11y .dijitTextBoxReadOnly .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitButtonNode * {
+       vertical-align: middle;
+}
+.dijitButtonNode .dijitArrowButtonInner {
+       
+       background: no-repeat center;
+       width: 12px;
+       height: 12px;
+       direction: ltr; 
+}
+.dijitLeft {
+       
+       background-position:left top;
+       background-repeat:no-repeat;
+}
+.dijitStretch {
+       
+       white-space:nowrap;                     
+       background-repeat:repeat-x;
+}
+.dijitRight {
+       
+       #display:inline;                                
+       background-position:right top;
+       background-repeat:no-repeat;
+}
+.dijitToggleButton,
+.dijitButton,
+.dijitDropDownButton,
+.dijitComboButton {
+       
+       margin: 0.2em;
+}
+.dijitButtonContents {
+       display: block;         
+}
+td.dijitButtonContents {
+       display: table-cell;    
+}
+.dijitButtonNode IMG {
+       
+       vertical-align:middle;
+       
+}
+TABLE.dijitComboButton { 
+       
+       border-collapse: collapse;
+       border:0;
+       padding:0;
+       margin:0;
+}
+.dijitToolbar .dijitComboButton {
+       
+       border-collapse: separate;
+}
+.dijitToolbar .dijitToggleButton,
+.dijitToolbar .dijitButton,
+.dijitToolbar .dijitDropDownButton,
+.dijitToolbar .dijitComboButton {
+       margin: 0;
+}
+.dijitToolbar .dijitButtonContents {
+       
+       padding: 1px 2px;
+}
+.dj_ie .dijitComboButton {
+       
+       margin-bottom: -3px;
+}
+.dj_webkit .dijitToolbar .dijitDropDownButton {
+       padding-left: 0.3em;
+}
+.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {
+       padding:0;
+}
+.dijitButtonNode {
+       
+       border:1px solid gray;
+       margin:0;
+       line-height:normal;
+       vertical-align: middle;
+       #vertical-align: auto;
+       text-align:center;
+       white-space: nowrap;
+}
+.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {
+       
+       line-height:inherit;
+}
+.dijitTextBox .dijitButtonNode {
+       border-width: 0;
+}
+.dijitButtonNode,
+.dijitButtonNode * {
+       cursor: pointer;
+}
+.dj_ie .dijitButtonNode {
+       
+       zoom: 1;
+}
+.dj_ie .dijitButtonNode button {
+       
+       overflow: visible;
+}
+DIV.dijitArrowButton {
+       float: right;
+}
+.dijitTextBox {
+       border: solid black 1px;
+       #overflow: hidden; 
+       width: 15em;    
+       vertical-align: middle;
+       #vertical-align: auto;
+}
+.dijitTextBoxReadOnly,
+.dijitTextBoxDisabled {
+       color: gray;
+}
+.dj_webkit .dijitTextBoxDisabled INPUT {
+       color: #eee; 
+}
+.dj_webkit TEXTAREA.dijitTextAreaDisabled {
+       color: #333; 
+}
+.dj_gecko .dijitTextBoxReadOnly INPUT,
+.dj_gecko .dijitTextBoxDisabled INPUT {
+       -moz-user-input: none; 
+}
+.dijitPlaceHolder {
+       
+       color: #AAAAAA;
+       font-style: italic;
+       position: absolute;
+       top: 0;
+       left: 0;
+       #filter: ""; 
+}
+.dijitTimeTextBox {
+       width: 8em;
+}
+.dijitTextBox INPUT:focus {
+       outline: none;  
+}
+.dijitTextBoxFocused {
+       outline: auto 5px -webkit-focus-ring-color;
+}
+.dijitTextBox INPUT {
+       float: left; 
+}
+.dijitInputInner {
+       
+       border:0 !important;
+       vertical-align:middle !important;
+       background-color:transparent !important;
+       width:100% !important;
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+}
+.dijit_a11y .dijitTextBox INPUT {
+       margin: 0 !important;
+}
+.dijitTextBoxError INPUT.dijitValidationInner,
+.dijitTextBox INPUT.dijitArrowButtonInner {
+       
+       text-indent: -1em !important;
+       direction: ltr !important;
+       text-align: left !important;
+       height: auto !important;
+       #text-indent: 0 !important;
+       #letter-spacing: -5em !important;
+       #text-align: right !important;
+}
+.dj_ie .dijitTextBox INPUT,
+.dj_ie INPUT.dijitTextBox {
+       overflow-y: visible; 
+       line-height: normal; 
+}
+.dj_ie7 .dijitTextBox INPUT.dijitValidationInner,
+.dj_ie7 .dijitTextBox INPUT.dijitArrowButtonInner {
+       line-height: 86%; 
+}
+.dj_ie6 .dijitTextBox INPUT,
+.dj_ie6 INPUT.dijitTextBox,
+.dj_iequirks .dijitTextBox INPUT.dijitValidationInner,
+.dj_iequirks .dijitTextBox INPUT.dijitArrowButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitSpinnerButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitInputInner,
+.dj_iequirks INPUT.dijitTextBox {
+       line-height: 100%; 
+}
+.dijit_a11y INPUT.dijitValidationInner,
+.dijit_a11y INPUT.dijitArrowButtonInner {
+       
+       text-indent: 0 !important;
+       width: 1em !important;
+       #text-align: left !important;
+}
+.dijitTextBoxError .dijitValidationContainer {
+       display: inline;
+       cursor: default;
+}
+.dijitSpinner .dijitSpinnerButtonContainer,
+.dijitComboBox .dijitArrowButtonContainer {
+       
+       border-width: 0 0 0 1px !important; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       
+       border-width: 0;
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       clear: both; 
+}
+.dijit_a11y .dijitTextBox .dijitValidationContainer,
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBox .dijitArrowButtonContainer {
+       
+       border: solid black !important;
+       border-width: 0 0 0 1px !important;
+}
+.dj_ie .dijitToolbar .dijitComboBox {
+       
+       vertical-align: middle;
+}
+.dijitTextBox .dijitSpinnerButtonContainer {
+       width: 1em;
+       position: relative !important;
+       overflow: hidden;
+}
+.dijitSpinner .dijitSpinnerButtonInner {
+       width:1em;
+       visibility:hidden !important; 
+       overflow-x:hidden;
+}
+.dijitComboBox .dijitButtonNode,
+.dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 0;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border: 0 none !important;
+}
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner,
+.dijit_a11y .dijitSpinnerButtonContainer INPUT {
+       width: 1em !important;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner {
+       margin: 0 auto !important; 
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.3em !important;
+       padding-right: 0.3em !important;
+       margin-left: 0.3em !important;
+       margin-right: 0.3em !important;
+       width: 1.4em !important;
+}
+.dj_ie7 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.0em !important; 
+       padding-right: 0.0em !important;
+       width: 1em !important;
+}
+.dj_ie6 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0.1em !important;
+       margin-right: 0.1em !important;
+       width: 1em !important;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+       width: 2em !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       
+       padding: 0;
+       position: absolute !important;
+       right: 0;
+       float: none;
+       height: 50%;
+       width: 100%;
+       bottom: auto;
+       left: 0;
+       right: auto;
+}
+.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: auto;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitArrowButton {
+       overflow: visible !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {
+       top: 50%;
+       border-top-width: 1px !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {
+       #bottom: 50%;   
+       top: 0;
+}
+.dijitSpinner .dijitArrowButtonInner {
+       margin: auto;
+       overflow-x: hidden;
+       height: 100% !important;
+}
+.dj_iequirks .dijitSpinner .dijitArrowButtonInner {
+       height: auto !important;
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       -moz-transform: scale(0.5);
+       -moz-transform-origin: center top;
+       -webkit-transform: scale(0.5);
+       -webkit-transform-origin: center top;
+       -o-transform: scale(0.5);
+       -o-transform-origin: center top;
+       transform: scale(0.5);
+       transform-origin: left top;
+       padding-top: 0;
+       padding-bottom: 0;
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       width: 100%;
+}
+.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       zoom: 50%; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {
+       overflow: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 100%;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 1em; 
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       visibility: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       vertical-align:top;
+       visibility: visible;
+}
+.dijit_a11y .dijitSpinnerButtonContainer {
+       width: 1em;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 1px 0px 0px 0px;
+       border-style: solid !important;
+}
+.dijitCheckBox,
+.dijitRadio,
+.dijitCheckBoxInput {
+       padding: 0;
+       border: 0;
+       width: 16px;
+       height: 16px;
+       background-position:center center;
+       background-repeat:no-repeat;
+       overflow: hidden;
+}
+.dijitCheckBox INPUT,
+.dijitRadio INPUT {
+       margin: 0;
+       padding: 0;
+       display: block;
+}
+.dijitCheckBoxInput {
+       
+       opacity: 0.01;
+}
+.dj_ie .dijitCheckBoxInput {
+       filter: alpha(opacity=0);
+}
+.dijit_a11y .dijitCheckBox,
+.dijit_a11y .dijitRadio {
+       
+       width: auto !important;
+       height: auto !important;
+}
+.dijit_a11y .dijitCheckBoxInput {
+       opacity: 1;
+       filter: none;
+       width: auto;
+       height: auto;
+}
+.dijitProgressBarEmpty {
+       
+       position:relative;overflow:hidden;
+       border:1px solid black;         
+       z-index:0;                      
+}
+.dijitProgressBarFull {
+       
+       position:absolute;
+       overflow:hidden;
+       z-index:-1;
+       top:0;
+       width:100%;
+}
+.dj_ie6 .dijitProgressBarFull {
+       height:1.6em;
+}
+.dijitProgressBarTile {
+       
+       position:absolute;
+       overflow:hidden;
+       top:0;
+       left:0;
+       bottom:0;
+       right:0;
+       margin:0;
+       padding:0;
+       width:auto;
+       height:auto;
+       background-color:#aaa;
+       background-attachment: fixed;
+}
+.dijit_a11y .dijitProgressBarTile {
+       
+       border-width:2px;
+       border-style:solid;
+       background-color:transparent !important;
+}
+.dj_ie6 .dijitProgressBarTile {
+       
+       position:static;
+       
+       height:1.6em;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarLabel {
+       visibility:hidden;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+}
+.dijitProgressBarIndeterminateHighContrastImage {
+       display:none;
+}
+.dijit_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {
+       display:block;
+       position:absolute;
+       top:0;
+       bottom:0;
+       margin:0;
+       padding:0;
+       width:100%;
+       height:auto;
+}
+.dijitProgressBarLabel {
+       display:block;
+       position:static;
+       width:100%;
+       text-align:center;
+       background-color:transparent !important;
+}
+.dijitTooltip {
+       position: absolute;
+       z-index: 2000;
+       display: block;
+       
+       left: 50%;
+       top: -10000px;
+       overflow: visible;
+}
+.dijitTooltipContainer {
+       border: solid black 2px;
+       background: #b8b5b5;
+       color: black;
+       font-size: small;
+}
+.dijitTooltipFocusNode {
+       padding: 2px 2px 2px 2px;
+}
+.dijitTooltipConnector {
+       position: absolute;
+}
+.dijit_a11y .dijitTooltipConnector {
+       display: none;  
+}
+.dijitTooltipData {
+       display:none;
+}
+.dijitLayoutContainer {
+       position: relative;
+       display: block;
+       overflow: hidden;
+}
+body .dijitAlignTop,
+body .dijitAlignBottom,
+body .dijitAlignLeft,
+body .dijitAlignRight {
+       position: absolute;
+       overflow: hidden;
+}
+body .dijitAlignClient { position: absolute; }
+.dijitBorderContainer, .dijitBorderContainerNoGutter {
+       position:relative;
+       overflow: hidden;
+}
+.dijitBorderContainerPane,
+.dijitBorderContainerNoGutterPane {
+       position: absolute !important;  
+       z-index: 2;             
+}
+.dijitBorderContainer > .dijitTextArea {
+       
+       resize: none;
+}
+.dijitGutter {
+       
+       position: absolute;
+       font-size: 1px;         
+}
+.dijitSplitter {
+       position: absolute;
+       overflow: hidden;
+       z-index: 10;            
+       background-color: #fff;
+       border-color: gray;
+       border-style: solid;
+       border-width: 0;
+}
+.dj_ie .dijitSplitter {
+       z-index: 1;     
+}
+.dijitSplitterActive {
+       z-index: 11 !important;
+}
+.dijitSplitterCover {
+       position:absolute;
+       z-index:-1;
+       top:0;
+       left:0;
+       width:100%;
+       height:100%;
+}
+.dijitSplitterCoverActive {
+       z-index:3 !important;
+}
+.dj_ie .dijitSplitterCover {
+       background: white;
+       filter: alpha(opacity=0);
+}
+.dijitSplitterH {
+       height: 7px;
+       border-top:1px;
+       border-bottom:1px;
+       cursor: ns-resize;
+}
+.dijitSplitterV {
+       width: 7px;
+       border-left:1px;
+       border-right:1px;
+       cursor: ew-resize;
+}
+.dijitSplitContainer {
+       position: relative;
+       overflow: hidden;
+       display: block;
+}
+.dj_ff3 .dijit_a11y div.dijitSplitter:focus {
+       outline-style:dotted;
+       outline-width: 2px;
+}
+.dijitSplitPane {
+       position: absolute;
+}
+.dijitSplitContainerSizerH,
+.dijitSplitContainerSizerV {
+       position:absolute;
+       font-size: 1px;
+       cursor: move;
+       cursor: w-resize;
+       background-color: ThreeDFace;
+       border: 1px solid;
+       border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
+       margin: 0;
+}
+.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {
+       overflow:hidden;
+       position:absolute;
+       top:49%;
+}
+.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {
+       position:absolute;
+       left:49%;
+}
+.dijitSplitterShadow,
+.dijitSplitContainerVirtualSizerH,
+.dijitSplitContainerVirtualSizerV {
+       font-size: 1px;
+       background-color: ThreeDShadow;
+       -moz-opacity: 0.5;
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+       margin: 0;
+}
+.dj_ie .dijitSplitterV, .dijitSplitContainerVirtualSizerH {
+       cursor: w-resize;
+}
+.dj_ie .dijitSplitterH, .dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {
+       cursor: n-resize;
+}
+.dijit_a11y .dijitSplitterH {
+       border-top:1px solid #d3d3d3 !important;
+       border-bottom:1px solid #d3d3d3 !important;
+}
+.dijit_a11y .dijitSplitterV {
+       border-left:1px solid #d3d3d3 !important;
+       border-right:1px solid #d3d3d3 !important;
+}
+.dijitContentPane {
+       display: block;
+       overflow: auto; 
+}
+.dijitContentPaneSingleChild {
+       
+       overflow: hidden;
+}
+.dijitTitlePane {
+       display: block;
+       overflow: hidden;
+}
+.dijitTitlePaneTitle {
+       cursor: pointer;
+}
+.dijitFixedOpen {
+       
+       cursor: default;
+}
+.dijitTitlePaneTitle * {
+       vertical-align: middle;
+}
+.dijitTitlePane .dijitArrowNodeInner {
+       
+       display: none;
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNodeInner {
+       
+       display:inline !important;
+       font-family: monospace;         
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNode {
+       
+       display:none;
+}
+.dj_ie6 .dijitTitlePaneContentOuter,
+.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {
+       
+       zoom: 1;
+}
+.dijitColorPalette {
+       border: 1px solid #999;
+       background: #fff;
+       position: relative;
+}
+img.dijitColorPaletteUnder {
+       
+       border-style: none;
+       position: absolute;
+       left: 0;
+       top: 0;
+}
+.dijitColorPalette .dijitPaletteTable {
+       
+       padding: 2px 3px 3px 3px;
+       position: relative;
+       overflow: hidden;
+       outline: 0;
+       border-collapse: separate;
+}
+.dj_ie6 .dijitColorPalette .dijitPaletteTable,
+.dj_ie7 .dijitColorPalette .dijitPaletteTable,
+.dj_iequirks .dijitColorPalette .dijitPaletteTable {
+       
+       padding: 0;
+       margin: 2px 3px 3px 3px;
+}
+.dijitColorPalette .dijitPaletteCell {
+       
+       height: 20px;
+       width: 20px;
+       font-size: 1px;
+       vertical-align: middle;
+       text-align: center;
+}
+.dijitColorPalette .dijitPaletteImg {
+       
+       width: 16px;
+       height: 14px;
+       border: 1px solid #999;
+       cursor: default;
+       vertical-align: middle;
+}
+.dj_iequirks .dijitColorPalette .dijitPaletteImg {
+       margin: 1px;    
+}
+.dijitPaletteTable td {
+               padding: 0px;
+}
+.dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       
+       border: 1px solid #000;
+}
+.dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg,
+.dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg {
+       border: 2px solid #000;
+}
+.dijit_a11y .dijitColorPalette .dijitPaletteTable,
+.dijit_a11y .dijitColorPalette .dijitPaletteTable * {
+       
+       background-color: transparent !important;
+}
+.dj_gecko .dijit_a11y .dijitColorPalette .dijitPaletteCellFocused .dijitPaletteImg {
+       border: 3px dotted #000;        
+       margin: -1px;
+}
+.dijit_a11y  .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       border: 2px solid #000 !important;
+}
+.dijitAccordionContainer {
+       border:1px solid #b7b7b7;
+       border-top:0 !important;
+}
+.dijitAccordionTitle {
+       cursor: pointer;
+}
+.dijitAccordionTitleSelected {
+       cursor: default;
+}
+.dijitAccordionTitle .arrowTextUp,
+.dijitAccordionTitle .arrowTextDown {
+       display: none;
+       font-size: 0.65em;
+       font-weight: normal !important;
+}
+.dijit_a11y .dijitAccordionTitle .arrowTextUp,
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextDown {
+       display: inline;
+}
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextUp {
+       display: none;
+}
+.dj_ie6 .dijitAccordionTitle,
+.dj_iequirks .dijitAccordionTitle {
+       
+       zoom: 1;
+}
+.dijitCalendarContainer {
+       width: auto;    
+}
+.dijitCalendarContainer th, .dijitCalendarContainer td {
+       padding: 0;
+}
+.dijitCalendarNextYear {
+       margin:0 0 0 0.55em;
+}
+.dijitCalendarPreviousYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarIncrementControl {
+       vertical-align: middle;
+}
+.dijitCalendarIncrementControl,
+.dijitCalendarDateTemplate,
+.dijitCalendarMonthLabel,
+.dijitCalendarPreviousYear,
+.dijitCalendarNextYear {
+       cursor: pointer;
+}
+.dijitCalendarDisabledDate {
+       color: gray;
+       text-decoration: line-through;
+       cursor: default;
+}
+.dijitSpacer {
+       
+       position: relative;
+       height: 1px;
+       overflow: hidden;
+       visibility: hidden;
+}
+.dijitMenu {
+       border:1px solid black;
+       background-color:white;
+}
+.dijitMenuTable {
+       border-collapse:collapse;
+       border-width:0;
+       background-color:white;
+}
+.dj_webkit .dijitMenuTable td[colspan="2"]{
+       border-right:hidden;
+}
+.dijitMenuItem {
+       text-align: left;
+       white-space: nowrap;
+       padding:.1em .2em;
+       cursor:pointer;
+}
+.dijitMenuPassive .dijitMenuItemHover,
+.dijitMenuItemSelected {
+       
+       background-color:black;
+       color:white;
+}
+.dijitMenuItemIcon, .dijitMenuExpand {
+       background-repeat: no-repeat;
+}
+.dijitMenuItemDisabled * {
+       
+       opacity:0.5;
+       cursor:default;
+}
+.dj_ie .dijit_a11y .dijitMenuItemDisabled,
+.dj_ie .dijit_a11y .dijitMenuItemDisabled td,
+.dj_ie .dijitMenuItemDisabled *,
+.dj_ie .dijitMenuItemDisabled td {
+       color:gray !important;
+       filter: alpha(opacity=35);
+}
+.dijitMenuItemLabel {
+       position: relative;
+       vertical-align: middle;
+}
+.dijit_a11y .dijitMenuItemSelected {
+       border: 1px dotted black !important;
+}
+.dj_ff3 .dijit_a11y .dijitMenuItem td {
+       padding: none !important;
+       background:none !important;
+}
+.dijit_a11y .dijitMenuItemSelected .dijitMenuItemLabel {
+       border-width: 1px;
+       border-style: solid;
+}
+.dj_ie8 .dijit_a11y .dijitMenuItemLabel {
+       position:static;
+}
+.dijitMenuExpandA11y {
+       display: none;
+}
+.dijit_a11y .dijitMenuExpandA11y {
+       display: inline;
+}
+.dijitMenuSeparator td {
+       border: 0;
+       padding: 0;
+}
+.dijitMenuSeparatorTop {
+       height: 50%;
+       margin: 0;
+       margin-top:3px;
+       font-size: 1px;
+}
+.dijitMenuSeparatorBottom {
+       height: 50%;
+       margin: 0;
+       margin-bottom:3px;
+       font-size: 1px;
+}
+.dijitCheckedMenuItemIconChar {
+       vertical-align: middle;
+       visibility:hidden;
+}
+.dijitCheckedMenuItemChecked .dijitCheckedMenuItemIconChar {
+       visibility: visible;
+}
+.dijit_a11y .dijitCheckedMenuItemIconChar {
+       display:inline !important;
+}
+.dijit_a11y .dijitCheckedMenuItemIcon {
+       display: none;
+}
+.dj_ie .dijit_a11y .dijitMenuBar .dijitMenuItem {
+       
+       margin: 0px;
+}
+.dijitStackController .dijitToggleButtonChecked * {
+       cursor: default;        
+}
+.dijitTabContainerNoLayout {
+       width: 100%;    
+}
+.dijitTabContainerBottom-tabs,
+.dijitTabContainerTop-tabs,
+.dijitTabContainerLeft-tabs,
+.dijitTabContainerRight-tabs {
+       overflow: visible !important;  
+}
+.dijitTabContainerBottom-container,
+.dijitTabContainerTop-container,
+.dijitTabContainerLeft-container,
+.dijitTabContainerRight-container {
+       z-index:0;
+       overflow: hidden;
+       border: 1px solid black;
+}
+.nowrapTabStrip {
+       width: 50000px;
+       display: block;
+       position: relative;
+}
+.dijitTabListWrapper {
+       overflow: hidden;
+}
+.dijit_a11y .tabStripButton img {
+       
+       display: none;
+}
+.dijitTabContainerTop-tabs {
+       border-bottom: 1px solid black;
+}
+.dijitTabContainerTop-container {
+       border-top: 0px;
+}
+.dijitTabContainerLeft-tabs {
+       border-right: 1px solid black;
+       float: left;
+}
+.dijitTabContainerLeft-container {
+       border-left: 0px;
+}
+.dijitTabContainerBottom-tabs {
+       border-top: 1px solid black;
+}
+.dijitTabContainerBottom-container {
+       border-bottom: 0px;
+}
+.dijitTabContainerRight-tabs {
+       border-left: 1px solid black;
+       float: left;
+}
+.dijitTabContainerRight-container {
+       border-right: 0px;
+}
+DIV.dijitTabDisabled, .dj_ie DIV.dijitTabDisabled {
+       cursor: auto;
+}
+.dijitTab {
+       position:relative;
+       cursor:pointer;
+       white-space:nowrap;
+       z-index:3;
+}
+.dijitTab * {
+       
+       vertical-align: middle;
+}
+.dijitTabChecked {
+       cursor: default;        
+}
+.dijitTabContainerTop-tabs .dijitTab {
+       top: 1px;       
+}
+.dijitTabContainerBottom-tabs .dijitTab {
+       top: -1px;      
+}
+.dijitTabContainerLeft-tabs .dijitTab {
+       left: 1px;      
+}
+.dijitTabContainerRight-tabs .dijitTab {
+       left: -1px;     
+}
+.dijitTabContainerTop-tabs .dijitTab,
+.dijitTabContainerBottom-tabs .dijitTab {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+}
+.dijitTabInnerDiv {
+       position:relative;
+}
+.tabStripButton {
+       z-index: 12;
+}
+.dijitTabButtonDisabled .tabStripButton {
+       display: none;
+}
+.dijitTabCloseButton {
+       margin-left: 1em;
+}
+.dijitTabCloseText {
+       display:none;
+}
+.dijit_a11y .dijitTabCloseButton {
+       background-image: none !important;
+       width: auto !important;
+       height: auto !important;
+       border: thin dotted;    
+}
+.dijit_a11y .dijitTabCloseButtonHover {
+       border:thin solid;      
+}
+.dijit_a11y .dijitTabCloseText {
+       display: inline;
+}
+.dijit_a11y .dijitTabChecked {
+       
+       border-style:dashed !important;
+}
+.dijit_a11y .dijitTabInnerDiv {
+       border-left:none !important;
+ }
+.dijitTabPane,
+.dijitStackContainer-child,
+.dijitAccordionContainer-child {
+       
+    border: none !important;
+}
+.dijitInlineEditBoxDisplayMode {
+       border: 1px solid transparent;  
+       cursor: text;
+}
+.dijit_a11y .dijitInlineEditBoxDisplayMode,
+.dj_ie6 .dijitInlineEditBoxDisplayMode {
+       
+       border: none;
+}
+.dijitInlineEditBoxDisplayModeHover,
+.dijit_a11y .dijitInlineEditBoxDisplayModeHover,
+.dj_ie6 .dijitInlineEditBoxDisplayModeHover {
+       
+       background-color: #e2ebf2;
+       border: solid 1px black;
+}
+.dijitInlineEditBoxDisplayModeDisabled {
+       cursor: default;
+}
+.dijitTreeIndent {
+       
+       width: 19px;
+}
+.dijitTreeRow, .dijitTreeContent {
+       white-space: nowrap;
+}
+.dijitTreeRow img {
+       
+       vertical-align: middle;
+}
+.dijitTreeContent {
+    cursor: default;
+}
+.dijitExpandoText {
+       display: none;
+}
+.dijit_a11y .dijitExpandoText {
+       display: inline;
+       padding-left: 10px;
+       padding-right: 10px;
+       font-family: monospace;
+       border-style: solid;
+       border-width: thin;
+       cursor: pointer;
+}
+.dijitTreeLabel {
+       margin: 0px 4px;
+}
+.dijitDialog {
+       position: absolute;
+       z-index: 999;
+       overflow: hidden;       
+}
+.dijitDialogTitleBar {
+       cursor: move;
+}
+.dijitDialogFixed .dijitDialogTitleBar {
+       cursor:default;
+}
+.dijitDialogCloseIcon {
+       cursor: pointer;
+}
+.dijitDialogUnderlayWrapper {
+       position: absolute;
+       left: 0;
+       top: 0;
+       z-index: 998;
+       display: none;
+       background: transparent !important;
+}
+.dijitDialogUnderlay {
+       background: #eee;
+       opacity: 0.5;
+}
+.dj_ie .dijitDialogUnderlay {
+       filter: alpha(opacity=50);
+}
+.dijit_a11y .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitDialog {
+       opacity: 1 !important;
+       background-color: white !important;
+}
+.dijitDialog .closeText {
+       display:none;
+       
+       position:absolute;
+}
+.dijit_a11y .dijitDialog .closeText {
+       display:inline;
+}
+.dijitSliderMoveable {
+       z-index:99;
+       position:absolute !important;
+       display:block;
+       vertical-align:middle;
+}
+.dijitSliderMoveableH {
+       right:0;
+}
+.dijitSliderMoveableV {
+       right:50%;
+}
+.dijit_a11y DIV.dijitSliderImageHandle,
+.dijitSliderImageHandle {
+       margin:0;
+       padding:0;
+       position:relative !important;
+       border:8px solid gray;
+       width:0;
+       height:0;
+       cursor: pointer;
+}
+.dj_iequirks .dijit_a11y .dijitSliderImageHandle {
+       font-size: 0;
+}
+.dj_ie7 .dijitSliderImageHandle {
+       overflow: hidden; 
+}
+.dj_ie7 .dijit_a11y .dijitSliderImageHandle {
+       overflow: visible; 
+}
+.dijit_a11y .dijitSliderFocused .dijitSliderImageHandle {
+       border:4px solid #000;
+       height:8px;
+       width:8px;
+}
+.dijitSliderImageHandleV {
+       top:-8px;
+       right: -50%;
+}
+.dijitSliderImageHandleH {
+       left:50%;
+       top:-5px;
+       vertical-align:top;
+}
+.dijitSliderBar {
+       border-style:solid;
+       border-color:black;
+       cursor: pointer;
+}
+.dijitSliderBarContainerV {
+       position:relative;
+       height:100%;
+       z-index:1;
+}
+.dijitSliderBarContainerH {
+       position:relative;
+       z-index:1;
+}
+.dijitSliderBarH {
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBarV {
+       width:4px;
+       border-width:0 1px;
+}
+.dijitSliderProgressBar {
+       background-color:red;
+       z-index:1;
+}
+.dijitSliderProgressBarV {
+       position:static !important;
+       height:0%;
+       vertical-align:top;
+       text-align:left;
+}
+.dijitSliderProgressBarH {
+       position:absolute !important;
+       width:0%;
+       vertical-align:middle;
+       overflow:visible;
+}
+.dijitSliderRemainingBar {
+       overflow:hidden;
+       background-color:transparent;
+       z-index:1;
+}
+.dijitSliderRemainingBarV {
+       height:100%;
+       text-align:left;
+}
+.dijitSliderRemainingBarH {
+       width:100% !important;
+}
+.dijitSliderBumper {
+       overflow:hidden;
+       z-index:1;
+}
+.dijitSliderBumperV {
+       width:4px;
+       height:8px;
+       border-width:0 1px;
+}
+.dijitSliderBumperH {
+       width:8px;
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBottomBumper,
+.dijitSliderLeftBumper {
+       background-color:red;
+}
+.dijitSliderTopBumper,
+.dijitSliderRightBumper {
+       background-color:transparent;
+}
+.dijitSliderDecoration {
+       text-align:center;
+}
+.dijitSliderV TD {
+       position: relative; 
+}
+.dijitSliderDecorationH {
+       width: 100%;
+}
+.dijitSliderDecorationV {
+       height: 100%;
+}
+.dijitSliderButton {
+       font-family:monospace;
+       margin:0;
+       padding:0;
+       display:block;
+}
+.dijit_a11y .dijitSliderButtonInner {
+       visibility:visible !important;
+}
+.dijitSliderButtonContainer {
+       text-align:center;
+       height:0;       
+}
+.dijitSliderButtonContainer * {
+       cursor: pointer;
+}
+.dijitSlider .dijitButtonNode {
+       padding:0;
+       display:block;
+}
+.dijitRuleContainer {
+       position:relative;
+       overflow:visible;
+}
+.dijitRuleContainerV {
+       height:100%;
+       line-height:0;
+       float:left;
+       text-align:left;
+}
+.dj_opera .dijitRuleContainerV {
+       line-height:2%;
+}
+.dj_ie .dijitRuleContainerV {
+       line-height:normal;
+}
+.dj_gecko .dijitRuleContainerV {
+       margin:0 0 1px 0; 
+}
+.dijitRuleMark {
+       position:absolute;
+       border:1px solid black;
+       line-height:0;
+       height:100%;
+}
+.dijitRuleMarkH {
+       width:0;
+       border-top-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+}
+.dijitRuleLabelContainer {
+       position:absolute;
+}
+.dijitRuleLabelContainerH {
+       text-align:center;
+       display:inline-block;
+}
+.dijitRuleLabelH {
+       position:relative;
+       left:-50%;
+}
+.dijitRuleLabelV {
+       
+       text-overflow: ellipsis;
+       white-space: nowrap;
+       overflow: hidden;
+}
+.dijitRuleMarkV {
+       height:0;
+       border-right-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+       width:100%;
+       left:0;
+}
+.dj_ie .dijitRuleLabelContainerV {
+       margin-top:-.55em;
+}
+.dijit_a11y .dijitSliderReadOnly,
+.dijit_a11y .dijitSliderDisabled {
+       opacity:0.6;
+}
+.dj_ie .dijit_a11y .dijitSliderReadOnly .dijitSliderBar,
+.dj_ie .dijit_a11y .dijitSliderDisabled .dijitSliderBar {
+       filter: alpha(opacity=40);
+}
+.dijit_a11y .dijitSlider .dijitSliderButtonContainer DIV {
+       font-family: monospace; 
+       font-size: 1em;
+       line-height: 1em;
+       height: auto;
+       width: auto;
+       margin: 0px 4px;
+}
+.dijit_a11y .dijitButtonContents .dijitButtonText,
+.dijit_a11y .dijitTab .tabLabel {
+       display: inline !important;
+}
+.dijitTextArea {
+       width:100%;
+       overflow-y: auto;       
+}
+.dijitTextArea[cols] {
+       width:auto; 
+}
+.dj_ie .dijitTextAreaCols {
+       width:auto;
+}
+.dijitToolbarSeparator {
+       height: 18px;
+       width: 5px;
+       padding: 0 1px;
+       margin: 0;
+}
+.dijitIEFixedToolbar {
+       position:absolute;
+       
+       top: expression(eval((document.documentElement||document.body).scrollTop));
+}
+.dijitEditor {
+       display: block; 
+}
+.dijitEditorDisabled,
+.dijitEditorReadOnly {
+       color: gray;
+}
+.dijitTimePickerItemInner {
+       text-align:center;
+       border:0;
+       padding:2px 8px 2px 8px;
+}
+.dijitTimePickerTick,
+.dijitTimePickerMarker {
+       border-bottom:1px solid gray;
+}
+.dijitTimePicker .dijitDownArrowButton {
+       border-top: none !important;
+}
+.dijitTimePickerTick {
+       color:#CCC;
+}
+.dijitTimePickerMarker {
+       color:black;
+       background-color:#CCC;
+}
+.dijitTimePickerItemSelected {
+       font-weight:bold;
+       color:#333;
+       background-color:#b7cdee;
+}
+.dijitTimePickerItemHover {
+       background-color:gray;
+       color:white;
+       cursor:pointer;
+}
+.dijit_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       border: solid 4px black;
+}
+.dijit_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {
+       border: dashed 4px black;
+}
+.dijitToggleButtonIconChar {
+       
+       display:none !important;
+}
+.dijit_a11y .dijitToggleButton .dijitToggleButtonIconChar {
+       display:inline !important;
+       visibility:hidden;
+}
+.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {
+       font-family: "Arial Unicode MS";        
+}
+.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
+       display: inline !important; 
+       visibility:visible !important;
+}
+.dijitArrowButtonChar {
+        display:none !important;
+}
+.dijit_a11y .dijitArrowButtonChar {
+        display:inline !important;
+}
+.dijit_a11y .dijitDropDownButton .dijitArrowButtonInner,
+.dijit_a11y .dijitComboButton .dijitArrowButtonInner {
+       display:none !important;
+}
+.dijitSelect {
+       margin: 0.2em;
+       border-collapse: collapse;
+}
+.dj_ie .dijitSelect,
+.dj_ie7 .dijitSelect,
+.dj_iequirks .dijitSelect {
+       vertical-align: middle; 
+}
+.dj_ie8 .dijitSelect .dijitButtonText {
+       vertical-align: top;
+}
+.dijitToolbar .dijitSelect {
+       margin: 0;
+}
+.dj_webkit .dijitToolbar .dijitSelect {
+       padding-left: 0.3em;
+}
+.dijit_a11y .dijitSelectDisabled .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitSelect .dijitButtonContents {
+       padding: 0px;
+       background: transparent none;
+       white-space: nowrap;
+       text-align: left;
+}
+.dijitSelectFixedWidth .dijitButtonContents {
+       width: 100%;
+}
+.dijitSelectMenu .dijitMenuItemIcon {
+       
+       display:none;
+}
+.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,
+.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {
+       
+       position: static;
+}
+.dijitSelectLabel *
+{
+       vertical-align: baseline;
+}
+.dijitSelectSelectedOption * {
+       font-weight: bold;
+}
+.dijitSelectMenu {
+       border-width: 1px;
+}
+.dijitSelectMenu .dijitMenuTable {
+       margin: 0px;
+       background-color: transparent;
+}
+.dijitForceStatic {
+       position: static !important;
+}
+.dijitReadOnly *,
+.dijitDisabled *,
+.dijitReadOnly,
+.dijitDisabled {
+       
+       cursor: default;
+}
diff --git a/lib/dijit/themes/dijit_rtl.css b/lib/dijit/themes/dijit_rtl.css
new file mode 100644 (file)
index 0000000..d1dc4fe
--- /dev/null
@@ -0,0 +1,88 @@
+.dijitRtl .dijitPlaceHolder {
+       left: auto;
+       right: 0;
+}
+.dijitMenuItemRtl {
+       text-align: right;
+}
+.dj_iequirks .dijitComboButtonRtl BUTTON {
+       
+       float:left;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitComboBoxRtl .dijitArrowButtonContainer {
+       
+       border-right-width: 1px !important;
+       border-right-style: solid !important;
+       border-left-width: 0px !important;
+       border-left-style: none !important;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijit_a11y .dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBoxRtl .dijitArrowButtonContainer {
+       border-right: 1px solid black !important;
+       border-left: 0px none black !important;
+}
+.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {
+       right: 0;
+       left: auto;
+}
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitArrowButtonContainer {
+       float: left;
+}
+.dijitCalendarRtl .dijitCalendarNextYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarRtl .dijitCalendarPreviousYear {
+       margin:0 0 0 0.55em;
+}
+.dijitSliderRtl .dijitSliderImageHandleV {
+       left:auto;
+}
+.dijitSliderRtl .dijitSliderImageHandleH {
+       left:-50%;
+}
+.dijitSliderRtl .dijitSliderMoveableH {
+       right:auto;
+       left:0;
+}
+.dijitSliderRtl .dijitRuleContainerV {
+       float:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleContainerV {
+       text-align:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelV {
+       text-align:left;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelH {
+       zoom:1;
+}
+.dijitSliderRtl .dijitSliderProgressBarH {
+       
+       float:right;
+       right:0;
+       left:auto;
+}
+.dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError {
+       background-position:right;
+       padding-right:25px;
+}
+.dijitTabRtl .dijitTabCloseButton {
+       margin-left: 0px;
+       margin-right: 1em;
+}
+.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {
+       width:100%;
+}
+.dijitColorPaletteRtl .dijitColorPaletteUnder {
+       
+       left: auto;
+       right: 0;
+}
+.dijitSelectRtl .dijitButtonContents {
+       text-align: right;
+}
diff --git a/lib/dijit/themes/nihilo/Calendar.css b/lib/dijit/themes/nihilo/Calendar.css
new file mode 100644 (file)
index 0000000..a193f8d
--- /dev/null
@@ -0,0 +1,117 @@
+
+.nihilo .dijitCalendarIncrementControl {
+       
+       width:15px;
+       height:15px;
+       background-image: url("images/spriteRoundedIconsSmall.png");
+       background-repeat: no-repeat
+}
+.dj_ie6 .nihilo .dijitCalendarIncrementControl {
+       font-size:.1em;
+       background-image: url("images/spriteRoundedIconsSmall.gif");
+}
+.nihilo .dijitA11ySideArrow {
+       display: none;
+}
+.nihilo .dijitCalendarDecrease {
+       background-position: top left;
+}
+.nihilo .dijitCalendarIncrease {
+       background-position: -30px top;
+}
+.nihilo table.dijitCalendarContainer {
+       font-size: 100%;
+       border-spacing: 0;
+       border-collapse: separate;
+       border: 1px solid #ccc;
+       margin: 0;
+}
+.nihilo .dijitCalendarMonthContainer th {
+       
+       background:#d3d3d3 url("images/titleBar.png") repeat-x top;
+       padding-top:.3em;
+       padding-bottom:.2em;
+       text-align:center;
+}
+.dj_ie6 .nihilo .dijitCalendarMonthContainer th {
+       padding-top:.2em;
+       padding-bottom:.1em;
+}
+.nihilo .dijitCalendarDayLabelTemplate {
+       
+       background:#fefefe;
+       font-weight:normal;
+       padding-top:.15em;
+       padding-bottom:.2em;
+       border-bottom: 1px solid #eeeeee;
+       color:#293a4b;
+       text-align:center;
+}
+.nihilo .dijitCalendarBodyContainer {
+       border-bottom: 1px solid #eeeeee;
+}
+.nihilo .dijitCalendarMonthLabel {
+       color:#293a4b;
+       font-weight: bold;
+}
+.nihilo .dijitCalendarDateTemplate {
+       
+       font-size: 0.9em;
+       font-weight: bold;
+       text-align: center;
+       padding: 0.3em 0.3em 0.05em 0.3em;
+       letter-spacing: 1px;
+       background-color: #fdfdfd;
+       border:#fdfdfd solid 1px !important;
+}
+.dj_ie .nihilo .dijitCalendarDateTemplate {
+       padding: 0.1em .33em 0.02em .33em;
+}
+.nihilo .dijitCalendarPreviousMonth,
+.nihilo .dijitCalendarNextMonth                {
+       
+       color:#999999;
+       background-color:#f5f5f5 !important;
+       border:#f5f5f5 solid 1px !important;
+}
+.nihilo .dijitCalendarCurrentMonth {
+       
+}
+.nihilo .dijitCalendarDisabledDate {
+       text-decoration:line-through !important;
+}
+.nihilo .dijitCalendarCurrentDate {
+       
+       text-decoration:underline;
+       font-weight:bold;
+}
+.nihilo .dijitCalendarSelectedDate {
+       
+       background-color:#ffe284 !important;
+       color:black !important;
+       border:#f7c95c solid 1px !important;
+}
+.nihilo .dijitCalendarYearContainer {
+       
+       background:white url("images/titleBar.png") repeat-x top;
+}
+.nihilo .dijitCalendarYearLabel {
+       
+       margin:0;
+       padding:0.4em 0 0.25em 0;
+       text-align:center;
+}
+.nihilo .dijitCalendarSelectedYear {
+       
+       color:black;
+       padding:0.2em;
+       padding-bottom:0.1em;
+       background-color:#ffe284 !important;
+       border:#f7c95c solid 1px !important;
+}
+.nihilo .dijitCalendarNextYear,
+.nihilo .dijitCalendarPreviousYear {
+       
+       color:black !important;
+       font-weight:normal;
+}
diff --git a/lib/dijit/themes/nihilo/Calendar_rtl.css b/lib/dijit/themes/nihilo/Calendar_rtl.css
new file mode 100644 (file)
index 0000000..245d93f
--- /dev/null
@@ -0,0 +1,7 @@
+
+.dijitRtl .nihilo .dijitCalendarDecrease {
+       background-position: -30px top;
+}
+.dijitRtl .nihilo .dijitCalendarIncrease {
+       background-position: 0px top;
+}
diff --git a/lib/dijit/themes/nihilo/ColorPalette.css b/lib/dijit/themes/nihilo/ColorPalette.css
new file mode 100644 (file)
index 0000000..328bc84
--- /dev/null
@@ -0,0 +1,5 @@
+.dijitColorPalette {
+       border:1px solid #d3d3d3;
+       background:#fff;
+       -moz-border-radius: 0px !important;
+}
diff --git a/lib/dijit/themes/nihilo/Common.css b/lib/dijit/themes/nihilo/Common.css
new file mode 100644 (file)
index 0000000..c894dea
--- /dev/null
@@ -0,0 +1,19 @@
+
+.nihilo .dojoDndItemBefore {
+       border-top: 2px solid #369;
+}
+.nihilo .dojoDndItemAfter {
+       border-bottom: 2px solid #369;
+}
+.nihilo .dojoDndItemOver {
+       cursor:pointer;
+}
+.nihilo table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
+.nihilo .dojoDndAvatar td      { border: none; }
+.nihilo .dojoDndAvatar tr      { border: none; }
+.nihilo .dojoDndAvatarHeader td        { height: 20px; padding: 0 0 0 21px; }
+.nihilo .dojoDndAvatarItem td { padding: 2px;}
+.nihilo.dojoDndMove .dojoDndAvatarHeader       {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo.dojoDndCopy .dojoDndAvatarHeader       {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
diff --git a/lib/dijit/themes/nihilo/Dialog.css b/lib/dijit/themes/nihilo/Dialog.css
new file mode 100644 (file)
index 0000000..1c2ff2e
--- /dev/null
@@ -0,0 +1,128 @@
+
+.nihilo .dijitDialog {
+       background: #eee;
+       border: 1px solid #d3d3d3;
+       -webkit-box-shadow: 0px 5px 10px #adadad;
+       padding: 0px;
+}
+.nihilo .dijitDialog .dijitDialogTitle {
+       
+       font-size: 0.9em;
+       color: #3243C5F;
+       font-weight: bold;
+       padding: 0px 4px;
+}
+.nihilo .dijitDialog .dijitDialogPaneContent {
+       background: #ffffff;
+       border-top: 1px solid #d3d3d3;
+       padding:10px;
+}
+.nihilo .dijitDialogTitleBar {
+       
+       background: #fafafa url("images/titleBar.png") repeat-x top left;
+       padding: 5px 6px 3px 6px;
+       outline:0; 
+}
+.nihilo .dijitDialogCloseIcon {
+       
+       background-image: url("images/spriteRoundedIconsSmall.png");
+       background-repeat: no-repeat;
+       background-position: -60px 0px;
+       position: absolute;
+       vertical-align: middle;
+       right: 6px;
+       top: 4px;
+       height: 15px;
+       width: 15px;
+}
+.dj_ie6 .nihilo .dijitDialogCloseIcon {
+       background-image: url("images/spriteRoundedIconsSmall.gif");
+}
+.nihilo .dijitDialogCloseIconHover {
+       background-position: -60px -15px;
+}
+.nihilo .dijitTooltip,
+.nihilo .dijitTooltipDialog {
+       
+       background: transparent;        
+}
+.dijitTooltipBelow {
+       
+       padding-top: 10px;
+}
+.dijitTooltipAbove {
+       
+       padding-bottom: 10px;
+}
+.nihilo .dijitTooltipContainer {
+       
+       background-color: #fff;
+       border:1px solid #d3d3d3;
+       padding:0.45em;
+}
+.nihilo .dijitTooltipConnector {
+       
+       border:0px;
+       z-index: 2;
+}
+.nihilo .dijitTooltipABRight .dijitTooltipConnector {
+       
+       left: auto !important;
+       right: 6px;
+}
+.nihilo .dijitTooltipBelow .dijitTooltipConnector {
+       
+       top: 0px;
+       left: 6px;
+       background:url("images/tooltipConnectorUp.png") no-repeat top left;
+       width:17px;
+       height:11px;
+}
+.dj_ie .nihilo .dijitTooltipBelow .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorUp.gif");
+}
+.nihilo .dijitTooltipAbove .dijitTooltipConnector {
+       
+       bottom: 0px;
+       left: 6px;
+       background:url("images/tooltipConnectorDown.png") no-repeat top left;
+       width:17px;
+       height:11px;
+}
+.dj_ie .nihilo .dijitTooltipAbove .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorDown.gif");
+}
+.dj_ie6 .nihilo .dijitTooltipAbove .dijitTooltipConnector {
+       bottom: -5px;
+}
+.nihilo .dijitTooltipLeft {
+       padding-right: 10px;
+}
+.dj_ie6 .nihilo .dijitTooltipLeft {
+       padding-left: 11px;
+}
+.nihilo .dijitTooltipLeft .dijitTooltipConnector {
+       
+       right: 0px;
+       bottom: 3px;
+       background:url("images/tooltipConnectorRight.png") no-repeat top left;
+       width:11px;
+       height:17px;
+}
+.dj_ie .nihilo .dijitTooltipLeft .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorRight.gif");
+}
+.nihilo .dijitTooltipRight {
+       padding-left: 10px;
+}
+.nihilo .dijitTooltipRight .dijitTooltipConnector {
+       
+       left: 0px;
+       bottom: 3px;
+       background:url("images/tooltipConnectorLeft.png") no-repeat top left;
+       width:11px;
+       height:17px;
+}
+.dj_ie .nihilo .dijitTooltipRight .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorLeft.gif");
+}
diff --git a/lib/dijit/themes/nihilo/Dialog_rtl.css b/lib/dijit/themes/nihilo/Dialog_rtl.css
new file mode 100644 (file)
index 0000000..105d504
--- /dev/null
@@ -0,0 +1,5 @@
+
+.dijitRtl .nihilo .dijitDialogTitleBar .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
diff --git a/lib/dijit/themes/nihilo/Editor.css b/lib/dijit/themes/nihilo/Editor.css
new file mode 100644 (file)
index 0000000..77280d9
--- /dev/null
@@ -0,0 +1,13 @@
+.nihilo .dijitToolbar .dijitToolbarSeparator {
+       background: url('../../icons/images/editorIconsEnabled.png'); 
+}
+.nihilo .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsEnabled.png'); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.nihilo .dijitDisabled .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsDisabled.png'); 
+}
diff --git a/lib/dijit/themes/nihilo/Editor_rtl.css b/lib/dijit/themes/nihilo/Editor_rtl.css
new file mode 100644 (file)
index 0000000..37849a5
--- /dev/null
@@ -0,0 +1,7 @@
+
+.dijitRtl .nihilo .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsEnabled_rtl.png'); 
+}
+.dijitRtl .nihilo .dijitDisabled .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsDisabled_rtl.png'); 
+}
diff --git a/lib/dijit/themes/nihilo/Menu.css b/lib/dijit/themes/nihilo/Menu.css
new file mode 100644 (file)
index 0000000..b530a90
--- /dev/null
@@ -0,0 +1,62 @@
+
+.nihilo .dijitMenu,
+.nihilo .dijitMenuBar {
+       border: 1px solid #d3d3d3;
+       margin: 0px;
+       padding: 0px;
+       background-color: #fff;
+}
+.nihilo .dijitBorderContainer .dijitMenuBar {
+       border: 1px #ccc solid;
+}
+.nihilo .dijitMenuItem {
+       font-family: sans-serif;
+       margin: 0px;
+       color: #243C5F;
+}
+.nihilo .dijitMenuBar .dijitMenuItem {
+       padding: 4px 5px;
+}
+.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {
+       font-style: italic;
+}
+.nihilo .dijitMenuItem TD {
+       padding:1px;
+}
+.nihilo .dijitMenuPassive .dijitMenuItemHover,
+.nihilo .dijitMenuItemSelected {
+       background-color: #ffe284; 
+       color: #243C5F;
+}
+.nihilo .dijitMenuItemIcon {
+       width: 15px;
+       height: 15px;
+}
+.nihilo .dijitMenuExpand {
+       width:15px;
+       height:15px;
+       background-image: url('images/spriteRoundedIconsSmall.png');
+       background-position: -30px top;
+}
+.dj_ie6 .nihilo .dijitMenuExpand {
+       background-image:url('images/spriteRoundedIconsSmall.gif');
+}
+.nihilo .dijitMenuSeparator {
+       height: 1px;
+}
+.nihilo .dijitMenuSeparatorTop {
+       border-bottom: 1px solid #fff; 
+}
+.nihilo .dijitMenuSeparatorBottom {
+       border-top: 1px solid #d3d3d3;
+}
+.nihilo .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.nihilo .dijitCheckedMenuItemIcon {
+       background-image: url('images/spriteCheckbox.gif');
+       background-position: -80px;
+}
+.nihilo .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: -64px;
+}
diff --git a/lib/dijit/themes/nihilo/Menu_rtl.css b/lib/dijit/themes/nihilo/Menu_rtl.css
new file mode 100644 (file)
index 0000000..06fccbf
--- /dev/null
@@ -0,0 +1,8 @@
+
+.dijitRtl .nihilo .dijitMenuItem .dijitMenuItemIcon {
+       padding-left: 3px;
+       padding-right: 0px;
+}
+.dijitRtl .nihilo .dijitMenuItem .dijitMenuExpand {
+       background-position: 0px top;
+}
diff --git a/lib/dijit/themes/nihilo/ProgressBar.css b/lib/dijit/themes/nihilo/ProgressBar.css
new file mode 100644 (file)
index 0000000..7713aeb
--- /dev/null
@@ -0,0 +1,24 @@
+
+.nihilo .dijitProgressBar {
+       margin:2px 0px 2px 0px;
+}
+.nihilo .dijitProgressBarEmpty{
+       
+       background:#fff url("images/progressBarEmpty.png") repeat-x center center;
+       border-color: #f8d582 #f8d582 #f8d582 #f8d582;
+}
+.nihilo .dijitProgressBarTile{
+       
+       background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
+}
+.nihilo .dijitProgressBarFull {
+       border-right:1px solid #f8d582;
+}
+.nihilo .dijitProgressBarLabel {
+       
+       color:#293a4b;
+}
+.nihilo .dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+       background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
+}
diff --git a/lib/dijit/themes/nihilo/TimePicker.css b/lib/dijit/themes/nihilo/TimePicker.css
new file mode 100644 (file)
index 0000000..63157f2
--- /dev/null
@@ -0,0 +1,42 @@
+
+.nihilo .dijitTimePickerTick,
+.nihilo .dijitTimePickerMarker {
+       border-color: #eeeeee;
+}
+.nihilo .dijitTimePickerTick {
+       color:white;
+}
+.nihilo .dijitTimePickerMarker {
+       background:#d3d3d3 url("images/titleBar.png") repeat-x top;
+       color:#293a4b;
+       font-weight: bold;
+}
+.nihilo .dijitTimePickerItemSelected {
+       color: black;
+       background: #ffe284 none;
+}
+.nihilo .dijitTimePickerItemHover {
+       background: #d6d6dd none;
+       color:black;
+}
+.nihilo .dijitTimePickerItemHover,
+.nihilo .dijitTimePickerItemSelected {
+       position: relative;
+       z-index: 10;
+}
+.nihilo .dijitTimePickerTick .dijitTimePickerItemInner {
+       font-size:0.4em;
+}
+.nihilo .dijitTimePickerItemHover .dijitTimePickerItemInner,
+.nihilo .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       font-size:1em;
+}
+.nihilo .dijitTimePickerMarkerHover {
+       border-top: 1px solid #eeeeee;
+}
+.nihilo .dijitTimePickerTickHover,
+.nihilo .dijitTimePickerTickSelected {
+       margin-top:-0.3em;
+       margin-bottom:-0.3em;
+       border-bottom: none;
+}
diff --git a/lib/dijit/themes/nihilo/TimePicker_rtl.css b/lib/dijit/themes/nihilo/TimePicker_rtl.css
new file mode 100644 (file)
index 0000000..a6c0a68
--- /dev/null
@@ -0,0 +1,4 @@
+.dj_ie6-rtl .nihilo .dijitTimePickerMarkerHover,
+.dj_ie7-rtl .nihilo .dijitTimePickerMarkerHover {
+        border-top: 0px; 
+}
diff --git a/lib/dijit/themes/nihilo/TitlePane.css b/lib/dijit/themes/nihilo/TitlePane.css
new file mode 100644 (file)
index 0000000..58ca8e5
--- /dev/null
@@ -0,0 +1,45 @@
+
+.nihilo .dijitTitlePaneTitle {
+       background: #cccccc;
+       background:#fff url("images/titleBar.png") repeat-x top left;
+       border:1px solid #bfbfbf;
+       padding:3px 4px;
+       font-size: 0.9em;
+       font-weight: bold;
+       color: #6d6d6d;
+}
+.nihilo .dijitTitlePaneTitleHover  {
+       background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x;
+}
+.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode,
+.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       width:15px;
+       height:15px;
+}
+.nihilo .dijitTitlePaneTextNode {
+       color: #243C5F;
+}
+.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background: url('images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+}
+.dj_ie6 .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background:url('images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
+}
+.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top;
+}
+.dj_ie6 .nihilo .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
+}
+.nihilo .dijitTitlePaneContentOuter {
+       background: #ffffff;
+       border:1px solid #bfbfbf;
+       border-top: 0px;
+}
+.nihilo .dijitTitlePaneContentInner {
+       padding:10px;
+}
+.nihilo .dijitTitlePaneTextNode {
+       margin-left: 4px;
+       margin-right: 4px;
+}
diff --git a/lib/dijit/themes/nihilo/TitlePane_rtl.css b/lib/dijit/themes/nihilo/TitlePane_rtl.css
new file mode 100644 (file)
index 0000000..a8aef83
--- /dev/null
@@ -0,0 +1,6 @@
+.dijitRtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: 0px top;
+}
+.dj_ie6-rtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: 0px top;
+}
diff --git a/lib/dijit/themes/nihilo/Toolbar.css b/lib/dijit/themes/nihilo/Toolbar.css
new file mode 100644 (file)
index 0000000..aeee9e4
--- /dev/null
@@ -0,0 +1,56 @@
+.nihilo .dijitToolbar {
+       border-bottom: 1px solid #ccc;
+       background:#eaeaea url("images/titleBar.png") repeat-x top left;
+}
+.dj_ie6 .nihilo .dijitToolbar {
+       height: 10px;
+}
+.nihilo .dijitToolbar .dijitButtonNode,
+.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,
+.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       margin: 0px;
+       padding: 0px;
+       border: none;
+       font-size: 12px;
+}
+.nihilo .dijitToolbar .dijitButton,
+.nihilo .dijitToolbar .dijitToggleButton,
+.nihilo .dijitToolbar .dijitDropDownButton,
+.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,
+.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       padding: 1px;   
+}
+.nihilo .dijitToolbar .dijitButtonChecked,
+.nihilo .dijitToolbar .dijitToggleButtonChecked {
+       background-color:#ffeeb9;
+       border:1px solid #f7c95c;
+       padding: 0;
+}
+.nihilo .dijitToolbar .dijitButtonCheckedHover,
+.nihilo .dijitToolbar .dijitToggleButtonCheckedHover
+ {
+       background-color:#ffe284;
+       border:1px solid #f7c95c;
+       padding: 0;
+}
+.nihilo .dijitToolbar .dijitButtonHover,
+.nihilo .dijitToolbar .dijitToggleButtonHover,
+.nihilo .dijitToolbar .dijitDropDownButtonHover,
+.nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsHover,
+.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {
+       
+       border: 1px solid #f7c95c;
+       padding: 0;
+       background-color:#ffe284;
+}
+.nihilo .dijitToolbar label {
+       padding: 3px 3px 0 6px;
+}
+.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
+       
+       border: 1px #555 dotted !important;
+       padding: 0px;
+}
diff --git a/lib/dijit/themes/nihilo/Tree.css b/lib/dijit/themes/nihilo/Tree.css
new file mode 100644 (file)
index 0000000..b0012be
--- /dev/null
@@ -0,0 +1,75 @@
+
+.nihilo .dijitTreeNode {
+    background : url('images/treeI.gif') no-repeat;
+    background-position : top left;
+    background-repeat : repeat-y;
+    zoom: 1;   
+}
+.nihilo .dijitTreeIsLast {
+    background: url('images/treeI_half.gif') no-repeat;
+}
+.nihilo .dijitTreeRowHover {
+       
+       background-image: url(images/treeHover.png);
+       background-repeat: repeat;
+       background-color: transparent !important;
+}
+.nihilo .dijitTreeLabel {
+       font-weight: normal;
+       margin-left: 3px;
+}
+.nihilo .dijitTreeIsRoot {
+    margin-left: 0;
+    background-image: none;
+}
+.nihilo .dijitTreeExpando {
+    width: 18px;
+    height: 18px;
+}
+.nihilo .dijitTreeRow {
+       
+       padding-bottom: 2px;
+}
+.nihilo .dijitTreeContent {
+    min-height: 18px;
+    min-width: 18px;
+    padding-left:1px;
+}
+.nihilo .dijitTreeExpandoOpened {
+       background: url('images/spriteTree.gif') no-repeat -18px top;
+}
+.nihilo .dijitTreeExpandoClosed {
+       background-image: url('images/spriteTree.gif');
+}
+.nihilo .dijitTreeExpandoLeaf {
+       background: url('images/spriteTree.gif') no-repeat -36px top;
+}
+.nihilo .dijitTreeExpandoLoading {
+       background-image: url('images/treeExpand_loading.gif');
+}
+.nihilo .dijitTreeIcon {
+       width: 16px;
+       height: 16px;
+}
+.nihilo .dijitFolderOpened {
+       background: url('images/spriteDivIcons.gif') no-repeat -16px top;
+}
+.nihilo .dijitFolderClosed {
+       background: url('images/spriteDivIcons.gif') no-repeat top left;
+}
+.nihilo .dijitLeaf {
+       background: url('images/spriteDivIcons.gif') no-repeat -32px top;
+}
+.nihilo .dijitTreeNode .dojoDndItemBefore,
+.nihilo .dijitTreeNode .dojoDndItemAfter {
+       border-bottom: none;
+       border-top: none;
+}
+.nihilo .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
+       
+       border-top: 2px solid #369;
+}
+.nihilo .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
+       
+       border-bottom: 2px solid #369;
+}
diff --git a/lib/dijit/themes/nihilo/Tree_rtl.css b/lib/dijit/themes/nihilo/Tree_rtl.css
new file mode 100644 (file)
index 0000000..6a7a889
--- /dev/null
@@ -0,0 +1,18 @@
+
+.dijitRtl .nihilo .dijitTreeNode,
+.dijitRtl .nihilo .dijitTreeExpandoLeaf {
+       
+    background-image: none;
+}
+.dijitRtl .nihilo .dijitTreeContent {
+    padding-left: 0px;
+    padding-right: 1px;
+}
+.dijitRtl .nihilo .dijitTreeExpandoOpened {
+       
+       background: url('images/spriteTree_rtl.gif') no-repeat -18px top;
+}
+.dijitRtl .nihilo .dijitTreeExpandoClosed {
+       
+       background-image: url('images/spriteTree_rtl.gif');
+}
diff --git a/lib/dijit/themes/nihilo/form/Button.css b/lib/dijit/themes/nihilo/form/Button.css
new file mode 100644 (file)
index 0000000..b1ea84e
--- /dev/null
@@ -0,0 +1,108 @@
+
+.nihilo .dijitButtonNode {
+       
+       
+       border:1px solid #dedede;
+       border-bottom:1px solid #dedede;
+       padding: 0.1em 0.2em 0.2em 0.2em;
+       background: #fff url("../images/buttonEnabled.png") repeat-x top left;
+}
+.nihilo .dijitSelect .dijitButtonContents {
+       border-right: none;
+}
+.nihilo .dijitButtonText {
+       text-align: center;
+       padding: 0 0.3em;
+}
+.nihilo .dijitComboBox .dijitButtonNode {
+       border-width: 0px 0px 0px 1px;
+}
+.nihilo .dijitArrowButton {
+       color: #111;
+}
+.nihilo .dijitComboButton .dijitDownArrowButton {
+       padding-right:4px;
+}
+.nihilo .dijitComboBoxReadOnly,
+.nihilo .dijitSpinnerReadOnly,
+.nihilo .dijitSpinnerReadOnly .dijitButtonNode,
+.nihilo .dijitButtonDisabled .dijitButtonNode,
+.nihilo .dijitToggleButtonDisabled .dijitButtonNode,
+.nihilo .dijitDropDownButtonDisabled .dijitButtonNode,
+.nihilo .dijitComboButtonDisabled .dijitButtonNode,
+.nihilo .dijitComboBoxDisabled,
+.nihilo .dijitSpinnerDisabled,
+.nihilo .dijitSpinnerDisabled .dijitButtonNode {
+       
+       border-color: #dedede;
+       background:#fafafa url("../images/buttonDisabled.png") top repeat-x;
+       opacity: 0.60;
+}
+.dj_ie6 .nihilo .dijitReadOnly INPUT,
+.dj_ie7 .nihilo .dijitReadOnly INPUT,
+.dj_ie6 .nihilo .dijitComboButtonDisabled .dijitButtonText,
+.dj_ie7 .nihilo .dijitComboButtonDisabled .dijitButtonText {
+       
+       color: #aaa;
+}
+.nihilo .dijitButtonHover .dijitButtonNode,
+.nihilo .dijitButtonNodeHover,
+.nihilo .dijitToggleButtonHover .dijitButtonNode,
+.nihilo .dijitDropDownButtonHover .dijitButtonNode,
+.nihilo .dijitButtonContentsHover,
+.nihilo .dijitDownArrowButtonHover,
+.nihilo .dijitUpArrowButtonHover {
+       
+       
+       color:#243C5F;
+       background:#fcfcfc url("../images/buttonHover.png") repeat-x top left;
+}
+.nihilo .dijitUpArrowButtonActive,
+.nihilo .dijitDownArrowButtonActive,
+.nihilo .dijitButtonActive .dijitButtonNode,
+.nihilo .dijitToggleButtonActive .dijitButtonNode,
+.nihilo .dijitDropDownButtonActive .dijitButtonNode,
+.nihilo .dijitComboButton .dijitButtonContentsActive,
+.nihilo .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {
+       
+       border-color:#dedede;
+       background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x;
+}
+.nihilo .dijitArrowButtonInner {
+       background-image: url("../images/spriteArrows.png");
+       background-repeat: no-repeat;
+       background-position: 0px center;
+       width: 11px;
+       height: 11px;
+}
+.nihilo .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -11px center;
+}
+.nihilo .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -22px center;
+}
+.nihilo .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -33px center;
+}
+.dj_ie6 .nihilo .dijitArrowButtonInner {
+       background-image: url("../images/spriteArrows.gif");
+}
+.dj_webkit .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {
+       margin-top: -1px; 
+}
+.dj_ie .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {
+       margin-top: 1px; 
+}
+.nihilo .dijitSpinnerButtonContainer {
+       width: auto;
+       padding: 0;
+}
+.nihilo .dijitSpinner .dijitArrowButton {
+       width: 15px;
+}
+.nihilo .dijitSpinner .dijitSpinnerButtonInner {
+       width: 15px;
+}
+.nihilo .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding: 0;
+}
diff --git a/lib/dijit/themes/nihilo/form/Button_rtl.css b/lib/dijit/themes/nihilo/form/Button_rtl.css
new file mode 100644 (file)
index 0000000..3a7acc0
--- /dev/null
@@ -0,0 +1,7 @@
+.dijitRtl .nihilo .dijitComboBox .dijitButtonNode {
+       border-width: 0px 0px 0px 1px;
+}
+.dijitRtl .nihilo .dijitSelect .dijitButtonContents {
+       border-left: none;
+       border-right-width: 1px;
+}
diff --git a/lib/dijit/themes/nihilo/form/Checkbox.css b/lib/dijit/themes/nihilo/form/Checkbox.css
new file mode 100644 (file)
index 0000000..ceee44f
--- /dev/null
@@ -0,0 +1,40 @@
+
+.nihilo .dijitToggleButton .dijitCheckBox,
+.nihilo .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url('../images/spriteCheckbox.gif');
+}
+.nihilo .dijitCheckBox,
+.nihilo .dijitCheckBoxIcon {           
+       background-image: url('../images/spriteCheckbox.gif'); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.nihilo .dijitCheckBox,
+.nihilo .dijitToggleButton .dijitCheckBoxIcon {
+       
+       background-position: -16px;
+}
+.nihilo .dijitCheckBoxChecked,
+.nihilo .dijitToggleButtonChecked .dijitCheckBoxIcon {
+       
+       background-position: 0px;
+}
+.nihilo .dijitCheckBoxDisabled {
+       
+       background-position: -48px;
+}
+.nihilo .dijitCheckBoxCheckedDisabled {
+       
+       background-position: -32px;
+}
+.nihilo .dijitCheckBoxHover {
+       
+       background-position: -80px;
+}
+.nihilo .dijitCheckBoxCheckedHover {
+       
+       background-position: -64px;
+}
diff --git a/lib/dijit/themes/nihilo/form/Common.css b/lib/dijit/themes/nihilo/form/Common.css
new file mode 100644 (file)
index 0000000..fab63eb
--- /dev/null
@@ -0,0 +1,51 @@
+
+.nihilo .dijitInputContainer INPUT,
+.nihilo .dijitTextBox {
+       margin: 0em 0.1em;
+}
+.nihilo .dijitTextBox,
+.nihilo .dijitTextArea {
+       
+       background:#fff url("../images/validationInputBg.png") repeat-x top left;
+       #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+       border:1px solid #d3d3d3;
+}
+.nihilo .dijitComboBox .dijitButtonNode {
+       padding: 0 0.2em !important;
+}
+.nihilo .dijitTextBox .dijitButtonNode {
+       
+       border-color: #d3d3d3;
+}
+.nihilo .dijitTextBoxFocused,
+.nihilo .dijitTextAreaFocused {
+       
+       border-color:#b3b3b3;
+}
+.nihilo .dijitTextBoxFocused .dijitButtonNode,
+.nihilo .dijitSpinner .dijitUpArrowButtonActive,
+.nihilo .dijitSpinner .dijitDownArrowButtonActive {
+       border-left-color:#d3d3d3;
+}
+.nihilo .dijitSpinnerFocused .dijitDownArrowButton,
+.nihilo .dijitSpinner .dijitUpArrowButtonActive,
+.nihilo .dijitSpinner .dijitDownArrowButtonActive {
+       border-top-color:#d3d3d3;
+}
+.nihilo .dijitError {
+       border-color:#b3b3b3;
+       background-color:#f9f7ba;
+       background-image:none;
+}
+.nihilo .dijitErrorFocused {
+       background-color:#ff6;
+       background-image:none;
+}
+.nihilo .dijitValidationIcon {
+       
+       width: 16px;
+       background: transparent url('../images/warning.png') no-repeat center center;
+}
+.nihilo .dijitComboBoxHighlightMatch {
+       background-color:#d3d3d3;
+}
diff --git a/lib/dijit/themes/nihilo/form/RadioButton.css b/lib/dijit/themes/nihilo/form/RadioButton.css
new file mode 100644 (file)
index 0000000..c876f59
--- /dev/null
@@ -0,0 +1,40 @@
+
+.nihilo .dijitToggleButton .dijitRadio,
+.nihilo .dijitToggleButton .dijitRadioIcon {
+       background-image: url('../images/spriteRadio.gif');
+}
+.nihilo .dijitRadio,
+.nihilo .dijitRadioIcon        {               
+       background-image: url('../images/spriteRadio.gif'); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.nihilo .dijitRadio,
+.nihilo .dijitToggleButton .dijitRadioIcon {
+       
+       background-position: -16px;
+}
+.nihilo .dijitRadioChecked,
+.nihilo .dijitToggleButtonChecked .dijitRadioIcon {
+       
+       background-position: 0px;
+}
+.nihilo .dijitRadioDisabled {
+       
+       background-position: -48px;
+}
+.nihilo .dijitRadioCheckedDisabled {
+       
+       background-position: -32px;
+}
+.nihilo .dijitRadioHover {
+       
+       background-position: -80px;
+}
+.nihilo .dijitRadioCheckedHover {
+       
+       background-position: -64px;
+}
diff --git a/lib/dijit/themes/nihilo/form/Select.css b/lib/dijit/themes/nihilo/form/Select.css
new file mode 100644 (file)
index 0000000..af811f5
--- /dev/null
@@ -0,0 +1,44 @@
+.nihilo .dijitSelect .dijitButtonNode {
+       padding: 0px;
+}
+.nihilo .dijitSelect .dijitButtonContents {
+       padding-top: 1px;
+    background:#fff url("../images/validationInputBg.png") repeat-x top left;
+    #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+}
+.nihilo .dijitSelectHover .dijitButtonContents,
+.nihilo .dijitSelectActive .dijitButtonContents,
+.nihilo .dijitSelectOpened .dijitButtonContents,
+.nihilo .dijitSelectDisabled .dijitButtonContents,
+.nihilo .dijitSelectReadOnly .dijitButtonContents{
+       background: transparent none;
+}
+.dj_ie .nihilo .dijitSelect .dijitButtonContents {
+       padding-top: 0px;
+}
+.nihilo .dijitSelect .dijitArrowButton {
+       padding: 0px 2px;
+}
+.nihilo .dijitSelectDisabled .dijitButtonNode {
+    border-color: #dedede;
+    background:#fafafa url("../images/buttonDisabled.png") top repeat-x;
+}
+.dj_ie .nihilo .dijitSelectDisabled  .dijitButtonNode * {
+       filter: gray() alpha(opacity=50);
+}
+.nihilo .dijitSelectHover .dijitButtonNode {
+    color:#000;
+    background:#fcfcfc url("../images/buttonHover.png") repeat-x top left;
+}
+.nihilo .dijitSelectActive .dijitButtonNode,
+.nihilo .dijitSelectOpened .dijitButtonNode {
+    border-color:#dedede;
+    background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x;
+}
+.nihilo .dijitSelectMenu td {
+       padding: 0em;
+}
+.nihilo .dijitSelectMenu .dijitMenuItemLabel,
+.nihilo .dijitSelectMenu .dijitMenuArrowCell {
+       padding: 0.1em 0.2em;
+}
diff --git a/lib/dijit/themes/nihilo/form/Slider.css b/lib/dijit/themes/nihilo/form/Slider.css
new file mode 100644 (file)
index 0000000..6458e89
--- /dev/null
@@ -0,0 +1,120 @@
+
+.nihilo .dijitSliderProgressBarH {
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+.nihilo .dijitSliderProgressBarV {
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+.nihilo .dijitSliderFocused .dijitSliderProgressBarH,
+.nihilo .dijitSliderFocused .dijitSliderLeftBumper {
+       background-image:url("../images/sliderFullFocus.png");
+}
+.nihilo .dijitSliderFocused .dijitSliderProgressBarV,
+.nihilo .dijitSliderFocused .dijitSliderBottomBumper {
+       background-image:url("../images/sliderFullVerticalFocus.png");
+}
+.nihilo .dijitSliderRemainingBarV {
+       border-color: #b4b4b4;
+       background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left;
+}
+.nihilo .dijitSliderRemainingBarH {
+       border-color: #b4b4b4;
+       background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+}
+.nihilo .dijitSliderBar {
+       border-style: solid;
+       outline:1px;
+       
+}
+.nihilo .dijitSliderFocused .dijitSliderBar {
+       border-color:#727272;
+}
+.nihilo .dijitSliderImageHandleH {
+       border:0px;
+       width:15px;
+       height:18px;
+       background:url("../images/preciseSliderThumb.png") no-repeat center top;
+       #background:url("../images/preciseSliderThumb.gif") no-repeat center top;
+}
+.nihilo .dijitSliderFocused .dijitSliderImageHandleH {
+       background-image:url("../images/preciseSliderThumbFocus.png");
+       #background-image:url("../images/preciseSliderThumbFocus.gif");
+}
+.nihilo .dijitSliderLeftBumper {
+       border-left-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+.nihilo .dijitSliderRightBumper {
+       background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+       border-color: #b4b4b4;
+       border-right-width: 1px;
+}
+.nihilo .dijitSliderImageHandleV {
+       border:0px;
+       width:20px;
+       height:15px;
+       background:url("../images/sliderThumb.png") no-repeat center center;
+       #background:url("../images/sliderThumb.gif") no-repeat center center;
+}
+.nihilo .dijitSliderFocused .dijitSliderImageHandleV {
+       background-image:url("../images/sliderThumbFocus.png");
+       #background-image:url("../images/sliderThumbFocus.gif");
+}
+.nihilo .dijitSliderBottomBumper {
+       border-bottom-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+.nihilo .dijitSliderTopBumper {
+       background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left;
+       border-color: #b4b4b4;
+       border-top-width: 1px;
+}
+.nihilo .dijitSliderIncrementIconH,
+.nihilo .dijitSliderIncrementIconV {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -45px top;
+       width:15px; height:15px;
+}
+.nihilo .dijitSliderIncrementIconH {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
+}
+.nihilo .dijitSliderDecrementIconH,
+.nihilo .dijitSliderDecrementIconV {
+       width:15px;
+       height:15px;
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
+}
+.nihilo .dijitSliderDecrementIconH {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0px top;
+}
+.nihilo .dijitSliderButtonInner {
+       visibility:hidden;
+}
+.nihilo .dijitSliderReadOnly *,
+.nihilo .dijitSliderDisabled * {
+       border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
+       color: #bdbdbd;
+}
+.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconH,
+.nihilo .dijitSliderDisabled .dijitSliderDecrementIconH {
+       background-position: 0px -15px;
+}
+.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconH,
+.nihilo .dijitSliderDisabled .dijitSliderIncrementIconH {
+       background-position: -30px -15px;
+}
+.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconV,
+.nihilo .dijitSliderDisabled .dijitSliderDecrementIconV {
+       background-position: -15px -15px;
+}
+.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconV,
+.nihilo .dijitSliderDisabled .dijitSliderIncrementIconV {
+       background-position: -45px -15px;
+}
diff --git a/lib/dijit/themes/nihilo/form/Slider_rtl.css b/lib/dijit/themes/nihilo/form/Slider_rtl.css
new file mode 100644 (file)
index 0000000..fc40452
--- /dev/null
@@ -0,0 +1,29 @@
+
+.dijitRtl .nihilo .dijitSliderProgressBarH,
+.dijitRtl .nihilo .dijitSliderRemainingBarH,
+.dijitRtl .nihilo .dijitSliderLeftBumper,
+.dijitRtl .nihilo .dijitSliderRightBumper,
+.dijitRtl .nihilo .dijitSliderTopBumper {
+       background-position: top right;
+}
+.dijitRtl .nihilo .dijitSliderProgressBarV,
+.dijitRtl .nihilo .dijitSliderRemainingBarV,
+.dijitRtl .nihilo .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.dijitRtl .nihilo .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.dijitRtl .nihilo .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.dijitRtl .nihilo .dijitSliderIncrementIconH {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat left top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat left top;
+}
+.dijitRtl .nihilo .dijitSliderDecrementIconH {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
+}
diff --git a/lib/dijit/themes/nihilo/form/TimeTextBox.css b/lib/dijit/themes/nihilo/form/TimeTextBox.css
new file mode 100644 (file)
index 0000000..d450925
--- /dev/null
@@ -0,0 +1 @@
+@CHARSET "UTF-8";
diff --git a/lib/dijit/themes/nihilo/images/accordionItemActive.png b/lib/dijit/themes/nihilo/images/accordionItemActive.png
new file mode 100644 (file)
index 0000000..58f3cf9
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/accordionItemActive.png differ
diff --git a/lib/dijit/themes/nihilo/images/buttonActive.png b/lib/dijit/themes/nihilo/images/buttonActive.png
new file mode 100644 (file)
index 0000000..e2f2fda
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/buttonActive.png differ
diff --git a/lib/dijit/themes/nihilo/images/buttonDisabled.png b/lib/dijit/themes/nihilo/images/buttonDisabled.png
new file mode 100644 (file)
index 0000000..b76af42
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/buttonDisabled.png differ
diff --git a/lib/dijit/themes/nihilo/images/buttonEnabled.png b/lib/dijit/themes/nihilo/images/buttonEnabled.png
new file mode 100644 (file)
index 0000000..d4fd306
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/buttonEnabled.png differ
diff --git a/lib/dijit/themes/nihilo/images/buttonHover.png b/lib/dijit/themes/nihilo/images/buttonHover.png
new file mode 100644 (file)
index 0000000..1af7e83
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/buttonHover.png differ
diff --git a/lib/dijit/themes/nihilo/images/dndCopy.png b/lib/dijit/themes/nihilo/images/dndCopy.png
new file mode 100644 (file)
index 0000000..baecd7c
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/dndCopy.png differ
diff --git a/lib/dijit/themes/nihilo/images/dndMove.png b/lib/dijit/themes/nihilo/images/dndMove.png
new file mode 100644 (file)
index 0000000..07f878c
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/dndMove.png differ
diff --git a/lib/dijit/themes/nihilo/images/dndNoCopy.png b/lib/dijit/themes/nihilo/images/dndNoCopy.png
new file mode 100644 (file)
index 0000000..9bf9c33
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/dndNoCopy.png differ
diff --git a/lib/dijit/themes/nihilo/images/dndNoMove.png b/lib/dijit/themes/nihilo/images/dndNoMove.png
new file mode 100644 (file)
index 0000000..cb8bd8b
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/dndNoMove.png differ
diff --git a/lib/dijit/themes/nihilo/images/no.gif b/lib/dijit/themes/nihilo/images/no.gif
new file mode 100644 (file)
index 0000000..9021a14
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/no.gif differ
diff --git a/lib/dijit/themes/nihilo/images/preciseSliderThumb.gif b/lib/dijit/themes/nihilo/images/preciseSliderThumb.gif
new file mode 100644 (file)
index 0000000..53b33e5
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/preciseSliderThumb.gif differ
diff --git a/lib/dijit/themes/nihilo/images/preciseSliderThumb.png b/lib/dijit/themes/nihilo/images/preciseSliderThumb.png
new file mode 100644 (file)
index 0000000..045bf35
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/preciseSliderThumb.png differ
diff --git a/lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif b/lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif
new file mode 100644 (file)
index 0000000..8c6f92e
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif differ
diff --git a/lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.png b/lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.png
new file mode 100644 (file)
index 0000000..c235849
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/preciseSliderThumbFocus.png differ
diff --git a/lib/dijit/themes/nihilo/images/progressBarAnim.gif b/lib/dijit/themes/nihilo/images/progressBarAnim.gif
new file mode 100644 (file)
index 0000000..543d048
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/progressBarAnim.gif differ
diff --git a/lib/dijit/themes/nihilo/images/progressBarEmpty.png b/lib/dijit/themes/nihilo/images/progressBarEmpty.png
new file mode 100644 (file)
index 0000000..c2d3695
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/progressBarEmpty.png differ
diff --git a/lib/dijit/themes/nihilo/images/progressBarFull.png b/lib/dijit/themes/nihilo/images/progressBarFull.png
new file mode 100644 (file)
index 0000000..a8f3865
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/progressBarFull.png differ
diff --git a/lib/dijit/themes/nihilo/images/sliderEmpty.png b/lib/dijit/themes/nihilo/images/sliderEmpty.png
new file mode 100644 (file)
index 0000000..99fbd72
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderEmpty.png differ
diff --git a/lib/dijit/themes/nihilo/images/sliderEmptyVertical.png b/lib/dijit/themes/nihilo/images/sliderEmptyVertical.png
new file mode 100644 (file)
index 0000000..2d497e3
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderEmptyVertical.png differ
diff --git a/lib/dijit/themes/nihilo/images/sliderFull.png b/lib/dijit/themes/nihilo/images/sliderFull.png
new file mode 100644 (file)
index 0000000..9adb254
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderFull.png differ
diff --git a/lib/dijit/themes/nihilo/images/sliderFullFocus.png b/lib/dijit/themes/nihilo/images/sliderFullFocus.png
new file mode 100644 (file)
index 0000000..3d75cae
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderFullFocus.png differ
diff --git a/lib/dijit/themes/nihilo/images/sliderFullVertical.png b/lib/dijit/themes/nihilo/images/sliderFullVertical.png
new file mode 100644 (file)
index 0000000..27e9752
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderFullVertical.png differ
diff --git a/lib/dijit/themes/nihilo/images/sliderFullVerticalFocus.png b/lib/dijit/themes/nihilo/images/sliderFullVerticalFocus.png
new file mode 100644 (file)
index 0000000..cca6184
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderFullVerticalFocus.png differ
diff --git a/lib/dijit/themes/nihilo/images/sliderThumb.gif b/lib/dijit/themes/nihilo/images/sliderThumb.gif
new file mode 100644 (file)
index 0000000..29899a4
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderThumb.gif differ
diff --git a/lib/dijit/themes/nihilo/images/sliderThumb.png b/lib/dijit/themes/nihilo/images/sliderThumb.png
new file mode 100644 (file)
index 0000000..b6abbd2
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderThumb.png differ
diff --git a/lib/dijit/themes/nihilo/images/sliderThumbFocus.gif b/lib/dijit/themes/nihilo/images/sliderThumbFocus.gif
new file mode 100644 (file)
index 0000000..f8d306f
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderThumbFocus.gif differ
diff --git a/lib/dijit/themes/nihilo/images/sliderThumbFocus.png b/lib/dijit/themes/nihilo/images/sliderThumbFocus.png
new file mode 100644 (file)
index 0000000..73ee705
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/sliderThumbFocus.png differ
diff --git a/lib/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png b/lib/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png
new file mode 100644 (file)
index 0000000..e7bc204
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png differ
diff --git a/lib/dijit/themes/nihilo/images/splitContainerSizerH.png b/lib/dijit/themes/nihilo/images/splitContainerSizerH.png
new file mode 100644 (file)
index 0000000..5f5b0e9
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/splitContainerSizerH.png differ
diff --git a/lib/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png b/lib/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png
new file mode 100644 (file)
index 0000000..410a0a7
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png differ
diff --git a/lib/dijit/themes/nihilo/images/splitContainerSizerV.png b/lib/dijit/themes/nihilo/images/splitContainerSizerV.png
new file mode 100644 (file)
index 0000000..064bc18
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/splitContainerSizerV.png differ
diff --git a/lib/dijit/themes/nihilo/images/spriteArrows.gif b/lib/dijit/themes/nihilo/images/spriteArrows.gif
new file mode 100644 (file)
index 0000000..fc81207
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteArrows.gif differ
diff --git a/lib/dijit/themes/nihilo/images/spriteArrows.png b/lib/dijit/themes/nihilo/images/spriteArrows.png
new file mode 100644 (file)
index 0000000..73aa700
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteArrows.png differ
diff --git a/lib/dijit/themes/nihilo/images/spriteCheckbox.gif b/lib/dijit/themes/nihilo/images/spriteCheckbox.gif
new file mode 100644 (file)
index 0000000..d2c4ebf
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteCheckbox.gif differ
diff --git a/lib/dijit/themes/nihilo/images/spriteCheckbox.png b/lib/dijit/themes/nihilo/images/spriteCheckbox.png
new file mode 100644 (file)
index 0000000..e992330
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteCheckbox.png differ
diff --git a/lib/dijit/themes/nihilo/images/spriteDivIcons.gif b/lib/dijit/themes/nihilo/images/spriteDivIcons.gif
new file mode 100644 (file)
index 0000000..00ad23a
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteDivIcons.gif differ
diff --git a/lib/dijit/themes/nihilo/images/spriteDivIcons.png b/lib/dijit/themes/nihilo/images/spriteDivIcons.png
new file mode 100644 (file)
index 0000000..413098a
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteDivIcons.png differ
diff --git a/lib/dijit/themes/nihilo/images/spriteRadio.gif b/lib/dijit/themes/nihilo/images/spriteRadio.gif
new file mode 100644 (file)
index 0000000..8dd6e57
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteRadio.gif differ
diff --git a/lib/dijit/themes/nihilo/images/spriteRadio.png b/lib/dijit/themes/nihilo/images/spriteRadio.png
new file mode 100644 (file)
index 0000000..14c1080
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteRadio.png differ
diff --git a/lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif b/lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif
new file mode 100644 (file)
index 0000000..251389a
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif differ
diff --git a/lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png b/lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png
new file mode 100644 (file)
index 0000000..e81ba07
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png differ
diff --git a/lib/dijit/themes/nihilo/images/spriteTree.gif b/lib/dijit/themes/nihilo/images/spriteTree.gif
new file mode 100644 (file)
index 0000000..e546e28
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteTree.gif differ
diff --git a/lib/dijit/themes/nihilo/images/spriteTree.png b/lib/dijit/themes/nihilo/images/spriteTree.png
new file mode 100644 (file)
index 0000000..33ae07b
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteTree.png differ
diff --git a/lib/dijit/themes/nihilo/images/spriteTree_rtl.gif b/lib/dijit/themes/nihilo/images/spriteTree_rtl.gif
new file mode 100644 (file)
index 0000000..bbcc64b
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteTree_rtl.gif differ
diff --git a/lib/dijit/themes/nihilo/images/spriteTree_rtl.png b/lib/dijit/themes/nihilo/images/spriteTree_rtl.png
new file mode 100644 (file)
index 0000000..b06afdb
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/spriteTree_rtl.png differ
diff --git a/lib/dijit/themes/nihilo/images/tabBottomActiveC.gif b/lib/dijit/themes/nihilo/images/tabBottomActiveC.gif
new file mode 100644 (file)
index 0000000..84bffde
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabBottomActiveC.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif b/lib/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif
new file mode 100644 (file)
index 0000000..6803db4
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabBottomActiveSpriteLR.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabBottomEnabledC.gif b/lib/dijit/themes/nihilo/images/tabBottomEnabledC.gif
new file mode 100644 (file)
index 0000000..9ef9ab0
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabBottomEnabledC.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif b/lib/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif
new file mode 100644 (file)
index 0000000..b6b08ce
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabBottomEnabledSpriteLR.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabBottomHoverC.gif b/lib/dijit/themes/nihilo/images/tabBottomHoverC.gif
new file mode 100644 (file)
index 0000000..0f533b5
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabBottomHoverC.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif b/lib/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif
new file mode 100644 (file)
index 0000000..010b08a
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabBottomHoverSpriteLR.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabContainerSprite.gif b/lib/dijit/themes/nihilo/images/tabContainerSprite.gif
new file mode 100644 (file)
index 0000000..92044a7
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabContainerSprite.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabLeftChecked.gif b/lib/dijit/themes/nihilo/images/tabLeftChecked.gif
new file mode 100644 (file)
index 0000000..d59fd4a
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabLeftChecked.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabRightChecked.gif b/lib/dijit/themes/nihilo/images/tabRightChecked.gif
new file mode 100644 (file)
index 0000000..d32f44e
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabRightChecked.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabStripe.gif b/lib/dijit/themes/nihilo/images/tabStripe.gif
new file mode 100644 (file)
index 0000000..a934675
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabStripe.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabStripeBottom.gif b/lib/dijit/themes/nihilo/images/tabStripeBottom.gif
new file mode 100644 (file)
index 0000000..64c3376
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabStripeBottom.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabStripeLeft.gif b/lib/dijit/themes/nihilo/images/tabStripeLeft.gif
new file mode 100644 (file)
index 0000000..d607a45
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabStripeLeft.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tabStripeRight.gif b/lib/dijit/themes/nihilo/images/tabStripeRight.gif
new file mode 100644 (file)
index 0000000..9778ced
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tabStripeRight.gif differ
diff --git a/lib/dijit/themes/nihilo/images/titleBar.png b/lib/dijit/themes/nihilo/images/titleBar.png
new file mode 100644 (file)
index 0000000..06ea21c
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/titleBar.png differ
diff --git a/lib/dijit/themes/nihilo/images/titleBarActive.png b/lib/dijit/themes/nihilo/images/titleBarActive.png
new file mode 100644 (file)
index 0000000..fe6c7a4
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/titleBarActive.png differ
diff --git a/lib/dijit/themes/nihilo/images/tooltipConnectorDown.gif b/lib/dijit/themes/nihilo/images/tooltipConnectorDown.gif
new file mode 100644 (file)
index 0000000..9c38495
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tooltipConnectorDown.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tooltipConnectorDown.png b/lib/dijit/themes/nihilo/images/tooltipConnectorDown.png
new file mode 100644 (file)
index 0000000..d75af71
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tooltipConnectorDown.png differ
diff --git a/lib/dijit/themes/nihilo/images/tooltipConnectorLeft.gif b/lib/dijit/themes/nihilo/images/tooltipConnectorLeft.gif
new file mode 100644 (file)
index 0000000..fc947e0
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tooltipConnectorLeft.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tooltipConnectorLeft.png b/lib/dijit/themes/nihilo/images/tooltipConnectorLeft.png
new file mode 100644 (file)
index 0000000..f3de66a
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tooltipConnectorLeft.png differ
diff --git a/lib/dijit/themes/nihilo/images/tooltipConnectorRight.gif b/lib/dijit/themes/nihilo/images/tooltipConnectorRight.gif
new file mode 100644 (file)
index 0000000..b0e8097
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tooltipConnectorRight.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tooltipConnectorRight.png b/lib/dijit/themes/nihilo/images/tooltipConnectorRight.png
new file mode 100644 (file)
index 0000000..ed6efc4
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tooltipConnectorRight.png differ
diff --git a/lib/dijit/themes/nihilo/images/tooltipConnectorUp.gif b/lib/dijit/themes/nihilo/images/tooltipConnectorUp.gif
new file mode 100644 (file)
index 0000000..54bcf65
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tooltipConnectorUp.gif differ
diff --git a/lib/dijit/themes/nihilo/images/tooltipConnectorUp.png b/lib/dijit/themes/nihilo/images/tooltipConnectorUp.png
new file mode 100644 (file)
index 0000000..7f7a5d8
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/tooltipConnectorUp.png differ
diff --git a/lib/dijit/themes/nihilo/images/treeExpand_loading.gif b/lib/dijit/themes/nihilo/images/treeExpand_loading.gif
new file mode 100644 (file)
index 0000000..db9ddd0
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/treeExpand_loading.gif differ
diff --git a/lib/dijit/themes/nihilo/images/treeHover.png b/lib/dijit/themes/nihilo/images/treeHover.png
new file mode 100644 (file)
index 0000000..ca80cd2
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/treeHover.png differ
diff --git a/lib/dijit/themes/nihilo/images/treeI.gif b/lib/dijit/themes/nihilo/images/treeI.gif
new file mode 100644 (file)
index 0000000..6f669e2
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/treeI.gif differ
diff --git a/lib/dijit/themes/nihilo/images/treeI_half.gif b/lib/dijit/themes/nihilo/images/treeI_half.gif
new file mode 100644 (file)
index 0000000..e5fd015
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/treeI_half.gif differ
diff --git a/lib/dijit/themes/nihilo/images/treeI_half_rtl.gif b/lib/dijit/themes/nihilo/images/treeI_half_rtl.gif
new file mode 100644 (file)
index 0000000..44ad021
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/treeI_half_rtl.gif differ
diff --git a/lib/dijit/themes/nihilo/images/treeI_rtl.gif b/lib/dijit/themes/nihilo/images/treeI_rtl.gif
new file mode 100644 (file)
index 0000000..0d32a2f
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/treeI_rtl.gif differ
diff --git a/lib/dijit/themes/nihilo/images/validationInputBg.gif b/lib/dijit/themes/nihilo/images/validationInputBg.gif
new file mode 100644 (file)
index 0000000..c28475c
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/validationInputBg.gif differ
diff --git a/lib/dijit/themes/nihilo/images/validationInputBg.png b/lib/dijit/themes/nihilo/images/validationInputBg.png
new file mode 100644 (file)
index 0000000..f3039f9
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/validationInputBg.png differ
diff --git a/lib/dijit/themes/nihilo/images/warning.png b/lib/dijit/themes/nihilo/images/warning.png
new file mode 100644 (file)
index 0000000..c52f83d
Binary files /dev/null and b/lib/dijit/themes/nihilo/images/warning.png differ
diff --git a/lib/dijit/themes/nihilo/layout/AccordionContainer.css b/lib/dijit/themes/nihilo/layout/AccordionContainer.css
new file mode 100644 (file)
index 0000000..a74b01a
--- /dev/null
@@ -0,0 +1,35 @@
+
+.nihilo .dijitAccordionContainer {
+       border-color: #ccc;
+       background-color: #fff;
+}
+.nihilo .dijitAccordionTitle {
+       background:#fafafa url("../images/titleBar.png") repeat-x top left;
+       border-top: 1px solid #dedede;
+       padding: 5px 4px 6px 8px;
+       font-size: 0.9em;
+       font-weight: bold;
+       color: #6d6d6d;
+}
+.nihilo .dijitAccordionTitleSelected  {
+       background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x;
+       font-weight: bold;
+       border-top: 1px solid #dedede;
+       border-bottom: 1px solid #dedede;
+       padding: 5px 4px 5px 8px;
+       color: #243C5F;
+}
+.nihilo .dijitAccordionArrow {
+       background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -30px top;
+       width:15px;
+       height:15px;
+       margin-top:-1px;
+}
+.nihilo .dijitAccordionTitleSelected .dijitAccordionArrow {
+       background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -15px top;
+       margin-top:-1px;
+}
+.nihilo .dijitAccordionText {
+       margin-left: 4px;
+       margin-right: 4px;
+}
diff --git a/lib/dijit/themes/nihilo/layout/AccordionContainer_rtl.css b/lib/dijit/themes/nihilo/layout/AccordionContainer_rtl.css
new file mode 100644 (file)
index 0000000..b71afba
--- /dev/null
@@ -0,0 +1,7 @@
+.dijitRtl .nihilo .dijitAccordionArrow {
+       background-position: 0px top;
+}
+.dijitRtl .nihilo .dijitAccordionTitleSelected .dijitAccordionArrow {
+       
+       background-position: -15px top;
+}
diff --git a/lib/dijit/themes/nihilo/layout/BorderContainer.css b/lib/dijit/themes/nihilo/layout/BorderContainer.css
new file mode 100644 (file)
index 0000000..29fcc39
--- /dev/null
@@ -0,0 +1,59 @@
+
+.nihilo .dijitBorderContainer {
+       background-color: #fcfcfc;
+       padding: 5px;
+}
+.nihilo .dijitSplitContainer-child,
+.nihilo .dijitBorderContainer-child {
+       
+    border: 1px #ccc solid;
+}
+.nihilo .dijitBorderContainer-dijitTabContainerTop,
+.nihilo .dijitBorderContainer-dijitTabContainerBottom,
+.nihilo .dijitBorderContainer-dijitTabContainerLeft,
+.nihilo .dijitBorderContainer-dijitTabContainerRight {
+       
+        border: none;
+}
+.nihilo .dijitBorderContainer-dijitBorderContainer {
+       
+       border: none;
+       padding: 0px;
+}
+.nihilo .dijitSplitterH,
+.nihilo .dijitGutterH {
+       background:#FCFCFC;
+       border:0;
+       border-left:0px solid #d3d3d3;
+       border-right:0px solid #d3d3d3;
+       height:5px;
+}
+.nihilo .dijitSplitterH .dijitSplitterThumb {
+       background:#8BA0BD none;
+       height:1px;
+       top:2px;
+       width:19px;
+}
+.nihilo .dijitSplitterV,
+.nihilo .dijitGutterV {
+       background:#FCFCFC;
+       border:0;
+       border-top:0px solid #d3d3d3;
+       border-bottom:0px solid #d3d3d3;
+       width:5px;
+}
+.nihilo .dijitSplitterV .dijitSplitterThumb {
+       background:#8BA0BD none;
+       height:19px;
+       left:2px;
+       width:1px;
+}
+.nihilo .dijitSplitterActive {
+       font-size: 1px;
+       background-image: none;
+       background-color: #aaa;
+       -moz-opacity: 0.6;
+       opacity: 0.6;
+       filter: Alpha(Opacity=60);
+       margin: 0;
+}
diff --git a/lib/dijit/themes/nihilo/layout/ContentPane.css b/lib/dijit/themes/nihilo/layout/ContentPane.css
new file mode 100644 (file)
index 0000000..2bd0a19
--- /dev/null
@@ -0,0 +1,17 @@
+
+.nihilo .dijitContentPane {
+    padding: 0px;
+}
+.nihilo .dijitTabContainerTop-dijitContentPane,
+.nihilo .dijitTabContainerLeft-dijitContentPane,
+.nihilo .dijitTabContainerRight-dijitContentPane,
+.nihilo .dijitTabContainerBottom-dijitContentPane,
+.nihilo .dijitAccordionContainer-dijitContentPane {
+    background-color: #fff;
+    padding: 5px;
+}
+.nihilo .dijitSplitContainer-dijitContentPane,
+.nihilo .dijitBorderContainer-dijitContentPane {
+    background-color: #fff;            
+    padding: 5px;
+}
diff --git a/lib/dijit/themes/nihilo/layout/SplitContainer.css b/lib/dijit/themes/nihilo/layout/SplitContainer.css
new file mode 100644 (file)
index 0000000..79d8fbd
--- /dev/null
@@ -0,0 +1,27 @@
+
+.nihilo .dijitSplitContainerSizerH {
+       background:url("../images/splitContainerSizerV.png") repeat-y #fff;
+       border:0;
+       border-left:0px solid #d3d3d3;
+       border-right:0px solid #d3d3d3;
+       width:5px;
+}
+.nihilo .dijitSplitContainerSizerH .thumb {
+       background:url("../images/splitContainerSizerV-thumb.png") no-repeat;
+       left:1px;
+       width:2px;
+       height:19px;
+}
+.nihilo .dijitSplitContainerSizerV {
+       background:url("../images/splitContainerSizerH.png") repeat-x #fff;
+       border:0;
+       border-top:0px solid #d3d3d3;
+       border-bottom:0px solid #d3d3d3;
+       height:2px;
+}
+.nihilo .dijitSplitContainerSizerV .thumb {
+       background:url("../images/splitContainerSizerH-thumb.png") no-repeat;
+       top:1px;
+       width:19px;
+       height:5px;
+}
diff --git a/lib/dijit/themes/nihilo/layout/TabContainer.css b/lib/dijit/themes/nihilo/layout/TabContainer.css
new file mode 100644 (file)
index 0000000..3652f22
--- /dev/null
@@ -0,0 +1,439 @@
+
+.nihilo .dijitMenu,
+.nihilo .dijitMenuBar {
+       border: 1px solid #d3d3d3;
+       margin: 0px;
+       padding: 0px;
+       background-color: #fff;
+}
+.nihilo .dijitBorderContainer .dijitMenuBar {
+       border: 1px #ccc solid;
+}
+.nihilo .dijitMenuItem {
+       font-family: sans-serif;
+       margin: 0px;
+       color: #243C5F;
+}
+.nihilo .dijitMenuBar .dijitMenuItem {
+       padding: 4px 5px;
+}
+.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {
+       font-style: italic;
+}
+.nihilo .dijitMenuItem TD {
+       padding:1px;
+}
+.nihilo .dijitMenuPassive .dijitMenuItemHover,
+.nihilo .dijitMenuItemSelected {
+       background-color: #ffe284; 
+       color: #243C5F;
+}
+.nihilo .dijitMenuItemIcon {
+       width: 15px;
+       height: 15px;
+}
+.nihilo .dijitMenuExpand {
+       width:15px;
+       height:15px;
+       background-image: url(../images/spriteRoundedIconsSmall.png);
+       background-position: -30px top;
+}
+.dj_ie6 .nihilo .dijitMenuExpand {
+       background-image:url(../images/spriteRoundedIconsSmall.gif);
+}
+.nihilo .dijitMenuSeparator {
+       height: 1px;
+}
+.nihilo .dijitMenuSeparatorTop {
+       border-bottom: 1px solid #fff; 
+}
+.nihilo .dijitMenuSeparatorBottom {
+       border-top: 1px solid #d3d3d3;
+}
+.nihilo .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.nihilo .dijitCheckedMenuItemIcon {
+       background-image: url(../images/spriteCheckbox.gif);
+       background-position: -80px;
+}
+.nihilo .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: -64px;
+}
+.nihilo .dijitTabContainer .tabStripRBtn {
+       margin-right: 21px;
+}
+.nihilo .dijitTabContainer .tabStripLBtn {
+       margin-left: 21px;
+}
+.nihilo .dijitTabContainerBottom .nowrapTabStrip .dijitTab {
+       top: 0px;
+}
+.nihilo .dijitTabPaneWrapper {
+       background:#fff;
+       border:1px solid #ccc;
+       margin: 0;
+       padding: 0;
+}
+.nihilo .dijitTabInnerDiv {
+       padding:0px 3px 0px 0px;
+       margin: 0 0 0 4px;
+       background: url("../images/tabContainerSprite.gif") no-repeat;
+       background-position: right -400px;
+}
+.nihilo .dijitTab {
+       line-height:normal;
+       margin:0 2px 0 0;       
+       padding:0px;
+       background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px;
+       color: #6d6d6d;
+       border-bottom: 1px #ccc solid;
+}
+.nihilo .dijitTabInnerDiv .dijitTabContent {
+       padding:3px 3px 3px 4px;
+       background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px;
+       position: relative;
+}
+.nihilo .dijitTabHover {
+       color: #243C5F;
+       background: url("../images/tabContainerSprite.gif") no-repeat 0px -150px;
+}
+.nihilo .dijitTabHover .dijitTabInnerDiv {
+       background: url("../images/tabContainerSprite.gif") no-repeat right -250px;
+}
+.nihilo .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
+       background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px;
+}
+.nihilo .dijitTabChecked
+{
+       
+       background: url("../images/tabContainerSprite.gif") no-repeat 0px -0px;
+}
+.nihilo .dijitTabChecked .dijitTabInnerDiv {
+       background: url("../images/tabContainerSprite.gif") no-repeat right -100px;
+}
+.nihilo .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+       background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px;
+       color: #243C5F !important;
+}
+.nihilo .dijitTabContainerNested .dijitTabListWrapper {
+       height: auto;
+}
+.nihilo .dijitTabContainerTabListNested {
+       background: #FDFDFD;
+       border: none;
+       margin-bottom: 0px;             
+}
+.nihilo .dijitTabContainerTabListNested .dijitTab {
+       background: none;
+       border: none;
+       top: 0px;       
+}
+.nihilo .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv,
+.nihilo .dijitTabContainerTabListNested .dijitTab .dijitTabContent {
+       background: none;
+}
+.nihilo .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel {
+       text-decoration: underline;
+}
+.nihilo .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {
+       text-decoration: underline;
+       font-weight: bold;
+}
+.nihilo .dijitTabContainerSpacerNested {
+       
+       height: 0px;
+       border-bottom: 0px;
+}
+.nihilo .dijitTabPaneWrapperNested {
+       border: none;   
+}
+.nihilo .dijitTabCloseButton {
+       background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top;
+       width: 15px;
+       height: 15px;
+       margin-top: -1px;
+}
+.dj_ie6 .nihilo .dijitTabCloseButton {
+       background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top;
+}
+.nihilo .dijitTabCloseButtonHover {
+       background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px -15px;
+}
+.dj_ie6 .nihilo .dijitTabCloseButtonHover {
+       background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px;
+}
+.nihilo .dijitTab .tabLabel {
+       
+       min-height: 15px;
+       display: inline-block;
+}
+.dj_ie6 .nihilo .dijitTabButtonIcon {
+       
+       height: 18px;
+       width: 1px;
+}
+.nihilo .dijitTabContainerTop-tabs {
+       border-bottom: none;
+       padding-bottom: 1px;
+       background-position: bottom;
+       padding-left: 3px;
+}
+.dj_ie6 .nihilo .dijitTabListContainer-top,
+.dj_ie7 .nihilo .dijitTabListContainer-top {
+       z-index: 3;
+}
+.dj_ie6 .nihilo .dijitTabContainerTop-tabs,
+.dj_ie7 .nihilo .dijitTabContainerTop-tabs {
+       border-bottom: 1px solid #ccc;
+       padding-bottom: 0px;
+}
+.nihilo .dijitTabContainerTopNoStrip {
+       padding-top: 3px;
+}
+.nihilo .dijitTabContainerTop-container {
+       border-top: none;
+}
+.nihilo .dijitTabContainerTop-tabs .dijitTabChecked {
+       border-bottom-color: #f8f8f8;
+}
+.nihilo .dijitTabContainer .dijitTabContainerTopStrip {
+       border-bottom: none;
+       padding-top: 1px;
+       margin-top: 1px;
+       background: #f2f2f2;
+       border-top: 1px solid #CCC;
+       border-right: 1px solid #CCC;
+       border-left: 1px solid #CCC;
+}
+.nihilo .dijitTabContainerBottom-tabs {
+       border-top: none;
+       background-position: top;
+       padding-left: 3px;
+}
+.dj_ie6 .nihilo .dijitTabListContainer-bottom,
+.dj_ie7 .nihilo .dijitTabListContainer-bottom {
+       z-index: 3;
+}
+.dj_ie6 .nihilo .dijitTabContainerBottom-tabs,
+.dj_ie7 .nihilo .dijitTabContainerBottom-tabs {
+       border-top: 1px solid #ccc;
+       margin-top: -1px;
+}
+.nihilo .dijitTabContainerBottom-container {
+       border-bottom: none;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTab {
+       border-bottom: none;
+       border-top: 1px solid #ccc;
+       background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked {
+       border-top-color: #f8f8f8;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent {
+       padding-top: 3px;
+       padding-bottom: 3px;
+       background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv {
+       background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabHover {
+       color: #243C5F;
+       background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv {
+       background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
+       background: url("../images/tabBottomHoverC.gif") repeat-x bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked {
+       
+       background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+       background: url("../images/tabBottomActiveC.gif") repeat-x bottom left;
+}
+.nihilo .dijitTabContainer .dijitTabContainerBottomStrip {
+       border: 1px solid #ccc;
+       background: #f2f2f2;
+       border-top: none;
+       padding-bottom: 2px;
+}
+.nihilo .dijitTabContainerBottom-spacer,
+.nihilo .dijitTabContainerTop-spacer {
+       height: 2px;
+       border: 1px solid #ccc;
+       background: #f8f8f8;
+}
+.nihilo  .dijitTabContainerTop-spacer {
+       margin-top: -1px;
+}
+.nihilo .dijitTabContainerBottom-spacer {
+       margin-bottom: -1px;
+}
+.nihilo .dijitTabContainerRight-tabs {
+       border-color: #ccc;
+       padding-top: 3px;
+}
+.nihilo .dijitTabContainerRight .dijitTabListWrapper {
+       padding-right: 3px;
+}
+.nihilo .dijitTabContainerRight-container {
+       border-right: none;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTab {
+       border-bottom: none;
+       border-left: 1px solid #ccc;
+       border-bottom: 1px solid #dedede !important;
+}
+.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabInnerDiv {
+       border-bottom: solid #fff 1px;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {
+       border-left-color: #f8f8f8;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {
+       background: url("../images/tabRightChecked.gif") no-repeat left top !important;
+}
+.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       border-bottom: solid #efefef 1px;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTab {
+       background: url("../images/tabContainerSprite.gif") no-repeat left -350px;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTabHover .dijitTab {
+       background: url("../images/tabContainerSprite.gif") no-repeat left -200px;
+}
+.nihilo .dijitTabContainerRightStrip {
+       padding-right: 2px;
+       border: 1px solid #ccc;
+       border-left: none;
+       background: #f2f2f2;
+}
+.nihilo .dijitTabContainerLeft-tabs {
+       border-color: #ccc;
+       padding-top: 3px;
+}
+.nihilo .dijitTabContainerLeft-container {
+       border-left: none;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTab {
+       border-right: 1px solid #ccc;
+       border-bottom: 1px solid #dedede;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked {
+       border-right: 1px solid #f8f8f8;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       background: url("../images/tabContainerSprite.gif") no-repeat right -350px;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv {
+       background: url("../images/tabContainerSprite.gif") no-repeat right -200px;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       background: url("../images/tabLeftChecked.gif") no-repeat right top;
+}
+.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       border-bottom: solid #efefef 1px;
+}
+.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       border-bottom: solid #fff 1px;
+}
+.nihilo .dijitTabContainerLeftStrip {
+       padding-left: 2px;
+       border: 1px solid #ccc;
+       border-right: none;
+}
+.nihilo .dijitTabContainerLeftStrip {
+       background: #f2f2f2;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTab,
+.nihilo .dijitTabContainerRight-tabs .dijitTab {
+       margin-right:auto;
+       margin-bottom:2px;      
+}
+.nihilo .dijitTabContainerLeft-spacer,
+.nihilo .dijitTabContainerRight-spacer {
+       width: 2px;
+       border: 1px solid #ccc;
+       background: #f8f8f8;
+}
+.nihilo .dijitTabContainerRight-spacer {
+       border-right: none;
+}
+.nihilo .dijitTabContainerRight-tabs {
+       padding-top: 3px;
+       height: 100%;
+}
+.nihilo .dijitTabContainerLeft-tabs {
+       height: 100%;
+}
+.nihilo .dijitTabContainerLeft-spacer {
+       border-left: none;
+}
+.nihilo .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {
+       border-left: 0px solid #ccc;
+       border-top: 0px solid #ccc;
+       border-right: 0px solid #ccc;
+       padding-top: 0px;
+       padding-left: 0px;
+}
+.nihilo .dijitTabContainer .tabStripButton {
+       margin-right: 0px;
+}
+.nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {
+       padding: 5px 0 6px;
+}
+.dj_ie6 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,
+.dj_ie7 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,
+.dj_opera .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {
+       padding-bottom: 7px;
+}
+.nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent {
+       padding: 3px 0 5px;
+}
+.dj_ie6 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,
+.dj_ie7 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,
+.dj_opera .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent {
+       padding-top: 4px;
+}
+.nihilo .dijitTabStripIcon {
+       height: 14px;
+       width: 14px;
+       background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top;
+}
+.dj_ie6 .nihilo .dijitTabStripIcon {
+       background-image: url(../images/spriteRoundedIconsSmall.gif);
+}
+.nihilo .dijitTabStripSlideRightIcon {
+       background-position: -30px top;
+}
+.nihilo .dijitTabStripMenuIcon {
+       background-position: -15px top;
+}
+.nihilo .dijitTabContainerTopNone {
+       padding-top: 0px;
+}
+.nihilo .dijitTabContainer .tabStripButton-top {
+       margin-top: 1px;
+}
+.nihilo .dijitTabContainer .tabStripButton-bottom {
+       background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll left bottom;
+       border-bottom: medium none;
+       border-top: 1px solid #CCCCCC;
+}
+.nihilo .dijitTabContainer .tabStripButton-bottom .dijitTabInnerDiv {
+       background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom;
+}
+.nihilo .dijitTabContainer .tabStripButton-bottom .dijitTabContent {
+       background: transparent;
+}
diff --git a/lib/dijit/themes/nihilo/layout/TabContainer_rtl.css b/lib/dijit/themes/nihilo/layout/TabContainer_rtl.css
new file mode 100644 (file)
index 0000000..8a55f50
--- /dev/null
@@ -0,0 +1,34 @@
+.dijitRtl .nihilo .dijitTab {
+       margin-right:0;
+       margin-left:2px;                
+}
+.dijitRtl .nihilo .dijitTabContainer .tabStripButton {
+       margin-left: 0;
+}
+.dijitRtl .nihilo .dijitTabContainerTopStrip,
+.dijitRtl .nihilo .dijitTabContainerBottomStrip,
+.dijitRtl .nihilo .dijitTabContainerTop-tabs,
+.dijitRtl .nihilo .dijitTabContainerBottom-tabs {
+       padding-left: 0;
+       padding-right: 3px;
+}
+.dijitRtl .nihilo .dijitTabInnerDiv {
+       padding-left: 3px;
+       padding-right: 4px;
+}
+.dijitRtl .nihilo .dijitTabPaneWrapper {
+       #zoom: 1;
+}
+.dj_ie-rtl .nihilo .dijitTabContainerLeft-tabs {
+       margin-left: 0px !important;
+}
+.dj_ie-rtl .nihilo .dijitTabContainerRight-tabs {
+       margin-right: 0px !important;
+}
+.dijitRtl .nihilo .dijitTabContainerLeft-tabs .dijitTab,
+.dijitRtl .nihilo .dijitTabContainerRight-tabs .dijitTab {
+       margin-left:0px;
+}
+.dj_ie-rtl .nihilo .dijitTab .dijitTabInnerDiv{
+       width : 1%;
+}
diff --git a/lib/dijit/themes/nihilo/nihilo.css b/lib/dijit/themes/nihilo/nihilo.css
new file mode 100644 (file)
index 0000000..5a0bc3e
--- /dev/null
@@ -0,0 +1,3404 @@
+
+.dijitReset {
+       
+       margin:0;
+       border:0;
+       padding:0;
+       line-height:normal;
+       font: inherit;
+       color: inherit;
+}
+.dijit_a11y .dijitReset {
+       -moz-appearance: none; 
+}
+.dijitInline {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+       border:0;
+       padding:0;
+       vertical-align:middle;
+       #vertical-align: auto;  
+}
+.dijitHidden {
+       
+       display: none !important;
+}
+.dijitVisible {
+       
+       display: block !important;      
+       position: relative;                     
+}
+.dijitInputContainer {
+       
+       #zoom: 1;
+       overflow: hidden;
+       float: none !important; 
+       position:relative;
+}
+.dj_ie INPUT.dijitTextBox,
+.dj_ie .dijitTextBox INPUT {
+       font-size: 100%;
+}
+.dijitTextBox .dijitSpinnerButtonContainer,
+.dijitTextBox .dijitArrowButtonContainer,
+.dijitTextBox .dijitValidationContainer {
+       float: right;
+       text-align: center;
+}
+.dijitTextBox INPUT.dijitInputField {
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+}
+.dijitTextBox .dijitValidationContainer {
+       display: none;
+}
+.dijitInlineTable {
+       
+       display:inline-table;
+       display:inline-block;           
+       #zoom: 1; 
+       #display:inline; 
+       box-sizing: content-box; -moz-box-sizing: content-box;
+       border:0;
+       padding:0;
+}
+.dijitTeeny {
+       font-size:1px;
+       line-height:1px;
+}
+.dijitOffScreen {
+       position: absolute;
+       visibility: hidden;
+       left: 50%;
+       top: -10000px;
+}
+.dijitPopup {
+       position: absolute;
+       background-color: transparent;
+       margin: 0;
+       border: 0;
+       padding: 0;
+}
+.dijit_a11y .dijitPopup,
+.dijit_ally .dijitPopup DIV,
+.dijit_a11y .dijitPopup TABLE,
+.dijit_a11y .dijitTooltipContainer {
+       background-color: white !important;
+}
+.dijitPositionOnly {
+       
+       padding: 0 !important;
+       border: 0 !important;
+       background-color: transparent !important;
+       background-image: none !important;
+       height: auto !important;
+       width: auto !important;
+}
+.dijitNonPositionOnly {
+       
+       float: none !important;
+       position: static !important;
+       margin: 0 0 0 0 !important;
+       vertical-align: middle !important;
+}
+.dijitBackgroundIframe {
+       
+       position: absolute;
+       left: 0;
+       top: 0;
+       width: 100%;
+       height: 100%;
+       z-index: -1;
+       border: 0;
+       padding: 0;
+       margin: 0;
+}
+.dijitDisplayNone {
+       
+       display:none !important;
+}
+.dijitContainer {
+       
+       overflow: hidden;       
+}
+.dijit_a11y * {
+       background-image:none !important;
+}
+.dijit_a11y .dijitIcon,
+.dijit_a11y DIV.dijitArrowButtonInner, 
+.dijit_a11y SPAN.dijitArrowButtonInner,
+.dijit_a11y IMG.dijitArrowButtonInner,
+.dijit_a11y .dijitCalendarIncrementControl {
+       
+       display: none;
+}
+.dijitSpinner DIV.dijitArrowButtonInner {
+       display: block; 
+}
+.dijit_a11y .dijitA11ySideArrow {
+       display: inline !important; 
+       cursor: pointer;
+}
+.dijit_a11y .dijitCalendarDateLabel {
+       padding: 1px;
+}
+.dijit_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {
+       border-style: dotted !important;
+       border-width: 1px;
+       padding: 0px;
+}
+.dijit_a11y .dijitCalendarDateTemplate {
+       padding-bottom: 0.1em !important;       
+}
+.dijit_a11y .dijit * {
+       background:white !important;
+       color:black !important;
+}
+.dijit_a11y .dijitButtonNode {
+       border-color: black!important;
+       border-style: outset!important;
+       border-width: medium!important;
+}
+.dijit_a11y .dijitTextBoxReadOnly .dijitInputField,
+.dijit_a11y .dijitTextBoxReadOnly .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitButtonNode * {
+       vertical-align: middle;
+}
+.dijitButtonNode .dijitArrowButtonInner {
+       
+       background: no-repeat center;
+       width: 12px;
+       height: 12px;
+       direction: ltr; 
+}
+.dijitLeft {
+       
+       background-position:left top;
+       background-repeat:no-repeat;
+}
+.dijitStretch {
+       
+       white-space:nowrap;                     
+       background-repeat:repeat-x;
+}
+.dijitRight {
+       
+       #display:inline;                                
+       background-position:right top;
+       background-repeat:no-repeat;
+}
+.dijitToggleButton,
+.dijitButton,
+.dijitDropDownButton,
+.dijitComboButton {
+       
+       margin: 0.2em;
+}
+.dijitButtonContents {
+       display: block;         
+}
+td.dijitButtonContents {
+       display: table-cell;    
+}
+.dijitButtonNode IMG {
+       
+       vertical-align:middle;
+       
+}
+TABLE.dijitComboButton { 
+       
+       border-collapse: collapse;
+       border:0;
+       padding:0;
+       margin:0;
+}
+.dijitToolbar .dijitComboButton {
+       
+       border-collapse: separate;
+}
+.dijitToolbar .dijitToggleButton,
+.dijitToolbar .dijitButton,
+.dijitToolbar .dijitDropDownButton,
+.dijitToolbar .dijitComboButton {
+       margin: 0;
+}
+.dijitToolbar .dijitButtonContents {
+       
+       padding: 1px 2px;
+}
+.dj_ie .dijitComboButton {
+       
+       margin-bottom: -3px;
+}
+.dj_webkit .dijitToolbar .dijitDropDownButton {
+       padding-left: 0.3em;
+}
+.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {
+       padding:0;
+}
+.dijitButtonNode {
+       
+       border:1px solid gray;
+       margin:0;
+       line-height:normal;
+       vertical-align: middle;
+       #vertical-align: auto;
+       text-align:center;
+       white-space: nowrap;
+}
+.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {
+       
+       line-height:inherit;
+}
+.dijitTextBox .dijitButtonNode {
+       border-width: 0;
+}
+.dijitButtonNode,
+.dijitButtonNode * {
+       cursor: pointer;
+}
+.dj_ie .dijitButtonNode {
+       
+       zoom: 1;
+}
+.dj_ie .dijitButtonNode button {
+       
+       overflow: visible;
+}
+DIV.dijitArrowButton {
+       float: right;
+}
+.dijitTextBox {
+       border: solid black 1px;
+       #overflow: hidden; 
+       width: 15em;    
+       vertical-align: middle;
+       #vertical-align: auto;
+}
+.dijitTextBoxReadOnly,
+.dijitTextBoxDisabled {
+       color: gray;
+}
+.dj_webkit .dijitTextBoxDisabled INPUT {
+       color: #eee; 
+}
+.dj_webkit TEXTAREA.dijitTextAreaDisabled {
+       color: #333; 
+}
+.dj_gecko .dijitTextBoxReadOnly INPUT,
+.dj_gecko .dijitTextBoxDisabled INPUT {
+       -moz-user-input: none; 
+}
+.dijitPlaceHolder {
+       
+       color: #AAAAAA;
+       font-style: italic;
+       position: absolute;
+       top: 0;
+       left: 0;
+       #filter: ""; 
+}
+.dijitTimeTextBox {
+       width: 8em;
+}
+.dijitTextBox INPUT:focus {
+       outline: none;  
+}
+.dijitTextBoxFocused {
+       outline: auto 5px -webkit-focus-ring-color;
+}
+.dijitTextBox INPUT {
+       float: left; 
+}
+.dijitInputInner {
+       
+       border:0 !important;
+       vertical-align:middle !important;
+       background-color:transparent !important;
+       width:100% !important;
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+}
+.dijit_a11y .dijitTextBox INPUT {
+       margin: 0 !important;
+}
+.dijitTextBoxError INPUT.dijitValidationInner,
+.dijitTextBox INPUT.dijitArrowButtonInner {
+       
+       text-indent: -1em !important;
+       direction: ltr !important;
+       text-align: left !important;
+       height: auto !important;
+       #text-indent: 0 !important;
+       #letter-spacing: -5em !important;
+       #text-align: right !important;
+}
+.dj_ie .dijitTextBox INPUT,
+.dj_ie INPUT.dijitTextBox {
+       overflow-y: visible; 
+       line-height: normal; 
+}
+.dj_ie7 .dijitTextBox INPUT.dijitValidationInner,
+.dj_ie7 .dijitTextBox INPUT.dijitArrowButtonInner {
+       line-height: 86%; 
+}
+.dj_ie6 .dijitTextBox INPUT,
+.dj_ie6 INPUT.dijitTextBox,
+.dj_iequirks .dijitTextBox INPUT.dijitValidationInner,
+.dj_iequirks .dijitTextBox INPUT.dijitArrowButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitSpinnerButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitInputInner,
+.dj_iequirks INPUT.dijitTextBox {
+       line-height: 100%; 
+}
+.dijit_a11y INPUT.dijitValidationInner,
+.dijit_a11y INPUT.dijitArrowButtonInner {
+       
+       text-indent: 0 !important;
+       width: 1em !important;
+       #text-align: left !important;
+}
+.dijitTextBoxError .dijitValidationContainer {
+       display: inline;
+       cursor: default;
+}
+.dijitSpinner .dijitSpinnerButtonContainer,
+.dijitComboBox .dijitArrowButtonContainer {
+       
+       border-width: 0 0 0 1px !important; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       
+       border-width: 0;
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       clear: both; 
+}
+.dijit_a11y .dijitTextBox .dijitValidationContainer,
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBox .dijitArrowButtonContainer {
+       
+       border: solid black !important;
+       border-width: 0 0 0 1px !important;
+}
+.dj_ie .dijitToolbar .dijitComboBox {
+       
+       vertical-align: middle;
+}
+.dijitTextBox .dijitSpinnerButtonContainer {
+       width: 1em;
+       position: relative !important;
+       overflow: hidden;
+}
+.dijitSpinner .dijitSpinnerButtonInner {
+       width:1em;
+       visibility:hidden !important; 
+       overflow-x:hidden;
+}
+.dijitComboBox .dijitButtonNode,
+.dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 0;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border: 0 none !important;
+}
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner,
+.dijit_a11y .dijitSpinnerButtonContainer INPUT {
+       width: 1em !important;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner {
+       margin: 0 auto !important; 
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.3em !important;
+       padding-right: 0.3em !important;
+       margin-left: 0.3em !important;
+       margin-right: 0.3em !important;
+       width: 1.4em !important;
+}
+.dj_ie7 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.0em !important; 
+       padding-right: 0.0em !important;
+       width: 1em !important;
+}
+.dj_ie6 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0.1em !important;
+       margin-right: 0.1em !important;
+       width: 1em !important;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+       width: 2em !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       
+       padding: 0;
+       position: absolute !important;
+       right: 0;
+       float: none;
+       height: 50%;
+       width: 100%;
+       bottom: auto;
+       left: 0;
+       right: auto;
+}
+.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: auto;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitArrowButton {
+       overflow: visible !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {
+       top: 50%;
+       border-top-width: 1px !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {
+       #bottom: 50%;   
+       top: 0;
+}
+.dijitSpinner .dijitArrowButtonInner {
+       margin: auto;
+       overflow-x: hidden;
+       height: 100% !important;
+}
+.dj_iequirks .dijitSpinner .dijitArrowButtonInner {
+       height: auto !important;
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       -moz-transform: scale(0.5);
+       -moz-transform-origin: center top;
+       -webkit-transform: scale(0.5);
+       -webkit-transform-origin: center top;
+       -o-transform: scale(0.5);
+       -o-transform-origin: center top;
+       transform: scale(0.5);
+       transform-origin: left top;
+       padding-top: 0;
+       padding-bottom: 0;
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       width: 100%;
+}
+.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       zoom: 50%; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {
+       overflow: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 100%;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 1em; 
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       visibility: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       vertical-align:top;
+       visibility: visible;
+}
+.dijit_a11y .dijitSpinnerButtonContainer {
+       width: 1em;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 1px 0px 0px 0px;
+       border-style: solid !important;
+}
+.dijitCheckBox,
+.dijitRadio,
+.dijitCheckBoxInput {
+       padding: 0;
+       border: 0;
+       width: 16px;
+       height: 16px;
+       background-position:center center;
+       background-repeat:no-repeat;
+       overflow: hidden;
+}
+.dijitCheckBox INPUT,
+.dijitRadio INPUT {
+       margin: 0;
+       padding: 0;
+       display: block;
+}
+.dijitCheckBoxInput {
+       
+       opacity: 0.01;
+}
+.dj_ie .dijitCheckBoxInput {
+       filter: alpha(opacity=0);
+}
+.dijit_a11y .dijitCheckBox,
+.dijit_a11y .dijitRadio {
+       
+       width: auto !important;
+       height: auto !important;
+}
+.dijit_a11y .dijitCheckBoxInput {
+       opacity: 1;
+       filter: none;
+       width: auto;
+       height: auto;
+}
+.dijitProgressBarEmpty {
+       
+       position:relative;overflow:hidden;
+       border:1px solid black;         
+       z-index:0;                      
+}
+.dijitProgressBarFull {
+       
+       position:absolute;
+       overflow:hidden;
+       z-index:-1;
+       top:0;
+       width:100%;
+}
+.dj_ie6 .dijitProgressBarFull {
+       height:1.6em;
+}
+.dijitProgressBarTile {
+       
+       position:absolute;
+       overflow:hidden;
+       top:0;
+       left:0;
+       bottom:0;
+       right:0;
+       margin:0;
+       padding:0;
+       width:auto;
+       height:auto;
+       background-color:#aaa;
+       background-attachment: fixed;
+}
+.dijit_a11y .dijitProgressBarTile {
+       
+       border-width:2px;
+       border-style:solid;
+       background-color:transparent !important;
+}
+.dj_ie6 .dijitProgressBarTile {
+       
+       position:static;
+       
+       height:1.6em;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarLabel {
+       visibility:hidden;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+}
+.dijitProgressBarIndeterminateHighContrastImage {
+       display:none;
+}
+.dijit_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {
+       display:block;
+       position:absolute;
+       top:0;
+       bottom:0;
+       margin:0;
+       padding:0;
+       width:100%;
+       height:auto;
+}
+.dijitProgressBarLabel {
+       display:block;
+       position:static;
+       width:100%;
+       text-align:center;
+       background-color:transparent !important;
+}
+.dijitTooltip {
+       position: absolute;
+       z-index: 2000;
+       display: block;
+       
+       left: 50%;
+       top: -10000px;
+       overflow: visible;
+}
+.dijitTooltipContainer {
+       border: solid black 2px;
+       background: #b8b5b5;
+       color: black;
+       font-size: small;
+}
+.dijitTooltipFocusNode {
+       padding: 2px 2px 2px 2px;
+}
+.dijitTooltipConnector {
+       position: absolute;
+}
+.dijit_a11y .dijitTooltipConnector {
+       display: none;  
+}
+.dijitTooltipData {
+       display:none;
+}
+.dijitLayoutContainer {
+       position: relative;
+       display: block;
+       overflow: hidden;
+}
+body .dijitAlignTop,
+body .dijitAlignBottom,
+body .dijitAlignLeft,
+body .dijitAlignRight {
+       position: absolute;
+       overflow: hidden;
+}
+body .dijitAlignClient { position: absolute; }
+.dijitBorderContainer, .dijitBorderContainerNoGutter {
+       position:relative;
+       overflow: hidden;
+}
+.dijitBorderContainerPane,
+.dijitBorderContainerNoGutterPane {
+       position: absolute !important;  
+       z-index: 2;             
+}
+.dijitBorderContainer > .dijitTextArea {
+       
+       resize: none;
+}
+.dijitGutter {
+       
+       position: absolute;
+       font-size: 1px;         
+}
+.dijitSplitter {
+       position: absolute;
+       overflow: hidden;
+       z-index: 10;            
+       background-color: #fff;
+       border-color: gray;
+       border-style: solid;
+       border-width: 0;
+}
+.dj_ie .dijitSplitter {
+       z-index: 1;     
+}
+.dijitSplitterActive {
+       z-index: 11 !important;
+}
+.dijitSplitterCover {
+       position:absolute;
+       z-index:-1;
+       top:0;
+       left:0;
+       width:100%;
+       height:100%;
+}
+.dijitSplitterCoverActive {
+       z-index:3 !important;
+}
+.dj_ie .dijitSplitterCover {
+       background: white;
+       filter: alpha(opacity=0);
+}
+.dijitSplitterH {
+       height: 7px;
+       border-top:1px;
+       border-bottom:1px;
+       cursor: ns-resize;
+}
+.dijitSplitterV {
+       width: 7px;
+       border-left:1px;
+       border-right:1px;
+       cursor: ew-resize;
+}
+.dijitSplitContainer {
+       position: relative;
+       overflow: hidden;
+       display: block;
+}
+.dj_ff3 .dijit_a11y div.dijitSplitter:focus {
+       outline-style:dotted;
+       outline-width: 2px;
+}
+.dijitSplitPane {
+       position: absolute;
+}
+.dijitSplitContainerSizerH,
+.dijitSplitContainerSizerV {
+       position:absolute;
+       font-size: 1px;
+       cursor: move;
+       cursor: w-resize;
+       background-color: ThreeDFace;
+       border: 1px solid;
+       border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
+       margin: 0;
+}
+.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {
+       overflow:hidden;
+       position:absolute;
+       top:49%;
+}
+.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {
+       position:absolute;
+       left:49%;
+}
+.dijitSplitterShadow,
+.dijitSplitContainerVirtualSizerH,
+.dijitSplitContainerVirtualSizerV {
+       font-size: 1px;
+       background-color: ThreeDShadow;
+       -moz-opacity: 0.5;
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+       margin: 0;
+}
+.dj_ie .dijitSplitterV, .dijitSplitContainerVirtualSizerH {
+       cursor: w-resize;
+}
+.dj_ie .dijitSplitterH, .dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {
+       cursor: n-resize;
+}
+.dijit_a11y .dijitSplitterH {
+       border-top:1px solid #d3d3d3 !important;
+       border-bottom:1px solid #d3d3d3 !important;
+}
+.dijit_a11y .dijitSplitterV {
+       border-left:1px solid #d3d3d3 !important;
+       border-right:1px solid #d3d3d3 !important;
+}
+.dijitContentPane {
+       display: block;
+       overflow: auto; 
+}
+.dijitContentPaneSingleChild {
+       
+       overflow: hidden;
+}
+.dijitTitlePane {
+       display: block;
+       overflow: hidden;
+}
+.dijitTitlePaneTitle {
+       cursor: pointer;
+}
+.dijitFixedOpen {
+       
+       cursor: default;
+}
+.dijitTitlePaneTitle * {
+       vertical-align: middle;
+}
+.dijitTitlePane .dijitArrowNodeInner {
+       
+       display: none;
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNodeInner {
+       
+       display:inline !important;
+       font-family: monospace;         
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNode {
+       
+       display:none;
+}
+.dj_ie6 .dijitTitlePaneContentOuter,
+.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {
+       
+       zoom: 1;
+}
+.dijitColorPalette {
+       border: 1px solid #999;
+       background: #fff;
+       position: relative;
+}
+img.dijitColorPaletteUnder {
+       
+       border-style: none;
+       position: absolute;
+       left: 0;
+       top: 0;
+}
+.dijitColorPalette .dijitPaletteTable {
+       
+       padding: 2px 3px 3px 3px;
+       position: relative;
+       overflow: hidden;
+       outline: 0;
+       border-collapse: separate;
+}
+.dj_ie6 .dijitColorPalette .dijitPaletteTable,
+.dj_ie7 .dijitColorPalette .dijitPaletteTable,
+.dj_iequirks .dijitColorPalette .dijitPaletteTable {
+       
+       padding: 0;
+       margin: 2px 3px 3px 3px;
+}
+.dijitColorPalette .dijitPaletteCell {
+       
+       height: 20px;
+       width: 20px;
+       font-size: 1px;
+       vertical-align: middle;
+       text-align: center;
+}
+.dijitColorPalette .dijitPaletteImg {
+       
+       width: 16px;
+       height: 14px;
+       border: 1px solid #999;
+       cursor: default;
+       vertical-align: middle;
+}
+.dj_iequirks .dijitColorPalette .dijitPaletteImg {
+       margin: 1px;    
+}
+.dijitPaletteTable td {
+               padding: 0px;
+}
+.dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       
+       border: 1px solid #000;
+}
+.dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg,
+.dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg {
+       border: 2px solid #000;
+}
+.dijit_a11y .dijitColorPalette .dijitPaletteTable,
+.dijit_a11y .dijitColorPalette .dijitPaletteTable * {
+       
+       background-color: transparent !important;
+}
+.dj_gecko .dijit_a11y .dijitColorPalette .dijitPaletteCellFocused .dijitPaletteImg {
+       border: 3px dotted #000;        
+       margin: -1px;
+}
+.dijit_a11y  .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       border: 2px solid #000 !important;
+}
+.dijitAccordionContainer {
+       border:1px solid #b7b7b7;
+       border-top:0 !important;
+}
+.dijitAccordionTitle {
+       cursor: pointer;
+}
+.dijitAccordionTitleSelected {
+       cursor: default;
+}
+.dijitAccordionTitle .arrowTextUp,
+.dijitAccordionTitle .arrowTextDown {
+       display: none;
+       font-size: 0.65em;
+       font-weight: normal !important;
+}
+.dijit_a11y .dijitAccordionTitle .arrowTextUp,
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextDown {
+       display: inline;
+}
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextUp {
+       display: none;
+}
+.dj_ie6 .dijitAccordionTitle,
+.dj_iequirks .dijitAccordionTitle {
+       
+       zoom: 1;
+}
+.dijitCalendarContainer {
+       width: auto;    
+}
+.dijitCalendarContainer th, .dijitCalendarContainer td {
+       padding: 0;
+}
+.dijitCalendarNextYear {
+       margin:0 0 0 0.55em;
+}
+.dijitCalendarPreviousYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarIncrementControl {
+       vertical-align: middle;
+}
+.dijitCalendarIncrementControl,
+.dijitCalendarDateTemplate,
+.dijitCalendarMonthLabel,
+.dijitCalendarPreviousYear,
+.dijitCalendarNextYear {
+       cursor: pointer;
+}
+.dijitCalendarDisabledDate {
+       color: gray;
+       text-decoration: line-through;
+       cursor: default;
+}
+.dijitSpacer {
+       
+       position: relative;
+       height: 1px;
+       overflow: hidden;
+       visibility: hidden;
+}
+.dijitMenu {
+       border:1px solid black;
+       background-color:white;
+}
+.dijitMenuTable {
+       border-collapse:collapse;
+       border-width:0;
+       background-color:white;
+}
+.dj_webkit .dijitMenuTable td[colspan="2"]{
+       border-right:hidden;
+}
+.dijitMenuItem {
+       text-align: left;
+       white-space: nowrap;
+       padding:.1em .2em;
+       cursor:pointer;
+}
+.dijitMenuPassive .dijitMenuItemHover,
+.dijitMenuItemSelected {
+       
+       background-color:black;
+       color:white;
+}
+.dijitMenuItemIcon, .dijitMenuExpand {
+       background-repeat: no-repeat;
+}
+.dijitMenuItemDisabled * {
+       
+       opacity:0.5;
+       cursor:default;
+}
+.dj_ie .dijit_a11y .dijitMenuItemDisabled,
+.dj_ie .dijit_a11y .dijitMenuItemDisabled td,
+.dj_ie .dijitMenuItemDisabled *,
+.dj_ie .dijitMenuItemDisabled td {
+       color:gray !important;
+       filter: alpha(opacity=35);
+}
+.dijitMenuItemLabel {
+       position: relative;
+       vertical-align: middle;
+}
+.dijit_a11y .dijitMenuItemSelected {
+       border: 1px dotted black !important;
+}
+.dj_ff3 .dijit_a11y .dijitMenuItem td {
+       padding: none !important;
+       background:none !important;
+}
+.dijit_a11y .dijitMenuItemSelected .dijitMenuItemLabel {
+       border-width: 1px;
+       border-style: solid;
+}
+.dj_ie8 .dijit_a11y .dijitMenuItemLabel {
+       position:static;
+}
+.dijitMenuExpandA11y {
+       display: none;
+}
+.dijit_a11y .dijitMenuExpandA11y {
+       display: inline;
+}
+.dijitMenuSeparator td {
+       border: 0;
+       padding: 0;
+}
+.dijitMenuSeparatorTop {
+       height: 50%;
+       margin: 0;
+       margin-top:3px;
+       font-size: 1px;
+}
+.dijitMenuSeparatorBottom {
+       height: 50%;
+       margin: 0;
+       margin-bottom:3px;
+       font-size: 1px;
+}
+.dijitCheckedMenuItemIconChar {
+       vertical-align: middle;
+       visibility:hidden;
+}
+.dijitCheckedMenuItemChecked .dijitCheckedMenuItemIconChar {
+       visibility: visible;
+}
+.dijit_a11y .dijitCheckedMenuItemIconChar {
+       display:inline !important;
+}
+.dijit_a11y .dijitCheckedMenuItemIcon {
+       display: none;
+}
+.dj_ie .dijit_a11y .dijitMenuBar .dijitMenuItem {
+       
+       margin: 0px;
+}
+.dijitStackController .dijitToggleButtonChecked * {
+       cursor: default;        
+}
+.dijitTabContainerNoLayout {
+       width: 100%;    
+}
+.dijitTabContainerBottom-tabs,
+.dijitTabContainerTop-tabs,
+.dijitTabContainerLeft-tabs,
+.dijitTabContainerRight-tabs {
+       overflow: visible !important;  
+}
+.dijitTabContainerBottom-container,
+.dijitTabContainerTop-container,
+.dijitTabContainerLeft-container,
+.dijitTabContainerRight-container {
+       z-index:0;
+       overflow: hidden;
+       border: 1px solid black;
+}
+.nowrapTabStrip {
+       width: 50000px;
+       display: block;
+       position: relative;
+}
+.dijitTabListWrapper {
+       overflow: hidden;
+}
+.dijit_a11y .tabStripButton img {
+       
+       display: none;
+}
+.dijitTabContainerTop-tabs {
+       border-bottom: 1px solid black;
+}
+.dijitTabContainerTop-container {
+       border-top: 0px;
+}
+.dijitTabContainerLeft-tabs {
+       border-right: 1px solid black;
+       float: left;
+}
+.dijitTabContainerLeft-container {
+       border-left: 0px;
+}
+.dijitTabContainerBottom-tabs {
+       border-top: 1px solid black;
+}
+.dijitTabContainerBottom-container {
+       border-bottom: 0px;
+}
+.dijitTabContainerRight-tabs {
+       border-left: 1px solid black;
+       float: left;
+}
+.dijitTabContainerRight-container {
+       border-right: 0px;
+}
+DIV.dijitTabDisabled, .dj_ie DIV.dijitTabDisabled {
+       cursor: auto;
+}
+.dijitTab {
+       position:relative;
+       cursor:pointer;
+       white-space:nowrap;
+       z-index:3;
+}
+.dijitTab * {
+       
+       vertical-align: middle;
+}
+.dijitTabChecked {
+       cursor: default;        
+}
+.dijitTabContainerTop-tabs .dijitTab {
+       top: 1px;       
+}
+.dijitTabContainerBottom-tabs .dijitTab {
+       top: -1px;      
+}
+.dijitTabContainerLeft-tabs .dijitTab {
+       left: 1px;      
+}
+.dijitTabContainerRight-tabs .dijitTab {
+       left: -1px;     
+}
+.dijitTabContainerTop-tabs .dijitTab,
+.dijitTabContainerBottom-tabs .dijitTab {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+}
+.dijitTabInnerDiv {
+       position:relative;
+}
+.tabStripButton {
+       z-index: 12;
+}
+.dijitTabButtonDisabled .tabStripButton {
+       display: none;
+}
+.dijitTabCloseButton {
+       margin-left: 1em;
+}
+.dijitTabCloseText {
+       display:none;
+}
+.dijit_a11y .dijitTabCloseButton {
+       background-image: none !important;
+       width: auto !important;
+       height: auto !important;
+       border: thin dotted;    
+}
+.dijit_a11y .dijitTabCloseButtonHover {
+       border:thin solid;      
+}
+.dijit_a11y .dijitTabCloseText {
+       display: inline;
+}
+.dijit_a11y .dijitTabChecked {
+       
+       border-style:dashed !important;
+}
+.dijit_a11y .dijitTabInnerDiv {
+       border-left:none !important;
+ }
+.dijitTabPane,
+.dijitStackContainer-child,
+.dijitAccordionContainer-child {
+       
+    border: none !important;
+}
+.dijitInlineEditBoxDisplayMode {
+       border: 1px solid transparent;  
+       cursor: text;
+}
+.dijit_a11y .dijitInlineEditBoxDisplayMode,
+.dj_ie6 .dijitInlineEditBoxDisplayMode {
+       
+       border: none;
+}
+.dijitInlineEditBoxDisplayModeHover,
+.dijit_a11y .dijitInlineEditBoxDisplayModeHover,
+.dj_ie6 .dijitInlineEditBoxDisplayModeHover {
+       
+       background-color: #e2ebf2;
+       border: solid 1px black;
+}
+.dijitInlineEditBoxDisplayModeDisabled {
+       cursor: default;
+}
+.dijitTreeIndent {
+       
+       width: 19px;
+}
+.dijitTreeRow, .dijitTreeContent {
+       white-space: nowrap;
+}
+.dijitTreeRow img {
+       
+       vertical-align: middle;
+}
+.dijitTreeContent {
+    cursor: default;
+}
+.dijitExpandoText {
+       display: none;
+}
+.dijit_a11y .dijitExpandoText {
+       display: inline;
+       padding-left: 10px;
+       padding-right: 10px;
+       font-family: monospace;
+       border-style: solid;
+       border-width: thin;
+       cursor: pointer;
+}
+.dijitTreeLabel {
+       margin: 0px 4px;
+}
+.dijitDialog {
+       position: absolute;
+       z-index: 999;
+       overflow: hidden;       
+}
+.dijitDialogTitleBar {
+       cursor: move;
+}
+.dijitDialogFixed .dijitDialogTitleBar {
+       cursor:default;
+}
+.dijitDialogCloseIcon {
+       cursor: pointer;
+}
+.dijitDialogUnderlayWrapper {
+       position: absolute;
+       left: 0;
+       top: 0;
+       z-index: 998;
+       display: none;
+       background: transparent !important;
+}
+.dijitDialogUnderlay {
+       background: #eee;
+       opacity: 0.5;
+}
+.dj_ie .dijitDialogUnderlay {
+       filter: alpha(opacity=50);
+}
+.dijit_a11y .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitDialog {
+       opacity: 1 !important;
+       background-color: white !important;
+}
+.dijitDialog .closeText {
+       display:none;
+       
+       position:absolute;
+}
+.dijit_a11y .dijitDialog .closeText {
+       display:inline;
+}
+.dijitSliderMoveable {
+       z-index:99;
+       position:absolute !important;
+       display:block;
+       vertical-align:middle;
+}
+.dijitSliderMoveableH {
+       right:0;
+}
+.dijitSliderMoveableV {
+       right:50%;
+}
+.dijit_a11y DIV.dijitSliderImageHandle,
+.dijitSliderImageHandle {
+       margin:0;
+       padding:0;
+       position:relative !important;
+       border:8px solid gray;
+       width:0;
+       height:0;
+       cursor: pointer;
+}
+.dj_iequirks .dijit_a11y .dijitSliderImageHandle {
+       font-size: 0;
+}
+.dj_ie7 .dijitSliderImageHandle {
+       overflow: hidden; 
+}
+.dj_ie7 .dijit_a11y .dijitSliderImageHandle {
+       overflow: visible; 
+}
+.dijit_a11y .dijitSliderFocused .dijitSliderImageHandle {
+       border:4px solid #000;
+       height:8px;
+       width:8px;
+}
+.dijitSliderImageHandleV {
+       top:-8px;
+       right: -50%;
+}
+.dijitSliderImageHandleH {
+       left:50%;
+       top:-5px;
+       vertical-align:top;
+}
+.dijitSliderBar {
+       border-style:solid;
+       border-color:black;
+       cursor: pointer;
+}
+.dijitSliderBarContainerV {
+       position:relative;
+       height:100%;
+       z-index:1;
+}
+.dijitSliderBarContainerH {
+       position:relative;
+       z-index:1;
+}
+.dijitSliderBarH {
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBarV {
+       width:4px;
+       border-width:0 1px;
+}
+.dijitSliderProgressBar {
+       background-color:red;
+       z-index:1;
+}
+.dijitSliderProgressBarV {
+       position:static !important;
+       height:0%;
+       vertical-align:top;
+       text-align:left;
+}
+.dijitSliderProgressBarH {
+       position:absolute !important;
+       width:0%;
+       vertical-align:middle;
+       overflow:visible;
+}
+.dijitSliderRemainingBar {
+       overflow:hidden;
+       background-color:transparent;
+       z-index:1;
+}
+.dijitSliderRemainingBarV {
+       height:100%;
+       text-align:left;
+}
+.dijitSliderRemainingBarH {
+       width:100% !important;
+}
+.dijitSliderBumper {
+       overflow:hidden;
+       z-index:1;
+}
+.dijitSliderBumperV {
+       width:4px;
+       height:8px;
+       border-width:0 1px;
+}
+.dijitSliderBumperH {
+       width:8px;
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBottomBumper,
+.dijitSliderLeftBumper {
+       background-color:red;
+}
+.dijitSliderTopBumper,
+.dijitSliderRightBumper {
+       background-color:transparent;
+}
+.dijitSliderDecoration {
+       text-align:center;
+}
+.dijitSliderV TD {
+       position: relative; 
+}
+.dijitSliderDecorationH {
+       width: 100%;
+}
+.dijitSliderDecorationV {
+       height: 100%;
+}
+.dijitSliderButton {
+       font-family:monospace;
+       margin:0;
+       padding:0;
+       display:block;
+}
+.dijit_a11y .dijitSliderButtonInner {
+       visibility:visible !important;
+}
+.dijitSliderButtonContainer {
+       text-align:center;
+       height:0;       
+}
+.dijitSliderButtonContainer * {
+       cursor: pointer;
+}
+.dijitSlider .dijitButtonNode {
+       padding:0;
+       display:block;
+}
+.dijitRuleContainer {
+       position:relative;
+       overflow:visible;
+}
+.dijitRuleContainerV {
+       height:100%;
+       line-height:0;
+       float:left;
+       text-align:left;
+}
+.dj_opera .dijitRuleContainerV {
+       line-height:2%;
+}
+.dj_ie .dijitRuleContainerV {
+       line-height:normal;
+}
+.dj_gecko .dijitRuleContainerV {
+       margin:0 0 1px 0; 
+}
+.dijitRuleMark {
+       position:absolute;
+       border:1px solid black;
+       line-height:0;
+       height:100%;
+}
+.dijitRuleMarkH {
+       width:0;
+       border-top-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+}
+.dijitRuleLabelContainer {
+       position:absolute;
+}
+.dijitRuleLabelContainerH {
+       text-align:center;
+       display:inline-block;
+}
+.dijitRuleLabelH {
+       position:relative;
+       left:-50%;
+}
+.dijitRuleLabelV {
+       
+       text-overflow: ellipsis;
+       white-space: nowrap;
+       overflow: hidden;
+}
+.dijitRuleMarkV {
+       height:0;
+       border-right-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+       width:100%;
+       left:0;
+}
+.dj_ie .dijitRuleLabelContainerV {
+       margin-top:-.55em;
+}
+.dijit_a11y .dijitSliderReadOnly,
+.dijit_a11y .dijitSliderDisabled {
+       opacity:0.6;
+}
+.dj_ie .dijit_a11y .dijitSliderReadOnly .dijitSliderBar,
+.dj_ie .dijit_a11y .dijitSliderDisabled .dijitSliderBar {
+       filter: alpha(opacity=40);
+}
+.dijit_a11y .dijitSlider .dijitSliderButtonContainer DIV {
+       font-family: monospace; 
+       font-size: 1em;
+       line-height: 1em;
+       height: auto;
+       width: auto;
+       margin: 0px 4px;
+}
+.dijit_a11y .dijitButtonContents .dijitButtonText,
+.dijit_a11y .dijitTab .tabLabel {
+       display: inline !important;
+}
+.dijitTextArea {
+       width:100%;
+       overflow-y: auto;       
+}
+.dijitTextArea[cols] {
+       width:auto; 
+}
+.dj_ie .dijitTextAreaCols {
+       width:auto;
+}
+.dijitToolbarSeparator {
+       height: 18px;
+       width: 5px;
+       padding: 0 1px;
+       margin: 0;
+}
+.dijitIEFixedToolbar {
+       position:absolute;
+       
+       top: expression(eval((document.documentElement||document.body).scrollTop));
+}
+.dijitEditor {
+       display: block; 
+}
+.dijitEditorDisabled,
+.dijitEditorReadOnly {
+       color: gray;
+}
+.dijitTimePickerItemInner {
+       text-align:center;
+       border:0;
+       padding:2px 8px 2px 8px;
+}
+.dijitTimePickerTick,
+.dijitTimePickerMarker {
+       border-bottom:1px solid gray;
+}
+.dijitTimePicker .dijitDownArrowButton {
+       border-top: none !important;
+}
+.dijitTimePickerTick {
+       color:#CCC;
+}
+.dijitTimePickerMarker {
+       color:black;
+       background-color:#CCC;
+}
+.dijitTimePickerItemSelected {
+       font-weight:bold;
+       color:#333;
+       background-color:#b7cdee;
+}
+.dijitTimePickerItemHover {
+       background-color:gray;
+       color:white;
+       cursor:pointer;
+}
+.dijit_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       border: solid 4px black;
+}
+.dijit_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {
+       border: dashed 4px black;
+}
+.dijitToggleButtonIconChar {
+       
+       display:none !important;
+}
+.dijit_a11y .dijitToggleButton .dijitToggleButtonIconChar {
+       display:inline !important;
+       visibility:hidden;
+}
+.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {
+       font-family: "Arial Unicode MS";        
+}
+.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
+       display: inline !important; 
+       visibility:visible !important;
+}
+.dijitArrowButtonChar {
+        display:none !important;
+}
+.dijit_a11y .dijitArrowButtonChar {
+        display:inline !important;
+}
+.dijit_a11y .dijitDropDownButton .dijitArrowButtonInner,
+.dijit_a11y .dijitComboButton .dijitArrowButtonInner {
+       display:none !important;
+}
+.dijitSelect {
+       margin: 0.2em;
+       border-collapse: collapse;
+}
+.dj_ie .dijitSelect,
+.dj_ie7 .dijitSelect,
+.dj_iequirks .dijitSelect {
+       vertical-align: middle; 
+}
+.dj_ie8 .dijitSelect .dijitButtonText {
+       vertical-align: top;
+}
+.dijitToolbar .dijitSelect {
+       margin: 0;
+}
+.dj_webkit .dijitToolbar .dijitSelect {
+       padding-left: 0.3em;
+}
+.dijit_a11y .dijitSelectDisabled .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitSelect .dijitButtonContents {
+       padding: 0px;
+       background: transparent none;
+       white-space: nowrap;
+       text-align: left;
+}
+.dijitSelectFixedWidth .dijitButtonContents {
+       width: 100%;
+}
+.dijitSelectMenu .dijitMenuItemIcon {
+       
+       display:none;
+}
+.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,
+.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {
+       
+       position: static;
+}
+.dijitSelectLabel *
+{
+       vertical-align: baseline;
+}
+.dijitSelectSelectedOption * {
+       font-weight: bold;
+}
+.dijitSelectMenu {
+       border-width: 1px;
+}
+.dijitSelectMenu .dijitMenuTable {
+       margin: 0px;
+       background-color: transparent;
+}
+.dijitForceStatic {
+       position: static !important;
+}
+.dijitReadOnly *,
+.dijitDisabled *,
+.dijitReadOnly,
+.dijitDisabled {
+       
+       cursor: default;
+}
+.dijitIconSave,
+.dijitIconPrint,
+.dijitIconCut,
+.dijitIconCopy,
+.dijitIconClear,
+.dijitIconDelete,
+.dijitIconUndo,
+.dijitIconEdit,
+.dijitIconNewTask,
+.dijitIconEditTask,
+.dijitIconEditProperty,
+.dijitIconTask,
+.dijitIconFilter,
+.dijitIconConfigure,
+.dijitIconSearch,
+.dijitIconApplication,
+.dijitIconBookmark,
+.dijitIconChart,
+.dijitIconConnector,
+.dijitIconDatabase,
+.dijitIconDocuments,
+.dijitIconMail,
+.dijitLeaf,
+.dijitIconFile,
+.dijitIconFunction,
+.dijitIconKey,
+.dijitIconPackage,
+.dijitIconSample,
+.dijitIconTable,
+.dijitIconUsers,
+.dijitFolderClosed,
+.dijitIconFolderClosed,
+.dijitFolderOpened,
+.dijitIconFolderOpen,
+.dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled.png); 
+       width: 16px;
+       height: 16px;
+}
+.dj_ie6 .dijitIconSave,
+.dj_ie6 .dijitIconPrint,
+.dj_ie6 .dijitIconCut,
+.dj_ie6 .dijitIconCopy,
+.dj_ie6 .dijitIconClear,
+.dj_ie6 .dijitIconDelete,
+.dj_ie6 .dijitIconUndo,
+.dj_ie6 .dijitIconEdit,
+.dj_ie6 .dijitIconNewTask,
+.dj_ie6 .dijitIconEditTask,
+.dj_ie6 .dijitIconEditProperty,
+.dj_ie6 .dijitIconTask,
+.dj_ie6 .dijitIconFilter,
+.dj_ie6 .dijitIconConfigure,
+.dj_ie6 .dijitIconSearch,
+.dj_ie6 .dijitIconApplication,
+.dj_ie6 .dijitIconBookmark,
+.dj_ie6 .dijitIconChart,
+.dj_ie6 .dijitIconConnector,
+.dj_ie6 .dijitIconDatabase,
+.dj_ie6 .dijitIconDocuments,
+.dj_ie6 .dijitIconMail,
+.dj_ie6 .dijitLeaf,
+.dj_ie6 .dijitIconFile,
+.dj_ie6 .dijitIconFunction,
+.dj_ie6 .dijitIconKey,
+.dj_ie6 .dijitIconPackage,
+.dj_ie6 .dijitIconSample,
+.dj_ie6 .dijitIconTable,
+.dj_ie6 .dijitIconUsers,
+.dj_ie6 .dijitFolderClosed,
+.dj_ie6 .dijitIconFolderClosed,
+.dj_ie6 .dijitFolderOpened,
+.dj_ie6 .dijitIconFolderOpen,
+.dj_ie6 .dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled8bit.png);
+}
+.dijitDisabled .dijitIconSave,
+.dijitDisabled .dijitIconPrint,
+.dijitDisabled .dijitIconCut,
+.dijitDisabled .dijitIconCopy,
+.dijitDisabled .dijitIconClear,
+.dijitDisabled .dijitIconDelete,
+.dijitDisabled .dijitIconUndo,
+.dijitDisabled .dijitIconEdit,
+.dijitDisabled .dijitIconNewTask,
+.dijitDisabled .dijitIconEditTask,
+.dijitDisabled .dijitIconEditProperty,
+.dijitDisabled .dijitIconTask,
+.dijitDisabled .dijitIconFilter,
+.dijitDisabled .dijitIconConfigure,
+.dijitDisabled .dijitIconSearch,
+.dijitDisabled .dijitIconApplication,
+.dijitDisabled .dijitIconBookmark,
+.dijitDisabled .dijitIconChart,
+.dijitDisabled .dijitIconConnector,
+.dijitDisabled .dijitIconDatabase,
+.dijitDisabled .dijitIconDocuments,
+.dijitDisabled .dijitIconMail,
+.dijitDisabled .dijitLeaf,
+.dijitDisabled .dijitIconFile,
+.dijitDisabled .dijitIconFunction,
+.dijitDisabled .dijitIconKey,
+.dijitDisabled .dijitIconPackage,
+.dijitDisabled .dijitIconSample,
+.dijitDisabled .dijitIconTable,
+.dijitDisabled .dijitIconUsers,
+.dijitDisabled .dijitFolderClosed,
+.dijitDisabled .dijitIconFolderClosed,
+.dijitDisabled .dijitFolderOpened,
+.dijitDisabled .dijitIconFolderOpen,
+.dijitDisabled .dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActDisabled.png); 
+}
+.dijitIconSave { background-position: 0px; }
+.dijitIconPrint { background-position: -16px; }
+.dijitIconCut { background-position: -32px; }
+.dijitIconCopy { background-position: -48px; }
+.dijitIconClear { background-position: -64px; }
+.dijitIconDelete { background-position: -80px; }
+.dijitIconUndo { background-position: -96px; }
+.dijitIconEdit { background-position: -112px; }
+.dijitIconNewTask { background-position: -128px; }
+.dijitIconEditTask { background-position: -144px; }
+.dijitIconEditProperty { background-position: -166px; }
+.dijitIconTask { background-position: -176px; }
+.dijitIconFilter { background-position: -192px; }
+.dijitIconConfigure { background-position: -208px; }
+.dijitIconSearch { background-position: -224px; }
+.dijitIconError { background-position: -496px; } 
+.dijitIconApplication { background-position: -240px; }
+.dijitIconBookmark { background-position: -256px; }
+.dijitIconChart { background-position: -272px; }
+.dijitIconConnector { background-position: -288px; }
+.dijitIconDatabase { background-position: -304px; }
+.dijitIconDocuments { background-position: -320px; }
+.dijitIconMail { background-position: -336px; }
+.dijitIconFile, .dijitLeaf { background-position: -352px; }
+.dijitIconFunction { background-position: -368px; }
+.dijitIconKey { background-position: -384px; }
+.dijitIconPackage{ background-position: -400px; }
+.dijitIconSample { background-position: -416px; }
+.dijitIconTable { background-position: -432px; }
+.dijitIconUsers { background-position: -448px; }
+.dijitIconFolderClosed, .dijitFolderClosed { background-position: -464px; }
+.dijitIconFolderOpen, .dijitFolderOpened { background-position: -480px; }
+.nihilo .dojoDndItemBefore {
+       border-top: 2px solid #369;
+}
+.nihilo .dojoDndItemAfter {
+       border-bottom: 2px solid #369;
+}
+.nihilo .dojoDndItemOver {
+       cursor:pointer;
+}
+.nihilo table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
+.nihilo .dojoDndAvatar td      { border: none; }
+.nihilo .dojoDndAvatar tr      { border: none; }
+.nihilo .dojoDndAvatarHeader td        { height: 20px; padding: 0 0 0 21px; }
+.nihilo .dojoDndAvatarItem td { padding: 2px;}
+.nihilo.dojoDndMove .dojoDndAvatarHeader       {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo.dojoDndCopy .dojoDndAvatarHeader       {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.nihilo .dijitContentPane {
+    padding: 0px;
+}
+.nihilo .dijitTabContainerTop-dijitContentPane,
+.nihilo .dijitTabContainerLeft-dijitContentPane,
+.nihilo .dijitTabContainerRight-dijitContentPane,
+.nihilo .dijitTabContainerBottom-dijitContentPane,
+.nihilo .dijitAccordionContainer-dijitContentPane {
+    background-color: #fff;
+    padding: 5px;
+}
+.nihilo .dijitSplitContainer-dijitContentPane,
+.nihilo .dijitBorderContainer-dijitContentPane {
+    background-color: #fff;            
+    padding: 5px;
+}
+.nihilo .dijitMenu,
+.nihilo .dijitMenuBar {
+       border: 1px solid #d3d3d3;
+       margin: 0px;
+       padding: 0px;
+       background-color: #fff;
+}
+.nihilo .dijitBorderContainer .dijitMenuBar {
+       border: 1px #ccc solid;
+}
+.nihilo .dijitMenuItem {
+       font-family: sans-serif;
+       margin: 0px;
+       color: #243C5F;
+}
+.nihilo .dijitMenuBar .dijitMenuItem {
+       padding: 4px 5px;
+}
+.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {
+       font-style: italic;
+}
+.nihilo .dijitMenuItem TD {
+       padding:1px;
+}
+.nihilo .dijitMenuPassive .dijitMenuItemHover,
+.nihilo .dijitMenuItemSelected {
+       background-color: #ffe284; 
+       color: #243C5F;
+}
+.nihilo .dijitMenuItemIcon {
+       width: 15px;
+       height: 15px;
+}
+.nihilo .dijitMenuExpand {
+       width:15px;
+       height:15px;
+       background-image: url(images/spriteRoundedIconsSmall.png);
+       background-position: -30px top;
+}
+.dj_ie6 .nihilo .dijitMenuExpand {
+       background-image:url(images/spriteRoundedIconsSmall.gif);
+}
+.nihilo .dijitMenuSeparator {
+       height: 1px;
+}
+.nihilo .dijitMenuSeparatorTop {
+       border-bottom: 1px solid #fff; 
+}
+.nihilo .dijitMenuSeparatorBottom {
+       border-top: 1px solid #d3d3d3;
+}
+.nihilo .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.nihilo .dijitCheckedMenuItemIcon {
+       background-image: url(images/spriteCheckbox.gif);
+       background-position: -80px;
+}
+.nihilo .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: -64px;
+}
+.nihilo .dijitTabContainer .tabStripRBtn {
+       margin-right: 21px;
+}
+.nihilo .dijitTabContainer .tabStripLBtn {
+       margin-left: 21px;
+}
+.nihilo .dijitTabContainerBottom .nowrapTabStrip .dijitTab {
+       top: 0px;
+}
+.nihilo .dijitTabPaneWrapper {
+       background:#fff;
+       border:1px solid #ccc;
+       margin: 0;
+       padding: 0;
+}
+.nihilo .dijitTabInnerDiv {
+       padding:0px 3px 0px 0px;
+       margin: 0 0 0 4px;
+       background: url(images/tabContainerSprite.gif) no-repeat;
+       background-position: right -400px;
+}
+.nihilo .dijitTab {
+       line-height:normal;
+       margin:0 2px 0 0;       
+       padding:0px;
+       background: url(images/tabContainerSprite.gif) no-repeat 0 -300px;
+       color: #6d6d6d;
+       border-bottom: 1px #ccc solid;
+}
+.nihilo .dijitTabInnerDiv .dijitTabContent {
+       padding:3px 3px 3px 4px;
+       background: url(images/tabContainerSprite.gif) repeat-x 0 -350px;
+       position: relative;
+}
+.nihilo .dijitTabHover {
+       color: #243C5F;
+       background: url(images/tabContainerSprite.gif) no-repeat 0px -150px;
+}
+.nihilo .dijitTabHover .dijitTabInnerDiv {
+       background: url(images/tabContainerSprite.gif) no-repeat right -250px;
+}
+.nihilo .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
+       background: url(images/tabContainerSprite.gif) repeat-x 0 -200px;
+}
+.nihilo .dijitTabChecked
+{
+       
+       background: url(images/tabContainerSprite.gif) no-repeat 0px -0px;
+}
+.nihilo .dijitTabChecked .dijitTabInnerDiv {
+       background: url(images/tabContainerSprite.gif) no-repeat right -100px;
+}
+.nihilo .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+       background: url(images/tabContainerSprite.gif) repeat-x 0 -50px;
+       color: #243C5F !important;
+}
+.nihilo .dijitTabContainerNested .dijitTabListWrapper {
+       height: auto;
+}
+.nihilo .dijitTabContainerTabListNested {
+       background: #FDFDFD;
+       border: none;
+       margin-bottom: 0px;             
+}
+.nihilo .dijitTabContainerTabListNested .dijitTab {
+       background: none;
+       border: none;
+       top: 0px;       
+}
+.nihilo .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv,
+.nihilo .dijitTabContainerTabListNested .dijitTab .dijitTabContent {
+       background: none;
+}
+.nihilo .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel {
+       text-decoration: underline;
+}
+.nihilo .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {
+       text-decoration: underline;
+       font-weight: bold;
+}
+.nihilo .dijitTabContainerSpacerNested {
+       
+       height: 0px;
+       border-bottom: 0px;
+}
+.nihilo .dijitTabPaneWrapperNested {
+       border: none;   
+}
+.nihilo .dijitTabCloseButton {
+       background: url(images/spriteRoundedIconsSmall.png) no-repeat -60px top;
+       width: 15px;
+       height: 15px;
+       margin-top: -1px;
+}
+.dj_ie6 .nihilo .dijitTabCloseButton {
+       background: url(images/spriteRoundedIconsSmall.gif) no-repeat -60px top;
+}
+.nihilo .dijitTabCloseButtonHover {
+       background: url(images/spriteRoundedIconsSmall.png) no-repeat -60px -15px;
+}
+.dj_ie6 .nihilo .dijitTabCloseButtonHover {
+       background: url(images/spriteRoundedIconsSmall.gif) no-repeat -60px -15px;
+}
+.nihilo .dijitTab .tabLabel {
+       
+       min-height: 15px;
+       display: inline-block;
+}
+.dj_ie6 .nihilo .dijitTabButtonIcon {
+       
+       height: 18px;
+       width: 1px;
+}
+.nihilo .dijitTabContainerTop-tabs {
+       border-bottom: none;
+       padding-bottom: 1px;
+       background-position: bottom;
+       padding-left: 3px;
+}
+.dj_ie6 .nihilo .dijitTabListContainer-top,
+.dj_ie7 .nihilo .dijitTabListContainer-top {
+       z-index: 3;
+}
+.dj_ie6 .nihilo .dijitTabContainerTop-tabs,
+.dj_ie7 .nihilo .dijitTabContainerTop-tabs {
+       border-bottom: 1px solid #ccc;
+       padding-bottom: 0px;
+}
+.nihilo .dijitTabContainerTopNoStrip {
+       padding-top: 3px;
+}
+.nihilo .dijitTabContainerTop-container {
+       border-top: none;
+}
+.nihilo .dijitTabContainerTop-tabs .dijitTabChecked {
+       border-bottom-color: #f8f8f8;
+}
+.nihilo .dijitTabContainer .dijitTabContainerTopStrip {
+       border-bottom: none;
+       padding-top: 1px;
+       margin-top: 1px;
+       background: #f2f2f2;
+       border-top: 1px solid #CCC;
+       border-right: 1px solid #CCC;
+       border-left: 1px solid #CCC;
+}
+.nihilo .dijitTabContainerBottom-tabs {
+       border-top: none;
+       background-position: top;
+       padding-left: 3px;
+}
+.dj_ie6 .nihilo .dijitTabListContainer-bottom,
+.dj_ie7 .nihilo .dijitTabListContainer-bottom {
+       z-index: 3;
+}
+.dj_ie6 .nihilo .dijitTabContainerBottom-tabs,
+.dj_ie7 .nihilo .dijitTabContainerBottom-tabs {
+       border-top: 1px solid #ccc;
+       margin-top: -1px;
+}
+.nihilo .dijitTabContainerBottom-container {
+       border-bottom: none;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTab {
+       border-bottom: none;
+       border-top: 1px solid #ccc;
+       background: url(images/tabBottomEnabledSpriteLR.gif) no-repeat bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked {
+       border-top-color: #f8f8f8;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent {
+       padding-top: 3px;
+       padding-bottom: 3px;
+       background: url(images/tabBottomEnabledC.gif) repeat-x bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabInnerDiv {
+       background: url(images/tabBottomEnabledSpriteLR.gif) no-repeat bottom right;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabHover {
+       color: #243C5F;
+       background: url(images/tabBottomHoverSpriteLR.gif) no-repeat bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv {
+       background: url(images/tabBottomHoverSpriteLR.gif) no-repeat bottom right;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
+       background: url(images/tabBottomHoverC.gif) repeat-x bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked {
+       
+       background: url(images/tabBottomActiveSpriteLR.gif) no-repeat bottom left;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background: url(images/tabBottomActiveSpriteLR.gif) no-repeat bottom right;
+}
+.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+       background: url(images/tabBottomActiveC.gif) repeat-x bottom left;
+}
+.nihilo .dijitTabContainer .dijitTabContainerBottomStrip {
+       border: 1px solid #ccc;
+       background: #f2f2f2;
+       border-top: none;
+       padding-bottom: 2px;
+}
+.nihilo .dijitTabContainerBottom-spacer,
+.nihilo .dijitTabContainerTop-spacer {
+       height: 2px;
+       border: 1px solid #ccc;
+       background: #f8f8f8;
+}
+.nihilo  .dijitTabContainerTop-spacer {
+       margin-top: -1px;
+}
+.nihilo .dijitTabContainerBottom-spacer {
+       margin-bottom: -1px;
+}
+.nihilo .dijitTabContainerRight-tabs {
+       border-color: #ccc;
+       padding-top: 3px;
+}
+.nihilo .dijitTabContainerRight .dijitTabListWrapper {
+       padding-right: 3px;
+}
+.nihilo .dijitTabContainerRight-container {
+       border-right: none;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTab {
+       border-bottom: none;
+       border-left: 1px solid #ccc;
+       border-bottom: 1px solid #dedede !important;
+}
+.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabInnerDiv {
+       border-bottom: solid #fff 1px;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {
+       border-left-color: #f8f8f8;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {
+       background: url(images/tabRightChecked.gif) no-repeat left top !important;
+}
+.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       border-bottom: solid #efefef 1px;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTab {
+       background: url(images/tabContainerSprite.gif) no-repeat left -350px;
+}
+.nihilo .dijitTabContainerRight-tabs .dijitTabHover .dijitTab {
+       background: url(images/tabContainerSprite.gif) no-repeat left -200px;
+}
+.nihilo .dijitTabContainerRightStrip {
+       padding-right: 2px;
+       border: 1px solid #ccc;
+       border-left: none;
+       background: #f2f2f2;
+}
+.nihilo .dijitTabContainerLeft-tabs {
+       border-color: #ccc;
+       padding-top: 3px;
+}
+.nihilo .dijitTabContainerLeft-container {
+       border-left: none;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTab {
+       border-right: 1px solid #ccc;
+       border-bottom: 1px solid #dedede;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked {
+       border-right: 1px solid #f8f8f8;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       background: url(images/tabContainerSprite.gif) no-repeat right -350px;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv {
+       background: url(images/tabContainerSprite.gif) no-repeat right -200px;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       background: url(images/tabLeftChecked.gif) no-repeat right top;
+}
+.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       border-bottom: solid #efefef 1px;
+}
+.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       border-bottom: solid #fff 1px;
+}
+.nihilo .dijitTabContainerLeftStrip {
+       padding-left: 2px;
+       border: 1px solid #ccc;
+       border-right: none;
+}
+.nihilo .dijitTabContainerLeftStrip {
+       background: #f2f2f2;
+}
+.nihilo .dijitTabContainerLeft-tabs .dijitTab,
+.nihilo .dijitTabContainerRight-tabs .dijitTab {
+       margin-right:auto;
+       margin-bottom:2px;      
+}
+.nihilo .dijitTabContainerLeft-spacer,
+.nihilo .dijitTabContainerRight-spacer {
+       width: 2px;
+       border: 1px solid #ccc;
+       background: #f8f8f8;
+}
+.nihilo .dijitTabContainerRight-spacer {
+       border-right: none;
+}
+.nihilo .dijitTabContainerRight-tabs {
+       padding-top: 3px;
+       height: 100%;
+}
+.nihilo .dijitTabContainerLeft-tabs {
+       height: 100%;
+}
+.nihilo .dijitTabContainerLeft-spacer {
+       border-left: none;
+}
+.nihilo .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {
+       border-left: 0px solid #ccc;
+       border-top: 0px solid #ccc;
+       border-right: 0px solid #ccc;
+       padding-top: 0px;
+       padding-left: 0px;
+}
+.nihilo .dijitTabContainer .tabStripButton {
+       margin-right: 0px;
+}
+.nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {
+       padding: 5px 0 6px;
+}
+.dj_ie6 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,
+.dj_ie7 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,
+.dj_opera .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {
+       padding-bottom: 7px;
+}
+.nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent {
+       padding: 3px 0 5px;
+}
+.dj_ie6 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,
+.dj_ie7 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,
+.dj_opera .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent {
+       padding-top: 4px;
+}
+.nihilo .dijitTabStripIcon {
+       height: 14px;
+       width: 14px;
+       background: url(images/spriteRoundedIconsSmall.png) no-repeat left top;
+}
+.dj_ie6 .nihilo .dijitTabStripIcon {
+       background-image: url(images/spriteRoundedIconsSmall.gif);
+}
+.nihilo .dijitTabStripSlideRightIcon {
+       background-position: -30px top;
+}
+.nihilo .dijitTabStripMenuIcon {
+       background-position: -15px top;
+}
+.nihilo .dijitTabContainerTopNone {
+       padding-top: 0px;
+}
+.nihilo .dijitTabContainer .tabStripButton-top {
+       margin-top: 1px;
+}
+.nihilo .dijitTabContainer .tabStripButton-bottom {
+       background: transparent url(images/tabBottomEnabledSpriteLR.gif) no-repeat scroll left bottom;
+       border-bottom: medium none;
+       border-top: 1px solid #CCCCCC;
+}
+.nihilo .dijitTabContainer .tabStripButton-bottom .dijitTabInnerDiv {
+       background: transparent url(images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom;
+}
+.nihilo .dijitTabContainer .tabStripButton-bottom .dijitTabContent {
+       background: transparent;
+}
+.nihilo .dijitAccordionContainer {
+       border-color: #ccc;
+       background-color: #fff;
+}
+.nihilo .dijitAccordionTitle {
+       background:#fafafa url(images/titleBar.png) repeat-x top left;
+       border-top: 1px solid #dedede;
+       padding: 5px 4px 6px 8px;
+       font-size: 0.9em;
+       font-weight: bold;
+       color: #6d6d6d;
+}
+.nihilo .dijitAccordionTitleSelected  {
+       background: #f9f9f9 url(images/accordionItemActive.png) top repeat-x;
+       font-weight: bold;
+       border-top: 1px solid #dedede;
+       border-bottom: 1px solid #dedede;
+       padding: 5px 4px 5px 8px;
+       color: #243C5F;
+}
+.nihilo .dijitAccordionArrow {
+       background:url(images/spriteRoundedIconsSmall.gif) no-repeat -30px top;
+       width:15px;
+       height:15px;
+       margin-top:-1px;
+}
+.nihilo .dijitAccordionTitleSelected .dijitAccordionArrow {
+       background:url(images/spriteRoundedIconsSmall.gif) no-repeat -15px top;
+       margin-top:-1px;
+}
+.nihilo .dijitAccordionText {
+       margin-left: 4px;
+       margin-right: 4px;
+}
+.nihilo .dijitSplitContainerSizerH {
+       background:url(images/splitContainerSizerV.png) repeat-y #fff;
+       border:0;
+       border-left:0px solid #d3d3d3;
+       border-right:0px solid #d3d3d3;
+       width:5px;
+}
+.nihilo .dijitSplitContainerSizerH .thumb {
+       background:url(images/splitContainerSizerV-thumb.png) no-repeat;
+       left:1px;
+       width:2px;
+       height:19px;
+}
+.nihilo .dijitSplitContainerSizerV {
+       background:url(images/splitContainerSizerH.png) repeat-x #fff;
+       border:0;
+       border-top:0px solid #d3d3d3;
+       border-bottom:0px solid #d3d3d3;
+       height:2px;
+}
+.nihilo .dijitSplitContainerSizerV .thumb {
+       background:url(images/splitContainerSizerH-thumb.png) no-repeat;
+       top:1px;
+       width:19px;
+       height:5px;
+}
+.nihilo .dijitBorderContainer {
+       background-color: #fcfcfc;
+       padding: 5px;
+}
+.nihilo .dijitSplitContainer-child,
+.nihilo .dijitBorderContainer-child {
+       
+    border: 1px #ccc solid;
+}
+.nihilo .dijitBorderContainer-dijitTabContainerTop,
+.nihilo .dijitBorderContainer-dijitTabContainerBottom,
+.nihilo .dijitBorderContainer-dijitTabContainerLeft,
+.nihilo .dijitBorderContainer-dijitTabContainerRight {
+       
+        border: none;
+}
+.nihilo .dijitBorderContainer-dijitBorderContainer {
+       
+       border: none;
+       padding: 0px;
+}
+.nihilo .dijitSplitterH,
+.nihilo .dijitGutterH {
+       background:#FCFCFC;
+       border:0;
+       border-left:0px solid #d3d3d3;
+       border-right:0px solid #d3d3d3;
+       height:5px;
+}
+.nihilo .dijitSplitterH .dijitSplitterThumb {
+       background:#8BA0BD none;
+       height:1px;
+       top:2px;
+       width:19px;
+}
+.nihilo .dijitSplitterV,
+.nihilo .dijitGutterV {
+       background:#FCFCFC;
+       border:0;
+       border-top:0px solid #d3d3d3;
+       border-bottom:0px solid #d3d3d3;
+       width:5px;
+}
+.nihilo .dijitSplitterV .dijitSplitterThumb {
+       background:#8BA0BD none;
+       height:19px;
+       left:2px;
+       width:1px;
+}
+.nihilo .dijitSplitterActive {
+       font-size: 1px;
+       background-image: none;
+       background-color: #aaa;
+       -moz-opacity: 0.6;
+       opacity: 0.6;
+       filter: Alpha(Opacity=60);
+       margin: 0;
+}
+.nihilo .dijitInputContainer INPUT,
+.nihilo .dijitTextBox {
+       margin: 0em 0.1em;
+}
+.nihilo .dijitTextBox,
+.nihilo .dijitTextArea {
+       
+       background:#fff url(images/validationInputBg.png) repeat-x top left;
+       #background:#fff url(images/validationInputBg.gif) repeat-x top left;
+       border:1px solid #d3d3d3;
+}
+.nihilo .dijitComboBox .dijitButtonNode {
+       padding: 0 0.2em !important;
+}
+.nihilo .dijitTextBox .dijitButtonNode {
+       
+       border-color: #d3d3d3;
+}
+.nihilo .dijitTextBoxFocused,
+.nihilo .dijitTextAreaFocused {
+       
+       border-color:#b3b3b3;
+}
+.nihilo .dijitTextBoxFocused .dijitButtonNode,
+.nihilo .dijitSpinner .dijitUpArrowButtonActive,
+.nihilo .dijitSpinner .dijitDownArrowButtonActive {
+       border-left-color:#d3d3d3;
+}
+.nihilo .dijitSpinnerFocused .dijitDownArrowButton,
+.nihilo .dijitSpinner .dijitUpArrowButtonActive,
+.nihilo .dijitSpinner .dijitDownArrowButtonActive {
+       border-top-color:#d3d3d3;
+}
+.nihilo .dijitError {
+       border-color:#b3b3b3;
+       background-color:#f9f7ba;
+       background-image:none;
+}
+.nihilo .dijitErrorFocused {
+       background-color:#ff6;
+       background-image:none;
+}
+.nihilo .dijitValidationIcon {
+       
+       width: 16px;
+       background: transparent url(images/warning.png) no-repeat center center;
+}
+.nihilo .dijitComboBoxHighlightMatch {
+       background-color:#d3d3d3;
+}
+.nihilo .dijitButtonNode {
+       
+       
+       border:1px solid #dedede;
+       border-bottom:1px solid #dedede;
+       padding: 0.1em 0.2em 0.2em 0.2em;
+       background: #fff url(images/buttonEnabled.png) repeat-x top left;
+}
+.nihilo .dijitSelect .dijitButtonContents {
+       border-right: none;
+}
+.nihilo .dijitButtonText {
+       text-align: center;
+       padding: 0 0.3em;
+}
+.nihilo .dijitComboBox .dijitButtonNode {
+       border-width: 0px 0px 0px 1px;
+}
+.nihilo .dijitArrowButton {
+       color: #111;
+}
+.nihilo .dijitComboButton .dijitDownArrowButton {
+       padding-right:4px;
+}
+.nihilo .dijitComboBoxReadOnly,
+.nihilo .dijitSpinnerReadOnly,
+.nihilo .dijitSpinnerReadOnly .dijitButtonNode,
+.nihilo .dijitButtonDisabled .dijitButtonNode,
+.nihilo .dijitToggleButtonDisabled .dijitButtonNode,
+.nihilo .dijitDropDownButtonDisabled .dijitButtonNode,
+.nihilo .dijitComboButtonDisabled .dijitButtonNode,
+.nihilo .dijitComboBoxDisabled,
+.nihilo .dijitSpinnerDisabled,
+.nihilo .dijitSpinnerDisabled .dijitButtonNode {
+       
+       border-color: #dedede;
+       background:#fafafa url(images/buttonDisabled.png) top repeat-x;
+       opacity: 0.60;
+}
+.dj_ie6 .nihilo .dijitReadOnly INPUT,
+.dj_ie7 .nihilo .dijitReadOnly INPUT,
+.dj_ie6 .nihilo .dijitComboButtonDisabled .dijitButtonText,
+.dj_ie7 .nihilo .dijitComboButtonDisabled .dijitButtonText {
+       
+       color: #aaa;
+}
+.nihilo .dijitButtonHover .dijitButtonNode,
+.nihilo .dijitButtonNodeHover,
+.nihilo .dijitToggleButtonHover .dijitButtonNode,
+.nihilo .dijitDropDownButtonHover .dijitButtonNode,
+.nihilo .dijitButtonContentsHover,
+.nihilo .dijitDownArrowButtonHover,
+.nihilo .dijitUpArrowButtonHover {
+       
+       
+       color:#243C5F;
+       background:#fcfcfc url(images/buttonHover.png) repeat-x top left;
+}
+.nihilo .dijitUpArrowButtonActive,
+.nihilo .dijitDownArrowButtonActive,
+.nihilo .dijitButtonActive .dijitButtonNode,
+.nihilo .dijitToggleButtonActive .dijitButtonNode,
+.nihilo .dijitDropDownButtonActive .dijitButtonNode,
+.nihilo .dijitComboButton .dijitButtonContentsActive,
+.nihilo .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {
+       
+       border-color:#dedede;
+       background: #f5f5f5 url(images/buttonActive.png) top left repeat-x;
+}
+.nihilo .dijitArrowButtonInner {
+       background-image: url(images/spriteArrows.png);
+       background-repeat: no-repeat;
+       background-position: 0px center;
+       width: 11px;
+       height: 11px;
+}
+.nihilo .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -11px center;
+}
+.nihilo .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -22px center;
+}
+.nihilo .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -33px center;
+}
+.dj_ie6 .nihilo .dijitArrowButtonInner {
+       background-image: url(images/spriteArrows.gif);
+}
+.dj_webkit .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {
+       margin-top: -1px; 
+}
+.dj_ie .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {
+       margin-top: 1px; 
+}
+.nihilo .dijitSpinnerButtonContainer {
+       width: auto;
+       padding: 0;
+}
+.nihilo .dijitSpinner .dijitArrowButton {
+       width: 15px;
+}
+.nihilo .dijitSpinner .dijitSpinnerButtonInner {
+       width: 15px;
+}
+.nihilo .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding: 0;
+}
+.nihilo .dijitToggleButton .dijitCheckBox,
+.nihilo .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url(images/spriteCheckbox.gif);
+}
+.nihilo .dijitCheckBox,
+.nihilo .dijitCheckBoxIcon {           
+       background-image: url(images/spriteCheckbox.gif); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.nihilo .dijitCheckBox,
+.nihilo .dijitToggleButton .dijitCheckBoxIcon {
+       
+       background-position: -16px;
+}
+.nihilo .dijitCheckBoxChecked,
+.nihilo .dijitToggleButtonChecked .dijitCheckBoxIcon {
+       
+       background-position: 0px;
+}
+.nihilo .dijitCheckBoxDisabled {
+       
+       background-position: -48px;
+}
+.nihilo .dijitCheckBoxCheckedDisabled {
+       
+       background-position: -32px;
+}
+.nihilo .dijitCheckBoxHover {
+       
+       background-position: -80px;
+}
+.nihilo .dijitCheckBoxCheckedHover {
+       
+       background-position: -64px;
+}
+.nihilo .dijitToggleButton .dijitRadio,
+.nihilo .dijitToggleButton .dijitRadioIcon {
+       background-image: url(images/spriteRadio.gif);
+}
+.nihilo .dijitRadio,
+.nihilo .dijitRadioIcon        {               
+       background-image: url(images/spriteRadio.gif); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.nihilo .dijitRadio,
+.nihilo .dijitToggleButton .dijitRadioIcon {
+       
+       background-position: -16px;
+}
+.nihilo .dijitRadioChecked,
+.nihilo .dijitToggleButtonChecked .dijitRadioIcon {
+       
+       background-position: 0px;
+}
+.nihilo .dijitRadioDisabled {
+       
+       background-position: -48px;
+}
+.nihilo .dijitRadioCheckedDisabled {
+       
+       background-position: -32px;
+}
+.nihilo .dijitRadioHover {
+       
+       background-position: -80px;
+}
+.nihilo .dijitRadioCheckedHover {
+       
+       background-position: -64px;
+}
+.nihilo .dijitSliderProgressBarH {
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFull.png) repeat-x top left;
+}
+.nihilo .dijitSliderProgressBarV {
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFullVertical.png) repeat-y bottom left;
+}
+.nihilo .dijitSliderFocused .dijitSliderProgressBarH,
+.nihilo .dijitSliderFocused .dijitSliderLeftBumper {
+       background-image:url(images/sliderFullFocus.png);
+}
+.nihilo .dijitSliderFocused .dijitSliderProgressBarV,
+.nihilo .dijitSliderFocused .dijitSliderBottomBumper {
+       background-image:url(images/sliderFullVerticalFocus.png);
+}
+.nihilo .dijitSliderRemainingBarV {
+       border-color: #b4b4b4;
+       background: #dcdcdc url(images/sliderEmptyVertical.png) repeat-y bottom left;
+}
+.nihilo .dijitSliderRemainingBarH {
+       border-color: #b4b4b4;
+       background: #dcdcdc url(images/sliderEmpty.png) repeat-x top left;
+}
+.nihilo .dijitSliderBar {
+       border-style: solid;
+       outline:1px;
+       
+}
+.nihilo .dijitSliderFocused .dijitSliderBar {
+       border-color:#727272;
+}
+.nihilo .dijitSliderImageHandleH {
+       border:0px;
+       width:15px;
+       height:18px;
+       background:url(images/preciseSliderThumb.png) no-repeat center top;
+       #background:url(images/preciseSliderThumb.gif) no-repeat center top;
+}
+.nihilo .dijitSliderFocused .dijitSliderImageHandleH {
+       background-image:url(images/preciseSliderThumbFocus.png);
+       #background-image:url(images/preciseSliderThumbFocus.gif);
+}
+.nihilo .dijitSliderLeftBumper {
+       border-left-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFull.png) repeat-x top left;
+}
+.nihilo .dijitSliderRightBumper {
+       background: #dcdcdc url(images/sliderEmpty.png) repeat-x top left;
+       border-color: #b4b4b4;
+       border-right-width: 1px;
+}
+.nihilo .dijitSliderImageHandleV {
+       border:0px;
+       width:20px;
+       height:15px;
+       background:url(images/sliderThumb.png) no-repeat center center;
+       #background:url(images/sliderThumb.gif) no-repeat center center;
+}
+.nihilo .dijitSliderFocused .dijitSliderImageHandleV {
+       background-image:url(images/sliderThumbFocus.png);
+       #background-image:url(images/sliderThumbFocus.gif);
+}
+.nihilo .dijitSliderBottomBumper {
+       border-bottom-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFullVertical.png) repeat-y bottom left;
+}
+.nihilo .dijitSliderTopBumper {
+       background: #dcdcdc url(images/sliderEmptyVertical.png) repeat-y top left;
+       border-color: #b4b4b4;
+       border-top-width: 1px;
+}
+.nihilo .dijitSliderIncrementIconH,
+.nihilo .dijitSliderIncrementIconV {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -45px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat -45px top;
+       width:15px; height:15px;
+}
+.nihilo .dijitSliderIncrementIconH {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -30px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat -30px top;
+}
+.nihilo .dijitSliderDecrementIconH,
+.nihilo .dijitSliderDecrementIconV {
+       width:15px;
+       height:15px;
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -15px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat -15px top;
+}
+.nihilo .dijitSliderDecrementIconH {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat 0px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat 0px top;
+}
+.nihilo .dijitSliderButtonInner {
+       visibility:hidden;
+}
+.nihilo .dijitSliderReadOnly *,
+.nihilo .dijitSliderDisabled * {
+       border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
+       color: #bdbdbd;
+}
+.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconH,
+.nihilo .dijitSliderDisabled .dijitSliderDecrementIconH {
+       background-position: 0px -15px;
+}
+.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconH,
+.nihilo .dijitSliderDisabled .dijitSliderIncrementIconH {
+       background-position: -30px -15px;
+}
+.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconV,
+.nihilo .dijitSliderDisabled .dijitSliderDecrementIconV {
+       background-position: -15px -15px;
+}
+.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconV,
+.nihilo .dijitSliderDisabled .dijitSliderIncrementIconV {
+       background-position: -45px -15px;
+}
+.nihilo .dijitSelect .dijitButtonNode {
+       padding: 0px;
+}
+.nihilo .dijitSelect .dijitButtonContents {
+       padding-top: 1px;
+    background:#fff url(images/validationInputBg.png) repeat-x top left;
+    #background:#fff url(images/validationInputBg.gif) repeat-x top left;
+}
+.nihilo .dijitSelectHover .dijitButtonContents,
+.nihilo .dijitSelectActive .dijitButtonContents,
+.nihilo .dijitSelectOpened .dijitButtonContents,
+.nihilo .dijitSelectDisabled .dijitButtonContents,
+.nihilo .dijitSelectReadOnly .dijitButtonContents{
+       background: transparent none;
+}
+.dj_ie .nihilo .dijitSelect .dijitButtonContents {
+       padding-top: 0px;
+}
+.nihilo .dijitSelect .dijitArrowButton {
+       padding: 0px 2px;
+}
+.nihilo .dijitSelectDisabled .dijitButtonNode {
+    border-color: #dedede;
+    background:#fafafa url(images/buttonDisabled.png) top repeat-x;
+}
+.dj_ie .nihilo .dijitSelectDisabled  .dijitButtonNode * {
+       filter: gray() alpha(opacity=50);
+}
+.nihilo .dijitSelectHover .dijitButtonNode {
+    color:#000;
+    background:#fcfcfc url(images/buttonHover.png) repeat-x top left;
+}
+.nihilo .dijitSelectActive .dijitButtonNode,
+.nihilo .dijitSelectOpened .dijitButtonNode {
+    border-color:#dedede;
+    background: #f5f5f5 url(images/buttonActive.png) top left repeat-x;
+}
+.nihilo .dijitSelectMenu td {
+       padding: 0em;
+}
+.nihilo .dijitSelectMenu .dijitMenuItemLabel,
+.nihilo .dijitSelectMenu .dijitMenuArrowCell {
+       padding: 0.1em 0.2em;
+}
+.nihilo .dijitTreeNode {
+    background : url(images/treeI.gif) no-repeat;
+    background-position : top left;
+    background-repeat : repeat-y;
+    zoom: 1;   
+}
+.nihilo .dijitTreeIsLast {
+    background: url(images/treeI_half.gif) no-repeat;
+}
+.nihilo .dijitTreeRowHover {
+       
+       background-image: url(images/treeHover.png);
+       background-repeat: repeat;
+       background-color: transparent !important;
+}
+.nihilo .dijitTreeLabel {
+       font-weight: normal;
+       margin-left: 3px;
+}
+.nihilo .dijitTreeIsRoot {
+    margin-left: 0;
+    background-image: none;
+}
+.nihilo .dijitTreeExpando {
+    width: 18px;
+    height: 18px;
+}
+.nihilo .dijitTreeRow {
+       
+       padding-bottom: 2px;
+}
+.nihilo .dijitTreeContent {
+    min-height: 18px;
+    min-width: 18px;
+    padding-left:1px;
+}
+.nihilo .dijitTreeExpandoOpened {
+       background: url(images/spriteTree.gif) no-repeat -18px top;
+}
+.nihilo .dijitTreeExpandoClosed {
+       background-image: url(images/spriteTree.gif);
+}
+.nihilo .dijitTreeExpandoLeaf {
+       background: url(images/spriteTree.gif) no-repeat -36px top;
+}
+.nihilo .dijitTreeExpandoLoading {
+       background-image: url(images/treeExpand_loading.gif);
+}
+.nihilo .dijitTreeIcon {
+       width: 16px;
+       height: 16px;
+}
+.nihilo .dijitFolderOpened {
+       background: url(images/spriteDivIcons.gif) no-repeat -16px top;
+}
+.nihilo .dijitFolderClosed {
+       background: url(images/spriteDivIcons.gif) no-repeat top left;
+}
+.nihilo .dijitLeaf {
+       background: url(images/spriteDivIcons.gif) no-repeat -32px top;
+}
+.nihilo .dijitTreeNode .dojoDndItemBefore,
+.nihilo .dijitTreeNode .dojoDndItemAfter {
+       border-bottom: none;
+       border-top: none;
+}
+.nihilo .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
+       
+       border-top: 2px solid #369;
+}
+.nihilo .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
+       
+       border-bottom: 2px solid #369;
+}
+.nihilo .dijitProgressBar {
+       margin:2px 0px 2px 0px;
+}
+.nihilo .dijitProgressBarEmpty{
+       
+       background:#fff url(images/progressBarEmpty.png) repeat-x center center;
+       border-color: #f8d582 #f8d582 #f8d582 #f8d582;
+}
+.nihilo .dijitProgressBarTile{
+       
+       background:#f0f0f0 url(images/progressBarFull.png) repeat-x center center;
+}
+.nihilo .dijitProgressBarFull {
+       border-right:1px solid #f8d582;
+}
+.nihilo .dijitProgressBarLabel {
+       
+       color:#293a4b;
+}
+.nihilo .dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+       background:#cad2de url(images/progressBarAnim.gif) repeat-x center center;
+}
+.nihilo .dijitTitlePaneTitle {
+       background: #cccccc;
+       background:#fff url(images/titleBar.png) repeat-x top left;
+       border:1px solid #bfbfbf;
+       padding:3px 4px;
+       font-size: 0.9em;
+       font-weight: bold;
+       color: #6d6d6d;
+}
+.nihilo .dijitTitlePaneTitleHover  {
+       background: #f9f9f9 url(images/accordionItemActive.png) top repeat-x;
+}
+.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode,
+.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       width:15px;
+       height:15px;
+}
+.nihilo .dijitTitlePaneTextNode {
+       color: #243C5F;
+}
+.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background: url(images/spriteRoundedIconsSmall.png) no-repeat -30px top;
+}
+.dj_ie6 .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background:url(images/spriteRoundedIconsSmall.gif) no-repeat -30px top;
+}
+.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -15px top;
+}
+.dj_ie6 .nihilo .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background:url(images/spriteRoundedIconsSmall.gif) no-repeat -15px top;
+}
+.nihilo .dijitTitlePaneContentOuter {
+       background: #ffffff;
+       border:1px solid #bfbfbf;
+       border-top: 0px;
+}
+.nihilo .dijitTitlePaneContentInner {
+       padding:10px;
+}
+.nihilo .dijitTitlePaneTextNode {
+       margin-left: 4px;
+       margin-right: 4px;
+}
+.nihilo .dijitCalendarIncrementControl {
+       
+       width:15px;
+       height:15px;
+       background-image: url(images/spriteRoundedIconsSmall.png);
+       background-repeat: no-repeat
+}
+.dj_ie6 .nihilo .dijitCalendarIncrementControl {
+       font-size:.1em;
+       background-image: url(images/spriteRoundedIconsSmall.gif);
+}
+.nihilo .dijitA11ySideArrow {
+       display: none;
+}
+.nihilo .dijitCalendarDecrease {
+       background-position: top left;
+}
+.nihilo .dijitCalendarIncrease {
+       background-position: -30px top;
+}
+.nihilo table.dijitCalendarContainer {
+       font-size: 100%;
+       border-spacing: 0;
+       border-collapse: separate;
+       border: 1px solid #ccc;
+       margin: 0;
+}
+.nihilo .dijitCalendarMonthContainer th {
+       
+       background:#d3d3d3 url(images/titleBar.png) repeat-x top;
+       padding-top:.3em;
+       padding-bottom:.2em;
+       text-align:center;
+}
+.dj_ie6 .nihilo .dijitCalendarMonthContainer th {
+       padding-top:.2em;
+       padding-bottom:.1em;
+}
+.nihilo .dijitCalendarDayLabelTemplate {
+       
+       background:#fefefe;
+       font-weight:normal;
+       padding-top:.15em;
+       padding-bottom:.2em;
+       border-bottom: 1px solid #eeeeee;
+       color:#293a4b;
+       text-align:center;
+}
+.nihilo .dijitCalendarBodyContainer {
+       border-bottom: 1px solid #eeeeee;
+}
+.nihilo .dijitCalendarMonthLabel {
+       color:#293a4b;
+       font-weight: bold;
+}
+.nihilo .dijitCalendarDateTemplate {
+       
+       font-size: 0.9em;
+       font-weight: bold;
+       text-align: center;
+       padding: 0.3em 0.3em 0.05em 0.3em;
+       letter-spacing: 1px;
+       background-color: #fdfdfd;
+       border:#fdfdfd solid 1px !important;
+}
+.dj_ie .nihilo .dijitCalendarDateTemplate {
+       padding: 0.1em .33em 0.02em .33em;
+}
+.nihilo .dijitCalendarPreviousMonth,
+.nihilo .dijitCalendarNextMonth                {
+       
+       color:#999999;
+       background-color:#f5f5f5 !important;
+       border:#f5f5f5 solid 1px !important;
+}
+.nihilo .dijitCalendarCurrentMonth {
+       
+}
+.nihilo .dijitCalendarDisabledDate {
+       text-decoration:line-through !important;
+}
+.nihilo .dijitCalendarCurrentDate {
+       
+       text-decoration:underline;
+       font-weight:bold;
+}
+.nihilo .dijitCalendarSelectedDate {
+       
+       background-color:#ffe284 !important;
+       color:black !important;
+       border:#f7c95c solid 1px !important;
+}
+.nihilo .dijitCalendarYearContainer {
+       
+       background:white url(images/titleBar.png) repeat-x top;
+}
+.nihilo .dijitCalendarYearLabel {
+       
+       margin:0;
+       padding:0.4em 0 0.25em 0;
+       text-align:center;
+}
+.nihilo .dijitCalendarSelectedYear {
+       
+       color:black;
+       padding:0.2em;
+       padding-bottom:0.1em;
+       background-color:#ffe284 !important;
+       border:#f7c95c solid 1px !important;
+}
+.nihilo .dijitCalendarNextYear,
+.nihilo .dijitCalendarPreviousYear {
+       
+       color:black !important;
+       font-weight:normal;
+}
+.nihilo .dijitTimePickerTick,
+.nihilo .dijitTimePickerMarker {
+       border-color: #eeeeee;
+}
+.nihilo .dijitTimePickerTick {
+       color:white;
+}
+.nihilo .dijitTimePickerMarker {
+       background:#d3d3d3 url(images/titleBar.png) repeat-x top;
+       color:#293a4b;
+       font-weight: bold;
+}
+.nihilo .dijitTimePickerItemSelected {
+       color: black;
+       background: #ffe284 none;
+}
+.nihilo .dijitTimePickerItemHover {
+       background: #d6d6dd none;
+       color:black;
+}
+.nihilo .dijitTimePickerItemHover,
+.nihilo .dijitTimePickerItemSelected {
+       position: relative;
+       z-index: 10;
+}
+.nihilo .dijitTimePickerTick .dijitTimePickerItemInner {
+       font-size:0.4em;
+}
+.nihilo .dijitTimePickerItemHover .dijitTimePickerItemInner,
+.nihilo .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       font-size:1em;
+}
+.nihilo .dijitTimePickerMarkerHover {
+       border-top: 1px solid #eeeeee;
+}
+.nihilo .dijitTimePickerTickHover,
+.nihilo .dijitTimePickerTickSelected {
+       margin-top:-0.3em;
+       margin-bottom:-0.3em;
+       border-bottom: none;
+}
+.nihilo .dijitToolbar {
+       border-bottom: 1px solid #ccc;
+       background:#eaeaea url(images/titleBar.png) repeat-x top left;
+}
+.dj_ie6 .nihilo .dijitToolbar {
+       height: 10px;
+}
+.nihilo .dijitToolbar .dijitButtonNode,
+.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,
+.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       margin: 0px;
+       padding: 0px;
+       border: none;
+       font-size: 12px;
+}
+.nihilo .dijitToolbar .dijitButton,
+.nihilo .dijitToolbar .dijitToggleButton,
+.nihilo .dijitToolbar .dijitDropDownButton,
+.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,
+.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       padding: 1px;   
+}
+.nihilo .dijitToolbar .dijitButtonChecked,
+.nihilo .dijitToolbar .dijitToggleButtonChecked {
+       background-color:#ffeeb9;
+       border:1px solid #f7c95c;
+       padding: 0;
+}
+.nihilo .dijitToolbar .dijitButtonCheckedHover,
+.nihilo .dijitToolbar .dijitToggleButtonCheckedHover
+ {
+       background-color:#ffe284;
+       border:1px solid #f7c95c;
+       padding: 0;
+}
+.nihilo .dijitToolbar .dijitButtonHover,
+.nihilo .dijitToolbar .dijitToggleButtonHover,
+.nihilo .dijitToolbar .dijitDropDownButtonHover,
+.nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsHover,
+.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {
+       
+       border: 1px solid #f7c95c;
+       padding: 0;
+       background-color:#ffe284;
+}
+.nihilo .dijitToolbar label {
+       padding: 3px 3px 0 6px;
+}
+.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
+       
+       border: 1px #555 dotted !important;
+       padding: 0px;
+}
+.nihilo .dijitDialog {
+       background: #eee;
+       border: 1px solid #d3d3d3;
+       -webkit-box-shadow: 0px 5px 10px #adadad;
+       padding: 0px;
+}
+.nihilo .dijitDialog .dijitDialogTitle {
+       
+       font-size: 0.9em;
+       color: #3243C5F;
+       font-weight: bold;
+       padding: 0px 4px;
+}
+.nihilo .dijitDialog .dijitDialogPaneContent {
+       background: #ffffff;
+       border-top: 1px solid #d3d3d3;
+       padding:10px;
+}
+.nihilo .dijitDialogTitleBar {
+       
+       background: #fafafa url(images/titleBar.png) repeat-x top left;
+       padding: 5px 6px 3px 6px;
+       outline:0; 
+}
+.nihilo .dijitDialogCloseIcon {
+       
+       background-image: url(images/spriteRoundedIconsSmall.png);
+       background-repeat: no-repeat;
+       background-position: -60px 0px;
+       position: absolute;
+       vertical-align: middle;
+       right: 6px;
+       top: 4px;
+       height: 15px;
+       width: 15px;
+}
+.dj_ie6 .nihilo .dijitDialogCloseIcon {
+       background-image: url(images/spriteRoundedIconsSmall.gif);
+}
+.nihilo .dijitDialogCloseIconHover {
+       background-position: -60px -15px;
+}
+.nihilo .dijitTooltip,
+.nihilo .dijitTooltipDialog {
+       
+       background: transparent;        
+}
+.dijitTooltipBelow {
+       
+       padding-top: 10px;
+}
+.dijitTooltipAbove {
+       
+       padding-bottom: 10px;
+}
+.nihilo .dijitTooltipContainer {
+       
+       background-color: #fff;
+       border:1px solid #d3d3d3;
+       padding:0.45em;
+}
+.nihilo .dijitTooltipConnector {
+       
+       border:0px;
+       z-index: 2;
+}
+.nihilo .dijitTooltipABRight .dijitTooltipConnector {
+       
+       left: auto !important;
+       right: 6px;
+}
+.nihilo .dijitTooltipBelow .dijitTooltipConnector {
+       
+       top: 0px;
+       left: 6px;
+       background:url(images/tooltipConnectorUp.png) no-repeat top left;
+       width:17px;
+       height:11px;
+}
+.dj_ie .nihilo .dijitTooltipBelow .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorUp.gif);
+}
+.nihilo .dijitTooltipAbove .dijitTooltipConnector {
+       
+       bottom: 0px;
+       left: 6px;
+       background:url(images/tooltipConnectorDown.png) no-repeat top left;
+       width:17px;
+       height:11px;
+}
+.dj_ie .nihilo .dijitTooltipAbove .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorDown.gif);
+}
+.dj_ie6 .nihilo .dijitTooltipAbove .dijitTooltipConnector {
+       bottom: -5px;
+}
+.nihilo .dijitTooltipLeft {
+       padding-right: 10px;
+}
+.dj_ie6 .nihilo .dijitTooltipLeft {
+       padding-left: 11px;
+}
+.nihilo .dijitTooltipLeft .dijitTooltipConnector {
+       
+       right: 0px;
+       bottom: 3px;
+       background:url(images/tooltipConnectorRight.png) no-repeat top left;
+       width:11px;
+       height:17px;
+}
+.dj_ie .nihilo .dijitTooltipLeft .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorRight.gif);
+}
+.nihilo .dijitTooltipRight {
+       padding-left: 10px;
+}
+.nihilo .dijitTooltipRight .dijitTooltipConnector {
+       
+       left: 0px;
+       bottom: 3px;
+       background:url(images/tooltipConnectorLeft.png) no-repeat top left;
+       width:11px;
+       height:17px;
+}
+.dj_ie .nihilo .dijitTooltipRight .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorLeft.gif);
+}
+.nihilo .dijitMenu,
+.nihilo .dijitMenuBar {
+       border: 1px solid #d3d3d3;
+       margin: 0px;
+       padding: 0px;
+       background-color: #fff;
+}
+.nihilo .dijitBorderContainer .dijitMenuBar {
+       border: 1px #ccc solid;
+}
+.nihilo .dijitMenuItem {
+       font-family: sans-serif;
+       margin: 0px;
+       color: #243C5F;
+}
+.nihilo .dijitMenuBar .dijitMenuItem {
+       padding: 4px 5px;
+}
+.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {
+       font-style: italic;
+}
+.nihilo .dijitMenuItem TD {
+       padding:1px;
+}
+.nihilo .dijitMenuPassive .dijitMenuItemHover,
+.nihilo .dijitMenuItemSelected {
+       background-color: #ffe284; 
+       color: #243C5F;
+}
+.nihilo .dijitMenuItemIcon {
+       width: 15px;
+       height: 15px;
+}
+.nihilo .dijitMenuExpand {
+       width:15px;
+       height:15px;
+       background-image: url(images/spriteRoundedIconsSmall.png);
+       background-position: -30px top;
+}
+.dj_ie6 .nihilo .dijitMenuExpand {
+       background-image:url(images/spriteRoundedIconsSmall.gif);
+}
+.nihilo .dijitMenuSeparator {
+       height: 1px;
+}
+.nihilo .dijitMenuSeparatorTop {
+       border-bottom: 1px solid #fff; 
+}
+.nihilo .dijitMenuSeparatorBottom {
+       border-top: 1px solid #d3d3d3;
+}
+.nihilo .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.nihilo .dijitCheckedMenuItemIcon {
+       background-image: url(images/spriteCheckbox.gif);
+       background-position: -80px;
+}
+.nihilo .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: -64px;
+}
+.nihilo .dijitToolbar .dijitToolbarSeparator {
+       background: url(../../icons/images/editorIconsEnabled.png); 
+}
+.nihilo .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled.png); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.nihilo .dijitDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled.png); 
+}
+.dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled.png); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.dijitDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled.png); 
+}
+.dijitEditorIconSep { background-position: 0px; }
+.dijitEditorIconSave { background-position: -18px; }
+.dijitEditorIconPrint { background-position: -36px; }
+.dijitEditorIconCut { background-position: -54px; }
+.dijitEditorIconCopy { background-position: -72px; }
+.dijitEditorIconPaste { background-position: -90px; }
+.dijitEditorIconDelete { background-position: -108px; }
+.dijitEditorIconCancel { background-position: -126px; }
+.dijitEditorIconUndo { background-position: -144px; }
+.dijitEditorIconRedo { background-position: -162px; }
+.dijitEditorIconSelectAll { background-position: -180px; }
+.dijitEditorIconBold { background-position: -198px; }
+.dijitEditorIconItalic { background-position: -216px; }
+.dijitEditorIconUnderline { background-position: -234px; }
+.dijitEditorIconStrikethrough { background-position: -252px; }
+.dijitEditorIconSuperscript { background-position: -270px; }
+.dijitEditorIconSubscript { background-position: -288px; }
+.dijitEditorIconJustifyCenter { background-position: -306px; }
+.dijitEditorIconJustifyFull { background-position: -324px; }
+.dijitEditorIconJustifyLeft { background-position: -342px; }
+.dijitEditorIconJustifyRight { background-position: -360px; }
+.dijitEditorIconIndent { background-position: -378px; }
+.dijitEditorIconOutdent { background-position: -396px; }
+.dijitEditorIconListBulletIndent { background-position: -414px; }
+.dijitEditorIconListBulletOutdent { background-position: -432px; }
+.dijitEditorIconListNumIndent { background-position: -450px; }
+.dijitEditorIconListNumOutdent { background-position: -468px; }
+.dijitEditorIconTabIndent { background-position: -486px; }
+.dijitEditorIconLeftToRight { background-position: -504px; }
+.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir { background-position: -522px; }
+.dijitEditorIconBackColor { background-position: -540px; }
+.dijitEditorIconForeColor { background-position: -558px; }
+.dijitEditorIconHiliteColor { background-position: -576px; }
+.dijitEditorIconNewPage { background-position: -594px; }
+.dijitEditorIconInsertImage { background-position: -612px; }
+.dijitEditorIconInsertTable { background-position: -630px; }
+.dijitEditorIconSpace { background-position: -648px; }
+.dijitEditorIconInsertHorizontalRule { background-position: -666px; }
+.dijitEditorIconInsertOrderedList { background-position: -684px; }
+.dijitEditorIconInsertUnorderedList { background-position: -702px; }
+.dijitEditorIconCreateLink { background-position: -720px; }
+.dijitEditorIconUnlink { background-position: -738px; }
+.dijitEditorIconViewSource { background-position: -756px; }
+.dijitEditorIconRemoveFormat { background-position: -774px; }
+.dijitEditorIconFullScreen { background-position: -792px; }
+.dijitEditorIconWikiword { background-position: -810px; }
+.dijitColorPalette {
+       border:1px solid #d3d3d3;
+       background:#fff;
+       -moz-border-radius: 0px !important;
+}
diff --git a/lib/dijit/themes/nihilo/nihilo_rtl.css b/lib/dijit/themes/nihilo/nihilo_rtl.css
new file mode 100644 (file)
index 0000000..b47f843
--- /dev/null
@@ -0,0 +1,224 @@
+
+.dijitRtl .dijitPlaceHolder {
+       left: auto;
+       right: 0;
+}
+.dijitMenuItemRtl {
+       text-align: right;
+}
+.dj_iequirks .dijitComboButtonRtl BUTTON {
+       
+       float:left;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitComboBoxRtl .dijitArrowButtonContainer {
+       
+       border-right-width: 1px !important;
+       border-right-style: solid !important;
+       border-left-width: 0px !important;
+       border-left-style: none !important;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijit_a11y .dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBoxRtl .dijitArrowButtonContainer {
+       border-right: 1px solid black !important;
+       border-left: 0px none black !important;
+}
+.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {
+       right: 0;
+       left: auto;
+}
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitArrowButtonContainer {
+       float: left;
+}
+.dijitCalendarRtl .dijitCalendarNextYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarRtl .dijitCalendarPreviousYear {
+       margin:0 0 0 0.55em;
+}
+.dijitSliderRtl .dijitSliderImageHandleV {
+       left:auto;
+}
+.dijitSliderRtl .dijitSliderImageHandleH {
+       left:-50%;
+}
+.dijitSliderRtl .dijitSliderMoveableH {
+       right:auto;
+       left:0;
+}
+.dijitSliderRtl .dijitRuleContainerV {
+       float:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleContainerV {
+       text-align:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelV {
+       text-align:left;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelH {
+       zoom:1;
+}
+.dijitSliderRtl .dijitSliderProgressBarH {
+       
+       float:right;
+       right:0;
+       left:auto;
+}
+.dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError {
+       background-position:right;
+       padding-right:25px;
+}
+.dijitTabRtl .dijitTabCloseButton {
+       margin-left: 0px;
+       margin-right: 1em;
+}
+.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {
+       width:100%;
+}
+.dijitColorPaletteRtl .dijitColorPaletteUnder {
+       
+       left: auto;
+       right: 0;
+}
+.dijitSelectRtl .dijitButtonContents {
+       text-align: right;
+}
+.dijitRtl .nihilo .dijitTab {
+       margin-right:0;
+       margin-left:2px;                
+}
+.dijitRtl .nihilo .dijitTabContainer .tabStripButton {
+       margin-left: 0;
+}
+.dijitRtl .nihilo .dijitTabContainerTopStrip,
+.dijitRtl .nihilo .dijitTabContainerBottomStrip,
+.dijitRtl .nihilo .dijitTabContainerTop-tabs,
+.dijitRtl .nihilo .dijitTabContainerBottom-tabs {
+       padding-left: 0;
+       padding-right: 3px;
+}
+.dijitRtl .nihilo .dijitTabInnerDiv {
+       padding-left: 3px;
+       padding-right: 4px;
+}
+.dijitRtl .nihilo .dijitTabPaneWrapper {
+       #zoom: 1;
+}
+.dj_ie-rtl .nihilo .dijitTabContainerLeft-tabs {
+       margin-left: 0px !important;
+}
+.dj_ie-rtl .nihilo .dijitTabContainerRight-tabs {
+       margin-right: 0px !important;
+}
+.dijitRtl .nihilo .dijitTabContainerLeft-tabs .dijitTab,
+.dijitRtl .nihilo .dijitTabContainerRight-tabs .dijitTab {
+       margin-left:0px;
+}
+.dj_ie-rtl .nihilo .dijitTab .dijitTabInnerDiv{
+       width : 1%;
+}
+.dijitRtl .nihilo .dijitAccordionArrow {
+       background-position: 0px top;
+}
+.dijitRtl .nihilo .dijitAccordionTitleSelected .dijitAccordionArrow {
+       
+       background-position: -15px top;
+}
+.dijitRtl .nihilo .dijitSliderProgressBarH,
+.dijitRtl .nihilo .dijitSliderRemainingBarH,
+.dijitRtl .nihilo .dijitSliderLeftBumper,
+.dijitRtl .nihilo .dijitSliderRightBumper,
+.dijitRtl .nihilo .dijitSliderTopBumper {
+       background-position: top right;
+}
+.dijitRtl .nihilo .dijitSliderProgressBarV,
+.dijitRtl .nihilo .dijitSliderRemainingBarV,
+.dijitRtl .nihilo .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.dijitRtl .nihilo .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.dijitRtl .nihilo .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.dijitRtl .nihilo .dijitSliderIncrementIconH {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat left top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat left top;
+}
+.dijitRtl .nihilo .dijitSliderDecrementIconH {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -30px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat -30px top;
+}
+.dijitRtl .nihilo .dijitComboBox .dijitButtonNode {
+       border-width: 0px 0px 0px 1px;
+}
+.dijitRtl .nihilo .dijitSelect .dijitButtonContents {
+       border-left: none;
+       border-right-width: 1px;
+}
+.dijitRtl .nihilo .dijitTreeNode,
+.dijitRtl .nihilo .dijitTreeExpandoLeaf {
+       
+    background-image: none;
+}
+.dijitRtl .nihilo .dijitTreeContent {
+    padding-left: 0px;
+    padding-right: 1px;
+}
+.dijitRtl .nihilo .dijitTreeExpandoOpened {
+       
+       background: url(images/spriteTree_rtl.gif) no-repeat -18px top;
+}
+.dijitRtl .nihilo .dijitTreeExpandoClosed {
+       
+       background-image: url(images/spriteTree_rtl.gif);
+}
+.dijitRtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: 0px top;
+}
+.dj_ie6-rtl .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: 0px top;
+}
+.dijitRtl .nihilo .dijitCalendarDecrease {
+       background-position: -30px top;
+}
+.dijitRtl .nihilo .dijitCalendarIncrease {
+       background-position: 0px top;
+}
+.dj_ie6-rtl .nihilo .dijitTimePickerMarkerHover,
+.dj_ie7-rtl .nihilo .dijitTimePickerMarkerHover {
+        border-top: 0px; 
+}
+.dijitRtl .nihilo .dijitDialogTitleBar .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
+.dijitRtl .nihilo .dijitMenuItem .dijitMenuItemIcon {
+       padding-left: 3px;
+       padding-right: 0px;
+}
+.dijitRtl .nihilo .dijitMenuItem .dijitMenuExpand {
+       background-position: 0px top;
+}
+.dijitRtl .nihilo .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.dijitRtl .nihilo .dijitDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitEditorRtl .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitToolbarRtl .dijitToolbarSeparator {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png);
+}
diff --git a/lib/dijit/themes/soria/Calendar.css b/lib/dijit/themes/soria/Calendar.css
new file mode 100644 (file)
index 0000000..b2576c0
--- /dev/null
@@ -0,0 +1,117 @@
+
+.soria .dijitCalendarIncrementControl {
+       
+       width:15px;
+       height:15px;
+       background-image: url("images/spriteRoundedIconsSmall.png");
+       background-repeat: no-repeat;
+}
+.dj_ie6 .soria .dijitCalendarIncrementControl {
+       font-size:.1em;
+       background-image: url("images/spriteRoundedIconsSmall.gif");
+}
+.soria .dijitA11ySideArrow {
+       display: none;
+}
+.soria .dijitCalendarDecrease {
+       background-position: top left;
+}
+.soria .dijitCalendarIncrease {
+       background-position: -30px top;
+}
+.soria table.dijitCalendarContainer {
+       font-size: 100%;
+       border-spacing: 0;
+       border-collapse: separate;
+       border: 1px solid #b1badf;
+       margin: 0;
+}
+.soria .dijitCalendarMonthContainer th {
+       
+       background:#bed7f0 url("images/titleBar.png") repeat-x top;
+       padding-top:.3em;
+       padding-bottom:.2em;
+       text-align:center;
+}
+.dj_ie6 .soria .dijitCalendarMonthContainer th {
+       padding-top:.2em;
+       padding-bottom:.1em;
+}
+.soria .dijitCalendarDayLabelTemplate {
+       
+       background:#bed7f0;
+       font-weight:normal;
+       padding-top:.15em;
+       padding-bottom:.2em;
+       border-bottom: 1px solid #b1badf;
+       color:#293a4b;
+       text-align:center;
+}
+.soria .dijitCalendarBodyContainer {
+       border-bottom: 1px solid #eeeeee;
+}
+.soria .dijitCalendarMonthLabel {
+       color:#293a4b;
+       font-weight: bold;
+}
+.soria .dijitCalendarDateTemplate {
+       
+       font-size: 0.9em;
+       font-weight: bold;
+       text-align: center;
+       padding: 0.3em 0.3em 0.05em 0.3em;
+       letter-spacing: 1px;
+       background-color: #fff;
+       border:#fff solid 1px !important;
+}
+.dj_ie .soria .dijitCalendarDateTemplate {
+       padding: 0.1em .33em 0.02em .33em;
+}
+.soria .dijitCalendarPreviousMonth,
+.soria .dijitCalendarNextMonth                 {
+       
+       color:#999999;
+       background-color:#fdfdfd !important;
+       border:#fdfdfd solid 1px !important;
+}
+.soria .dijitCalendarCurrentMonth {
+       
+}
+.soria .dijitCalendarDisabledDate {
+       text-decoration:line-through !important;
+}
+.soria .dijitCalendarCurrentDate {
+       
+       text-decoration:underline;
+       font-weight:bold;
+}
+.soria .dijitCalendarSelectedDate {
+       
+       background-color:#b9cbf1 !important;
+       color:black !important;
+       border:#4b5aaa solid 1px !important;
+}
+.soria .dijitCalendarYearContainer {
+       
+       background:white url("images/titleBar.png") repeat-x top;
+}
+.soria .dijitCalendarYearLabel {
+       
+       margin:0;
+       padding:0.4em 0 0.25em 0;
+       text-align:center;
+}
+.soria .dijitCalendarSelectedYear {
+       
+       color:black;
+       padding:0.2em;
+       padding-bottom:0.1em;
+       background-color:#b9cbf1 !important;
+       border:#4b5aaa solid 1px !important;
+}
+.soria .dijitCalendarNextYear,
+.soria .dijitCalendarPreviousYear {
+       
+       color:black !important;
+       font-weight:normal;
+}
diff --git a/lib/dijit/themes/soria/Calendar_rtl.css b/lib/dijit/themes/soria/Calendar_rtl.css
new file mode 100644 (file)
index 0000000..bcfa495
--- /dev/null
@@ -0,0 +1,7 @@
+
+.dijitRtl .soria .dijitCalendarDecrease {
+       background-position: -30px top;
+}
+.dijitRtl .soria .dijitCalendarIncrease {
+       background-position: 0px top;
+}
diff --git a/lib/dijit/themes/soria/ColorPalette.css b/lib/dijit/themes/soria/ColorPalette.css
new file mode 100644 (file)
index 0000000..5a51275
--- /dev/null
@@ -0,0 +1,5 @@
+.dijitColorPalette {
+       border:1px solid #cbcbcb;
+       background:#fff;
+       -moz-border-radius: 0px !important;
+}
diff --git a/lib/dijit/themes/soria/Common.css b/lib/dijit/themes/soria/Common.css
new file mode 100644 (file)
index 0000000..362a867
--- /dev/null
@@ -0,0 +1,19 @@
+
+.soria .dojoDndItemBefore {
+       border-top: 2px solid #369;
+}
+.soria .dojoDndItemAfter {
+       border-bottom: 2px solid #369;
+}
+.soria .dojoDndItemOver {
+       cursor:pointer;
+}
+.soria table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
+.soria .dojoDndAvatar td       { border: none; }
+.soria .dojoDndAvatar tr       { border: none; }
+.soria .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; }
+.soria .dojoDndAvatarItem td { padding: 2px;}
+.soria.dojoDndMove .dojoDndAvatarHeader        {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria.dojoDndCopy .dojoDndAvatarHeader        {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader  {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader  {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
diff --git a/lib/dijit/themes/soria/Dialog.css b/lib/dijit/themes/soria/Dialog.css
new file mode 100644 (file)
index 0000000..b4a1851
--- /dev/null
@@ -0,0 +1,131 @@
+
+.soria .dijitDialog {
+       background: #eee;
+       border: 1px solid #cbcbcb;
+       -webkit-box-shadow: 0px 5px 10px #adadad;
+       padding: 0px;
+}
+.soria .dijitDialog .dijitDialogTitle {
+       
+       font-weight: bold;
+       padding: 0px 4px;
+       font-size: 0.9em;
+       color: #3243C5F;
+}
+.soria .dijitDialog .dijitDialogPaneContent {
+       background: #ffffff;
+       border-top: 1px solid #b1badf;
+       padding:10px;
+}
+.soria .dijitDialogTitleBar {
+       
+       background: #fafafa url("images/titleBar.png") repeat-x top left;
+       padding: 5px 6px 3px 6px;
+       outline:0; 
+}
+.soria .dijitDialogCloseIcon {
+       
+       background-image: url("images/spriteRoundedIconsSmallBl.png");
+       background-repeat: no-repeat;
+       background-position: -60px 0px;
+       position: absolute;
+       vertical-align: middle;
+       right: 6px;
+       top: 4px;
+       height: 15px;
+       width: 15px;
+}
+.dj_ie6 .soria .dijitDialogCloseIcon {
+       background-image: url("images/spriteRoundedIconsSmallBl.gif");
+}
+.soria .dijitDialogCloseIconHover {
+       background-position: -60px -15px;
+}
+.soria .dijitTooltip,
+.soria .dijitTooltipDialog {
+       
+       background: transparent;        
+}
+.dijitTooltipBelow {
+       
+       padding-top: 10px;
+}
+.dijitTooltipAbove {
+       
+       padding-bottom: 10px;
+}
+.soria .dijitTooltipContainer {
+       
+       background-color: #fff;
+       border:1px solid #cbcbcb;
+       padding:0.45em;
+}
+.soria .dijitTooltipConnector {
+       
+       border:0px;
+       z-index: 2;
+}
+.soria .dijitTooltipABRight .dijitTooltipConnector {
+       
+       left: auto !important;
+       right: 6px;
+}
+.soria .dijitTooltipBelow .dijitTooltipConnector {
+       
+       top: 0px;
+       left: 6px;
+       background:url("images/tooltipConnectorUp.png") no-repeat top left;
+       width:17px;
+       height:11px;
+}
+.dj_ie .soria .dijitTooltipBelow .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorUp.gif");
+}
+.soria .dijitTooltipAbove .dijitTooltipConnector {
+       
+       bottom: 0px;
+       left: 6px;
+       background:url("images/tooltipConnectorDown.png") no-repeat top left;
+       width:17px;
+       height:11px;
+}
+.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorDown.gif");
+}
+.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorDown.gif");
+}
+.dj_ie6 .soria .dijitTooltipAbove .dijitTooltipConnector {
+       bottom: -5px;
+}
+.soria .dijitTooltipLeft {
+       padding-right: 10px;
+}
+.dj_ie6 .soria .dijitTooltipLeft {
+       padding-left: 11px;
+}
+.soria .dijitTooltipLeft .dijitTooltipConnector {
+       
+       right: 0px;
+       bottom: 3px;
+       background:url("images/tooltipConnectorRight.png") no-repeat top left;
+       width:11px;
+       height:17px;
+}
+.dj_ie .soria .dijitTooltipLeft .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorRight.gif");
+}
+.soria .dijitTooltipRight {
+       padding-left: 10px;
+}
+.soria .dijitTooltipRight .dijitTooltipConnector {
+       
+       left: 0px;
+       bottom: 3px;
+       background:url("images/tooltipConnectorLeft.png") no-repeat top left;
+       width:11px;
+       height:17px;
+}
+.dj_ie .soria .dijitTooltipRight .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorLeft.gif");
+}
diff --git a/lib/dijit/themes/soria/Dialog_rtl.css b/lib/dijit/themes/soria/Dialog_rtl.css
new file mode 100644 (file)
index 0000000..41db9ce
--- /dev/null
@@ -0,0 +1,5 @@
+
+.dijitRtl .soria .dijitDialogTitleBar .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
diff --git a/lib/dijit/themes/soria/Editor.css b/lib/dijit/themes/soria/Editor.css
new file mode 100644 (file)
index 0000000..c306659
--- /dev/null
@@ -0,0 +1,13 @@
+.soria .dijitToolbar .dijitToolbarSeparator {
+       background: url('../../icons/images/editorIconsEnabled.png'); 
+}
+.soria .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsEnabled.png'); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.soria .dijitDisabled .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsDisabled.png'); 
+}
diff --git a/lib/dijit/themes/soria/Editor_rtl.css b/lib/dijit/themes/soria/Editor_rtl.css
new file mode 100644 (file)
index 0000000..4499e52
--- /dev/null
@@ -0,0 +1,7 @@
+
+.dijitRtl .soria .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsEnabled_rtl.png'); 
+}
+.dijitRtl .soria .dijitDisabled .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsDisabled_rtl.png'); 
+}
diff --git a/lib/dijit/themes/soria/Menu.css b/lib/dijit/themes/soria/Menu.css
new file mode 100644 (file)
index 0000000..9d6b97a
--- /dev/null
@@ -0,0 +1,62 @@
+
+.soria .dijitMenu,
+.soria .dijitMenuBar {
+       border: 1px solid #cbcbcb;
+       margin: 0px;
+       padding: 0px;
+       background-color: #fff;
+}
+.soria .dijitBorderContainer .dijitMenuBar {
+       border:1px solid #B1BADF;
+}
+.soria .dijitMenuItem {
+       font-family: sans-serif;
+       margin: 0px;
+       color: #243C5F;
+}
+.soria .dijitMenuBar .dijitMenuItem {
+       padding: 4px 5px;
+}
+.soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton {
+       font-style: italic;
+}
+.soria .dijitMenuItem TD {
+       padding:1px;
+}
+.soria .dijitMenuPassive .dijitMenuItemHover,
+.soria .dijitMenuItemSelected {
+       background-color: #d9e6f9; 
+       color: #243C5F;
+}
+.soria .dijitMenuItemIcon {
+       width: 15px;
+       height: 15px;
+}
+.soria .dijitMenuExpand {
+       width:15px;
+       height:15px;
+       background-image: url('images/spriteRoundedIconsSmall.png');
+       background-position: -30px top;
+}
+.dj_ie6 .soria .dijitMenuExpand {
+       background-image: url('images/spriteRoundedIconsSmall.gif');
+}
+.soria .dijitMenuSeparator {
+       height: 1px;
+}
+.soria .dijitMenuSeparatorTop {
+       border-bottom: 1px solid #fff; 
+}
+.soria .dijitMenuSeparatorBottom {
+       border-top: 1px solid #8ba0bd;
+}
+.soria .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.soria .dijitCheckedMenuItemIcon {
+       background-image: url('images/spriteCheckbox.gif');
+       background-position: -80px;
+}
+.soria .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: -64px;
+}
diff --git a/lib/dijit/themes/soria/Menu_rtl.css b/lib/dijit/themes/soria/Menu_rtl.css
new file mode 100644 (file)
index 0000000..6fa9a6a
--- /dev/null
@@ -0,0 +1,8 @@
+
+.dijitRtl .soria .dijitMenuItem .dijitMenuItemIcon {
+       padding-left: 3px;
+       padding-right: 0px;
+}
+.dijitRtl .soria .dijitMenuItem .dijitMenuExpand {
+       background-position: left top;
+}
diff --git a/lib/dijit/themes/soria/ProgressBar.css b/lib/dijit/themes/soria/ProgressBar.css
new file mode 100644 (file)
index 0000000..566d048
--- /dev/null
@@ -0,0 +1,24 @@
+
+.soria .dijitProgressBar {
+       margin:2px 0px 2px 0px;
+}
+.soria .dijitProgressBarEmpty{
+       
+       background:#fff url("images/progressBarEmpty.png") repeat-x center center;
+       border-color: #8ba0bd;
+}
+.soria .dijitProgressBarTile{
+       
+       background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
+}
+.soria .dijitProgressBarFull {
+       border-right:1px solid #8ba0bd;
+}
+.soria .dijitProgressBarLabel {
+       
+       color:#293a4b;
+}
+.soria .dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+       background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
+}
diff --git a/lib/dijit/themes/soria/TimePicker.css b/lib/dijit/themes/soria/TimePicker.css
new file mode 100644 (file)
index 0000000..761aac9
--- /dev/null
@@ -0,0 +1,42 @@
+
+.soria .dijitTimePickerTick,
+.soria .dijitTimePickerMarker {
+       border-color: #b1badf;
+}
+.soria .dijitTimePickerTick {
+       color:white;
+}
+.soria .dijitTimePickerMarker {
+       background:#bed7f0 url("images/titleBar.png") repeat-x top;
+       color:#293a4b;
+       font-weight: bold;
+}
+.soria .dijitTimePickerItemSelected {
+       color: black;
+       background: #b9cbf1 none;
+}
+.soria .dijitTimePickerItemHover {
+       background: #60a1ea none;
+       color:white;
+}
+.soria .dijitTimePickerItemHover,
+.soria .dijitTimePickerItemSelected {
+       position: relative;
+       z-index: 10;
+}
+.soria .dijitTimePickerTick .dijitTimePickerItemInner {
+       font-size:0.4em;
+}
+.soria .dijitTimePickerItemHover .dijitTimePickerItemInner,
+.soria .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       font-size:1em;
+}
+.soria .dijitTimePickerMarkerHover {
+       border-top: 1px solid #94b9ef;
+}
+.soria .dijitTimePickerTickHover,
+.soria .dijitTimePickerTickSelected {
+       margin-top:-0.3em;
+       margin-bottom:-0.3em;
+       border-bottom: none;
+}
diff --git a/lib/dijit/themes/soria/TimePicker_rtl.css b/lib/dijit/themes/soria/TimePicker_rtl.css
new file mode 100644 (file)
index 0000000..39835b0
--- /dev/null
@@ -0,0 +1,4 @@
+.dj_ie6-rtl .soria .dijitTimePickerMarkerHover,
+.dj_ie7-rtl .soria .dijitTimePickerMarkerHover {
+        border-top: 0px; 
+}
diff --git a/lib/dijit/themes/soria/TitlePane.css b/lib/dijit/themes/soria/TitlePane.css
new file mode 100644 (file)
index 0000000..a167679
--- /dev/null
@@ -0,0 +1,48 @@
+
+.soria .dijitTitlePaneTitle {
+       background: #cccccc;
+       background:#fff url("images/titleBar.png") repeat-x top left;
+       border:1px solid #bfbfbf;
+       padding:3px 4px;
+       font-size: 0.9em;
+       font-weight: bold;
+       color: #6d6d6d;
+}
+.soria .dijitTitlePaneTitleHover {
+       background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x;
+}
+.soria .dijitTitlePaneTitle * {
+       vertical-align: middle;
+}
+.soria .dijitTitlePane .dijitOpen .dijitArrowNode,
+.soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       width:15px;
+       height:15px;
+}
+.soria .dijitTitlePaneTextNode {
+       color: #243C5F;
+}
+.soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background: url('images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+}
+.dj_ie6 .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background:url('images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
+}
+.soria .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top;
+}
+.dj_ie6 .soria .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
+}
+.soria .dijitTitlePaneContentOuter {
+       background: #ffffff;
+       border: 1px solid #bfbfbf;
+       border-top: 0px;
+}
+.soria .dijitTitlePaneContentInner {
+       padding:10px;
+}
+.soria .dijitTitlePaneTextNode {
+       margin-left: 4px;
+       margin-right: 4px;
+}
diff --git a/lib/dijit/themes/soria/TitlePane_rtl.css b/lib/dijit/themes/soria/TitlePane_rtl.css
new file mode 100644 (file)
index 0000000..1ac1245
--- /dev/null
@@ -0,0 +1,6 @@
+.dijitRtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: 0px top;
+}
+.dj_ie6-rtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: 0px top;
+}
diff --git a/lib/dijit/themes/soria/Toolbar.css b/lib/dijit/themes/soria/Toolbar.css
new file mode 100644 (file)
index 0000000..4eb55a4
--- /dev/null
@@ -0,0 +1,56 @@
+.soria .dijitToolbar {
+       border-bottom: 1px solid #ccc;
+       background:#eaeaea url("images/titleBar.png") repeat-x top left;
+}
+.dj_ie6 .soria .dijitToolbar {
+       height: 10px;
+}
+.soria .dijitToolbar .dijitButtonNode,
+.soria .dijitToolbar .dijitComboButton .dijitButtonContents,
+.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       margin: 0px;
+       padding: 0px;
+       border: none;
+       font-size: 12px;
+}
+.soria .dijitToolbar .dijitButton,
+.soria .dijitToolbar .dijitToggleButton,
+.soria .dijitToolbar .dijitDropDownButton,
+.soria .dijitToolbar .dijitComboButton .dijitButtonContents,
+.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       padding: 1px;   
+}
+.soria .dijitToolbar .dijitButtonChecked,
+.soria .dijitToolbar .dijitToggleButtonChecked {
+       background-color:#d8e5f8;
+       border:1px solid #316ac5;
+       padding: 0px;
+}
+.soria .dijitToolbar .dijitButtonCheckedHover,
+.soria .dijitToolbar .dijitToggleButtonCheckedHover
+ {
+       background-color:#9abbea;
+       border:1px solid #316ac5;
+       padding: 0px;
+}
+.soria .dijitToolbar .dijitButtonHover,
+.soria .dijitToolbar .dijitToggleButtonHover,
+.soria .dijitToolbar .dijitDropDownButtonHover,
+.soria .dijitToolbar .dijitComboButton .dijitButtonContentsHover,
+.soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {
+       
+       border: 1px solid #316ac5;
+       padding: 0px;
+       background-color:#9abbea;
+}
+.soria .dijitToolbar label {
+       padding: 3px 3px 0 6px;
+}
+.dj_ie .soria .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ie .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
+       
+       border: 1px #777 dotted !important;
+       padding: 0px;
+}
diff --git a/lib/dijit/themes/soria/Tree.css b/lib/dijit/themes/soria/Tree.css
new file mode 100644 (file)
index 0000000..60934d4
--- /dev/null
@@ -0,0 +1,78 @@
+
+.soria .dijitTreeNode {
+    background : url('images/treeI.gif') no-repeat;
+    background-position : top left;
+    background-repeat : repeat-y;
+    zoom: 1;   
+}
+.soria .dijitTreeRowHover {
+       
+       background-image: url(images/treeHover.png);
+       background-repeat: repeat;
+       background-color: transparent !important;
+}
+.soria .dijitTreeIsLast {
+    background: url('images/treeI_half.gif') no-repeat;
+}
+.soria .dijitTreeLabel {
+       font-weight: normal;
+       margin-left: 3px;
+}
+.soria .dijitTreeIsRoot {
+    margin-left: 0;
+    background-image: none;
+}
+.soria .dijitTreeExpando {
+    width: 18px;
+    height: 18px;
+}
+.soria .dijitTreeRow {
+       
+       padding-bottom: 2px;
+}
+.soria .dijitTreeContent {
+    min-height: 18px;
+    min-width: 18px;
+    padding-left:1px;
+}
+.soria .dijitTreeRowSelected .dijitTreeLabel{
+       background:#b8cbec;
+}
+.soria .dijitTreeExpandoOpened {
+       background: url('images/spriteTree.gif') no-repeat -18px top;
+}
+.soria .dijitTreeExpandoClosed {
+       background-image: url('images/spriteTree.gif');
+}
+.soria .dijitTreeExpandoLeaf {
+       background: url('images/spriteTree.gif') no-repeat -36px top;
+}
+.soria .dijitTreeExpandoLoading {
+       background-image: url('images/treeExpand_loading.gif');
+}
+.soria .dijitTreeIcon {
+       width: 16px;
+       height: 16px;
+}
+.soria .dijitFolderOpened {
+       background: url('images/spriteDivIcons.gif') no-repeat -16px top;
+}
+.soria .dijitFolderClosed {
+       background: url('images/spriteDivIcons.gif') no-repeat top left;
+}
+.soria .dijitLeaf {
+       background: url('images/spriteDivIcons.gif') no-repeat -32px top;
+}
+.soria .dijitTreeNode .dojoDndItemBefore,
+.soria .dijitTreeNode .dojoDndItemAfter {
+       border-bottom: none;
+       border-top: none;
+}
+.soria .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
+       
+       border-top: 2px solid #369;
+}
+.soria .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
+       
+       border-bottom: 2px solid #369;
+}
diff --git a/lib/dijit/themes/soria/Tree_rtl.css b/lib/dijit/themes/soria/Tree_rtl.css
new file mode 100644 (file)
index 0000000..41dd308
--- /dev/null
@@ -0,0 +1,18 @@
+
+.dijitRtl .soria .dijitTreeNode,
+.dijitRtl .soria .dijitTreeExpandoLeaf {
+       
+    background-image: none;
+}
+.dijitRtl .soria .dijitTreeContent {
+    padding-left: 0px;
+    padding-right: 1px;
+}
+.dijitRtl .soria .dijitTreeExpandoOpened {
+       
+       background: url('images/spriteTree_rtl.gif') no-repeat -18px top;
+}
+.dijitRtl .soria .dijitTreeExpandoClosed {
+       
+       background-image: url('images/spriteTree_rtl.gif');
+}
diff --git a/lib/dijit/themes/soria/form/Button.css b/lib/dijit/themes/soria/form/Button.css
new file mode 100644 (file)
index 0000000..9bf6437
--- /dev/null
@@ -0,0 +1,105 @@
+
+.soria .dijitButtonNode {
+       
+       border: 1px solid #8ba0bd;
+       border-bottom:1px solid #657c9c;
+       padding: 0.1em 0.2em 0.2em 0.2em;
+       background: #bcd5f0 url("../images/buttonEnabled.png") repeat-x top left;
+}
+.soria .dijitSelect .dijitButtonContents {
+       border-right: none;
+}
+.soria .dijitButtonText {
+       text-align: center;
+       padding: 0 0.3em;
+}
+.soria .dijitArrowButton {
+       color: #111;
+}
+.soria .dijitComboButton .dijitDownArrowButton {
+       padding-right:4px;
+}
+.soria .dijitTextBoxReadOnly,
+.soria .dijitTextBoxReadOnly .dijitButtonNode,
+.soria .dijitButtonDisabled .dijitButtonNode,
+.soria .dijitToggleButtonDisabled .dijitButtonNode,
+.soria .dijitDropDownButtonDisabled .dijitButtonNode,
+.soria .dijitComboButtonDisabled .dijitButtonNode,
+.soria .dijitTextBoxDisabled,
+.soria .dijitTextBoxDisabled .dijitButtonNode {
+       
+       border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd;
+       background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x;
+       opacity: 0.60;
+}
+.dj_ie6 .soria .dijitReadOnly INPUT,
+.dj_ie7 .soria .dijitReadOnly INPUT,
+.dj_ie6 .soria .dijitComboButtonDisabled .dijitButtonText,
+.dj_ie7 .soria .dijitComboButtonDisabled .dijitButtonText {
+       
+       color: #aaa;
+}
+.soria .dijitButtonHover .dijitButtonNode,
+.soria .dijitButtonNodeHover,
+.soria .dijitToggleButtonHover .dijitButtonNode,
+.soria .dijitDropDownButtonHover .dijitButtonNode,
+.soria .dijitButtonContentsHover,
+.soria .dijitUpArrowButtonHover,
+.soria .dijitDownArrowButtonHover {
+       
+       
+       color:#243C5F;
+       background:#acc5e2 url("../images/buttonHover.png") repeat-x top left;
+}
+.soria .dijitButtonActive .dijitButtonNode,
+.soria .dijitToggleButtonActive .dijitButtonNode,
+.soria .dijitDropDownButtonActive .dijitButtonNode,
+.soria .dijitComboButtonActive .dijitButtonContents,
+.soria .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {
+       
+       border-color:#657c9c;
+       background: #91b4e5 url("../images/buttonActive.png") top left repeat-x;
+}
+.soria .dijitUpArrowButtonActive,
+.soria .dijitDownArrowButtonActive {
+       
+       background: #91b4e5 url("../images/buttonActive.png") top left repeat-x;
+}
+.soria .dijitArrowButtonInner {
+       background-image: url("../images/spriteArrows.png");
+       background-repeat: no-repeat;
+       background-position: 0px center;
+       width: 11px;
+       height: 11px;
+}
+.soria .dijitComboBox .dijitArrowButtonInner {
+        background-position: 0 center;
+}
+.soria .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -11px center;
+}
+.soria .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -22px center;
+}
+.soria .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -33px center;
+}
+.dj_ie6 .soria .dijitArrowButtonInner {
+       background-image: url("../images/spriteArrows.gif");
+}
+.dj_ie .soria .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {
+       margin-top: 1px; 
+}
+.soria .dijitSpinnerButtonContainer {
+       width: auto;
+       padding: 0;
+}
+.soria .dijitSpinner .dijitArrowButton {
+       width: 15px;
+}
+.soria .dijitSpinner .dijitSpinnerButtonInner {
+       width: 15px;
+}
+.soria .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding: 0;
+}
diff --git a/lib/dijit/themes/soria/form/Button_rtl.css b/lib/dijit/themes/soria/form/Button_rtl.css
new file mode 100644 (file)
index 0000000..50a5c5e
--- /dev/null
@@ -0,0 +1,7 @@
+.dijitRtl .soria .dijitComboBox .dijitButtonNode {
+       border-width: 0px 0px 0px 1px;
+}
+.dijitRtl .soria .dijitSelect .dijitButtonContents {
+       border-left: none;
+       border-right-width: 1px;
+}
diff --git a/lib/dijit/themes/soria/form/Checkbox.css b/lib/dijit/themes/soria/form/Checkbox.css
new file mode 100644 (file)
index 0000000..8227dcb
--- /dev/null
@@ -0,0 +1,40 @@
+
+.soria .dijitToggleButton .dijitCheckBox,
+.soria .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url('../images/spriteCheckbox.gif');
+}
+.soria .dijitCheckBox,
+.soria .dijitCheckBoxIcon {            
+       background-image: url('../images/spriteCheckbox.gif'); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.soria .dijitCheckBox,
+.soria .dijitToggleButton .dijitCheckBoxIcon {
+       
+       background-position: -16px;
+}
+.soria .dijitCheckBoxChecked,
+.soria .dijitToggleButtonChecked .dijitCheckBoxIcon {
+       
+       background-position: 0px;
+}
+.soria .dijitCheckBoxDisabled {
+       
+       background-position: -48px;
+}
+.soria .dijitCheckBoxCheckedDisabled {
+       
+       background-position: -32px;
+}
+.soria .dijitCheckBoxHover {
+       
+       background-position: -80px;
+}
+.soria .dijitCheckBoxCheckedHover {
+       
+       background-position: -64px;
+}
diff --git a/lib/dijit/themes/soria/form/Common.css b/lib/dijit/themes/soria/form/Common.css
new file mode 100644 (file)
index 0000000..0fe92d2
--- /dev/null
@@ -0,0 +1,51 @@
+
+.soria .dijitInputContainer INPUT,
+.soria .dijitTextBox {
+       margin: 0em 0.1em;
+}
+.soria .dijitTextBox,
+.soria .dijitTextArea {
+       
+       background:#fff url("../images/validationInputBg.png") repeat-x top left;
+       #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+       border:1px solid #8ba0bd;
+}
+.soria .dijitComboBox .dijitButtonNode {
+       padding: 0 0.2em;
+}
+.soria .dijitTextBox .dijitButtonNode {
+       
+       border-color: #8ba0bd;
+}
+.soria .dijitTextBoxFocused,
+.soria .dijitTextAreaFocused {
+       
+       border-color:#406b9b;
+}
+.soria .dijitTextBoxFocused .dijitButtonNode,
+.soria .dijitSpinner .dijitUpArrowButtonActive,
+.soria .dijitSpinner .dijitDownArrowButtonActive {
+       border-left-color:#8ba0bd;
+}
+.soria .dijitSpinnerFocused .dijitDownArrowButton,
+.soria .dijitSpinner .dijitUpArrowButtonActive,
+.soria .dijitSpinner .dijitDownArrowButtonActive {
+       border-top-color:#8ba0bd;
+}
+.soria .dijitError {
+       border-color:#f3d118;
+       background-color:#f9f7ba;
+       background-image:none;
+}
+.soria .dijitErrorFocused {
+       background-color:#ff6;
+       background-image:none;
+}
+.soria .dijitValidationIcon {
+       
+       width: 16px;
+       background: transparent url('../images/warning.png') no-repeat center center;
+}
+.soria .dijitComboBoxHighlightMatch {
+       background-color:#f9f7ba;
+}
diff --git a/lib/dijit/themes/soria/form/RadioButton.css b/lib/dijit/themes/soria/form/RadioButton.css
new file mode 100644 (file)
index 0000000..543694e
--- /dev/null
@@ -0,0 +1,40 @@
+
+.soria .dijitToggleButton .dijitRadio,
+.soria .dijitToggleButton .dijitRadioIcon {
+       background-image: url('../images/spriteRadio.gif');
+}
+.soria .dijitRadio,
+.soria .dijitRadioIcon {               
+       background-image: url('../images/spriteRadio.gif'); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.soria .dijitRadio,
+.soria .dijitToggleButton .dijitRadioIcon {
+       
+       background-position: -16px;
+}
+.soria .dijitRadioChecked,
+.soria .dijitToggleButtonChecked .dijitRadioIcon {
+       
+       background-position: 0px;
+}
+.soria .dijitRadioDisabled {
+       
+       background-position: -48px;
+}
+.soria .dijitRadioCheckedDisabled {
+       
+       background-position: -32px;
+}
+.soria .dijitRadioHover {
+       
+       background-position: -80px;
+}
+.soria .dijitRadioCheckedHover {
+       
+       background-position: -64px;
+}
diff --git a/lib/dijit/themes/soria/form/Select.css b/lib/dijit/themes/soria/form/Select.css
new file mode 100644 (file)
index 0000000..eb85cea
--- /dev/null
@@ -0,0 +1,44 @@
+.soria .dijitSelect .dijitButtonNode {
+       padding: 0px;
+}
+.soria .dijitSelect .dijitButtonContents {
+       padding-top: 1px;
+    background:#fff url("../images/validationInputBg.png") repeat-x top left;
+    #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+}
+.soria .dijitSelectHover .dijitButtonContents,
+.soria .dijitSelectActive .dijitButtonContents,
+.soria .dijitSelectOpened .dijitButtonContents,
+.soria .dijitSelectDisabled .dijitButtonContents,
+.soria .dijitSelectReadOnly .dijitButtonContents{
+       background: transparent none;
+}
+.dj_ie .soria .dijitSelect .dijitButtonContents {
+       padding-top: 0px;
+}
+.soria .dijitSelect .dijitArrowButton {
+       padding: 0px 2px;
+}
+.soria .dijitSelectDisabled .dijitButtonNode {
+    border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd;
+    background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x;
+}
+.dj_ie .soria .dijitSelectDisabled  .dijitButtonNode * {
+       filter: gray() alpha(opacity=50);
+}
+.soria .dijitSelectHover .dijitButtonNode {
+    color:#000;
+    background:#acc5e2 url("../images/buttonHover.png") repeat-x top left;
+}
+.soria .dijitSelectActive .dijitButtonNode,
+.soria .dijitSelectOpened .dijitButtonNode {
+    border-color:#657c9c;
+    background: #91b4e5 url("../images/buttonActive.png") top left repeat-x;
+}
+.soria .dijitSelectMenu td {
+       padding: 0em;
+}
+.soria .dijitSelectMenu .dijitMenuItemLabel,
+.soria .dijitSelectMenu .dijitMenuArrowCell {
+       padding: 0.1em 0.2em;
+}
diff --git a/lib/dijit/themes/soria/form/Slider.css b/lib/dijit/themes/soria/form/Slider.css
new file mode 100644 (file)
index 0000000..72e48b6
--- /dev/null
@@ -0,0 +1,122 @@
+
+.soria .dijitSliderProgressBarH {
+       border-color: #b1badf;
+       background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+.soria .dijitSliderProgressBarV {
+       border-color: #b1badf;
+       background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+.soria .dijitSliderFocused .dijitSliderProgressBarH,
+.soria .dijitSliderFocused .dijitSliderLeftBumper {
+       background-image:url("../images/sliderFullFocus.png");
+}
+.soria .dijitSliderFocused .dijitSliderProgressBarV,
+.soria .dijitSliderFocused .dijitSliderBottomBumper {
+       background-image:url("../images/sliderFullVerticalFocus.png");
+}
+.soria .dijitSliderRemainingBarV {
+       border-color: #b4b4b4;
+       background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left;
+}
+.soria .dijitSliderRemainingBarH {
+       border-color: #b4b4b4;
+       background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+}
+.soria .dijitSliderBar {
+       border-style: solid;
+       outline:1px;
+       
+}
+.soria .dijitSliderFocused .dijitSliderBar {
+       border-color:#8ba0bd;
+}
+.soria .dijitSliderImageHandleH {
+       border:0px;
+       width:15px;
+       height:18px;
+       background:url("../images/preciseSliderThumb.png") no-repeat center top;
+}
+.soria .dijitSliderFocused .dijitSliderImageHandleH {
+       background-image:url("../images/preciseSliderThumbFocus.png");
+       #background-image:url("../images/preciseSliderThumbFocus.gif");
+}
+.dj_ie6 .soria .dijitSliderImageHandleH {
+       background-image:url("../images/preciseSliderThumb.gif");
+}
+.soria .dijitSliderLeftBumper {
+       border-left-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+.soria .dijitSliderRightBumper {
+       background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+       border-color: #b4b4b4;
+       border-right-width: 1px;
+}
+.soria .dijitSliderImageHandleV {
+       border:0px;
+       width:20px;
+       height:15px;
+       background:url("../images/sliderThumb.png") no-repeat center center;
+       #background:url("../images/sliderThumb.gif") no-repeat center center;
+}
+.soria .dijitSliderFocused .dijitSliderImageHandleV {
+       background-image:url("../images/sliderThumbFocus.png");
+       #background-image:url("../images/sliderThumbFocus.gif");
+}
+.soria .dijitSliderBottomBumper {
+       border-bottom-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+.soria .dijitSliderTopBumper {
+       background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left;
+       border-color: #b4b4b4;
+       border-top-width: 1px;
+}
+.soria .dijitSliderIncrementIconH,
+.soria .dijitSliderIncrementIconV {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -45px top;
+       width:15px; height:15px;
+}
+.soria .dijitSliderIncrementIconH {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
+}
+.soria .dijitSliderDecrementIconH,
+.soria .dijitSliderDecrementIconV {
+       width:15px;
+       height:15px;
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -15px top;
+}
+.soria .dijitSliderDecrementIconH {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0px top;
+}
+.soria .dijitSliderButtonInner {
+       visibility:hidden;
+}
+.soria .dijitSliderReadOnly *,
+.soria .dijitSliderDisabled * {
+       border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
+       color: #bdbdbd;
+}
+.soria .dijitSliderReadOnly .dijitSliderDecrementIconH,
+.soria .dijitSliderDisabled .dijitSliderDecrementIconH {
+       background-position: 0px -15px;
+}
+.soria .dijitSliderReadOnly .dijitSliderIncrementIconH,
+.soria .dijitSliderDisabled .dijitSliderIncrementIconH {
+       background-position: -30px -15px;
+}
+.soria .dijitSliderReadOnly .dijitSliderDecrementIconV,
+.soria .dijitSliderDisabled .dijitSliderDecrementIconV {
+       background-position: -15px -15px;
+}
+.soria .dijitSliderReadOnly .dijitSliderIncrementIconV,
+.soria .dijitSliderDisabled .dijitSliderIncrementIconV {
+       background-position: -45px -15px;
+}
diff --git a/lib/dijit/themes/soria/form/Slider_rtl.css b/lib/dijit/themes/soria/form/Slider_rtl.css
new file mode 100644 (file)
index 0000000..c1d8de3
--- /dev/null
@@ -0,0 +1,29 @@
+
+.dijitRtl .soria .dijitSliderProgressBarH,
+.dijitRtl .soria .dijitSliderRemainingBarH,
+.dijitRtl .soria .dijitSliderLeftBumper,
+.dijitRtl .soria .dijitSliderRightBumper,
+.dijitRtl .soria .dijitSliderTopBumper {
+       background-position: top right;
+}
+.dijitRtl .soria .dijitSliderProgressBarV,
+.dijitRtl .soria .dijitSliderRemainingBarV,
+.dijitRtl .soria .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.dijitRtl .soria .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.dijitRtl .soria .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.dijitRtl .soria .dijitSliderIncrementIconH {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat left top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat left top;
+}
+.dijitRtl .soria .dijitSliderDecrementIconH {
+       background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top;
+       #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top;
+}
diff --git a/lib/dijit/themes/soria/form/TimeTextBox.css b/lib/dijit/themes/soria/form/TimeTextBox.css
new file mode 100644 (file)
index 0000000..d450925
--- /dev/null
@@ -0,0 +1 @@
+@CHARSET "UTF-8";
diff --git a/lib/dijit/themes/soria/images/accordionItemActive.gif b/lib/dijit/themes/soria/images/accordionItemActive.gif
new file mode 100644 (file)
index 0000000..249a153
Binary files /dev/null and b/lib/dijit/themes/soria/images/accordionItemActive.gif differ
diff --git a/lib/dijit/themes/soria/images/accordionItemActive.png b/lib/dijit/themes/soria/images/accordionItemActive.png
new file mode 100644 (file)
index 0000000..92c7431
Binary files /dev/null and b/lib/dijit/themes/soria/images/accordionItemActive.png differ
diff --git a/lib/dijit/themes/soria/images/buttonActive.png b/lib/dijit/themes/soria/images/buttonActive.png
new file mode 100644 (file)
index 0000000..f815983
Binary files /dev/null and b/lib/dijit/themes/soria/images/buttonActive.png differ
diff --git a/lib/dijit/themes/soria/images/buttonDisabled.png b/lib/dijit/themes/soria/images/buttonDisabled.png
new file mode 100644 (file)
index 0000000..f76e4ab
Binary files /dev/null and b/lib/dijit/themes/soria/images/buttonDisabled.png differ
diff --git a/lib/dijit/themes/soria/images/buttonEnabled.png b/lib/dijit/themes/soria/images/buttonEnabled.png
new file mode 100644 (file)
index 0000000..3c55c83
Binary files /dev/null and b/lib/dijit/themes/soria/images/buttonEnabled.png differ
diff --git a/lib/dijit/themes/soria/images/buttonHover.png b/lib/dijit/themes/soria/images/buttonHover.png
new file mode 100644 (file)
index 0000000..a22ebda
Binary files /dev/null and b/lib/dijit/themes/soria/images/buttonHover.png differ
diff --git a/lib/dijit/themes/soria/images/dndCopy.png b/lib/dijit/themes/soria/images/dndCopy.png
new file mode 100644 (file)
index 0000000..baecd7c
Binary files /dev/null and b/lib/dijit/themes/soria/images/dndCopy.png differ
diff --git a/lib/dijit/themes/soria/images/dndMove.png b/lib/dijit/themes/soria/images/dndMove.png
new file mode 100644 (file)
index 0000000..07f878c
Binary files /dev/null and b/lib/dijit/themes/soria/images/dndMove.png differ
diff --git a/lib/dijit/themes/soria/images/dndNoCopy.png b/lib/dijit/themes/soria/images/dndNoCopy.png
new file mode 100644 (file)
index 0000000..9bf9c33
Binary files /dev/null and b/lib/dijit/themes/soria/images/dndNoCopy.png differ
diff --git a/lib/dijit/themes/soria/images/dndNoMove.png b/lib/dijit/themes/soria/images/dndNoMove.png
new file mode 100644 (file)
index 0000000..cb8bd8b
Binary files /dev/null and b/lib/dijit/themes/soria/images/dndNoMove.png differ
diff --git a/lib/dijit/themes/soria/images/preciseSliderThumb.gif b/lib/dijit/themes/soria/images/preciseSliderThumb.gif
new file mode 100644 (file)
index 0000000..53b33e5
Binary files /dev/null and b/lib/dijit/themes/soria/images/preciseSliderThumb.gif differ
diff --git a/lib/dijit/themes/soria/images/preciseSliderThumb.png b/lib/dijit/themes/soria/images/preciseSliderThumb.png
new file mode 100644 (file)
index 0000000..045bf35
Binary files /dev/null and b/lib/dijit/themes/soria/images/preciseSliderThumb.png differ
diff --git a/lib/dijit/themes/soria/images/preciseSliderThumbFocus.gif b/lib/dijit/themes/soria/images/preciseSliderThumbFocus.gif
new file mode 100644 (file)
index 0000000..8c6f92e
Binary files /dev/null and b/lib/dijit/themes/soria/images/preciseSliderThumbFocus.gif differ
diff --git a/lib/dijit/themes/soria/images/preciseSliderThumbFocus.png b/lib/dijit/themes/soria/images/preciseSliderThumbFocus.png
new file mode 100644 (file)
index 0000000..c235849
Binary files /dev/null and b/lib/dijit/themes/soria/images/preciseSliderThumbFocus.png differ
diff --git a/lib/dijit/themes/soria/images/progressBarAnim.gif b/lib/dijit/themes/soria/images/progressBarAnim.gif
new file mode 100644 (file)
index 0000000..73e25e1
Binary files /dev/null and b/lib/dijit/themes/soria/images/progressBarAnim.gif differ
diff --git a/lib/dijit/themes/soria/images/progressBarEmpty.png b/lib/dijit/themes/soria/images/progressBarEmpty.png
new file mode 100644 (file)
index 0000000..04d81df
Binary files /dev/null and b/lib/dijit/themes/soria/images/progressBarEmpty.png differ
diff --git a/lib/dijit/themes/soria/images/progressBarFull.png b/lib/dijit/themes/soria/images/progressBarFull.png
new file mode 100644 (file)
index 0000000..bed17b3
Binary files /dev/null and b/lib/dijit/themes/soria/images/progressBarFull.png differ
diff --git a/lib/dijit/themes/soria/images/sliderEmpty.png b/lib/dijit/themes/soria/images/sliderEmpty.png
new file mode 100644 (file)
index 0000000..99fbd72
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderEmpty.png differ
diff --git a/lib/dijit/themes/soria/images/sliderEmptyVertical.png b/lib/dijit/themes/soria/images/sliderEmptyVertical.png
new file mode 100644 (file)
index 0000000..2d497e3
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderEmptyVertical.png differ
diff --git a/lib/dijit/themes/soria/images/sliderFull.png b/lib/dijit/themes/soria/images/sliderFull.png
new file mode 100644 (file)
index 0000000..171eb54
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderFull.png differ
diff --git a/lib/dijit/themes/soria/images/sliderFullFocus.png b/lib/dijit/themes/soria/images/sliderFullFocus.png
new file mode 100644 (file)
index 0000000..0956a72
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderFullFocus.png differ
diff --git a/lib/dijit/themes/soria/images/sliderFullVertical.png b/lib/dijit/themes/soria/images/sliderFullVertical.png
new file mode 100644 (file)
index 0000000..35845da
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderFullVertical.png differ
diff --git a/lib/dijit/themes/soria/images/sliderFullVerticalFocus.png b/lib/dijit/themes/soria/images/sliderFullVerticalFocus.png
new file mode 100644 (file)
index 0000000..9b158bb
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderFullVerticalFocus.png differ
diff --git a/lib/dijit/themes/soria/images/sliderThumb.gif b/lib/dijit/themes/soria/images/sliderThumb.gif
new file mode 100644 (file)
index 0000000..29899a4
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderThumb.gif differ
diff --git a/lib/dijit/themes/soria/images/sliderThumb.png b/lib/dijit/themes/soria/images/sliderThumb.png
new file mode 100644 (file)
index 0000000..b6abbd2
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderThumb.png differ
diff --git a/lib/dijit/themes/soria/images/sliderThumbFocus.gif b/lib/dijit/themes/soria/images/sliderThumbFocus.gif
new file mode 100644 (file)
index 0000000..f8d306f
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderThumbFocus.gif differ
diff --git a/lib/dijit/themes/soria/images/sliderThumbFocus.png b/lib/dijit/themes/soria/images/sliderThumbFocus.png
new file mode 100644 (file)
index 0000000..73ee705
Binary files /dev/null and b/lib/dijit/themes/soria/images/sliderThumbFocus.png differ
diff --git a/lib/dijit/themes/soria/images/splitContainerSizerH-thumb.png b/lib/dijit/themes/soria/images/splitContainerSizerH-thumb.png
new file mode 100644 (file)
index 0000000..0e8f397
Binary files /dev/null and b/lib/dijit/themes/soria/images/splitContainerSizerH-thumb.png differ
diff --git a/lib/dijit/themes/soria/images/splitContainerSizerH.png b/lib/dijit/themes/soria/images/splitContainerSizerH.png
new file mode 100644 (file)
index 0000000..7cdf79a
Binary files /dev/null and b/lib/dijit/themes/soria/images/splitContainerSizerH.png differ
diff --git a/lib/dijit/themes/soria/images/splitContainerSizerV-thumb.png b/lib/dijit/themes/soria/images/splitContainerSizerV-thumb.png
new file mode 100644 (file)
index 0000000..7f12fed
Binary files /dev/null and b/lib/dijit/themes/soria/images/splitContainerSizerV-thumb.png differ
diff --git a/lib/dijit/themes/soria/images/splitContainerSizerV.png b/lib/dijit/themes/soria/images/splitContainerSizerV.png
new file mode 100644 (file)
index 0000000..9ff14d6
Binary files /dev/null and b/lib/dijit/themes/soria/images/splitContainerSizerV.png differ
diff --git a/lib/dijit/themes/soria/images/spriteArrows.gif b/lib/dijit/themes/soria/images/spriteArrows.gif
new file mode 100644 (file)
index 0000000..fc81207
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteArrows.gif differ
diff --git a/lib/dijit/themes/soria/images/spriteArrows.png b/lib/dijit/themes/soria/images/spriteArrows.png
new file mode 100644 (file)
index 0000000..73aa700
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteArrows.png differ
diff --git a/lib/dijit/themes/soria/images/spriteCheckbox.gif b/lib/dijit/themes/soria/images/spriteCheckbox.gif
new file mode 100644 (file)
index 0000000..d2c4ebf
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteCheckbox.gif differ
diff --git a/lib/dijit/themes/soria/images/spriteCheckbox.png b/lib/dijit/themes/soria/images/spriteCheckbox.png
new file mode 100644 (file)
index 0000000..e992330
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteCheckbox.png differ
diff --git a/lib/dijit/themes/soria/images/spriteDivIcons.gif b/lib/dijit/themes/soria/images/spriteDivIcons.gif
new file mode 100644 (file)
index 0000000..f5c58e4
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteDivIcons.gif differ
diff --git a/lib/dijit/themes/soria/images/spriteDivIcons.png b/lib/dijit/themes/soria/images/spriteDivIcons.png
new file mode 100644 (file)
index 0000000..d76325f
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteDivIcons.png differ
diff --git a/lib/dijit/themes/soria/images/spriteRadio.gif b/lib/dijit/themes/soria/images/spriteRadio.gif
new file mode 100644 (file)
index 0000000..8dd6e57
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteRadio.gif differ
diff --git a/lib/dijit/themes/soria/images/spriteRadio.png b/lib/dijit/themes/soria/images/spriteRadio.png
new file mode 100644 (file)
index 0000000..14c1080
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteRadio.png differ
diff --git a/lib/dijit/themes/soria/images/spriteRoundedIconsSmall.gif b/lib/dijit/themes/soria/images/spriteRoundedIconsSmall.gif
new file mode 100644 (file)
index 0000000..795ea84
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteRoundedIconsSmall.gif differ
diff --git a/lib/dijit/themes/soria/images/spriteRoundedIconsSmall.png b/lib/dijit/themes/soria/images/spriteRoundedIconsSmall.png
new file mode 100644 (file)
index 0000000..10c0d13
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteRoundedIconsSmall.png differ
diff --git a/lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif b/lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif
new file mode 100644 (file)
index 0000000..6758181
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif differ
diff --git a/lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png b/lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png
new file mode 100644 (file)
index 0000000..2c9f51a
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png differ
diff --git a/lib/dijit/themes/soria/images/spriteTree.gif b/lib/dijit/themes/soria/images/spriteTree.gif
new file mode 100644 (file)
index 0000000..e546e28
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteTree.gif differ
diff --git a/lib/dijit/themes/soria/images/spriteTree.png b/lib/dijit/themes/soria/images/spriteTree.png
new file mode 100644 (file)
index 0000000..33ae07b
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteTree.png differ
diff --git a/lib/dijit/themes/soria/images/spriteTree_rtl.gif b/lib/dijit/themes/soria/images/spriteTree_rtl.gif
new file mode 100644 (file)
index 0000000..bbcc64b
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteTree_rtl.gif differ
diff --git a/lib/dijit/themes/soria/images/spriteTree_rtl.png b/lib/dijit/themes/soria/images/spriteTree_rtl.png
new file mode 100644 (file)
index 0000000..b06afdb
Binary files /dev/null and b/lib/dijit/themes/soria/images/spriteTree_rtl.png differ
diff --git a/lib/dijit/themes/soria/images/tabBottomActiveC.gif b/lib/dijit/themes/soria/images/tabBottomActiveC.gif
new file mode 100644 (file)
index 0000000..fb61df9
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabBottomActiveC.gif differ
diff --git a/lib/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif b/lib/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif
new file mode 100644 (file)
index 0000000..7c2ed86
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabBottomActiveSpriteLR.gif differ
diff --git a/lib/dijit/themes/soria/images/tabBottomEnabledC.gif b/lib/dijit/themes/soria/images/tabBottomEnabledC.gif
new file mode 100644 (file)
index 0000000..0a5f0f8
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabBottomEnabledC.gif differ
diff --git a/lib/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif b/lib/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif
new file mode 100644 (file)
index 0000000..a77da39
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif differ
diff --git a/lib/dijit/themes/soria/images/tabBottomHoverC.gif b/lib/dijit/themes/soria/images/tabBottomHoverC.gif
new file mode 100644 (file)
index 0000000..47b9da2
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabBottomHoverC.gif differ
diff --git a/lib/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif b/lib/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif
new file mode 100644 (file)
index 0000000..59f3edd
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabBottomHoverSpriteLR.gif differ
diff --git a/lib/dijit/themes/soria/images/tabContainerSprite.gif b/lib/dijit/themes/soria/images/tabContainerSprite.gif
new file mode 100644 (file)
index 0000000..f0b3842
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabContainerSprite.gif differ
diff --git a/lib/dijit/themes/soria/images/tabLeftChecked.gif b/lib/dijit/themes/soria/images/tabLeftChecked.gif
new file mode 100644 (file)
index 0000000..3e7475a
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabLeftChecked.gif differ
diff --git a/lib/dijit/themes/soria/images/tabRightChecked.gif b/lib/dijit/themes/soria/images/tabRightChecked.gif
new file mode 100644 (file)
index 0000000..ec4b659
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabRightChecked.gif differ
diff --git a/lib/dijit/themes/soria/images/tabStripe.gif b/lib/dijit/themes/soria/images/tabStripe.gif
new file mode 100644 (file)
index 0000000..51a2d40
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabStripe.gif differ
diff --git a/lib/dijit/themes/soria/images/tabStripeBottom.gif b/lib/dijit/themes/soria/images/tabStripeBottom.gif
new file mode 100644 (file)
index 0000000..41b1ac0
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabStripeBottom.gif differ
diff --git a/lib/dijit/themes/soria/images/tabStripeLeft.gif b/lib/dijit/themes/soria/images/tabStripeLeft.gif
new file mode 100644 (file)
index 0000000..b2214fa
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabStripeLeft.gif differ
diff --git a/lib/dijit/themes/soria/images/tabStripeRight.gif b/lib/dijit/themes/soria/images/tabStripeRight.gif
new file mode 100644 (file)
index 0000000..bff3115
Binary files /dev/null and b/lib/dijit/themes/soria/images/tabStripeRight.gif differ
diff --git a/lib/dijit/themes/soria/images/titleBar.png b/lib/dijit/themes/soria/images/titleBar.png
new file mode 100644 (file)
index 0000000..93c4146
Binary files /dev/null and b/lib/dijit/themes/soria/images/titleBar.png differ
diff --git a/lib/dijit/themes/soria/images/titleBarActive.png b/lib/dijit/themes/soria/images/titleBarActive.png
new file mode 100644 (file)
index 0000000..fb8a2e6
Binary files /dev/null and b/lib/dijit/themes/soria/images/titleBarActive.png differ
diff --git a/lib/dijit/themes/soria/images/tooltipConnectorDown.gif b/lib/dijit/themes/soria/images/tooltipConnectorDown.gif
new file mode 100644 (file)
index 0000000..9c38495
Binary files /dev/null and b/lib/dijit/themes/soria/images/tooltipConnectorDown.gif differ
diff --git a/lib/dijit/themes/soria/images/tooltipConnectorDown.png b/lib/dijit/themes/soria/images/tooltipConnectorDown.png
new file mode 100644 (file)
index 0000000..d75af71
Binary files /dev/null and b/lib/dijit/themes/soria/images/tooltipConnectorDown.png differ
diff --git a/lib/dijit/themes/soria/images/tooltipConnectorLeft.gif b/lib/dijit/themes/soria/images/tooltipConnectorLeft.gif
new file mode 100644 (file)
index 0000000..fc947e0
Binary files /dev/null and b/lib/dijit/themes/soria/images/tooltipConnectorLeft.gif differ
diff --git a/lib/dijit/themes/soria/images/tooltipConnectorLeft.png b/lib/dijit/themes/soria/images/tooltipConnectorLeft.png
new file mode 100644 (file)
index 0000000..f3de66a
Binary files /dev/null and b/lib/dijit/themes/soria/images/tooltipConnectorLeft.png differ
diff --git a/lib/dijit/themes/soria/images/tooltipConnectorRight.gif b/lib/dijit/themes/soria/images/tooltipConnectorRight.gif
new file mode 100644 (file)
index 0000000..b0e8097
Binary files /dev/null and b/lib/dijit/themes/soria/images/tooltipConnectorRight.gif differ
diff --git a/lib/dijit/themes/soria/images/tooltipConnectorRight.png b/lib/dijit/themes/soria/images/tooltipConnectorRight.png
new file mode 100644 (file)
index 0000000..64190ee
Binary files /dev/null and b/lib/dijit/themes/soria/images/tooltipConnectorRight.png differ
diff --git a/lib/dijit/themes/soria/images/tooltipConnectorUp.gif b/lib/dijit/themes/soria/images/tooltipConnectorUp.gif
new file mode 100644 (file)
index 0000000..54bcf65
Binary files /dev/null and b/lib/dijit/themes/soria/images/tooltipConnectorUp.gif differ
diff --git a/lib/dijit/themes/soria/images/tooltipConnectorUp.png b/lib/dijit/themes/soria/images/tooltipConnectorUp.png
new file mode 100644 (file)
index 0000000..7f7a5d8
Binary files /dev/null and b/lib/dijit/themes/soria/images/tooltipConnectorUp.png differ
diff --git a/lib/dijit/themes/soria/images/treeExpand_loading.gif b/lib/dijit/themes/soria/images/treeExpand_loading.gif
new file mode 100644 (file)
index 0000000..db9ddd0
Binary files /dev/null and b/lib/dijit/themes/soria/images/treeExpand_loading.gif differ
diff --git a/lib/dijit/themes/soria/images/treeHover.png b/lib/dijit/themes/soria/images/treeHover.png
new file mode 100644 (file)
index 0000000..cd6d28b
Binary files /dev/null and b/lib/dijit/themes/soria/images/treeHover.png differ
diff --git a/lib/dijit/themes/soria/images/treeI.gif b/lib/dijit/themes/soria/images/treeI.gif
new file mode 100644 (file)
index 0000000..6f669e2
Binary files /dev/null and b/lib/dijit/themes/soria/images/treeI.gif differ
diff --git a/lib/dijit/themes/soria/images/treeI_half.gif b/lib/dijit/themes/soria/images/treeI_half.gif
new file mode 100644 (file)
index 0000000..e5fd015
Binary files /dev/null and b/lib/dijit/themes/soria/images/treeI_half.gif differ
diff --git a/lib/dijit/themes/soria/images/treeI_half_rtl.gif b/lib/dijit/themes/soria/images/treeI_half_rtl.gif
new file mode 100644 (file)
index 0000000..44ad021
Binary files /dev/null and b/lib/dijit/themes/soria/images/treeI_half_rtl.gif differ
diff --git a/lib/dijit/themes/soria/images/treeI_rtl.gif b/lib/dijit/themes/soria/images/treeI_rtl.gif
new file mode 100644 (file)
index 0000000..0d32a2f
Binary files /dev/null and b/lib/dijit/themes/soria/images/treeI_rtl.gif differ
diff --git a/lib/dijit/themes/soria/images/validationInputBg.gif b/lib/dijit/themes/soria/images/validationInputBg.gif
new file mode 100644 (file)
index 0000000..c28475c
Binary files /dev/null and b/lib/dijit/themes/soria/images/validationInputBg.gif differ
diff --git a/lib/dijit/themes/soria/images/validationInputBg.png b/lib/dijit/themes/soria/images/validationInputBg.png
new file mode 100644 (file)
index 0000000..f3039f9
Binary files /dev/null and b/lib/dijit/themes/soria/images/validationInputBg.png differ
diff --git a/lib/dijit/themes/soria/images/warning.png b/lib/dijit/themes/soria/images/warning.png
new file mode 100644 (file)
index 0000000..c52f83d
Binary files /dev/null and b/lib/dijit/themes/soria/images/warning.png differ
diff --git a/lib/dijit/themes/soria/layout/AccordionContainer.css b/lib/dijit/themes/soria/layout/AccordionContainer.css
new file mode 100644 (file)
index 0000000..b65187f
--- /dev/null
@@ -0,0 +1,35 @@
+
+.soria .dijitAccordionContainer {
+       border-color: #b1badf;
+       background-color: #fff;
+}
+.soria .dijitAccordionTitle {
+       background:#fafafa url("../images/titleBar.png") repeat-x top left;
+       border-top: 1px solid #b9bbdd;
+       padding: 5px 4px 6px 8px;
+       font-size: 0.9em;
+       font-weight: bold;
+       color: #373941;
+}
+.soria .dijitAccordionTitleSelected  {
+       background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x;
+       font-weight: bold;
+       border-top: 1px solid #b9bbdd;
+       border-bottom: 1px solid #b9bbdd;
+       padding: 5px 4px 5px 8px;
+       color: #243C5F;
+}
+.soria .dijitAccordionArrow {
+       background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -30px top;
+       width:15px;
+       height:15px;
+       margin-top:-1px;
+}
+.soria .dijitAccordionTitleSelected .dijitAccordionArrow {
+       background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -15px top;
+       margin-top:-1px;
+}
+.soria .dijitAccordionText {
+       margin-left: 4px;
+       margin-right: 4px;
+}
diff --git a/lib/dijit/themes/soria/layout/AccordionContainer_rtl.css b/lib/dijit/themes/soria/layout/AccordionContainer_rtl.css
new file mode 100644 (file)
index 0000000..c9f07e0
--- /dev/null
@@ -0,0 +1,7 @@
+.dijitRtl .soria .dijitAccordionArrow {
+       background-position: 0px top;
+}
+.dijitRtl .soria .dijitAccordionTitleSelected .dijitAccordionArrow {
+       
+       background-position: -15px top;
+}
diff --git a/lib/dijit/themes/soria/layout/BorderContainer.css b/lib/dijit/themes/soria/layout/BorderContainer.css
new file mode 100644 (file)
index 0000000..aec147a
--- /dev/null
@@ -0,0 +1,59 @@
+
+.soria .dijitBorderContainer {
+       background-color: #e1ebfb;
+       padding: 5px;
+}
+.soria .dijitSplitContainer-child,
+.soria .dijitBorderContainer-child {
+       
+       border: 1px #b1badf solid;
+}
+.soria .dijitBorderContainer-dijitTabContainerTop,
+.soria .dijitBorderContainer-dijitTabContainerBottom,
+.soria .dijitBorderContainer-dijitTabContainerLeft,
+.soria .dijitBorderContainer-dijitTabContainerRight {
+       
+        border: none;
+}
+.soria .dijitBorderContainer-dijitBorderContainer {
+       
+       border: none;
+       padding: 0px;
+}
+.soria .dijitSplitterH,
+.soria .dijitGutterH {
+       background: #E1EBFB;
+       border:0;
+       border-left:0px solid #d3d3d3;
+       border-right:0px solid #d3d3d3;
+       height:5px;
+}
+.soria .dijitSplitterH .dijitSplitterThumb {
+       background:#B0B0B0 none;
+       height:1px;
+       top:2px;
+       width:19px;
+}
+.soria .dijitSplitterV,
+.soria .dijitGutterV {
+       background: #E1EBFB;
+       border:0;
+       border-top:0px solid #d3d3d3;
+       border-bottom:0px solid #d3d3d3;
+       width:5px;
+}
+.soria .dijitSplitterV .dijitSplitterThumb {
+       background:#B0B0B0 none;
+       height:19px;
+       left:2px;
+       width:1px;
+}
+.soria .dijitSplitterActive {
+       font-size: 1px;
+       background-image: none;
+       background-color: #aaa;
+       -moz-opacity: 0.6;
+       opacity: 0.6;
+       filter: Alpha(Opacity=60);
+       margin: 0;
+}
diff --git a/lib/dijit/themes/soria/layout/ContentPane.css b/lib/dijit/themes/soria/layout/ContentPane.css
new file mode 100644 (file)
index 0000000..9308d50
--- /dev/null
@@ -0,0 +1,17 @@
+
+.soria .dijitContentPane {
+    padding: 0px;
+}
+.soria .dijitTabContainerTop-dijitContentPane,
+.soria .dijitTabContainerLeft-dijitContentPane,
+.soria .dijitTabContainerBottom-dijitContentPane,
+.soria .dijitTabContainerRight-dijitContentPane,
+.soria .dijitAccordionContainer-dijitContentPane {
+    background-color: #fff;
+    padding: 5px;
+}
+.soria .dijitSplitContainer-dijitContentPane,
+.soria .dijitBorderContainer-dijitContentPane {
+    background-color: #fff;            
+    padding: 5px;
+}
diff --git a/lib/dijit/themes/soria/layout/SplitContainer.css b/lib/dijit/themes/soria/layout/SplitContainer.css
new file mode 100644 (file)
index 0000000..87f0657
--- /dev/null
@@ -0,0 +1,27 @@
+
+.soria .dijitSplitContainerSizerH {
+       background:url("../images/splitContainerSizerV.png") repeat-y #cddef4;
+       border:0;
+       border-left:0px solid #436496;
+       border-right:0px solid #436496;
+       width:5px;
+}
+.soria .dijitSplitContainerSizerH .thumb {
+       background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc;
+       left:1px;
+       width:2px;
+       height:19px;
+}
+.soria .dijitSplitContainerSizerV {
+       background:url("../images/splitContainerSizerH.png") repeat-x #cddef4;
+       border:0;
+       border-top:0px solid #436496;
+       border-bottom:0px solid #436496;
+       height:2px;
+}
+.soria .dijitSplitContainerSizerV .thumb {
+       background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc;
+       top:1px;
+       width:19px;
+       height:5px;
+}
diff --git a/lib/dijit/themes/soria/layout/TabContainer.css b/lib/dijit/themes/soria/layout/TabContainer.css
new file mode 100644 (file)
index 0000000..0cf156d
--- /dev/null
@@ -0,0 +1,372 @@
+
+ .soria .dijitTabContainer .tabStripRBtn {
+       margin-right: 21px;
+}
+ .soria .dijitTabContainer .tabStripLBtn {
+       margin-left: 21px;
+}
+ .soria .nowrapTabStrip .dijitTab {
+       top: 2px;
+}
+ .soria .dijitTabContainerBottom-tabs .dijitTab {
+       top: -1px;
+       bottom: 2px;
+}
+.soria .dijitTabPaneWrapper {
+       background:#fff;
+       border:1px solid #B1BADF;
+       margin: 0;
+       padding-left: 0px;
+}
+.soria .dijitTabInnerDiv {
+       padding:0px 3px 0px 0px;
+       margin: 0 0 0 4px;
+       background: url("../images/tabContainerSprite.gif") no-repeat;
+       background-position: right -400px;
+}
+.soria .dijitTab {
+       line-height:normal;
+       margin:0 2px 0 0;       
+       padding:0px;
+       background: url("../images/tabContainerSprite.gif") no-repeat 0 -300px;
+       color: #243C5F;
+       border-bottom: 1px #B1BADF solid;
+}
+.soria .dijitTabInnerDiv .dijitTabContent {
+       padding:4px 3px 2px 4px;
+       background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px;
+       position: relative;
+}
+.soria .dijitTabListWrapper {
+       z-index: 10;
+}
+.soria .dijitTabHover {
+       color: #243C5F;
+       background: url("../images/tabContainerSprite.gif") no-repeat 0px -150px;
+}
+.soria .dijitTabHover .dijitTabInnerDiv {
+       background: url("../images/tabContainerSprite.gif") no-repeat right -250px;
+}
+.soria .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
+       background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px;
+}
+.soria .dijitTabChecked
+{
+       
+       background: url("../images/tabContainerSprite.gif") no-repeat 0px -0px;
+}
+.soria .dijitTabChecked .dijitTabInnerDiv {
+       background: url("../images/tabContainerSprite.gif") no-repeat right -100px;
+}
+.soria .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+       background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px;
+       color: #243C5F !important;
+}
+.soria .dijitTabContainerTabListNested {
+       background: #F0F4FC;
+       background: #D9E9F9;
+       border: none;
+}
+.soria .dijitTabContainerTabListNested .dijitTab {
+       background: none;
+       border: none;
+       top: 0px;       
+}
+.soria .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv,
+.soria .dijitTabContainerTabListNested .dijitTab .dijitTabContent {
+       background: none;
+}
+.soria .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel {
+       text-decoration: underline;
+}
+.soria .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {
+       text-decoration: underline;
+       font-weight: bold;
+}
+.soria .dijitTabContainerSpacerNested .dijitTabSpacer {
+       
+       height: 0px;
+}
+.soria .dijitTabPaneWrapperNested {
+       border: none;   
+}
+.soria .dijitTabCloseButton {
+       width: 15px;
+       height: 15px;
+       background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top;
+       margin-top: -1px;
+}
+.dj_ie6 .soria .dijitTabCloseButton {
+       background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top;
+}
+.soria .dijitTabCloseButtonHover {
+       background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px -15px;
+}
+.dj_ie6 .soria .dijitTabCloseButtonHover {
+       background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px;
+}
+.soria .dijitTab .tabLabel {
+       
+       min-height: 15px;
+       display: inline-block;
+}
+.dj_ie6 .soria .dijitTabButtonIcon {
+       
+       height: 18px;
+       width: 1px;
+}
+.soria .dijitTabContainerTop-tabs {
+       border-color: #B1BADF;
+       padding-left: 3px;
+}
+.soria .dijitTabContainerTopNoStrip {
+       padding-top: 3px;
+}
+.soria .dijitTabContainerTop-container {
+       border-top: none;
+}
+.soria .dijitTabContainerTop .dijitTabListWrapper {
+       border-bottom: none;
+}
+.soria .dijitTabContainerTop-tabs .dijitTab {
+       top: 1px;
+}
+.soria .dijitTabContainerTop-tabs .dijitTabChecked {
+       border-bottom-color: #94b4e6;
+}
+.soria .dijitTabContainerTopStrip {
+       border: 1px solid #B1BADF;
+       margin-top: 1px;
+       padding-top: 1px;
+       background: #F0F4FC;
+}
+.soria .dijitTabContainerTopStrip .dijitTabContainerTop-tabs {
+       padding-left: 3px;
+}
+.soria .dijitTabContainerNested .dijitTabListWrapper {
+       height: auto;
+}
+.soria .dijitTabContainerBottom-tabs {
+       margin-top: -1px;
+       padding-left: 3px;
+       border-top: 1px solid #B1BADF;
+}
+.soria .dijitTabContainerBottom .dijitTabListWrapper {
+       border-top: none;
+       padding-top: 1px;
+       padding-bottom: 1px;
+       float: left;
+}
+.soria .dijitTabContainerBottom-container {
+       border-bottom: none;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTab {
+       border-bottom: none;
+       border-top: 1px solid #B1BADF;
+       background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabChecked {
+       border-top-color:#94b4e6;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent {
+       padding-top: 3px;
+       padding-bottom: 3px;
+       background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv {
+       background: url("../images/tabBottomEnabledSpriteLR.gif") no-repeat bottom right;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabHover {
+       color: #243C5F;
+       background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv {
+       background: url("../images/tabBottomHoverSpriteLR.gif") no-repeat bottom right;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
+       background: url("../images/tabBottomHoverC.gif") repeat-x bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabChecked {
+       
+       background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background: url("../images/tabBottomActiveSpriteLR.gif") no-repeat bottom right;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+       background: url("../images/tabBottomActiveC.gif") repeat-x bottom left;
+}
+.soria .dijitTabContainerBottomStrip {
+       padding-bottom: 2px;
+       border: 1px solid #B1BADF;
+}
+.soria .dijitTabContainerBottomStrip {
+       background: #F0F4FC;
+}
+.soria .dijitTabContainerBottom-spacer,
+.soria .dijitTabContainerTop-spacer {
+       height: 2px;
+       border: 1px solid #8ba0bd;
+       background: #94b4e6;
+}
+.soria .dijitTabContainerTop-spacer {
+       border-top: none;
+}
+.soria .dijitTabContainerBottom-spacer {
+       border-bottom: none;
+}
+.soria .dijitTabContainerRight-tabs {
+       height: 100%;
+       border-color: #ccc;
+       padding-top: 3px;
+}
+.soria .dijitTabContainerRight-container {
+       border-right: none;
+}
+.soria .dijitTabContainerRight-tabs .dijitTab {
+       border-bottom: none;
+       border-left: 1px solid #B1BADF;
+       border-bottom: 1px solid #B1BADF !important;
+}
+.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabInnerDiv {
+       border-bottom: solid #B1BADF 1px;
+       margin-bottom: -1px;
+}
+.soria .dijitTabContainerRight-tabs .dijitTabChecked {
+       border-left-color: #94b4e6;
+}
+.soria .dijitTabContainerRight-tabs .dijitTabChecked {
+       background: url("../images/tabRightChecked.gif") no-repeat left top !important;
+}
+.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       border-bottom: solid #94b4e6 1px;
+       margin-bottom: -1px;
+}
+.soria .dijitTabContainerRight-tabs .dijitTab {
+       background: url("../images/tabContainerSprite.gif") no-repeat left -350px;
+}
+.soria .dijitTabContainerRight-tabs .dijitTabHover .dijitTab {
+       background: url("../images/tabContainerSprite.gif") no-repeat left -200px;
+}
+.soria .dijitTabContainerRightStrip {
+       padding-right: 2px;
+       border: 1px solid #B1BADF;
+       background: #F0F4FC;
+       border-left: none;
+}
+.soria .dijitTabContainerLeft-tabs {
+       border-color: #ccc;
+       padding-top: 3px;
+       height: 100%;
+}
+.soria .dijitTabContainerLeft-container {
+       border-left: none;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTab {
+       border-right: 1px solid #B1BADF;
+       border-bottom: 1px solid #B1BADF;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTabChecked {
+       border-right: 1px solid #94b4e6;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       background: url("../images/tabContainerSprite.gif") no-repeat right -350px;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv {
+       background: url("../images/tabContainerSprite.gif") no-repeat right -200px;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       background: url("../images/tabLeftChecked.gif") no-repeat right top;
+}
+.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       border-bottom: solid #B1BADF 1px;
+       margin-bottom: -1px;
+}
+.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       border-bottom: solid #94b4e6 1px;
+       margin-bottom: -1px;
+}
+.soria .dijitTabContainerLeftStrip {
+       padding-left: 2px;
+       border: 1px solid #B1BADF;
+       background: #F0F4FC;
+       border-right: none;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTab,
+.soria .dijitTabContainerRight-tabs .dijitTab {
+       margin-right:auto;
+       margin-bottom:2px;      
+}
+.soria .dijitTabContainerLeft-spacer,
+.soria .dijitTabContainerRight-spacer {
+       width: 2px;
+       border: 1px solid #8ba0bd;
+       background: #94b4e6;
+}
+.soria .dijitTabContainerLeft-spacer {
+       border-left: none;
+}
+.soria .dijitTabContainerRight-spacer {
+       border-right: none;
+}
+.soria .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {
+       border-left: 0px solid #ccc;
+       border-top: 0px solid #ccc;
+       border-right: 0px solid #ccc;
+       padding-top: 0px;
+       padding-left: 0px;
+}
+.soria .dijitTabContainer .tabStripButton {
+       margin-right: 0;
+}
+.soria .dijitTabContainer .tabStripButton-top {
+       margin-top: 1px;
+}
+.soria .tabStripButton .dijitTabContent{
+       padding: 6px 0 5px 0;
+}
+.dj_ie6 .soria .tabStripButton .dijitTabContent,
+.dj_ie7 .soria .tabStripButton .dijitTabContent {
+       padding-top: 7px;
+}
+.soria .tabStrip-disabled .tabStripButton .dijitTabContent {
+       padding: 5px 0 3px 0;
+}
+.dj_ie6 .soria .tabStrip-disabled .tabStripButton .dijitTabContent,
+.dj_ie7 .soria .tabStrip-disabled .tabStripButton .dijitTabContent {
+       padding-top: 6px;
+}
+.soria .dijitTabContainer .tabStripButton-bottom {
+       background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll left bottom;
+       border-bottom: medium none;
+       border-top: 1px solid #B1BADF;
+}
+.soria .dijitTabContainer .tabStripButton-bottom .dijitTabInnerDiv {
+       background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom;
+}
+.soria .dijitTabContainer .tabStripButton-bottom .dijitTabContent {
+       background: transparent;
+}
+.soria .dijitTabStripIcon {
+       height: 14px;
+       width: 14px;
+       background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top ;
+}
+.dj_ie6 .soria .dijitTabStripIcon {
+       background-image: url(../images/spriteRoundedIconsSmall.gif);
+}
+.soria .dijitTabStripSlideRightIcon {
+       background-position: -30px top;
+}
+.soria .dijitTabStripMenuIcon {
+       background-position: -15px top;
+}
diff --git a/lib/dijit/themes/soria/layout/TabContainer_rtl.css b/lib/dijit/themes/soria/layout/TabContainer_rtl.css
new file mode 100644 (file)
index 0000000..8638498
--- /dev/null
@@ -0,0 +1,34 @@
+.dijitRtl .soria .dijitTab {
+       margin-right:0;
+       margin-left:2px;                
+}
+.dijitRtl .soria .dijitTabContainer .tabStripButton {
+       margin-left: 0;
+}
+.dijitRtl .soria .dijitTabContainerTopStrip,
+.dijitRtl .soria .dijitTabContainerBottomStrip,
+.dijitRtl .soria .dijitTabContainerTop-tabs,
+.dijitRtl .soria .dijitTabContainerBottom-tabs {
+       padding-left: 0;
+       padding-right: 3px;
+}
+.dijitRtl .soria .dijitTabInnerDiv {
+       padding-left: 3px;
+       padding-right: 4px;
+}
+.dijitRtl .soria .dijitTabPaneWrapper {
+       #zoom: 1;
+}
+.dj_ie-rtl .soria .dijitTabContainerLeft-tabs {
+       margin-left: 0px !important;
+}
+.dj_ie-rtl .soria .dijitTabContainerRight-tabs {
+       margin-right: 0px !important;
+}
+.dijitRtl .soria .dijitTabContainerLeft-tabs .dijitTab,
+.dijitRtl .soria .dijitTabContainerRight-tabs .dijitTab {
+       margin-left:0px;
+}
+.dj_ie-rtl .soria .dijitTab .dijitTabInnerDiv{
+       width : 1%;
+}
diff --git a/lib/dijit/themes/soria/soria.css b/lib/dijit/themes/soria/soria.css
new file mode 100644 (file)
index 0000000..e7f4ac6
--- /dev/null
@@ -0,0 +1,3345 @@
+
+.dijitReset {
+       
+       margin:0;
+       border:0;
+       padding:0;
+       line-height:normal;
+       font: inherit;
+       color: inherit;
+}
+.dijit_a11y .dijitReset {
+       -moz-appearance: none; 
+}
+.dijitInline {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+       border:0;
+       padding:0;
+       vertical-align:middle;
+       #vertical-align: auto;  
+}
+.dijitHidden {
+       
+       display: none !important;
+}
+.dijitVisible {
+       
+       display: block !important;      
+       position: relative;                     
+}
+.dijitInputContainer {
+       
+       #zoom: 1;
+       overflow: hidden;
+       float: none !important; 
+       position:relative;
+}
+.dj_ie INPUT.dijitTextBox,
+.dj_ie .dijitTextBox INPUT {
+       font-size: 100%;
+}
+.dijitTextBox .dijitSpinnerButtonContainer,
+.dijitTextBox .dijitArrowButtonContainer,
+.dijitTextBox .dijitValidationContainer {
+       float: right;
+       text-align: center;
+}
+.dijitTextBox INPUT.dijitInputField {
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+}
+.dijitTextBox .dijitValidationContainer {
+       display: none;
+}
+.dijitInlineTable {
+       
+       display:inline-table;
+       display:inline-block;           
+       #zoom: 1; 
+       #display:inline; 
+       box-sizing: content-box; -moz-box-sizing: content-box;
+       border:0;
+       padding:0;
+}
+.dijitTeeny {
+       font-size:1px;
+       line-height:1px;
+}
+.dijitOffScreen {
+       position: absolute;
+       visibility: hidden;
+       left: 50%;
+       top: -10000px;
+}
+.dijitPopup {
+       position: absolute;
+       background-color: transparent;
+       margin: 0;
+       border: 0;
+       padding: 0;
+}
+.dijit_a11y .dijitPopup,
+.dijit_ally .dijitPopup DIV,
+.dijit_a11y .dijitPopup TABLE,
+.dijit_a11y .dijitTooltipContainer {
+       background-color: white !important;
+}
+.dijitPositionOnly {
+       
+       padding: 0 !important;
+       border: 0 !important;
+       background-color: transparent !important;
+       background-image: none !important;
+       height: auto !important;
+       width: auto !important;
+}
+.dijitNonPositionOnly {
+       
+       float: none !important;
+       position: static !important;
+       margin: 0 0 0 0 !important;
+       vertical-align: middle !important;
+}
+.dijitBackgroundIframe {
+       
+       position: absolute;
+       left: 0;
+       top: 0;
+       width: 100%;
+       height: 100%;
+       z-index: -1;
+       border: 0;
+       padding: 0;
+       margin: 0;
+}
+.dijitDisplayNone {
+       
+       display:none !important;
+}
+.dijitContainer {
+       
+       overflow: hidden;       
+}
+.dijit_a11y * {
+       background-image:none !important;
+}
+.dijit_a11y .dijitIcon,
+.dijit_a11y DIV.dijitArrowButtonInner, 
+.dijit_a11y SPAN.dijitArrowButtonInner,
+.dijit_a11y IMG.dijitArrowButtonInner,
+.dijit_a11y .dijitCalendarIncrementControl {
+       
+       display: none;
+}
+.dijitSpinner DIV.dijitArrowButtonInner {
+       display: block; 
+}
+.dijit_a11y .dijitA11ySideArrow {
+       display: inline !important; 
+       cursor: pointer;
+}
+.dijit_a11y .dijitCalendarDateLabel {
+       padding: 1px;
+}
+.dijit_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {
+       border-style: dotted !important;
+       border-width: 1px;
+       padding: 0px;
+}
+.dijit_a11y .dijitCalendarDateTemplate {
+       padding-bottom: 0.1em !important;       
+}
+.dijit_a11y .dijit * {
+       background:white !important;
+       color:black !important;
+}
+.dijit_a11y .dijitButtonNode {
+       border-color: black!important;
+       border-style: outset!important;
+       border-width: medium!important;
+}
+.dijit_a11y .dijitTextBoxReadOnly .dijitInputField,
+.dijit_a11y .dijitTextBoxReadOnly .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitButtonNode * {
+       vertical-align: middle;
+}
+.dijitButtonNode .dijitArrowButtonInner {
+       
+       background: no-repeat center;
+       width: 12px;
+       height: 12px;
+       direction: ltr; 
+}
+.dijitLeft {
+       
+       background-position:left top;
+       background-repeat:no-repeat;
+}
+.dijitStretch {
+       
+       white-space:nowrap;                     
+       background-repeat:repeat-x;
+}
+.dijitRight {
+       
+       #display:inline;                                
+       background-position:right top;
+       background-repeat:no-repeat;
+}
+.dijitToggleButton,
+.dijitButton,
+.dijitDropDownButton,
+.dijitComboButton {
+       
+       margin: 0.2em;
+}
+.dijitButtonContents {
+       display: block;         
+}
+td.dijitButtonContents {
+       display: table-cell;    
+}
+.dijitButtonNode IMG {
+       
+       vertical-align:middle;
+       
+}
+TABLE.dijitComboButton { 
+       
+       border-collapse: collapse;
+       border:0;
+       padding:0;
+       margin:0;
+}
+.dijitToolbar .dijitComboButton {
+       
+       border-collapse: separate;
+}
+.dijitToolbar .dijitToggleButton,
+.dijitToolbar .dijitButton,
+.dijitToolbar .dijitDropDownButton,
+.dijitToolbar .dijitComboButton {
+       margin: 0;
+}
+.dijitToolbar .dijitButtonContents {
+       
+       padding: 1px 2px;
+}
+.dj_ie .dijitComboButton {
+       
+       margin-bottom: -3px;
+}
+.dj_webkit .dijitToolbar .dijitDropDownButton {
+       padding-left: 0.3em;
+}
+.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {
+       padding:0;
+}
+.dijitButtonNode {
+       
+       border:1px solid gray;
+       margin:0;
+       line-height:normal;
+       vertical-align: middle;
+       #vertical-align: auto;
+       text-align:center;
+       white-space: nowrap;
+}
+.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {
+       
+       line-height:inherit;
+}
+.dijitTextBox .dijitButtonNode {
+       border-width: 0;
+}
+.dijitButtonNode,
+.dijitButtonNode * {
+       cursor: pointer;
+}
+.dj_ie .dijitButtonNode {
+       
+       zoom: 1;
+}
+.dj_ie .dijitButtonNode button {
+       
+       overflow: visible;
+}
+DIV.dijitArrowButton {
+       float: right;
+}
+.dijitTextBox {
+       border: solid black 1px;
+       #overflow: hidden; 
+       width: 15em;    
+       vertical-align: middle;
+       #vertical-align: auto;
+}
+.dijitTextBoxReadOnly,
+.dijitTextBoxDisabled {
+       color: gray;
+}
+.dj_webkit .dijitTextBoxDisabled INPUT {
+       color: #eee; 
+}
+.dj_webkit TEXTAREA.dijitTextAreaDisabled {
+       color: #333; 
+}
+.dj_gecko .dijitTextBoxReadOnly INPUT,
+.dj_gecko .dijitTextBoxDisabled INPUT {
+       -moz-user-input: none; 
+}
+.dijitPlaceHolder {
+       
+       color: #AAAAAA;
+       font-style: italic;
+       position: absolute;
+       top: 0;
+       left: 0;
+       #filter: ""; 
+}
+.dijitTimeTextBox {
+       width: 8em;
+}
+.dijitTextBox INPUT:focus {
+       outline: none;  
+}
+.dijitTextBoxFocused {
+       outline: auto 5px -webkit-focus-ring-color;
+}
+.dijitTextBox INPUT {
+       float: left; 
+}
+.dijitInputInner {
+       
+       border:0 !important;
+       vertical-align:middle !important;
+       background-color:transparent !important;
+       width:100% !important;
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+}
+.dijit_a11y .dijitTextBox INPUT {
+       margin: 0 !important;
+}
+.dijitTextBoxError INPUT.dijitValidationInner,
+.dijitTextBox INPUT.dijitArrowButtonInner {
+       
+       text-indent: -1em !important;
+       direction: ltr !important;
+       text-align: left !important;
+       height: auto !important;
+       #text-indent: 0 !important;
+       #letter-spacing: -5em !important;
+       #text-align: right !important;
+}
+.dj_ie .dijitTextBox INPUT,
+.dj_ie INPUT.dijitTextBox {
+       overflow-y: visible; 
+       line-height: normal; 
+}
+.dj_ie7 .dijitTextBox INPUT.dijitValidationInner,
+.dj_ie7 .dijitTextBox INPUT.dijitArrowButtonInner {
+       line-height: 86%; 
+}
+.dj_ie6 .dijitTextBox INPUT,
+.dj_ie6 INPUT.dijitTextBox,
+.dj_iequirks .dijitTextBox INPUT.dijitValidationInner,
+.dj_iequirks .dijitTextBox INPUT.dijitArrowButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitSpinnerButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitInputInner,
+.dj_iequirks INPUT.dijitTextBox {
+       line-height: 100%; 
+}
+.dijit_a11y INPUT.dijitValidationInner,
+.dijit_a11y INPUT.dijitArrowButtonInner {
+       
+       text-indent: 0 !important;
+       width: 1em !important;
+       #text-align: left !important;
+}
+.dijitTextBoxError .dijitValidationContainer {
+       display: inline;
+       cursor: default;
+}
+.dijitSpinner .dijitSpinnerButtonContainer,
+.dijitComboBox .dijitArrowButtonContainer {
+       
+       border-width: 0 0 0 1px !important; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       
+       border-width: 0;
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       clear: both; 
+}
+.dijit_a11y .dijitTextBox .dijitValidationContainer,
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBox .dijitArrowButtonContainer {
+       
+       border: solid black !important;
+       border-width: 0 0 0 1px !important;
+}
+.dj_ie .dijitToolbar .dijitComboBox {
+       
+       vertical-align: middle;
+}
+.dijitTextBox .dijitSpinnerButtonContainer {
+       width: 1em;
+       position: relative !important;
+       overflow: hidden;
+}
+.dijitSpinner .dijitSpinnerButtonInner {
+       width:1em;
+       visibility:hidden !important; 
+       overflow-x:hidden;
+}
+.dijitComboBox .dijitButtonNode,
+.dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 0;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border: 0 none !important;
+}
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner,
+.dijit_a11y .dijitSpinnerButtonContainer INPUT {
+       width: 1em !important;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner {
+       margin: 0 auto !important; 
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.3em !important;
+       padding-right: 0.3em !important;
+       margin-left: 0.3em !important;
+       margin-right: 0.3em !important;
+       width: 1.4em !important;
+}
+.dj_ie7 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.0em !important; 
+       padding-right: 0.0em !important;
+       width: 1em !important;
+}
+.dj_ie6 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0.1em !important;
+       margin-right: 0.1em !important;
+       width: 1em !important;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+       width: 2em !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       
+       padding: 0;
+       position: absolute !important;
+       right: 0;
+       float: none;
+       height: 50%;
+       width: 100%;
+       bottom: auto;
+       left: 0;
+       right: auto;
+}
+.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: auto;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitArrowButton {
+       overflow: visible !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {
+       top: 50%;
+       border-top-width: 1px !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {
+       #bottom: 50%;   
+       top: 0;
+}
+.dijitSpinner .dijitArrowButtonInner {
+       margin: auto;
+       overflow-x: hidden;
+       height: 100% !important;
+}
+.dj_iequirks .dijitSpinner .dijitArrowButtonInner {
+       height: auto !important;
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       -moz-transform: scale(0.5);
+       -moz-transform-origin: center top;
+       -webkit-transform: scale(0.5);
+       -webkit-transform-origin: center top;
+       -o-transform: scale(0.5);
+       -o-transform-origin: center top;
+       transform: scale(0.5);
+       transform-origin: left top;
+       padding-top: 0;
+       padding-bottom: 0;
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       width: 100%;
+}
+.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       zoom: 50%; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {
+       overflow: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 100%;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 1em; 
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       visibility: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       vertical-align:top;
+       visibility: visible;
+}
+.dijit_a11y .dijitSpinnerButtonContainer {
+       width: 1em;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 1px 0px 0px 0px;
+       border-style: solid !important;
+}
+.dijitCheckBox,
+.dijitRadio,
+.dijitCheckBoxInput {
+       padding: 0;
+       border: 0;
+       width: 16px;
+       height: 16px;
+       background-position:center center;
+       background-repeat:no-repeat;
+       overflow: hidden;
+}
+.dijitCheckBox INPUT,
+.dijitRadio INPUT {
+       margin: 0;
+       padding: 0;
+       display: block;
+}
+.dijitCheckBoxInput {
+       
+       opacity: 0.01;
+}
+.dj_ie .dijitCheckBoxInput {
+       filter: alpha(opacity=0);
+}
+.dijit_a11y .dijitCheckBox,
+.dijit_a11y .dijitRadio {
+       
+       width: auto !important;
+       height: auto !important;
+}
+.dijit_a11y .dijitCheckBoxInput {
+       opacity: 1;
+       filter: none;
+       width: auto;
+       height: auto;
+}
+.dijitProgressBarEmpty {
+       
+       position:relative;overflow:hidden;
+       border:1px solid black;         
+       z-index:0;                      
+}
+.dijitProgressBarFull {
+       
+       position:absolute;
+       overflow:hidden;
+       z-index:-1;
+       top:0;
+       width:100%;
+}
+.dj_ie6 .dijitProgressBarFull {
+       height:1.6em;
+}
+.dijitProgressBarTile {
+       
+       position:absolute;
+       overflow:hidden;
+       top:0;
+       left:0;
+       bottom:0;
+       right:0;
+       margin:0;
+       padding:0;
+       width:auto;
+       height:auto;
+       background-color:#aaa;
+       background-attachment: fixed;
+}
+.dijit_a11y .dijitProgressBarTile {
+       
+       border-width:2px;
+       border-style:solid;
+       background-color:transparent !important;
+}
+.dj_ie6 .dijitProgressBarTile {
+       
+       position:static;
+       
+       height:1.6em;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarLabel {
+       visibility:hidden;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+}
+.dijitProgressBarIndeterminateHighContrastImage {
+       display:none;
+}
+.dijit_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {
+       display:block;
+       position:absolute;
+       top:0;
+       bottom:0;
+       margin:0;
+       padding:0;
+       width:100%;
+       height:auto;
+}
+.dijitProgressBarLabel {
+       display:block;
+       position:static;
+       width:100%;
+       text-align:center;
+       background-color:transparent !important;
+}
+.dijitTooltip {
+       position: absolute;
+       z-index: 2000;
+       display: block;
+       
+       left: 50%;
+       top: -10000px;
+       overflow: visible;
+}
+.dijitTooltipContainer {
+       border: solid black 2px;
+       background: #b8b5b5;
+       color: black;
+       font-size: small;
+}
+.dijitTooltipFocusNode {
+       padding: 2px 2px 2px 2px;
+}
+.dijitTooltipConnector {
+       position: absolute;
+}
+.dijit_a11y .dijitTooltipConnector {
+       display: none;  
+}
+.dijitTooltipData {
+       display:none;
+}
+.dijitLayoutContainer {
+       position: relative;
+       display: block;
+       overflow: hidden;
+}
+body .dijitAlignTop,
+body .dijitAlignBottom,
+body .dijitAlignLeft,
+body .dijitAlignRight {
+       position: absolute;
+       overflow: hidden;
+}
+body .dijitAlignClient { position: absolute; }
+.dijitBorderContainer, .dijitBorderContainerNoGutter {
+       position:relative;
+       overflow: hidden;
+}
+.dijitBorderContainerPane,
+.dijitBorderContainerNoGutterPane {
+       position: absolute !important;  
+       z-index: 2;             
+}
+.dijitBorderContainer > .dijitTextArea {
+       
+       resize: none;
+}
+.dijitGutter {
+       
+       position: absolute;
+       font-size: 1px;         
+}
+.dijitSplitter {
+       position: absolute;
+       overflow: hidden;
+       z-index: 10;            
+       background-color: #fff;
+       border-color: gray;
+       border-style: solid;
+       border-width: 0;
+}
+.dj_ie .dijitSplitter {
+       z-index: 1;     
+}
+.dijitSplitterActive {
+       z-index: 11 !important;
+}
+.dijitSplitterCover {
+       position:absolute;
+       z-index:-1;
+       top:0;
+       left:0;
+       width:100%;
+       height:100%;
+}
+.dijitSplitterCoverActive {
+       z-index:3 !important;
+}
+.dj_ie .dijitSplitterCover {
+       background: white;
+       filter: alpha(opacity=0);
+}
+.dijitSplitterH {
+       height: 7px;
+       border-top:1px;
+       border-bottom:1px;
+       cursor: ns-resize;
+}
+.dijitSplitterV {
+       width: 7px;
+       border-left:1px;
+       border-right:1px;
+       cursor: ew-resize;
+}
+.dijitSplitContainer {
+       position: relative;
+       overflow: hidden;
+       display: block;
+}
+.dj_ff3 .dijit_a11y div.dijitSplitter:focus {
+       outline-style:dotted;
+       outline-width: 2px;
+}
+.dijitSplitPane {
+       position: absolute;
+}
+.dijitSplitContainerSizerH,
+.dijitSplitContainerSizerV {
+       position:absolute;
+       font-size: 1px;
+       cursor: move;
+       cursor: w-resize;
+       background-color: ThreeDFace;
+       border: 1px solid;
+       border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
+       margin: 0;
+}
+.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {
+       overflow:hidden;
+       position:absolute;
+       top:49%;
+}
+.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {
+       position:absolute;
+       left:49%;
+}
+.dijitSplitterShadow,
+.dijitSplitContainerVirtualSizerH,
+.dijitSplitContainerVirtualSizerV {
+       font-size: 1px;
+       background-color: ThreeDShadow;
+       -moz-opacity: 0.5;
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+       margin: 0;
+}
+.dj_ie .dijitSplitterV, .dijitSplitContainerVirtualSizerH {
+       cursor: w-resize;
+}
+.dj_ie .dijitSplitterH, .dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {
+       cursor: n-resize;
+}
+.dijit_a11y .dijitSplitterH {
+       border-top:1px solid #d3d3d3 !important;
+       border-bottom:1px solid #d3d3d3 !important;
+}
+.dijit_a11y .dijitSplitterV {
+       border-left:1px solid #d3d3d3 !important;
+       border-right:1px solid #d3d3d3 !important;
+}
+.dijitContentPane {
+       display: block;
+       overflow: auto; 
+}
+.dijitContentPaneSingleChild {
+       
+       overflow: hidden;
+}
+.dijitTitlePane {
+       display: block;
+       overflow: hidden;
+}
+.dijitTitlePaneTitle {
+       cursor: pointer;
+}
+.dijitFixedOpen {
+       
+       cursor: default;
+}
+.dijitTitlePaneTitle * {
+       vertical-align: middle;
+}
+.dijitTitlePane .dijitArrowNodeInner {
+       
+       display: none;
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNodeInner {
+       
+       display:inline !important;
+       font-family: monospace;         
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNode {
+       
+       display:none;
+}
+.dj_ie6 .dijitTitlePaneContentOuter,
+.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {
+       
+       zoom: 1;
+}
+.dijitColorPalette {
+       border: 1px solid #999;
+       background: #fff;
+       position: relative;
+}
+img.dijitColorPaletteUnder {
+       
+       border-style: none;
+       position: absolute;
+       left: 0;
+       top: 0;
+}
+.dijitColorPalette .dijitPaletteTable {
+       
+       padding: 2px 3px 3px 3px;
+       position: relative;
+       overflow: hidden;
+       outline: 0;
+       border-collapse: separate;
+}
+.dj_ie6 .dijitColorPalette .dijitPaletteTable,
+.dj_ie7 .dijitColorPalette .dijitPaletteTable,
+.dj_iequirks .dijitColorPalette .dijitPaletteTable {
+       
+       padding: 0;
+       margin: 2px 3px 3px 3px;
+}
+.dijitColorPalette .dijitPaletteCell {
+       
+       height: 20px;
+       width: 20px;
+       font-size: 1px;
+       vertical-align: middle;
+       text-align: center;
+}
+.dijitColorPalette .dijitPaletteImg {
+       
+       width: 16px;
+       height: 14px;
+       border: 1px solid #999;
+       cursor: default;
+       vertical-align: middle;
+}
+.dj_iequirks .dijitColorPalette .dijitPaletteImg {
+       margin: 1px;    
+}
+.dijitPaletteTable td {
+               padding: 0px;
+}
+.dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       
+       border: 1px solid #000;
+}
+.dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg,
+.dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg {
+       border: 2px solid #000;
+}
+.dijit_a11y .dijitColorPalette .dijitPaletteTable,
+.dijit_a11y .dijitColorPalette .dijitPaletteTable * {
+       
+       background-color: transparent !important;
+}
+.dj_gecko .dijit_a11y .dijitColorPalette .dijitPaletteCellFocused .dijitPaletteImg {
+       border: 3px dotted #000;        
+       margin: -1px;
+}
+.dijit_a11y  .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       border: 2px solid #000 !important;
+}
+.dijitAccordionContainer {
+       border:1px solid #b7b7b7;
+       border-top:0 !important;
+}
+.dijitAccordionTitle {
+       cursor: pointer;
+}
+.dijitAccordionTitleSelected {
+       cursor: default;
+}
+.dijitAccordionTitle .arrowTextUp,
+.dijitAccordionTitle .arrowTextDown {
+       display: none;
+       font-size: 0.65em;
+       font-weight: normal !important;
+}
+.dijit_a11y .dijitAccordionTitle .arrowTextUp,
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextDown {
+       display: inline;
+}
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextUp {
+       display: none;
+}
+.dj_ie6 .dijitAccordionTitle,
+.dj_iequirks .dijitAccordionTitle {
+       
+       zoom: 1;
+}
+.dijitCalendarContainer {
+       width: auto;    
+}
+.dijitCalendarContainer th, .dijitCalendarContainer td {
+       padding: 0;
+}
+.dijitCalendarNextYear {
+       margin:0 0 0 0.55em;
+}
+.dijitCalendarPreviousYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarIncrementControl {
+       vertical-align: middle;
+}
+.dijitCalendarIncrementControl,
+.dijitCalendarDateTemplate,
+.dijitCalendarMonthLabel,
+.dijitCalendarPreviousYear,
+.dijitCalendarNextYear {
+       cursor: pointer;
+}
+.dijitCalendarDisabledDate {
+       color: gray;
+       text-decoration: line-through;
+       cursor: default;
+}
+.dijitSpacer {
+       
+       position: relative;
+       height: 1px;
+       overflow: hidden;
+       visibility: hidden;
+}
+.dijitMenu {
+       border:1px solid black;
+       background-color:white;
+}
+.dijitMenuTable {
+       border-collapse:collapse;
+       border-width:0;
+       background-color:white;
+}
+.dj_webkit .dijitMenuTable td[colspan="2"]{
+       border-right:hidden;
+}
+.dijitMenuItem {
+       text-align: left;
+       white-space: nowrap;
+       padding:.1em .2em;
+       cursor:pointer;
+}
+.dijitMenuPassive .dijitMenuItemHover,
+.dijitMenuItemSelected {
+       
+       background-color:black;
+       color:white;
+}
+.dijitMenuItemIcon, .dijitMenuExpand {
+       background-repeat: no-repeat;
+}
+.dijitMenuItemDisabled * {
+       
+       opacity:0.5;
+       cursor:default;
+}
+.dj_ie .dijit_a11y .dijitMenuItemDisabled,
+.dj_ie .dijit_a11y .dijitMenuItemDisabled td,
+.dj_ie .dijitMenuItemDisabled *,
+.dj_ie .dijitMenuItemDisabled td {
+       color:gray !important;
+       filter: alpha(opacity=35);
+}
+.dijitMenuItemLabel {
+       position: relative;
+       vertical-align: middle;
+}
+.dijit_a11y .dijitMenuItemSelected {
+       border: 1px dotted black !important;
+}
+.dj_ff3 .dijit_a11y .dijitMenuItem td {
+       padding: none !important;
+       background:none !important;
+}
+.dijit_a11y .dijitMenuItemSelected .dijitMenuItemLabel {
+       border-width: 1px;
+       border-style: solid;
+}
+.dj_ie8 .dijit_a11y .dijitMenuItemLabel {
+       position:static;
+}
+.dijitMenuExpandA11y {
+       display: none;
+}
+.dijit_a11y .dijitMenuExpandA11y {
+       display: inline;
+}
+.dijitMenuSeparator td {
+       border: 0;
+       padding: 0;
+}
+.dijitMenuSeparatorTop {
+       height: 50%;
+       margin: 0;
+       margin-top:3px;
+       font-size: 1px;
+}
+.dijitMenuSeparatorBottom {
+       height: 50%;
+       margin: 0;
+       margin-bottom:3px;
+       font-size: 1px;
+}
+.dijitCheckedMenuItemIconChar {
+       vertical-align: middle;
+       visibility:hidden;
+}
+.dijitCheckedMenuItemChecked .dijitCheckedMenuItemIconChar {
+       visibility: visible;
+}
+.dijit_a11y .dijitCheckedMenuItemIconChar {
+       display:inline !important;
+}
+.dijit_a11y .dijitCheckedMenuItemIcon {
+       display: none;
+}
+.dj_ie .dijit_a11y .dijitMenuBar .dijitMenuItem {
+       
+       margin: 0px;
+}
+.dijitStackController .dijitToggleButtonChecked * {
+       cursor: default;        
+}
+.dijitTabContainerNoLayout {
+       width: 100%;    
+}
+.dijitTabContainerBottom-tabs,
+.dijitTabContainerTop-tabs,
+.dijitTabContainerLeft-tabs,
+.dijitTabContainerRight-tabs {
+       overflow: visible !important;  
+}
+.dijitTabContainerBottom-container,
+.dijitTabContainerTop-container,
+.dijitTabContainerLeft-container,
+.dijitTabContainerRight-container {
+       z-index:0;
+       overflow: hidden;
+       border: 1px solid black;
+}
+.nowrapTabStrip {
+       width: 50000px;
+       display: block;
+       position: relative;
+}
+.dijitTabListWrapper {
+       overflow: hidden;
+}
+.dijit_a11y .tabStripButton img {
+       
+       display: none;
+}
+.dijitTabContainerTop-tabs {
+       border-bottom: 1px solid black;
+}
+.dijitTabContainerTop-container {
+       border-top: 0px;
+}
+.dijitTabContainerLeft-tabs {
+       border-right: 1px solid black;
+       float: left;
+}
+.dijitTabContainerLeft-container {
+       border-left: 0px;
+}
+.dijitTabContainerBottom-tabs {
+       border-top: 1px solid black;
+}
+.dijitTabContainerBottom-container {
+       border-bottom: 0px;
+}
+.dijitTabContainerRight-tabs {
+       border-left: 1px solid black;
+       float: left;
+}
+.dijitTabContainerRight-container {
+       border-right: 0px;
+}
+DIV.dijitTabDisabled, .dj_ie DIV.dijitTabDisabled {
+       cursor: auto;
+}
+.dijitTab {
+       position:relative;
+       cursor:pointer;
+       white-space:nowrap;
+       z-index:3;
+}
+.dijitTab * {
+       
+       vertical-align: middle;
+}
+.dijitTabChecked {
+       cursor: default;        
+}
+.dijitTabContainerTop-tabs .dijitTab {
+       top: 1px;       
+}
+.dijitTabContainerBottom-tabs .dijitTab {
+       top: -1px;      
+}
+.dijitTabContainerLeft-tabs .dijitTab {
+       left: 1px;      
+}
+.dijitTabContainerRight-tabs .dijitTab {
+       left: -1px;     
+}
+.dijitTabContainerTop-tabs .dijitTab,
+.dijitTabContainerBottom-tabs .dijitTab {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+}
+.dijitTabInnerDiv {
+       position:relative;
+}
+.tabStripButton {
+       z-index: 12;
+}
+.dijitTabButtonDisabled .tabStripButton {
+       display: none;
+}
+.dijitTabCloseButton {
+       margin-left: 1em;
+}
+.dijitTabCloseText {
+       display:none;
+}
+.dijit_a11y .dijitTabCloseButton {
+       background-image: none !important;
+       width: auto !important;
+       height: auto !important;
+       border: thin dotted;    
+}
+.dijit_a11y .dijitTabCloseButtonHover {
+       border:thin solid;      
+}
+.dijit_a11y .dijitTabCloseText {
+       display: inline;
+}
+.dijit_a11y .dijitTabChecked {
+       
+       border-style:dashed !important;
+}
+.dijit_a11y .dijitTabInnerDiv {
+       border-left:none !important;
+ }
+.dijitTabPane,
+.dijitStackContainer-child,
+.dijitAccordionContainer-child {
+       
+    border: none !important;
+}
+.dijitInlineEditBoxDisplayMode {
+       border: 1px solid transparent;  
+       cursor: text;
+}
+.dijit_a11y .dijitInlineEditBoxDisplayMode,
+.dj_ie6 .dijitInlineEditBoxDisplayMode {
+       
+       border: none;
+}
+.dijitInlineEditBoxDisplayModeHover,
+.dijit_a11y .dijitInlineEditBoxDisplayModeHover,
+.dj_ie6 .dijitInlineEditBoxDisplayModeHover {
+       
+       background-color: #e2ebf2;
+       border: solid 1px black;
+}
+.dijitInlineEditBoxDisplayModeDisabled {
+       cursor: default;
+}
+.dijitTreeIndent {
+       
+       width: 19px;
+}
+.dijitTreeRow, .dijitTreeContent {
+       white-space: nowrap;
+}
+.dijitTreeRow img {
+       
+       vertical-align: middle;
+}
+.dijitTreeContent {
+    cursor: default;
+}
+.dijitExpandoText {
+       display: none;
+}
+.dijit_a11y .dijitExpandoText {
+       display: inline;
+       padding-left: 10px;
+       padding-right: 10px;
+       font-family: monospace;
+       border-style: solid;
+       border-width: thin;
+       cursor: pointer;
+}
+.dijitTreeLabel {
+       margin: 0px 4px;
+}
+.dijitDialog {
+       position: absolute;
+       z-index: 999;
+       overflow: hidden;       
+}
+.dijitDialogTitleBar {
+       cursor: move;
+}
+.dijitDialogFixed .dijitDialogTitleBar {
+       cursor:default;
+}
+.dijitDialogCloseIcon {
+       cursor: pointer;
+}
+.dijitDialogUnderlayWrapper {
+       position: absolute;
+       left: 0;
+       top: 0;
+       z-index: 998;
+       display: none;
+       background: transparent !important;
+}
+.dijitDialogUnderlay {
+       background: #eee;
+       opacity: 0.5;
+}
+.dj_ie .dijitDialogUnderlay {
+       filter: alpha(opacity=50);
+}
+.dijit_a11y .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitDialog {
+       opacity: 1 !important;
+       background-color: white !important;
+}
+.dijitDialog .closeText {
+       display:none;
+       
+       position:absolute;
+}
+.dijit_a11y .dijitDialog .closeText {
+       display:inline;
+}
+.dijitSliderMoveable {
+       z-index:99;
+       position:absolute !important;
+       display:block;
+       vertical-align:middle;
+}
+.dijitSliderMoveableH {
+       right:0;
+}
+.dijitSliderMoveableV {
+       right:50%;
+}
+.dijit_a11y DIV.dijitSliderImageHandle,
+.dijitSliderImageHandle {
+       margin:0;
+       padding:0;
+       position:relative !important;
+       border:8px solid gray;
+       width:0;
+       height:0;
+       cursor: pointer;
+}
+.dj_iequirks .dijit_a11y .dijitSliderImageHandle {
+       font-size: 0;
+}
+.dj_ie7 .dijitSliderImageHandle {
+       overflow: hidden; 
+}
+.dj_ie7 .dijit_a11y .dijitSliderImageHandle {
+       overflow: visible; 
+}
+.dijit_a11y .dijitSliderFocused .dijitSliderImageHandle {
+       border:4px solid #000;
+       height:8px;
+       width:8px;
+}
+.dijitSliderImageHandleV {
+       top:-8px;
+       right: -50%;
+}
+.dijitSliderImageHandleH {
+       left:50%;
+       top:-5px;
+       vertical-align:top;
+}
+.dijitSliderBar {
+       border-style:solid;
+       border-color:black;
+       cursor: pointer;
+}
+.dijitSliderBarContainerV {
+       position:relative;
+       height:100%;
+       z-index:1;
+}
+.dijitSliderBarContainerH {
+       position:relative;
+       z-index:1;
+}
+.dijitSliderBarH {
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBarV {
+       width:4px;
+       border-width:0 1px;
+}
+.dijitSliderProgressBar {
+       background-color:red;
+       z-index:1;
+}
+.dijitSliderProgressBarV {
+       position:static !important;
+       height:0%;
+       vertical-align:top;
+       text-align:left;
+}
+.dijitSliderProgressBarH {
+       position:absolute !important;
+       width:0%;
+       vertical-align:middle;
+       overflow:visible;
+}
+.dijitSliderRemainingBar {
+       overflow:hidden;
+       background-color:transparent;
+       z-index:1;
+}
+.dijitSliderRemainingBarV {
+       height:100%;
+       text-align:left;
+}
+.dijitSliderRemainingBarH {
+       width:100% !important;
+}
+.dijitSliderBumper {
+       overflow:hidden;
+       z-index:1;
+}
+.dijitSliderBumperV {
+       width:4px;
+       height:8px;
+       border-width:0 1px;
+}
+.dijitSliderBumperH {
+       width:8px;
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBottomBumper,
+.dijitSliderLeftBumper {
+       background-color:red;
+}
+.dijitSliderTopBumper,
+.dijitSliderRightBumper {
+       background-color:transparent;
+}
+.dijitSliderDecoration {
+       text-align:center;
+}
+.dijitSliderV TD {
+       position: relative; 
+}
+.dijitSliderDecorationH {
+       width: 100%;
+}
+.dijitSliderDecorationV {
+       height: 100%;
+}
+.dijitSliderButton {
+       font-family:monospace;
+       margin:0;
+       padding:0;
+       display:block;
+}
+.dijit_a11y .dijitSliderButtonInner {
+       visibility:visible !important;
+}
+.dijitSliderButtonContainer {
+       text-align:center;
+       height:0;       
+}
+.dijitSliderButtonContainer * {
+       cursor: pointer;
+}
+.dijitSlider .dijitButtonNode {
+       padding:0;
+       display:block;
+}
+.dijitRuleContainer {
+       position:relative;
+       overflow:visible;
+}
+.dijitRuleContainerV {
+       height:100%;
+       line-height:0;
+       float:left;
+       text-align:left;
+}
+.dj_opera .dijitRuleContainerV {
+       line-height:2%;
+}
+.dj_ie .dijitRuleContainerV {
+       line-height:normal;
+}
+.dj_gecko .dijitRuleContainerV {
+       margin:0 0 1px 0; 
+}
+.dijitRuleMark {
+       position:absolute;
+       border:1px solid black;
+       line-height:0;
+       height:100%;
+}
+.dijitRuleMarkH {
+       width:0;
+       border-top-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+}
+.dijitRuleLabelContainer {
+       position:absolute;
+}
+.dijitRuleLabelContainerH {
+       text-align:center;
+       display:inline-block;
+}
+.dijitRuleLabelH {
+       position:relative;
+       left:-50%;
+}
+.dijitRuleLabelV {
+       
+       text-overflow: ellipsis;
+       white-space: nowrap;
+       overflow: hidden;
+}
+.dijitRuleMarkV {
+       height:0;
+       border-right-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+       width:100%;
+       left:0;
+}
+.dj_ie .dijitRuleLabelContainerV {
+       margin-top:-.55em;
+}
+.dijit_a11y .dijitSliderReadOnly,
+.dijit_a11y .dijitSliderDisabled {
+       opacity:0.6;
+}
+.dj_ie .dijit_a11y .dijitSliderReadOnly .dijitSliderBar,
+.dj_ie .dijit_a11y .dijitSliderDisabled .dijitSliderBar {
+       filter: alpha(opacity=40);
+}
+.dijit_a11y .dijitSlider .dijitSliderButtonContainer DIV {
+       font-family: monospace; 
+       font-size: 1em;
+       line-height: 1em;
+       height: auto;
+       width: auto;
+       margin: 0px 4px;
+}
+.dijit_a11y .dijitButtonContents .dijitButtonText,
+.dijit_a11y .dijitTab .tabLabel {
+       display: inline !important;
+}
+.dijitTextArea {
+       width:100%;
+       overflow-y: auto;       
+}
+.dijitTextArea[cols] {
+       width:auto; 
+}
+.dj_ie .dijitTextAreaCols {
+       width:auto;
+}
+.dijitToolbarSeparator {
+       height: 18px;
+       width: 5px;
+       padding: 0 1px;
+       margin: 0;
+}
+.dijitIEFixedToolbar {
+       position:absolute;
+       
+       top: expression(eval((document.documentElement||document.body).scrollTop));
+}
+.dijitEditor {
+       display: block; 
+}
+.dijitEditorDisabled,
+.dijitEditorReadOnly {
+       color: gray;
+}
+.dijitTimePickerItemInner {
+       text-align:center;
+       border:0;
+       padding:2px 8px 2px 8px;
+}
+.dijitTimePickerTick,
+.dijitTimePickerMarker {
+       border-bottom:1px solid gray;
+}
+.dijitTimePicker .dijitDownArrowButton {
+       border-top: none !important;
+}
+.dijitTimePickerTick {
+       color:#CCC;
+}
+.dijitTimePickerMarker {
+       color:black;
+       background-color:#CCC;
+}
+.dijitTimePickerItemSelected {
+       font-weight:bold;
+       color:#333;
+       background-color:#b7cdee;
+}
+.dijitTimePickerItemHover {
+       background-color:gray;
+       color:white;
+       cursor:pointer;
+}
+.dijit_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       border: solid 4px black;
+}
+.dijit_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {
+       border: dashed 4px black;
+}
+.dijitToggleButtonIconChar {
+       
+       display:none !important;
+}
+.dijit_a11y .dijitToggleButton .dijitToggleButtonIconChar {
+       display:inline !important;
+       visibility:hidden;
+}
+.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {
+       font-family: "Arial Unicode MS";        
+}
+.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
+       display: inline !important; 
+       visibility:visible !important;
+}
+.dijitArrowButtonChar {
+        display:none !important;
+}
+.dijit_a11y .dijitArrowButtonChar {
+        display:inline !important;
+}
+.dijit_a11y .dijitDropDownButton .dijitArrowButtonInner,
+.dijit_a11y .dijitComboButton .dijitArrowButtonInner {
+       display:none !important;
+}
+.dijitSelect {
+       margin: 0.2em;
+       border-collapse: collapse;
+}
+.dj_ie .dijitSelect,
+.dj_ie7 .dijitSelect,
+.dj_iequirks .dijitSelect {
+       vertical-align: middle; 
+}
+.dj_ie8 .dijitSelect .dijitButtonText {
+       vertical-align: top;
+}
+.dijitToolbar .dijitSelect {
+       margin: 0;
+}
+.dj_webkit .dijitToolbar .dijitSelect {
+       padding-left: 0.3em;
+}
+.dijit_a11y .dijitSelectDisabled .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitSelect .dijitButtonContents {
+       padding: 0px;
+       background: transparent none;
+       white-space: nowrap;
+       text-align: left;
+}
+.dijitSelectFixedWidth .dijitButtonContents {
+       width: 100%;
+}
+.dijitSelectMenu .dijitMenuItemIcon {
+       
+       display:none;
+}
+.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,
+.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {
+       
+       position: static;
+}
+.dijitSelectLabel *
+{
+       vertical-align: baseline;
+}
+.dijitSelectSelectedOption * {
+       font-weight: bold;
+}
+.dijitSelectMenu {
+       border-width: 1px;
+}
+.dijitSelectMenu .dijitMenuTable {
+       margin: 0px;
+       background-color: transparent;
+}
+.dijitForceStatic {
+       position: static !important;
+}
+.dijitReadOnly *,
+.dijitDisabled *,
+.dijitReadOnly,
+.dijitDisabled {
+       
+       cursor: default;
+}
+.dijitIconSave,
+.dijitIconPrint,
+.dijitIconCut,
+.dijitIconCopy,
+.dijitIconClear,
+.dijitIconDelete,
+.dijitIconUndo,
+.dijitIconEdit,
+.dijitIconNewTask,
+.dijitIconEditTask,
+.dijitIconEditProperty,
+.dijitIconTask,
+.dijitIconFilter,
+.dijitIconConfigure,
+.dijitIconSearch,
+.dijitIconApplication,
+.dijitIconBookmark,
+.dijitIconChart,
+.dijitIconConnector,
+.dijitIconDatabase,
+.dijitIconDocuments,
+.dijitIconMail,
+.dijitLeaf,
+.dijitIconFile,
+.dijitIconFunction,
+.dijitIconKey,
+.dijitIconPackage,
+.dijitIconSample,
+.dijitIconTable,
+.dijitIconUsers,
+.dijitFolderClosed,
+.dijitIconFolderClosed,
+.dijitFolderOpened,
+.dijitIconFolderOpen,
+.dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled.png); 
+       width: 16px;
+       height: 16px;
+}
+.dj_ie6 .dijitIconSave,
+.dj_ie6 .dijitIconPrint,
+.dj_ie6 .dijitIconCut,
+.dj_ie6 .dijitIconCopy,
+.dj_ie6 .dijitIconClear,
+.dj_ie6 .dijitIconDelete,
+.dj_ie6 .dijitIconUndo,
+.dj_ie6 .dijitIconEdit,
+.dj_ie6 .dijitIconNewTask,
+.dj_ie6 .dijitIconEditTask,
+.dj_ie6 .dijitIconEditProperty,
+.dj_ie6 .dijitIconTask,
+.dj_ie6 .dijitIconFilter,
+.dj_ie6 .dijitIconConfigure,
+.dj_ie6 .dijitIconSearch,
+.dj_ie6 .dijitIconApplication,
+.dj_ie6 .dijitIconBookmark,
+.dj_ie6 .dijitIconChart,
+.dj_ie6 .dijitIconConnector,
+.dj_ie6 .dijitIconDatabase,
+.dj_ie6 .dijitIconDocuments,
+.dj_ie6 .dijitIconMail,
+.dj_ie6 .dijitLeaf,
+.dj_ie6 .dijitIconFile,
+.dj_ie6 .dijitIconFunction,
+.dj_ie6 .dijitIconKey,
+.dj_ie6 .dijitIconPackage,
+.dj_ie6 .dijitIconSample,
+.dj_ie6 .dijitIconTable,
+.dj_ie6 .dijitIconUsers,
+.dj_ie6 .dijitFolderClosed,
+.dj_ie6 .dijitIconFolderClosed,
+.dj_ie6 .dijitFolderOpened,
+.dj_ie6 .dijitIconFolderOpen,
+.dj_ie6 .dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled8bit.png);
+}
+.dijitDisabled .dijitIconSave,
+.dijitDisabled .dijitIconPrint,
+.dijitDisabled .dijitIconCut,
+.dijitDisabled .dijitIconCopy,
+.dijitDisabled .dijitIconClear,
+.dijitDisabled .dijitIconDelete,
+.dijitDisabled .dijitIconUndo,
+.dijitDisabled .dijitIconEdit,
+.dijitDisabled .dijitIconNewTask,
+.dijitDisabled .dijitIconEditTask,
+.dijitDisabled .dijitIconEditProperty,
+.dijitDisabled .dijitIconTask,
+.dijitDisabled .dijitIconFilter,
+.dijitDisabled .dijitIconConfigure,
+.dijitDisabled .dijitIconSearch,
+.dijitDisabled .dijitIconApplication,
+.dijitDisabled .dijitIconBookmark,
+.dijitDisabled .dijitIconChart,
+.dijitDisabled .dijitIconConnector,
+.dijitDisabled .dijitIconDatabase,
+.dijitDisabled .dijitIconDocuments,
+.dijitDisabled .dijitIconMail,
+.dijitDisabled .dijitLeaf,
+.dijitDisabled .dijitIconFile,
+.dijitDisabled .dijitIconFunction,
+.dijitDisabled .dijitIconKey,
+.dijitDisabled .dijitIconPackage,
+.dijitDisabled .dijitIconSample,
+.dijitDisabled .dijitIconTable,
+.dijitDisabled .dijitIconUsers,
+.dijitDisabled .dijitFolderClosed,
+.dijitDisabled .dijitIconFolderClosed,
+.dijitDisabled .dijitFolderOpened,
+.dijitDisabled .dijitIconFolderOpen,
+.dijitDisabled .dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActDisabled.png); 
+}
+.dijitIconSave { background-position: 0px; }
+.dijitIconPrint { background-position: -16px; }
+.dijitIconCut { background-position: -32px; }
+.dijitIconCopy { background-position: -48px; }
+.dijitIconClear { background-position: -64px; }
+.dijitIconDelete { background-position: -80px; }
+.dijitIconUndo { background-position: -96px; }
+.dijitIconEdit { background-position: -112px; }
+.dijitIconNewTask { background-position: -128px; }
+.dijitIconEditTask { background-position: -144px; }
+.dijitIconEditProperty { background-position: -166px; }
+.dijitIconTask { background-position: -176px; }
+.dijitIconFilter { background-position: -192px; }
+.dijitIconConfigure { background-position: -208px; }
+.dijitIconSearch { background-position: -224px; }
+.dijitIconError { background-position: -496px; } 
+.dijitIconApplication { background-position: -240px; }
+.dijitIconBookmark { background-position: -256px; }
+.dijitIconChart { background-position: -272px; }
+.dijitIconConnector { background-position: -288px; }
+.dijitIconDatabase { background-position: -304px; }
+.dijitIconDocuments { background-position: -320px; }
+.dijitIconMail { background-position: -336px; }
+.dijitIconFile, .dijitLeaf { background-position: -352px; }
+.dijitIconFunction { background-position: -368px; }
+.dijitIconKey { background-position: -384px; }
+.dijitIconPackage{ background-position: -400px; }
+.dijitIconSample { background-position: -416px; }
+.dijitIconTable { background-position: -432px; }
+.dijitIconUsers { background-position: -448px; }
+.dijitIconFolderClosed, .dijitFolderClosed { background-position: -464px; }
+.dijitIconFolderOpen, .dijitFolderOpened { background-position: -480px; }
+.soria .dojoDndItemBefore {
+       border-top: 2px solid #369;
+}
+.soria .dojoDndItemAfter {
+       border-bottom: 2px solid #369;
+}
+.soria .dojoDndItemOver {
+       cursor:pointer;
+}
+.soria table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
+.soria .dojoDndAvatar td       { border: none; }
+.soria .dojoDndAvatar tr       { border: none; }
+.soria .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; }
+.soria .dojoDndAvatarItem td { padding: 2px;}
+.soria.dojoDndMove .dojoDndAvatarHeader        {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria.dojoDndCopy .dojoDndAvatarHeader        {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader  {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader  {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.soria .dijitContentPane {
+    padding: 0px;
+}
+.soria .dijitTabContainerTop-dijitContentPane,
+.soria .dijitTabContainerLeft-dijitContentPane,
+.soria .dijitTabContainerBottom-dijitContentPane,
+.soria .dijitTabContainerRight-dijitContentPane,
+.soria .dijitAccordionContainer-dijitContentPane {
+    background-color: #fff;
+    padding: 5px;
+}
+.soria .dijitSplitContainer-dijitContentPane,
+.soria .dijitBorderContainer-dijitContentPane {
+    background-color: #fff;            
+    padding: 5px;
+}
+ .soria .dijitTabContainer .tabStripRBtn {
+       margin-right: 21px;
+}
+ .soria .dijitTabContainer .tabStripLBtn {
+       margin-left: 21px;
+}
+ .soria .nowrapTabStrip .dijitTab {
+       top: 2px;
+}
+ .soria .dijitTabContainerBottom-tabs .dijitTab {
+       top: -1px;
+       bottom: 2px;
+}
+.soria .dijitTabPaneWrapper {
+       background:#fff;
+       border:1px solid #B1BADF;
+       margin: 0;
+       padding-left: 0px;
+}
+.soria .dijitTabInnerDiv {
+       padding:0px 3px 0px 0px;
+       margin: 0 0 0 4px;
+       background: url(images/tabContainerSprite.gif) no-repeat;
+       background-position: right -400px;
+}
+.soria .dijitTab {
+       line-height:normal;
+       margin:0 2px 0 0;       
+       padding:0px;
+       background: url(images/tabContainerSprite.gif) no-repeat 0 -300px;
+       color: #243C5F;
+       border-bottom: 1px #B1BADF solid;
+}
+.soria .dijitTabInnerDiv .dijitTabContent {
+       padding:4px 3px 2px 4px;
+       background: url(images/tabContainerSprite.gif) repeat-x 0 -350px;
+       position: relative;
+}
+.soria .dijitTabListWrapper {
+       z-index: 10;
+}
+.soria .dijitTabHover {
+       color: #243C5F;
+       background: url(images/tabContainerSprite.gif) no-repeat 0px -150px;
+}
+.soria .dijitTabHover .dijitTabInnerDiv {
+       background: url(images/tabContainerSprite.gif) no-repeat right -250px;
+}
+.soria .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
+       background: url(images/tabContainerSprite.gif) repeat-x 0 -200px;
+}
+.soria .dijitTabChecked
+{
+       
+       background: url(images/tabContainerSprite.gif) no-repeat 0px -0px;
+}
+.soria .dijitTabChecked .dijitTabInnerDiv {
+       background: url(images/tabContainerSprite.gif) no-repeat right -100px;
+}
+.soria .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+       background: url(images/tabContainerSprite.gif) repeat-x 0 -50px;
+       color: #243C5F !important;
+}
+.soria .dijitTabContainerTabListNested {
+       background: #F0F4FC;
+       background: #D9E9F9;
+       border: none;
+}
+.soria .dijitTabContainerTabListNested .dijitTab {
+       background: none;
+       border: none;
+       top: 0px;       
+}
+.soria .dijitTabContainerTabListNested .dijitTab .dijitTabInnerDiv,
+.soria .dijitTabContainerTabListNested .dijitTab .dijitTabContent {
+       background: none;
+}
+.soria .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel {
+       text-decoration: underline;
+}
+.soria .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {
+       text-decoration: underline;
+       font-weight: bold;
+}
+.soria .dijitTabContainerSpacerNested .dijitTabSpacer {
+       
+       height: 0px;
+}
+.soria .dijitTabPaneWrapperNested {
+       border: none;   
+}
+.soria .dijitTabCloseButton {
+       width: 15px;
+       height: 15px;
+       background: url(images/spriteRoundedIconsSmall.png) no-repeat -60px top;
+       margin-top: -1px;
+}
+.dj_ie6 .soria .dijitTabCloseButton {
+       background: url(images/spriteRoundedIconsSmall.gif) no-repeat -60px top;
+}
+.soria .dijitTabCloseButtonHover {
+       background: url(images/spriteRoundedIconsSmall.png) no-repeat -60px -15px;
+}
+.dj_ie6 .soria .dijitTabCloseButtonHover {
+       background: url(images/spriteRoundedIconsSmall.gif) no-repeat -60px -15px;
+}
+.soria .dijitTab .tabLabel {
+       
+       min-height: 15px;
+       display: inline-block;
+}
+.dj_ie6 .soria .dijitTabButtonIcon {
+       
+       height: 18px;
+       width: 1px;
+}
+.soria .dijitTabContainerTop-tabs {
+       border-color: #B1BADF;
+       padding-left: 3px;
+}
+.soria .dijitTabContainerTopNoStrip {
+       padding-top: 3px;
+}
+.soria .dijitTabContainerTop-container {
+       border-top: none;
+}
+.soria .dijitTabContainerTop .dijitTabListWrapper {
+       border-bottom: none;
+}
+.soria .dijitTabContainerTop-tabs .dijitTab {
+       top: 1px;
+}
+.soria .dijitTabContainerTop-tabs .dijitTabChecked {
+       border-bottom-color: #94b4e6;
+}
+.soria .dijitTabContainerTopStrip {
+       border: 1px solid #B1BADF;
+       margin-top: 1px;
+       padding-top: 1px;
+       background: #F0F4FC;
+}
+.soria .dijitTabContainerTopStrip .dijitTabContainerTop-tabs {
+       padding-left: 3px;
+}
+.soria .dijitTabContainerNested .dijitTabListWrapper {
+       height: auto;
+}
+.soria .dijitTabContainerBottom-tabs {
+       margin-top: -1px;
+       padding-left: 3px;
+       border-top: 1px solid #B1BADF;
+}
+.soria .dijitTabContainerBottom .dijitTabListWrapper {
+       border-top: none;
+       padding-top: 1px;
+       padding-bottom: 1px;
+       float: left;
+}
+.soria .dijitTabContainerBottom-container {
+       border-bottom: none;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTab {
+       border-bottom: none;
+       border-top: 1px solid #B1BADF;
+       background: url(images/tabBottomEnabledSpriteLR.gif) no-repeat bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabChecked {
+       border-top-color:#94b4e6;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv .dijitTabContent {
+       padding-top: 3px;
+       padding-bottom: 3px;
+       background: url(images/tabBottomEnabledC.gif) repeat-x bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabInnerDiv {
+       background: url(images/tabBottomEnabledSpriteLR.gif) no-repeat bottom right;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabHover {
+       color: #243C5F;
+       background: url(images/tabBottomHoverSpriteLR.gif) no-repeat bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv {
+       background: url(images/tabBottomHoverSpriteLR.gif) no-repeat bottom right;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabHover .dijitTabInnerDiv .dijitTabContent {
+       background: url(images/tabBottomHoverC.gif) repeat-x bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabChecked {
+       
+       background: url(images/tabBottomActiveSpriteLR.gif) no-repeat bottom left;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv {
+       background: url(images/tabBottomActiveSpriteLR.gif) no-repeat bottom right;
+}
+.soria .dijitTabContainerBottom-tabs .dijitTabChecked .dijitTabInnerDiv .dijitTabContent {
+       background: url(images/tabBottomActiveC.gif) repeat-x bottom left;
+}
+.soria .dijitTabContainerBottomStrip {
+       padding-bottom: 2px;
+       border: 1px solid #B1BADF;
+}
+.soria .dijitTabContainerBottomStrip {
+       background: #F0F4FC;
+}
+.soria .dijitTabContainerBottom-spacer,
+.soria .dijitTabContainerTop-spacer {
+       height: 2px;
+       border: 1px solid #8ba0bd;
+       background: #94b4e6;
+}
+.soria .dijitTabContainerTop-spacer {
+       border-top: none;
+}
+.soria .dijitTabContainerBottom-spacer {
+       border-bottom: none;
+}
+.soria .dijitTabContainerRight-tabs {
+       height: 100%;
+       border-color: #ccc;
+       padding-top: 3px;
+}
+.soria .dijitTabContainerRight-container {
+       border-right: none;
+}
+.soria .dijitTabContainerRight-tabs .dijitTab {
+       border-bottom: none;
+       border-left: 1px solid #B1BADF;
+       border-bottom: 1px solid #B1BADF !important;
+}
+.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabInnerDiv {
+       border-bottom: solid #B1BADF 1px;
+       margin-bottom: -1px;
+}
+.soria .dijitTabContainerRight-tabs .dijitTabChecked {
+       border-left-color: #94b4e6;
+}
+.soria .dijitTabContainerRight-tabs .dijitTabChecked {
+       background: url(images/tabRightChecked.gif) no-repeat left top !important;
+}
+.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       border-bottom: solid #94b4e6 1px;
+       margin-bottom: -1px;
+}
+.soria .dijitTabContainerRight-tabs .dijitTab {
+       background: url(images/tabContainerSprite.gif) no-repeat left -350px;
+}
+.soria .dijitTabContainerRight-tabs .dijitTabHover .dijitTab {
+       background: url(images/tabContainerSprite.gif) no-repeat left -200px;
+}
+.soria .dijitTabContainerRightStrip {
+       padding-right: 2px;
+       border: 1px solid #B1BADF;
+       background: #F0F4FC;
+       border-left: none;
+}
+.soria .dijitTabContainerLeft-tabs {
+       border-color: #ccc;
+       padding-top: 3px;
+       height: 100%;
+}
+.soria .dijitTabContainerLeft-container {
+       border-left: none;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTab {
+       border-right: 1px solid #B1BADF;
+       border-bottom: 1px solid #B1BADF;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTabChecked {
+       border-right: 1px solid #94b4e6;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       background: url(images/tabContainerSprite.gif) no-repeat right -350px;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTabHover .dijitTabInnerDiv {
+       background: url(images/tabContainerSprite.gif) no-repeat right -200px;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       background: url(images/tabLeftChecked.gif) no-repeat right top;
+}
+.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabInnerDiv {
+       border-bottom: solid #B1BADF 1px;
+       margin-bottom: -1px;
+}
+.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTabInnerDiv,
+.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv,
+.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTabInnerDiv {
+       border-bottom: solid #94b4e6 1px;
+       margin-bottom: -1px;
+}
+.soria .dijitTabContainerLeftStrip {
+       padding-left: 2px;
+       border: 1px solid #B1BADF;
+       background: #F0F4FC;
+       border-right: none;
+}
+.soria .dijitTabContainerLeft-tabs .dijitTab,
+.soria .dijitTabContainerRight-tabs .dijitTab {
+       margin-right:auto;
+       margin-bottom:2px;      
+}
+.soria .dijitTabContainerLeft-spacer,
+.soria .dijitTabContainerRight-spacer {
+       width: 2px;
+       border: 1px solid #8ba0bd;
+       background: #94b4e6;
+}
+.soria .dijitTabContainerLeft-spacer {
+       border-left: none;
+}
+.soria .dijitTabContainerRight-spacer {
+       border-right: none;
+}
+.soria .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {
+       border-left: 0px solid #ccc;
+       border-top: 0px solid #ccc;
+       border-right: 0px solid #ccc;
+       padding-top: 0px;
+       padding-left: 0px;
+}
+.soria .dijitTabContainer .tabStripButton {
+       margin-right: 0;
+}
+.soria .dijitTabContainer .tabStripButton-top {
+       margin-top: 1px;
+}
+.soria .tabStripButton .dijitTabContent{
+       padding: 6px 0 5px 0;
+}
+.dj_ie6 .soria .tabStripButton .dijitTabContent,
+.dj_ie7 .soria .tabStripButton .dijitTabContent {
+       padding-top: 7px;
+}
+.soria .tabStrip-disabled .tabStripButton .dijitTabContent {
+       padding: 5px 0 3px 0;
+}
+.dj_ie6 .soria .tabStrip-disabled .tabStripButton .dijitTabContent,
+.dj_ie7 .soria .tabStrip-disabled .tabStripButton .dijitTabContent {
+       padding-top: 6px;
+}
+.soria .dijitTabContainer .tabStripButton-bottom {
+       background: transparent url(images/tabBottomEnabledSpriteLR.gif) no-repeat scroll left bottom;
+       border-bottom: medium none;
+       border-top: 1px solid #B1BADF;
+}
+.soria .dijitTabContainer .tabStripButton-bottom .dijitTabInnerDiv {
+       background: transparent url(images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom;
+}
+.soria .dijitTabContainer .tabStripButton-bottom .dijitTabContent {
+       background: transparent;
+}
+.soria .dijitTabStripIcon {
+       height: 14px;
+       width: 14px;
+       background: url(images/spriteRoundedIconsSmall.png) no-repeat left top ;
+}
+.dj_ie6 .soria .dijitTabStripIcon {
+       background-image: url(images/spriteRoundedIconsSmall.gif);
+}
+.soria .dijitTabStripSlideRightIcon {
+       background-position: -30px top;
+}
+.soria .dijitTabStripMenuIcon {
+       background-position: -15px top;
+}
+.soria .dijitAccordionContainer {
+       border-color: #b1badf;
+       background-color: #fff;
+}
+.soria .dijitAccordionTitle {
+       background:#fafafa url(images/titleBar.png) repeat-x top left;
+       border-top: 1px solid #b9bbdd;
+       padding: 5px 4px 6px 8px;
+       font-size: 0.9em;
+       font-weight: bold;
+       color: #373941;
+}
+.soria .dijitAccordionTitleSelected  {
+       background: #f9f9f9 url(images/accordionItemActive.png) top repeat-x;
+       font-weight: bold;
+       border-top: 1px solid #b9bbdd;
+       border-bottom: 1px solid #b9bbdd;
+       padding: 5px 4px 5px 8px;
+       color: #243C5F;
+}
+.soria .dijitAccordionArrow {
+       background:url(images/spriteRoundedIconsSmallBl.gif) no-repeat -30px top;
+       width:15px;
+       height:15px;
+       margin-top:-1px;
+}
+.soria .dijitAccordionTitleSelected .dijitAccordionArrow {
+       background:url(images/spriteRoundedIconsSmallBl.gif) no-repeat -15px top;
+       margin-top:-1px;
+}
+.soria .dijitAccordionText {
+       margin-left: 4px;
+       margin-right: 4px;
+}
+.soria .dijitSplitContainerSizerH {
+       background:url(images/splitContainerSizerV.png) repeat-y #cddef4;
+       border:0;
+       border-left:0px solid #436496;
+       border-right:0px solid #436496;
+       width:5px;
+}
+.soria .dijitSplitContainerSizerH .thumb {
+       background:url(images/splitContainerSizerV-thumb.png) no-repeat #ccc;
+       left:1px;
+       width:2px;
+       height:19px;
+}
+.soria .dijitSplitContainerSizerV {
+       background:url(images/splitContainerSizerH.png) repeat-x #cddef4;
+       border:0;
+       border-top:0px solid #436496;
+       border-bottom:0px solid #436496;
+       height:2px;
+}
+.soria .dijitSplitContainerSizerV .thumb {
+       background:url(images/splitContainerSizerH-thumb.png) no-repeat #ccc;
+       top:1px;
+       width:19px;
+       height:5px;
+}
+.soria .dijitBorderContainer {
+       background-color: #e1ebfb;
+       padding: 5px;
+}
+.soria .dijitSplitContainer-child,
+.soria .dijitBorderContainer-child {
+       
+       border: 1px #b1badf solid;
+}
+.soria .dijitBorderContainer-dijitTabContainerTop,
+.soria .dijitBorderContainer-dijitTabContainerBottom,
+.soria .dijitBorderContainer-dijitTabContainerLeft,
+.soria .dijitBorderContainer-dijitTabContainerRight {
+       
+        border: none;
+}
+.soria .dijitBorderContainer-dijitBorderContainer {
+       
+       border: none;
+       padding: 0px;
+}
+.soria .dijitSplitterH,
+.soria .dijitGutterH {
+       background: #E1EBFB;
+       border:0;
+       border-left:0px solid #d3d3d3;
+       border-right:0px solid #d3d3d3;
+       height:5px;
+}
+.soria .dijitSplitterH .dijitSplitterThumb {
+       background:#B0B0B0 none;
+       height:1px;
+       top:2px;
+       width:19px;
+}
+.soria .dijitSplitterV,
+.soria .dijitGutterV {
+       background: #E1EBFB;
+       border:0;
+       border-top:0px solid #d3d3d3;
+       border-bottom:0px solid #d3d3d3;
+       width:5px;
+}
+.soria .dijitSplitterV .dijitSplitterThumb {
+       background:#B0B0B0 none;
+       height:19px;
+       left:2px;
+       width:1px;
+}
+.soria .dijitSplitterActive {
+       font-size: 1px;
+       background-image: none;
+       background-color: #aaa;
+       -moz-opacity: 0.6;
+       opacity: 0.6;
+       filter: Alpha(Opacity=60);
+       margin: 0;
+}
+.soria .dijitInputContainer INPUT,
+.soria .dijitTextBox {
+       margin: 0em 0.1em;
+}
+.soria .dijitTextBox,
+.soria .dijitTextArea {
+       
+       background:#fff url(images/validationInputBg.png) repeat-x top left;
+       #background:#fff url(images/validationInputBg.gif) repeat-x top left;
+       border:1px solid #8ba0bd;
+}
+.soria .dijitComboBox .dijitButtonNode {
+       padding: 0 0.2em;
+}
+.soria .dijitTextBox .dijitButtonNode {
+       
+       border-color: #8ba0bd;
+}
+.soria .dijitTextBoxFocused,
+.soria .dijitTextAreaFocused {
+       
+       border-color:#406b9b;
+}
+.soria .dijitTextBoxFocused .dijitButtonNode,
+.soria .dijitSpinner .dijitUpArrowButtonActive,
+.soria .dijitSpinner .dijitDownArrowButtonActive {
+       border-left-color:#8ba0bd;
+}
+.soria .dijitSpinnerFocused .dijitDownArrowButton,
+.soria .dijitSpinner .dijitUpArrowButtonActive,
+.soria .dijitSpinner .dijitDownArrowButtonActive {
+       border-top-color:#8ba0bd;
+}
+.soria .dijitError {
+       border-color:#f3d118;
+       background-color:#f9f7ba;
+       background-image:none;
+}
+.soria .dijitErrorFocused {
+       background-color:#ff6;
+       background-image:none;
+}
+.soria .dijitValidationIcon {
+       
+       width: 16px;
+       background: transparent url(images/warning.png) no-repeat center center;
+}
+.soria .dijitComboBoxHighlightMatch {
+       background-color:#f9f7ba;
+}
+.soria .dijitButtonNode {
+       
+       border: 1px solid #8ba0bd;
+       border-bottom:1px solid #657c9c;
+       padding: 0.1em 0.2em 0.2em 0.2em;
+       background: #bcd5f0 url(images/buttonEnabled.png) repeat-x top left;
+}
+.soria .dijitSelect .dijitButtonContents {
+       border-right: none;
+}
+.soria .dijitButtonText {
+       text-align: center;
+       padding: 0 0.3em;
+}
+.soria .dijitArrowButton {
+       color: #111;
+}
+.soria .dijitComboButton .dijitDownArrowButton {
+       padding-right:4px;
+}
+.soria .dijitTextBoxReadOnly,
+.soria .dijitTextBoxReadOnly .dijitButtonNode,
+.soria .dijitButtonDisabled .dijitButtonNode,
+.soria .dijitToggleButtonDisabled .dijitButtonNode,
+.soria .dijitDropDownButtonDisabled .dijitButtonNode,
+.soria .dijitComboButtonDisabled .dijitButtonNode,
+.soria .dijitTextBoxDisabled,
+.soria .dijitTextBoxDisabled .dijitButtonNode {
+       
+       border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd;
+       background:#c3d3e5 url(images/buttonDisabled.png) top repeat-x;
+       opacity: 0.60;
+}
+.dj_ie6 .soria .dijitReadOnly INPUT,
+.dj_ie7 .soria .dijitReadOnly INPUT,
+.dj_ie6 .soria .dijitComboButtonDisabled .dijitButtonText,
+.dj_ie7 .soria .dijitComboButtonDisabled .dijitButtonText {
+       
+       color: #aaa;
+}
+.soria .dijitButtonHover .dijitButtonNode,
+.soria .dijitButtonNodeHover,
+.soria .dijitToggleButtonHover .dijitButtonNode,
+.soria .dijitDropDownButtonHover .dijitButtonNode,
+.soria .dijitButtonContentsHover,
+.soria .dijitUpArrowButtonHover,
+.soria .dijitDownArrowButtonHover {
+       
+       
+       color:#243C5F;
+       background:#acc5e2 url(images/buttonHover.png) repeat-x top left;
+}
+.soria .dijitButtonActive .dijitButtonNode,
+.soria .dijitToggleButtonActive .dijitButtonNode,
+.soria .dijitDropDownButtonActive .dijitButtonNode,
+.soria .dijitComboButtonActive .dijitButtonContents,
+.soria .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {
+       
+       border-color:#657c9c;
+       background: #91b4e5 url(images/buttonActive.png) top left repeat-x;
+}
+.soria .dijitUpArrowButtonActive,
+.soria .dijitDownArrowButtonActive {
+       
+       background: #91b4e5 url(images/buttonActive.png) top left repeat-x;
+}
+.soria .dijitArrowButtonInner {
+       background-image: url(images/spriteArrows.png);
+       background-repeat: no-repeat;
+       background-position: 0px center;
+       width: 11px;
+       height: 11px;
+}
+.soria .dijitComboBox .dijitArrowButtonInner {
+        background-position: 0 center;
+}
+.soria .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -11px center;
+}
+.soria .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -22px center;
+}
+.soria .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -33px center;
+}
+.dj_ie6 .soria .dijitArrowButtonInner {
+       background-image: url(images/spriteArrows.gif);
+}
+.dj_ie .soria .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {
+       margin-top: 1px; 
+}
+.soria .dijitSpinnerButtonContainer {
+       width: auto;
+       padding: 0;
+}
+.soria .dijitSpinner .dijitArrowButton {
+       width: 15px;
+}
+.soria .dijitSpinner .dijitSpinnerButtonInner {
+       width: 15px;
+}
+.soria .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding: 0;
+}
+.soria .dijitToggleButton .dijitCheckBox,
+.soria .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url(images/spriteCheckbox.gif);
+}
+.soria .dijitCheckBox,
+.soria .dijitCheckBoxIcon {            
+       background-image: url(images/spriteCheckbox.gif); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.soria .dijitCheckBox,
+.soria .dijitToggleButton .dijitCheckBoxIcon {
+       
+       background-position: -16px;
+}
+.soria .dijitCheckBoxChecked,
+.soria .dijitToggleButtonChecked .dijitCheckBoxIcon {
+       
+       background-position: 0px;
+}
+.soria .dijitCheckBoxDisabled {
+       
+       background-position: -48px;
+}
+.soria .dijitCheckBoxCheckedDisabled {
+       
+       background-position: -32px;
+}
+.soria .dijitCheckBoxHover {
+       
+       background-position: -80px;
+}
+.soria .dijitCheckBoxCheckedHover {
+       
+       background-position: -64px;
+}
+.soria .dijitToggleButton .dijitRadio,
+.soria .dijitToggleButton .dijitRadioIcon {
+       background-image: url(images/spriteRadio.gif);
+}
+.soria .dijitRadio,
+.soria .dijitRadioIcon {               
+       background-image: url(images/spriteRadio.gif); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.soria .dijitRadio,
+.soria .dijitToggleButton .dijitRadioIcon {
+       
+       background-position: -16px;
+}
+.soria .dijitRadioChecked,
+.soria .dijitToggleButtonChecked .dijitRadioIcon {
+       
+       background-position: 0px;
+}
+.soria .dijitRadioDisabled {
+       
+       background-position: -48px;
+}
+.soria .dijitRadioCheckedDisabled {
+       
+       background-position: -32px;
+}
+.soria .dijitRadioHover {
+       
+       background-position: -80px;
+}
+.soria .dijitRadioCheckedHover {
+       
+       background-position: -64px;
+}
+.soria .dijitSliderProgressBarH {
+       border-color: #b1badf;
+       background: #c0c2c5 url(images/sliderFull.png) repeat-x top left;
+}
+.soria .dijitSliderProgressBarV {
+       border-color: #b1badf;
+       background: #c0c2c5 url(images/sliderFullVertical.png) repeat-y bottom left;
+}
+.soria .dijitSliderFocused .dijitSliderProgressBarH,
+.soria .dijitSliderFocused .dijitSliderLeftBumper {
+       background-image:url(images/sliderFullFocus.png);
+}
+.soria .dijitSliderFocused .dijitSliderProgressBarV,
+.soria .dijitSliderFocused .dijitSliderBottomBumper {
+       background-image:url(images/sliderFullVerticalFocus.png);
+}
+.soria .dijitSliderRemainingBarV {
+       border-color: #b4b4b4;
+       background: #dcdcdc url(images/sliderEmptyVertical.png) repeat-y bottom left;
+}
+.soria .dijitSliderRemainingBarH {
+       border-color: #b4b4b4;
+       background: #dcdcdc url(images/sliderEmpty.png) repeat-x top left;
+}
+.soria .dijitSliderBar {
+       border-style: solid;
+       outline:1px;
+       
+}
+.soria .dijitSliderFocused .dijitSliderBar {
+       border-color:#8ba0bd;
+}
+.soria .dijitSliderImageHandleH {
+       border:0px;
+       width:15px;
+       height:18px;
+       background:url(images/preciseSliderThumb.png) no-repeat center top;
+}
+.soria .dijitSliderFocused .dijitSliderImageHandleH {
+       background-image:url(images/preciseSliderThumbFocus.png);
+       #background-image:url(images/preciseSliderThumbFocus.gif);
+}
+.dj_ie6 .soria .dijitSliderImageHandleH {
+       background-image:url(images/preciseSliderThumb.gif);
+}
+.soria .dijitSliderLeftBumper {
+       border-left-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFull.png) repeat-x top left;
+}
+.soria .dijitSliderRightBumper {
+       background: #dcdcdc url(images/sliderEmpty.png) repeat-x top left;
+       border-color: #b4b4b4;
+       border-right-width: 1px;
+}
+.soria .dijitSliderImageHandleV {
+       border:0px;
+       width:20px;
+       height:15px;
+       background:url(images/sliderThumb.png) no-repeat center center;
+       #background:url(images/sliderThumb.gif) no-repeat center center;
+}
+.soria .dijitSliderFocused .dijitSliderImageHandleV {
+       background-image:url(images/sliderThumbFocus.png);
+       #background-image:url(images/sliderThumbFocus.gif);
+}
+.soria .dijitSliderBottomBumper {
+       border-bottom-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFullVertical.png) repeat-y bottom left;
+}
+.soria .dijitSliderTopBumper {
+       background: #dcdcdc url(images/sliderEmptyVertical.png) repeat-y top left;
+       border-color: #b4b4b4;
+       border-top-width: 1px;
+}
+.soria .dijitSliderIncrementIconH,
+.soria .dijitSliderIncrementIconV {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -45px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat -45px top;
+       width:15px; height:15px;
+}
+.soria .dijitSliderIncrementIconH {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -30px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat -30px top;
+}
+.soria .dijitSliderDecrementIconH,
+.soria .dijitSliderDecrementIconV {
+       width:15px;
+       height:15px;
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -15px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat -15px top;
+}
+.soria .dijitSliderDecrementIconH {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat 0px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat 0px top;
+}
+.soria .dijitSliderButtonInner {
+       visibility:hidden;
+}
+.soria .dijitSliderReadOnly *,
+.soria .dijitSliderDisabled * {
+       border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
+       color: #bdbdbd;
+}
+.soria .dijitSliderReadOnly .dijitSliderDecrementIconH,
+.soria .dijitSliderDisabled .dijitSliderDecrementIconH {
+       background-position: 0px -15px;
+}
+.soria .dijitSliderReadOnly .dijitSliderIncrementIconH,
+.soria .dijitSliderDisabled .dijitSliderIncrementIconH {
+       background-position: -30px -15px;
+}
+.soria .dijitSliderReadOnly .dijitSliderDecrementIconV,
+.soria .dijitSliderDisabled .dijitSliderDecrementIconV {
+       background-position: -15px -15px;
+}
+.soria .dijitSliderReadOnly .dijitSliderIncrementIconV,
+.soria .dijitSliderDisabled .dijitSliderIncrementIconV {
+       background-position: -45px -15px;
+}
+.soria .dijitSelect .dijitButtonNode {
+       padding: 0px;
+}
+.soria .dijitSelect .dijitButtonContents {
+       padding-top: 1px;
+    background:#fff url(images/validationInputBg.png) repeat-x top left;
+    #background:#fff url(images/validationInputBg.gif) repeat-x top left;
+}
+.soria .dijitSelectHover .dijitButtonContents,
+.soria .dijitSelectActive .dijitButtonContents,
+.soria .dijitSelectOpened .dijitButtonContents,
+.soria .dijitSelectDisabled .dijitButtonContents,
+.soria .dijitSelectReadOnly .dijitButtonContents{
+       background: transparent none;
+}
+.dj_ie .soria .dijitSelect .dijitButtonContents {
+       padding-top: 0px;
+}
+.soria .dijitSelect .dijitArrowButton {
+       padding: 0px 2px;
+}
+.soria .dijitSelectDisabled .dijitButtonNode {
+    border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd;
+    background:#c3d3e5 url(images/buttonDisabled.png) top repeat-x;
+}
+.dj_ie .soria .dijitSelectDisabled  .dijitButtonNode * {
+       filter: gray() alpha(opacity=50);
+}
+.soria .dijitSelectHover .dijitButtonNode {
+    color:#000;
+    background:#acc5e2 url(images/buttonHover.png) repeat-x top left;
+}
+.soria .dijitSelectActive .dijitButtonNode,
+.soria .dijitSelectOpened .dijitButtonNode {
+    border-color:#657c9c;
+    background: #91b4e5 url(images/buttonActive.png) top left repeat-x;
+}
+.soria .dijitSelectMenu td {
+       padding: 0em;
+}
+.soria .dijitSelectMenu .dijitMenuItemLabel,
+.soria .dijitSelectMenu .dijitMenuArrowCell {
+       padding: 0.1em 0.2em;
+}
+.soria .dijitTreeNode {
+    background : url(images/treeI.gif) no-repeat;
+    background-position : top left;
+    background-repeat : repeat-y;
+    zoom: 1;   
+}
+.soria .dijitTreeRowHover {
+       
+       background-image: url(images/treeHover.png);
+       background-repeat: repeat;
+       background-color: transparent !important;
+}
+.soria .dijitTreeIsLast {
+    background: url(images/treeI_half.gif) no-repeat;
+}
+.soria .dijitTreeLabel {
+       font-weight: normal;
+       margin-left: 3px;
+}
+.soria .dijitTreeIsRoot {
+    margin-left: 0;
+    background-image: none;
+}
+.soria .dijitTreeExpando {
+    width: 18px;
+    height: 18px;
+}
+.soria .dijitTreeRow {
+       
+       padding-bottom: 2px;
+}
+.soria .dijitTreeContent {
+    min-height: 18px;
+    min-width: 18px;
+    padding-left:1px;
+}
+.soria .dijitTreeRowSelected .dijitTreeLabel{
+       background:#b8cbec;
+}
+.soria .dijitTreeExpandoOpened {
+       background: url(images/spriteTree.gif) no-repeat -18px top;
+}
+.soria .dijitTreeExpandoClosed {
+       background-image: url(images/spriteTree.gif);
+}
+.soria .dijitTreeExpandoLeaf {
+       background: url(images/spriteTree.gif) no-repeat -36px top;
+}
+.soria .dijitTreeExpandoLoading {
+       background-image: url(images/treeExpand_loading.gif);
+}
+.soria .dijitTreeIcon {
+       width: 16px;
+       height: 16px;
+}
+.soria .dijitFolderOpened {
+       background: url(images/spriteDivIcons.gif) no-repeat -16px top;
+}
+.soria .dijitFolderClosed {
+       background: url(images/spriteDivIcons.gif) no-repeat top left;
+}
+.soria .dijitLeaf {
+       background: url(images/spriteDivIcons.gif) no-repeat -32px top;
+}
+.soria .dijitTreeNode .dojoDndItemBefore,
+.soria .dijitTreeNode .dojoDndItemAfter {
+       border-bottom: none;
+       border-top: none;
+}
+.soria .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
+       
+       border-top: 2px solid #369;
+}
+.soria .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
+       
+       border-bottom: 2px solid #369;
+}
+.soria .dijitProgressBar {
+       margin:2px 0px 2px 0px;
+}
+.soria .dijitProgressBarEmpty{
+       
+       background:#fff url(images/progressBarEmpty.png) repeat-x center center;
+       border-color: #8ba0bd;
+}
+.soria .dijitProgressBarTile{
+       
+       background:#f0f0f0 url(images/progressBarFull.png) repeat-x center center;
+}
+.soria .dijitProgressBarFull {
+       border-right:1px solid #8ba0bd;
+}
+.soria .dijitProgressBarLabel {
+       
+       color:#293a4b;
+}
+.soria .dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+       background:#cad2de url(images/progressBarAnim.gif) repeat-x center center;
+}
+.soria .dijitTitlePaneTitle {
+       background: #cccccc;
+       background:#fff url(images/titleBar.png) repeat-x top left;
+       border:1px solid #bfbfbf;
+       padding:3px 4px;
+       font-size: 0.9em;
+       font-weight: bold;
+       color: #6d6d6d;
+}
+.soria .dijitTitlePaneTitleHover {
+       background: #f9f9f9 url(images/accordionItemActive.png) top repeat-x;
+}
+.soria .dijitTitlePaneTitle * {
+       vertical-align: middle;
+}
+.soria .dijitTitlePane .dijitOpen .dijitArrowNode,
+.soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       width:15px;
+       height:15px;
+}
+.soria .dijitTitlePaneTextNode {
+       color: #243C5F;
+}
+.soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background: url(images/spriteRoundedIconsSmall.png) no-repeat -30px top;
+}
+.dj_ie6 .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background:url(images/spriteRoundedIconsSmall.gif) no-repeat -30px top;
+}
+.soria .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -15px top;
+}
+.dj_ie6 .soria .dijitTitlePane .dijitOpen .dijitArrowNode {
+       background:url(images/spriteRoundedIconsSmall.gif) no-repeat -15px top;
+}
+.soria .dijitTitlePaneContentOuter {
+       background: #ffffff;
+       border: 1px solid #bfbfbf;
+       border-top: 0px;
+}
+.soria .dijitTitlePaneContentInner {
+       padding:10px;
+}
+.soria .dijitTitlePaneTextNode {
+       margin-left: 4px;
+       margin-right: 4px;
+}
+.soria .dijitCalendarIncrementControl {
+       
+       width:15px;
+       height:15px;
+       background-image: url(images/spriteRoundedIconsSmall.png);
+       background-repeat: no-repeat;
+}
+.dj_ie6 .soria .dijitCalendarIncrementControl {
+       font-size:.1em;
+       background-image: url(images/spriteRoundedIconsSmall.gif);
+}
+.soria .dijitA11ySideArrow {
+       display: none;
+}
+.soria .dijitCalendarDecrease {
+       background-position: top left;
+}
+.soria .dijitCalendarIncrease {
+       background-position: -30px top;
+}
+.soria table.dijitCalendarContainer {
+       font-size: 100%;
+       border-spacing: 0;
+       border-collapse: separate;
+       border: 1px solid #b1badf;
+       margin: 0;
+}
+.soria .dijitCalendarMonthContainer th {
+       
+       background:#bed7f0 url(images/titleBar.png) repeat-x top;
+       padding-top:.3em;
+       padding-bottom:.2em;
+       text-align:center;
+}
+.dj_ie6 .soria .dijitCalendarMonthContainer th {
+       padding-top:.2em;
+       padding-bottom:.1em;
+}
+.soria .dijitCalendarDayLabelTemplate {
+       
+       background:#bed7f0;
+       font-weight:normal;
+       padding-top:.15em;
+       padding-bottom:.2em;
+       border-bottom: 1px solid #b1badf;
+       color:#293a4b;
+       text-align:center;
+}
+.soria .dijitCalendarBodyContainer {
+       border-bottom: 1px solid #eeeeee;
+}
+.soria .dijitCalendarMonthLabel {
+       color:#293a4b;
+       font-weight: bold;
+}
+.soria .dijitCalendarDateTemplate {
+       
+       font-size: 0.9em;
+       font-weight: bold;
+       text-align: center;
+       padding: 0.3em 0.3em 0.05em 0.3em;
+       letter-spacing: 1px;
+       background-color: #fff;
+       border:#fff solid 1px !important;
+}
+.dj_ie .soria .dijitCalendarDateTemplate {
+       padding: 0.1em .33em 0.02em .33em;
+}
+.soria .dijitCalendarPreviousMonth,
+.soria .dijitCalendarNextMonth                 {
+       
+       color:#999999;
+       background-color:#fdfdfd !important;
+       border:#fdfdfd solid 1px !important;
+}
+.soria .dijitCalendarCurrentMonth {
+       
+}
+.soria .dijitCalendarDisabledDate {
+       text-decoration:line-through !important;
+}
+.soria .dijitCalendarCurrentDate {
+       
+       text-decoration:underline;
+       font-weight:bold;
+}
+.soria .dijitCalendarSelectedDate {
+       
+       background-color:#b9cbf1 !important;
+       color:black !important;
+       border:#4b5aaa solid 1px !important;
+}
+.soria .dijitCalendarYearContainer {
+       
+       background:white url(images/titleBar.png) repeat-x top;
+}
+.soria .dijitCalendarYearLabel {
+       
+       margin:0;
+       padding:0.4em 0 0.25em 0;
+       text-align:center;
+}
+.soria .dijitCalendarSelectedYear {
+       
+       color:black;
+       padding:0.2em;
+       padding-bottom:0.1em;
+       background-color:#b9cbf1 !important;
+       border:#4b5aaa solid 1px !important;
+}
+.soria .dijitCalendarNextYear,
+.soria .dijitCalendarPreviousYear {
+       
+       color:black !important;
+       font-weight:normal;
+}
+.soria .dijitTimePickerTick,
+.soria .dijitTimePickerMarker {
+       border-color: #b1badf;
+}
+.soria .dijitTimePickerTick {
+       color:white;
+}
+.soria .dijitTimePickerMarker {
+       background:#bed7f0 url(images/titleBar.png) repeat-x top;
+       color:#293a4b;
+       font-weight: bold;
+}
+.soria .dijitTimePickerItemSelected {
+       color: black;
+       background: #b9cbf1 none;
+}
+.soria .dijitTimePickerItemHover {
+       background: #60a1ea none;
+       color:white;
+}
+.soria .dijitTimePickerItemHover,
+.soria .dijitTimePickerItemSelected {
+       position: relative;
+       z-index: 10;
+}
+.soria .dijitTimePickerTick .dijitTimePickerItemInner {
+       font-size:0.4em;
+}
+.soria .dijitTimePickerItemHover .dijitTimePickerItemInner,
+.soria .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       font-size:1em;
+}
+.soria .dijitTimePickerMarkerHover {
+       border-top: 1px solid #94b9ef;
+}
+.soria .dijitTimePickerTickHover,
+.soria .dijitTimePickerTickSelected {
+       margin-top:-0.3em;
+       margin-bottom:-0.3em;
+       border-bottom: none;
+}
+.soria .dijitToolbar {
+       border-bottom: 1px solid #ccc;
+       background:#eaeaea url(images/titleBar.png) repeat-x top left;
+}
+.dj_ie6 .soria .dijitToolbar {
+       height: 10px;
+}
+.soria .dijitToolbar .dijitButtonNode,
+.soria .dijitToolbar .dijitComboButton .dijitButtonContents,
+.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       margin: 0px;
+       padding: 0px;
+       border: none;
+       font-size: 12px;
+}
+.soria .dijitToolbar .dijitButton,
+.soria .dijitToolbar .dijitToggleButton,
+.soria .dijitToolbar .dijitDropDownButton,
+.soria .dijitToolbar .dijitComboButton .dijitButtonContents,
+.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       padding: 1px;   
+}
+.soria .dijitToolbar .dijitButtonChecked,
+.soria .dijitToolbar .dijitToggleButtonChecked {
+       background-color:#d8e5f8;
+       border:1px solid #316ac5;
+       padding: 0px;
+}
+.soria .dijitToolbar .dijitButtonCheckedHover,
+.soria .dijitToolbar .dijitToggleButtonCheckedHover
+ {
+       background-color:#9abbea;
+       border:1px solid #316ac5;
+       padding: 0px;
+}
+.soria .dijitToolbar .dijitButtonHover,
+.soria .dijitToolbar .dijitToggleButtonHover,
+.soria .dijitToolbar .dijitDropDownButtonHover,
+.soria .dijitToolbar .dijitComboButton .dijitButtonContentsHover,
+.soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {
+       
+       border: 1px solid #316ac5;
+       padding: 0px;
+       background-color:#9abbea;
+}
+.soria .dijitToolbar label {
+       padding: 3px 3px 0 6px;
+}
+.dj_ie .soria .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ie .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
+       
+       border: 1px #777 dotted !important;
+       padding: 0px;
+}
+.soria .dijitDialog {
+       background: #eee;
+       border: 1px solid #cbcbcb;
+       -webkit-box-shadow: 0px 5px 10px #adadad;
+       padding: 0px;
+}
+.soria .dijitDialog .dijitDialogTitle {
+       
+       font-weight: bold;
+       padding: 0px 4px;
+       font-size: 0.9em;
+       color: #3243C5F;
+}
+.soria .dijitDialog .dijitDialogPaneContent {
+       background: #ffffff;
+       border-top: 1px solid #b1badf;
+       padding:10px;
+}
+.soria .dijitDialogTitleBar {
+       
+       background: #fafafa url(images/titleBar.png) repeat-x top left;
+       padding: 5px 6px 3px 6px;
+       outline:0; 
+}
+.soria .dijitDialogCloseIcon {
+       
+       background-image: url(images/spriteRoundedIconsSmallBl.png);
+       background-repeat: no-repeat;
+       background-position: -60px 0px;
+       position: absolute;
+       vertical-align: middle;
+       right: 6px;
+       top: 4px;
+       height: 15px;
+       width: 15px;
+}
+.dj_ie6 .soria .dijitDialogCloseIcon {
+       background-image: url(images/spriteRoundedIconsSmallBl.gif);
+}
+.soria .dijitDialogCloseIconHover {
+       background-position: -60px -15px;
+}
+.soria .dijitTooltip,
+.soria .dijitTooltipDialog {
+       
+       background: transparent;        
+}
+.dijitTooltipBelow {
+       
+       padding-top: 10px;
+}
+.dijitTooltipAbove {
+       
+       padding-bottom: 10px;
+}
+.soria .dijitTooltipContainer {
+       
+       background-color: #fff;
+       border:1px solid #cbcbcb;
+       padding:0.45em;
+}
+.soria .dijitTooltipConnector {
+       
+       border:0px;
+       z-index: 2;
+}
+.soria .dijitTooltipABRight .dijitTooltipConnector {
+       
+       left: auto !important;
+       right: 6px;
+}
+.soria .dijitTooltipBelow .dijitTooltipConnector {
+       
+       top: 0px;
+       left: 6px;
+       background:url(images/tooltipConnectorUp.png) no-repeat top left;
+       width:17px;
+       height:11px;
+}
+.dj_ie .soria .dijitTooltipBelow .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorUp.gif);
+}
+.soria .dijitTooltipAbove .dijitTooltipConnector {
+       
+       bottom: 0px;
+       left: 6px;
+       background:url(images/tooltipConnectorDown.png) no-repeat top left;
+       width:17px;
+       height:11px;
+}
+.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorDown.gif);
+}
+.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorDown.gif);
+}
+.dj_ie6 .soria .dijitTooltipAbove .dijitTooltipConnector {
+       bottom: -5px;
+}
+.soria .dijitTooltipLeft {
+       padding-right: 10px;
+}
+.dj_ie6 .soria .dijitTooltipLeft {
+       padding-left: 11px;
+}
+.soria .dijitTooltipLeft .dijitTooltipConnector {
+       
+       right: 0px;
+       bottom: 3px;
+       background:url(images/tooltipConnectorRight.png) no-repeat top left;
+       width:11px;
+       height:17px;
+}
+.dj_ie .soria .dijitTooltipLeft .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorRight.gif);
+}
+.soria .dijitTooltipRight {
+       padding-left: 10px;
+}
+.soria .dijitTooltipRight .dijitTooltipConnector {
+       
+       left: 0px;
+       bottom: 3px;
+       background:url(images/tooltipConnectorLeft.png) no-repeat top left;
+       width:11px;
+       height:17px;
+}
+.dj_ie .soria .dijitTooltipRight .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorLeft.gif);
+}
+.soria .dijitMenu,
+.soria .dijitMenuBar {
+       border: 1px solid #cbcbcb;
+       margin: 0px;
+       padding: 0px;
+       background-color: #fff;
+}
+.soria .dijitBorderContainer .dijitMenuBar {
+       border:1px solid #B1BADF;
+}
+.soria .dijitMenuItem {
+       font-family: sans-serif;
+       margin: 0px;
+       color: #243C5F;
+}
+.soria .dijitMenuBar .dijitMenuItem {
+       padding: 4px 5px;
+}
+.soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton {
+       font-style: italic;
+}
+.soria .dijitMenuItem TD {
+       padding:1px;
+}
+.soria .dijitMenuPassive .dijitMenuItemHover,
+.soria .dijitMenuItemSelected {
+       background-color: #d9e6f9; 
+       color: #243C5F;
+}
+.soria .dijitMenuItemIcon {
+       width: 15px;
+       height: 15px;
+}
+.soria .dijitMenuExpand {
+       width:15px;
+       height:15px;
+       background-image: url(images/spriteRoundedIconsSmall.png);
+       background-position: -30px top;
+}
+.dj_ie6 .soria .dijitMenuExpand {
+       background-image: url(images/spriteRoundedIconsSmall.gif);
+}
+.soria .dijitMenuSeparator {
+       height: 1px;
+}
+.soria .dijitMenuSeparatorTop {
+       border-bottom: 1px solid #fff; 
+}
+.soria .dijitMenuSeparatorBottom {
+       border-top: 1px solid #8ba0bd;
+}
+.soria .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.soria .dijitCheckedMenuItemIcon {
+       background-image: url(images/spriteCheckbox.gif);
+       background-position: -80px;
+}
+.soria .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: -64px;
+}
+.soria .dijitToolbar .dijitToolbarSeparator {
+       background: url(../../icons/images/editorIconsEnabled.png); 
+}
+.soria .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled.png); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.soria .dijitDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled.png); 
+}
+.dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled.png); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.dijitDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled.png); 
+}
+.dijitEditorIconSep { background-position: 0px; }
+.dijitEditorIconSave { background-position: -18px; }
+.dijitEditorIconPrint { background-position: -36px; }
+.dijitEditorIconCut { background-position: -54px; }
+.dijitEditorIconCopy { background-position: -72px; }
+.dijitEditorIconPaste { background-position: -90px; }
+.dijitEditorIconDelete { background-position: -108px; }
+.dijitEditorIconCancel { background-position: -126px; }
+.dijitEditorIconUndo { background-position: -144px; }
+.dijitEditorIconRedo { background-position: -162px; }
+.dijitEditorIconSelectAll { background-position: -180px; }
+.dijitEditorIconBold { background-position: -198px; }
+.dijitEditorIconItalic { background-position: -216px; }
+.dijitEditorIconUnderline { background-position: -234px; }
+.dijitEditorIconStrikethrough { background-position: -252px; }
+.dijitEditorIconSuperscript { background-position: -270px; }
+.dijitEditorIconSubscript { background-position: -288px; }
+.dijitEditorIconJustifyCenter { background-position: -306px; }
+.dijitEditorIconJustifyFull { background-position: -324px; }
+.dijitEditorIconJustifyLeft { background-position: -342px; }
+.dijitEditorIconJustifyRight { background-position: -360px; }
+.dijitEditorIconIndent { background-position: -378px; }
+.dijitEditorIconOutdent { background-position: -396px; }
+.dijitEditorIconListBulletIndent { background-position: -414px; }
+.dijitEditorIconListBulletOutdent { background-position: -432px; }
+.dijitEditorIconListNumIndent { background-position: -450px; }
+.dijitEditorIconListNumOutdent { background-position: -468px; }
+.dijitEditorIconTabIndent { background-position: -486px; }
+.dijitEditorIconLeftToRight { background-position: -504px; }
+.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir { background-position: -522px; }
+.dijitEditorIconBackColor { background-position: -540px; }
+.dijitEditorIconForeColor { background-position: -558px; }
+.dijitEditorIconHiliteColor { background-position: -576px; }
+.dijitEditorIconNewPage { background-position: -594px; }
+.dijitEditorIconInsertImage { background-position: -612px; }
+.dijitEditorIconInsertTable { background-position: -630px; }
+.dijitEditorIconSpace { background-position: -648px; }
+.dijitEditorIconInsertHorizontalRule { background-position: -666px; }
+.dijitEditorIconInsertOrderedList { background-position: -684px; }
+.dijitEditorIconInsertUnorderedList { background-position: -702px; }
+.dijitEditorIconCreateLink { background-position: -720px; }
+.dijitEditorIconUnlink { background-position: -738px; }
+.dijitEditorIconViewSource { background-position: -756px; }
+.dijitEditorIconRemoveFormat { background-position: -774px; }
+.dijitEditorIconFullScreen { background-position: -792px; }
+.dijitEditorIconWikiword { background-position: -810px; }
+.dijitColorPalette {
+       border:1px solid #cbcbcb;
+       background:#fff;
+       -moz-border-radius: 0px !important;
+}
diff --git a/lib/dijit/themes/soria/soria_rtl.css b/lib/dijit/themes/soria/soria_rtl.css
new file mode 100644 (file)
index 0000000..97246a2
--- /dev/null
@@ -0,0 +1,225 @@
+
+.dijitRtl .dijitPlaceHolder {
+       left: auto;
+       right: 0;
+}
+.dijitMenuItemRtl {
+       text-align: right;
+}
+.dj_iequirks .dijitComboButtonRtl BUTTON {
+       
+       float:left;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitComboBoxRtl .dijitArrowButtonContainer {
+       
+       border-right-width: 1px !important;
+       border-right-style: solid !important;
+       border-left-width: 0px !important;
+       border-left-style: none !important;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijit_a11y .dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBoxRtl .dijitArrowButtonContainer {
+       border-right: 1px solid black !important;
+       border-left: 0px none black !important;
+}
+.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {
+       right: 0;
+       left: auto;
+}
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitArrowButtonContainer {
+       float: left;
+}
+.dijitCalendarRtl .dijitCalendarNextYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarRtl .dijitCalendarPreviousYear {
+       margin:0 0 0 0.55em;
+}
+.dijitSliderRtl .dijitSliderImageHandleV {
+       left:auto;
+}
+.dijitSliderRtl .dijitSliderImageHandleH {
+       left:-50%;
+}
+.dijitSliderRtl .dijitSliderMoveableH {
+       right:auto;
+       left:0;
+}
+.dijitSliderRtl .dijitRuleContainerV {
+       float:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleContainerV {
+       text-align:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelV {
+       text-align:left;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelH {
+       zoom:1;
+}
+.dijitSliderRtl .dijitSliderProgressBarH {
+       
+       float:right;
+       right:0;
+       left:auto;
+}
+.dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError {
+       background-position:right;
+       padding-right:25px;
+}
+.dijitTabRtl .dijitTabCloseButton {
+       margin-left: 0px;
+       margin-right: 1em;
+}
+.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {
+       width:100%;
+}
+.dijitColorPaletteRtl .dijitColorPaletteUnder {
+       
+       left: auto;
+       right: 0;
+}
+.dijitSelectRtl .dijitButtonContents {
+       text-align: right;
+}
+.dijitRtl .soria .dijitTab {
+       margin-right:0;
+       margin-left:2px;                
+}
+.dijitRtl .soria .dijitTabContainer .tabStripButton {
+       margin-left: 0;
+}
+.dijitRtl .soria .dijitTabContainerTopStrip,
+.dijitRtl .soria .dijitTabContainerBottomStrip,
+.dijitRtl .soria .dijitTabContainerTop-tabs,
+.dijitRtl .soria .dijitTabContainerBottom-tabs {
+       padding-left: 0;
+       padding-right: 3px;
+}
+.dijitRtl .soria .dijitTabInnerDiv {
+       padding-left: 3px;
+       padding-right: 4px;
+}
+.dijitRtl .soria .dijitTabPaneWrapper {
+       #zoom: 1;
+}
+.dj_ie-rtl .soria .dijitTabContainerLeft-tabs {
+       margin-left: 0px !important;
+}
+.dj_ie-rtl .soria .dijitTabContainerRight-tabs {
+       margin-right: 0px !important;
+}
+.dijitRtl .soria .dijitTabContainerLeft-tabs .dijitTab,
+.dijitRtl .soria .dijitTabContainerRight-tabs .dijitTab {
+       margin-left:0px;
+}
+.dj_ie-rtl .soria .dijitTab .dijitTabInnerDiv{
+       width : 1%;
+}
+.dijitRtl .soria .dijitAccordionArrow {
+       background-position: 0px top;
+}
+.dijitRtl .soria .dijitAccordionTitleSelected .dijitAccordionArrow {
+       
+       background-position: -15px top;
+}
+.dijitRtl .soria .dijitSliderProgressBarH,
+.dijitRtl .soria .dijitSliderRemainingBarH,
+.dijitRtl .soria .dijitSliderLeftBumper,
+.dijitRtl .soria .dijitSliderRightBumper,
+.dijitRtl .soria .dijitSliderTopBumper {
+       background-position: top right;
+}
+.dijitRtl .soria .dijitSliderProgressBarV,
+.dijitRtl .soria .dijitSliderRemainingBarV,
+.dijitRtl .soria .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.dijitRtl .soria .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.dijitRtl .soria .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.dijitRtl .soria .dijitSliderIncrementIconH {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat left top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat left top;
+}
+.dijitRtl .soria .dijitSliderDecrementIconH {
+       background:url(images/spriteRoundedIconsSmall.png) no-repeat -30px top;
+       #background:url(images/spriteRoundedIconsSmall.gif) no-repeat -30px top;
+}
+.dijitRtl .soria .dijitComboBox .dijitButtonNode {
+       border-width: 0px 0px 0px 1px;
+}
+.dijitRtl .soria .dijitSelect .dijitButtonContents {
+       border-left: none;
+       border-right-width: 1px;
+}
+.dijitRtl .soria .dijitTreeNode,
+.dijitRtl .soria .dijitTreeExpandoLeaf {
+       
+    background-image: none;
+}
+.dijitRtl .soria .dijitTreeContent {
+    padding-left: 0px;
+    padding-right: 1px;
+}
+.dijitRtl .soria .dijitTreeExpandoOpened {
+       
+       background: url(images/spriteTree_rtl.gif) no-repeat -18px top;
+}
+.dijitRtl .soria .dijitTreeExpandoClosed {
+       
+       background-image: url(images/spriteTree_rtl.gif);
+}
+.dijitRtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: 0px top;
+}
+.dj_ie6-rtl .soria .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: 0px top;
+}
+.dijitRtl .soria .dijitCalendarDecrease {
+       background-position: -30px top;
+}
+.dijitRtl .soria .dijitCalendarIncrease {
+       background-position: 0px top;
+}
+.dj_ie6-rtl .soria .dijitTimePickerMarkerHover,
+.dj_ie7-rtl .soria .dijitTimePickerMarkerHover {
+        border-top: 0px; 
+}
+.dijitRtl .soria .dijitDialogTitleBar .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
+.dijitRtl .soria .dijitMenuItem .dijitMenuItemIcon {
+       padding-left: 3px;
+       padding-right: 0px;
+}
+.dijitRtl .soria .dijitMenuItem .dijitMenuExpand {
+       background-position: left top;
+}
+.dijitRtl .soria .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.dijitRtl .soria .dijitDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitEditorRtl .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitToolbarRtl .dijitToolbarSeparator {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png);
+}
diff --git a/lib/dijit/themes/tundra/Calendar.css b/lib/dijit/themes/tundra/Calendar.css
new file mode 100644 (file)
index 0000000..19d8bf7
--- /dev/null
@@ -0,0 +1,118 @@
+
+.tundra .dijitCalendarIncrementControl {
+       
+       width:15px;
+       height:15px;
+       background-image: url("images/spriteRoundedIconsSmall.png");
+       background-repeat: no-repeat
+}
+.dj_ie6 .tundra .dijitCalendarIncrementControl {
+       font-size:.1em;
+       background-image: url("images/spriteRoundedIconsSmall.gif");
+}
+.tundra .dijitA11ySideArrow {
+       display: none;
+}
+.tundra .dijitCalendarDecrease {
+       background-position: top left;
+}
+.tundra .dijitCalendarIncrease {
+       background-position: -30px top;
+}
+.tundra .dijitCalendarContainer {
+       font-size: 100%;
+       border-spacing: 0;
+       border-collapse: separate;
+       border: 1px solid #ccc;
+       margin: 0;
+}
+.tundra .dijitCalendarMonthContainer th {
+       
+       background:#d3d3d3 url("images/titleBar.png") repeat-x top;
+       padding-top:.3em;
+       padding-bottom:.2em;
+       text-align:center;
+}
+.dj_ie6 .tundra .dijitCalendarMonthContainer th {
+       padding-top:.2em;
+       padding-bottom:.1em;
+}
+.tundra .dijitCalendarDayLabelTemplate {
+       
+       background:white url("images/calendarDayLabel.png") repeat-x bottom;
+       font-weight:normal;
+       padding-top:.15em;
+       padding-bottom:0em;
+       border-top: 1px solid #eeeeee;
+       color:#293a4b;
+       text-align:center;
+}
+.tundra .dijitCalendarBodyContainer {
+       border-bottom: 1px solid #eeeeee;
+}
+.tundra .dijitCalendarMonthLabel {
+       color:#293a4b;
+       font-weight: bold;
+}
+.tundra .dijitCalendarDateTemplate {
+       
+       font-size: 0.9em;
+       font-weight: bold;
+       text-align: center;
+       padding: 0.3em 0.3em 0.05em 0.3em;
+       letter-spacing: 1px;
+}
+.dj_ie .tundra .dijitCalendarDateTemplate {
+       padding: 0.1em .33em 0.02em .33em;
+}
+.tundra .dijitCalendarPreviousMonth,
+.tundra .dijitCalendarNextMonth                {
+       
+       color:#999999;
+       background-color:#f8f8f8;
+}
+.tundra .dijitCalendarCurrentMonth {
+       
+       background-color: white;
+}
+.tundra .dijitCalendarCurrentDate {
+       
+       text-decoration:underline;
+       font-weight:bold;
+}
+.tundra .dijitCalendarHoveredDate {
+       background-color: #e2ebf2;
+}
+.tundra .dijitCalendarDisabledDate {
+       text-decoration: line-through;
+       background-color: white;        
+}
+.tundra .dijitCalendarSelectedDate {
+       
+       background-color:#bbc4d0 !important;
+       color:black !important;
+}
+.tundra .dijitCalendarYearContainer {
+       
+       background:white url("images/calendarYearLabel.png") repeat-x bottom;
+       border-top:1px solid #ccc;
+}
+.tundra .dijitCalendarYearLabel {
+       
+       margin:0;
+       padding:0.4em 0 0.25em 0;
+       text-align:center;
+}
+.tundra .dijitCalendarSelectedYear {
+       
+       color:black;
+       padding:0.2em;
+       padding-bottom:0.1em;
+       background-color:#bbc4d0 !important;
+}
+.tundra .dijitCalendarNextYear,
+.tundra .dijitCalendarPreviousYear {
+       
+       color:black !important;
+       font-weight:normal;
+}
diff --git a/lib/dijit/themes/tundra/Calendar_rtl.css b/lib/dijit/themes/tundra/Calendar_rtl.css
new file mode 100644 (file)
index 0000000..9144dcf
--- /dev/null
@@ -0,0 +1,7 @@
+
+.tundra .dijitCalendarRtl .dijitCalendarDecrease {
+       background-position: -30px top;
+}
+.tundra .dijitCalendarRtl .dijitCalendarIncrease {
+       background-position: 0px top;
+}
diff --git a/lib/dijit/themes/tundra/ColorPalette.css b/lib/dijit/themes/tundra/ColorPalette.css
new file mode 100644 (file)
index 0000000..56fa558
--- /dev/null
@@ -0,0 +1,5 @@
+.dijitColorPalette {
+       border:1px solid #7eabcd;
+       background:#fff;
+       -moz-border-radius: 0px !important;
+}
diff --git a/lib/dijit/themes/tundra/Common.css b/lib/dijit/themes/tundra/Common.css
new file mode 100644 (file)
index 0000000..b7f8ace
--- /dev/null
@@ -0,0 +1,27 @@
+
+.tundra .dojoDndItemBefore {
+       border-top: 2px solid #369;
+}
+.tundra .dojoDndItemAfter {
+       border-bottom: 2px solid #369;
+}
+.tundra .dojoDndItemOver {
+       cursor:pointer;
+}
+.tundra table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
+.tundra .dojoDndAvatar td      { border: none; }
+.tundra .dojoDndAvatar tr      { border: none; }
+.tundra .dojoDndAvatarHeader td        { height: 20px; padding: 0 0 0 21px; }
+.tundra .dojoDndAvatarItem td { padding: 2px;}
+.tundra.dojoDndMove .dojoDndAvatarHeader       {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra.dojoDndCopy .dojoDndAvatarHeader       {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra .dijitContentPaneLoading {
+       background:url('images/loading.gif') no-repeat left center;
+       padding-left:25px;
+}
+.tundra .dijitContentPaneError {
+       background:url('images/warning.png') no-repeat left center;
+       padding-left:25px;
+}
diff --git a/lib/dijit/themes/tundra/Dialog.css b/lib/dijit/themes/tundra/Dialog.css
new file mode 100644 (file)
index 0000000..74d3d36
--- /dev/null
@@ -0,0 +1,134 @@
+
+.tundra .dijitDialog {
+       background: #fff;
+       border: 1px solid #7eabcd;
+       padding: 0px;
+       -webkit-box-shadow: 0px 5px 10px #adadad;
+}
+.tundra .dijitDialogPaneContent {
+       background: #fff;
+       border-top: 1px solid #d3d3d3;
+       padding:10px;
+}
+.tundra .dijitDialogTitleBar {
+       
+       background: #fafafa url("images/titleBar.png") repeat-x top left;
+       padding: 5px 6px 3px 6px;
+       outline:0; 
+}
+.tundra .dijitDialogTitle {
+       
+       font-weight: bold;
+       padding: 0px 4px;
+}
+.tundra .dijitDialogCloseIcon {
+       
+       
+       background: url("images/tabClose.png") no-repeat right top;
+       position: absolute;
+       vertical-align: middle;
+       right: 6px;
+       top: 4px;
+       height: 15px;
+       width: 15px;
+}
+.dj_ie6 .tundra .dijitDialogCloseIcon {
+       background : url("images/tabClose.gif") no-repeat right top;
+}
+.tundra .dijitDialogCloseIconHover {
+       background: url("images/tabCloseHover.png") no-repeat right top;
+}
+.dj_ie6 .tundra .dijitDialogCloseIconHover {
+       background : url("images/tabCloseHover.gif") no-repeat right top;
+}
+.tundra .dijitTooltip,
+.tundra .dijitTooltipDialog {
+       
+       background: transparent;        
+}
+.dijitTooltipBelow {
+       
+       padding-top: 13px;
+}
+.dijitTooltipAbove {
+       
+       padding-bottom: 13px;
+}
+.tundra .dijitTooltipContainer {
+       
+       background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left;
+       border: 1px solid #7eabcd;
+       padding: 0.45em;
+       -webkit-border-radius: 3px;
+       -moz-border-radius: 3px;
+}
+.tundra .dijitTooltipConnector {
+       
+       border:0px;
+       z-index: 2;
+}
+.tundra .dijitTooltipABRight .dijitTooltipConnector {
+       
+       left: auto !important;
+       right: 3px;
+}
+.tundra .dijitTooltipBelow .dijitTooltipConnector {
+       
+       top: 0px;
+       left: 3px;
+       background:url("images/tooltipConnectorUp.png") no-repeat top left;
+       width:16px;
+       height:14px;
+}
+.dj_ie .tundra .dijitTooltipBelow .dijitTooltipConnector {
+       
+       background-image: url("images/tooltipConnectorUp.gif");
+}
+.tundra .dijitTooltipAbove .dijitTooltipConnector {
+       
+       bottom: 0px;
+       left: 3px;
+       background:url("images/tooltipConnectorDown.png") no-repeat top left;
+       width:16px;
+       height:14px;
+}
+.dj_ie .tundra .dijitTooltipAbove .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorDown.gif");
+}
+.dj_ie6 .tundra .dijitTooltipAbove .dijitTooltipConnector {
+       bottom: -3px;
+}
+.tundra .dijitTooltipLeft {
+       padding-right: 14px;
+}
+.dj_ie6 .tundra .dijitTooltipLeft {
+       padding-left: 15px;
+}
+.tundra .dijitTooltipLeft .dijitTooltipConnector {
+       
+       right: 0px;
+       bottom: 3px;
+       background:url("images/tooltipConnectorRight.png") no-repeat top left;
+       width:16px;
+       height:14px;
+}
+.dj_ie .tundra .dijitTooltipLeft .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorRight.gif");
+}
+.tundra .dijitTooltipRight {
+       padding-left: 14px;
+}
+.tundra .dijitTooltipRight .dijitTooltipConnector {
+       
+       left: 0px;
+       bottom: 3px;
+       background:url("images/tooltipConnectorLeft.png") no-repeat top left;
+       width:16px;
+       height:14px;
+}
+.dj_ie .tundra .dijitTooltipRight .dijitTooltipConnector {
+       background-image: url("images/tooltipConnectorLeft.gif");
+}
+.dj_webkit .tundra .dijitTooltipContainer {
+       -webkit-box-shadow: 0px 5px 10px #adadad;
+}
diff --git a/lib/dijit/themes/tundra/Dialog_rtl.css b/lib/dijit/themes/tundra/Dialog_rtl.css
new file mode 100644 (file)
index 0000000..faeaa41
--- /dev/null
@@ -0,0 +1,5 @@
+
+.tundra .dijitDialogRtl .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
diff --git a/lib/dijit/themes/tundra/Editor.css b/lib/dijit/themes/tundra/Editor.css
new file mode 100644 (file)
index 0000000..d24de95
--- /dev/null
@@ -0,0 +1,14 @@
+.dijitEditor {
+       border:1px solid #bfbfbf;
+       border-top:0;
+}
+.tundra .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsEnabled.png'); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.tundra .dijitDisabled .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsDisabled.png'); 
+}
diff --git a/lib/dijit/themes/tundra/Editor_rtl.css b/lib/dijit/themes/tundra/Editor_rtl.css
new file mode 100644 (file)
index 0000000..888c033
--- /dev/null
@@ -0,0 +1,7 @@
+
+.tundra .dijitEditorRtl .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsEnabled_rtl.png'); 
+}
+.tundra .dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url('../../icons/images/editorIconsDisabled_rtl.png'); 
+}
diff --git a/lib/dijit/themes/tundra/Menu.css b/lib/dijit/themes/tundra/Menu.css
new file mode 100644 (file)
index 0000000..ca11988
--- /dev/null
@@ -0,0 +1,61 @@
+.tundra .dijitMenu,
+.tundra .dijitMenuBar {
+       border: 1px solid #7eabcd;
+       margin: 0px;
+       padding: 0px;
+       background-color: #f7f7f7;
+}
+.tundra .dijitBorderContainer .dijitMenuBar {
+       border:1px solid #ccc;
+}
+.tundra .dijitMenuItem {
+       font-family: sans-serif;
+       margin: 0;
+}
+.tundra .dijitMenuItem {
+       padding: 4px 5px;
+}
+.tundra .dijitMenuPreviousButton, .tundra .dijitMenuNextButton {
+       font-style: italic;
+}
+.tundra .dijitMenuItem td {
+       padding: 2px;
+}
+.tundra .dijitMenuPassive .dijitMenuItemHover,
+.tundra .dijitMenuItemSelected {
+       background-color: #3559ac;
+       color:#fff;
+}
+.tundra .dijitMenuItemIcon {
+       width: 16px;
+       height: 16px;
+}
+.tundra .dijitMenuExpand {
+       
+       width: 7px;
+       height: 7px;
+       background-image: url('images/spriteArrows.png');
+       background-position: -14px 0px;
+}
+.dj_ie6 .tundra .dijitMenuExpand {
+       background-image: url('images/spriteArrows.gif');
+}
+.tundra .dijitMenuSeparatorTop {
+       border-bottom: 1px solid #9b9b9b;
+}
+.tundra .dijitMenuSeparatorBottom {
+       border-top: 1px solid #e8e8e8;
+}
+.tundra .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.tundra .dijitCheckedMenuItemIcon {
+       background-image: url('images/checkmark.png');
+       background-position: -80px;
+}
+.dj_ie6 .tundra .dijitCheckedMenuItemIcon {
+       background-image: url('images/checkmark.gif');
+}
+.tundra .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: -64px;
+}
diff --git a/lib/dijit/themes/tundra/Menu_rtl.css b/lib/dijit/themes/tundra/Menu_rtl.css
new file mode 100644 (file)
index 0000000..7f0a58a
--- /dev/null
@@ -0,0 +1,3 @@
+.tundra .dijitMenuItemRtl .dijitMenuExpand {
+       background-position: -7px 0px;
+}
diff --git a/lib/dijit/themes/tundra/ProgressBar.css b/lib/dijit/themes/tundra/ProgressBar.css
new file mode 100644 (file)
index 0000000..3f555c4
--- /dev/null
@@ -0,0 +1,23 @@
+.tundra .dijitProgressBar {
+       margin:2px 0px 2px 0px;
+}
+.tundra .dijitProgressBarEmpty {
+       
+       background:#fff url("images/progressBarEmpty.png") repeat-x center center;
+       border-color: #a2a2a2 #b8b8b8 #b8b8b8 #a2a2a2;
+}
+.tundra .dijitProgressBarTile {
+       
+       background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;
+}
+.tundra .dijitProgressBarFull {
+       border-right:1px solid #b8b8b8;
+}
+.tundra .dijitProgressBarLabel {
+       
+       color:#293a4b;
+}
+.tundra .dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+       background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;
+}
diff --git a/lib/dijit/themes/tundra/TimePicker.css b/lib/dijit/themes/tundra/TimePicker.css
new file mode 100644 (file)
index 0000000..5811ad6
--- /dev/null
@@ -0,0 +1,42 @@
+
+.tundra .dijitTimePickerTick,
+.tundra .dijitTimePickerMarker {
+       border-color: #ccc;
+}
+.tundra .dijitTimePickerTick {
+       color:white;
+}
+.tundra .dijitTimePickerMarker {
+       background:#d3d3d3 url("images/titleBar.png") repeat-x top;
+       color:#293a4b;
+       font-weight: bold;
+}
+.tundra .dijitTimePickerItemSelected {
+       color: black;
+       background: #bbc4d0 none;
+}
+.tundra .dijitTimePickerItemHover {
+       background: #60a1ea none;
+       color:white;
+}
+.tundra .dijitTimePickerItemHover,
+.tundra .dijitTimePickerItemSelected {
+       position: relative;
+       z-index: 10;
+}
+.tundra .dijitTimePickerTick .dijitTimePickerItemInner {
+       font-size:0.4em;
+}
+.tundra .dijitTimePickerItemHover .dijitTimePickerItemInner,
+.tundra .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       font-size:1em;
+}
+.tundra .dijitTimePickerMarkerHover {
+       border-top: 1px solid #ccc;
+}
+.tundra .dijitTimePickerTickHover,
+.tundra .dijitTimePickerTickSelected {
+       margin-top:-0.3em;
+       margin-bottom:-0.3em;
+       border-bottom: none;
+}
diff --git a/lib/dijit/themes/tundra/TimePicker_rtl.css b/lib/dijit/themes/tundra/TimePicker_rtl.css
new file mode 100644 (file)
index 0000000..9856007
--- /dev/null
@@ -0,0 +1,4 @@
+ .dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover,
+.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover {
+        border-top: 0px; 
+}
diff --git a/lib/dijit/themes/tundra/TitlePane.css b/lib/dijit/themes/tundra/TitlePane.css
new file mode 100644 (file)
index 0000000..265de71
--- /dev/null
@@ -0,0 +1,34 @@
+.tundra .dijitTitlePaneTitle {
+       background: #cccccc;
+       background:#fff url("images/titleBar.png") repeat-x bottom left;
+       border:1px solid #bfbfbf;
+       padding:3px 4px;
+}
+.tundra .dijitTitlePaneTitleHover  {
+       background: #f8fafd url("images/accordionItemHover.gif") bottom repeat-x;
+}
+.tundra .dijitTitlePane .dijitArrowNode {
+       background-image: url('images/spriteArrows.png');
+       background-repeat: no-repeat;
+       background-position: 0px 0px;
+       height: 7px;
+       width: 7px;
+}
+.dj_ie6 .tundra .dijitTitlePane .dijitArrowNode {
+       background-image: url('images/spriteArrows.gif');
+}
+.tundra .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: -14px 0px;
+}
+.tundra .dijitTitlePaneContentOuter {
+       background: #ffffff;
+       border:1px solid #bfbfbf;
+       border-top: 0px;
+}
+.tundra .dijitTitlePaneContentInner {
+       padding:10px;
+}
+.tundra .dijitTitlePaneTextNode {
+       margin-left: 4px;
+       margin-right: 4px;
+}
diff --git a/lib/dijit/themes/tundra/TitlePane_rtl.css b/lib/dijit/themes/tundra/TitlePane_rtl.css
new file mode 100644 (file)
index 0000000..f3d2b91
--- /dev/null
@@ -0,0 +1,3 @@
+.tundra .dijitTitlePaneRtl .dijitClosed .dijitArrowNode {
+       background-position: -7px 0px;
+}
diff --git a/lib/dijit/themes/tundra/Toolbar.css b/lib/dijit/themes/tundra/Toolbar.css
new file mode 100644 (file)
index 0000000..0f489fa
--- /dev/null
@@ -0,0 +1,64 @@
+.tundra .dijitToolbar {
+       border-bottom: 1px solid #ccc;
+       background:#eaeaea url("images/titleBar.png") repeat-x top left;
+}
+.dj_ie6 .tundra .dijitToolbar {
+       height: 10px;
+}
+.tundra .dijitToolbar .dijitButtonNode,
+.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,
+.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       margin: 0px;
+       padding: 0px;
+       border: none;
+       font-size: 12px;
+}
+.tundra .dijitToolbar .dijitButton,
+.tundra .dijitToolbar .dijitToggleButton,
+.tundra .dijitToolbar .dijitDropDownButton,
+.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,
+.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton  {
+       background: none;
+       padding: 1px;
+}
+.tundra .dijitToolbar .dijitButtonChecked,
+.tundra .dijitToolbar .dijitToggleButtonChecked {
+       background-color:#d4dff2;
+       border:1px solid #316ac5;
+       padding: 0px;   
+}
+.tundra .dijitToolbar .dijitButtonCheckedHover,
+.tundra .dijitToolbar .dijitToggleButtonCheckedHover
+ {
+       background-color:#abc1e5;
+       border:1px solid #316ac5;
+       padding: 0px;   
+}
+.tundra .dijitToolbar .dijitButtonHover,
+.tundra .dijitToolbar .dijitToggleButtonHover,
+.tundra .dijitToolbar .dijitDropDownButtonHover,
+.tundra .dijitToolbar .dijitComboButton .dijitButtonContentsHover,
+.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {
+       
+       border: 1px solid #869cbf;
+       padding: 0px;   
+       background-color:#e1e5f0;
+}
+.tundra .dijitToolbar label {
+       padding: 3px 3px 0 6px;
+}
+.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
+       
+       border: 1px #555 dotted !important;
+       padding: 0px;
+}
+.tundra .dijitToolbarSeparator {
+       
+       background: url('../../icons/images/editorIconsEnabled.png');
+}
+.tundra .dijitToolbarRtl .dijitToolbarSeparator {
+       
+       background-image: url('../../icons/images/editorIconsDisabled.png');
+}
diff --git a/lib/dijit/themes/tundra/Tree.css b/lib/dijit/themes/tundra/Tree.css
new file mode 100644 (file)
index 0000000..5ba1c88
--- /dev/null
@@ -0,0 +1,72 @@
+
+.tundra .dijitTreeNode {
+    background-image : url('images/i.gif');
+    background-repeat : repeat-y;
+    zoom: 1;   
+}
+.tundra .dijitTreeIsLast {
+    background: url('images/i_half.gif') no-repeat;
+}
+.tundra .dijitTreeIsRoot {
+    margin-left: 0;
+    background-image: none;
+}
+.tundra .dijitTreeExpando {
+    width: 18px;
+    height: 18px;
+}
+.tundra .dijitTreeRow {
+       
+       padding-bottom: 2px;
+}
+.tundra .dijitTreeContent {
+    min-height: 18px;
+    min-width: 18px;
+}
+.tundra .dijitTreeRowSelected .dijitTreeLabel {
+       background:#e2ebfe;
+}
+.tundra .dijitTreeRowHover {
+       
+       background-image: url(images/treeHover.png);
+       background-repeat: repeat;
+       background-color: transparent !important;
+}
+.tundra .dijitTreeExpandoOpened {
+       background-image: url('images/treeExpand_minus.gif');
+}
+.tundra .dijitTreeExpandoClosed {
+       background-image: url('images/treeExpand_plus.gif');
+}
+.tundra .dijitTreeExpandoLeaf {
+       background-image: url('images/treeExpand_leaf.gif');
+}
+.tundra .dijitTreeExpandoLoading {
+       background-image: url('images/treeExpand_loading.gif');
+}
+.tundra .dijitTreeIcon {
+       width: 16px;
+       height: 16px;
+}
+.tundra .dijitFolderOpened {
+       background: url('images/folderOpened.gif') no-repeat;
+}
+.tundra .dijitFolderClosed {
+       background: url('images/folderClosed.gif') no-repeat;
+}
+.tundra .dijitLeaf {
+       background: url('images/leaf.gif') no-repeat;
+}
+.tundra .dijitTreeNode .dojoDndItemBefore,
+.tundra .dijitTreeNode .dojoDndItemAfter {
+       border-bottom: none;
+       border-top: none;
+}
+.tundra .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
+       
+       border-top: 2px solid #369;
+}
+.tundra .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
+       
+       border-bottom: 2px solid #369;
+}
diff --git a/lib/dijit/themes/tundra/Tree_rtl.css b/lib/dijit/themes/tundra/Tree_rtl.css
new file mode 100644 (file)
index 0000000..6a9d931
--- /dev/null
@@ -0,0 +1,13 @@
+
+.tundra .dijitTreeNodeRtl,
+.tundra .dijitTreeNodeRtl .dijitTreeExpandoLeaf {
+       
+    background-image: none;
+}
+.tundra .dijitTreeNodeRtl .dijitTreeExpandoOpened {
+       
+       background-image: url('images/treeExpand_minus_rtl.gif');
+}
+.tundra .dijitTreeNodeRtl .dijitTreeExpandoClosed {
+       background-image: url('images/treeExpand_plus_rtl.gif');
+}
diff --git a/lib/dijit/themes/tundra/form/Button.css b/lib/dijit/themes/tundra/form/Button.css
new file mode 100644 (file)
index 0000000..d9d103f
--- /dev/null
@@ -0,0 +1,118 @@
+
+.tundra .dijitButtonNode {
+       
+       border: 1px solid #c0c0c0;
+       border-bottom: 1px solid #9b9b9b;
+       padding: 0.1em 0.2em 0.2em 0.2em;
+       background: #fff url("../images/buttonEnabled.png") repeat-x bottom left;
+}
+.tundra .dijitButtonText {
+       text-align: center;
+       padding: 0 0.3em;
+}
+.tundra .dijitDisabled .dijitButtonText {
+       color: #7F7F7F;
+}
+.tundra .dijitArrowButton {
+       color: #111;
+}
+.tundra .dijitComboButton .dijitDownArrowButton {
+       padding-right:4px;
+}
+.tundra .dijitTextBoxReadOnly,
+.tundra .dijitTextBoxReadOnly .dijitButtonNode,
+.tundra .dijitButtonDisabled .dijitButtonNode,
+.tundra .dijitToggleButtonDisabled .dijitButtonNode,
+.tundra .dijitDropDownButtonDisabled .dijitButtonNode,
+.tundra .dijitComboButtonDisabled .dijitButtonNode,
+.tundra .dijitTextBoxDisabled,
+.tundra .dijitTextBoxDisabled .dijitButtonNode {
+       
+       border-color: #d5d5d5 #d5d5d5 #bdbdbd #d5d5d5;
+       background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x;
+}
+.tundra .dijitButtonHover .dijitButtonNode,
+.tundra .dijitButtonNodeHover,
+.tundra .dijitToggleButtonHover .dijitButtonNode,
+.tundra .dijitDropDownButtonHover .dijitButtonNode,
+.tundra .dijitComboButton .dijitButtonContentsHover,
+.tundra .dijitComboButton .dijitDownArrowButtonHover {
+       
+       
+       border-color: #a5beda;
+       border-bottom-color:#5c7590;
+       color:#243C5F;
+       background:#fcfdff url("../images/buttonHover.png") repeat-x bottom;
+}
+.tundra .dijitDownArrowButtonHover,
+.tundra .dijitUpArrowButtonHover {
+       
+       color:#243C5F;
+       background:#fcfdff url("../images/buttonHover.png") repeat-x bottom;
+}
+.tundra .dijitUpArrowButtonActive,
+.tundra .dijitDownArrowButtonActive,
+.tundra .dijitButtonActive .dijitButtonNode,
+.tundra .dijitToggleButtonActive .dijitButtonNode,
+.tundra .dijitDropDownButtonActive .dijitButtonNode,
+.tundra .dijitButtonContentsActive,
+.tundra .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {
+       
+       border-color:#366dba;
+       background: #ededed url("../images/buttonActive.png") bottom repeat-x;
+}
+.tundra .dijitArrowButtonInner {
+       background:url("../images/spriteArrows.png") no-repeat scroll 0px center;
+       width: 7px;
+       height: 7px;
+       margin: 0px 4px 0px 4px;
+}
+.tundra .dijitTextBox .dijitArrowButtonInner {
+       background-position: 0 center;
+}
+.dj_ie6 .tundra .dijitArrowButtonInner {
+       background-image:url("../images/spriteArrows.gif");
+}
+.tundra .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -7px center;
+}
+.tundra .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -14px center;
+}
+.tundra .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -21px center;
+}
+.tundra .dijitDisabled .dijitArrowButtonInner {
+       background-position: -28px center;
+}
+.tundra .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -35px center;
+}
+.tundra .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -42px center;
+}
+.tundra .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -49px center;
+}
+.dj_webkit .tundra .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {
+       margin-top: -1px; 
+}
+.dj_ie .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {
+       margin-top: -2px; 
+}
+.dj_ie8 .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {
+       margin-top: -1px; 
+}
+.tundra .dijitSpinnerButtonContainer {
+       width: auto;
+       padding: 0;
+}
+.tundra .dijitSpinner .dijitArrowButton {
+       width: 15px;
+}
+.tundra .dijitSpinner .dijitSpinnerButtonInner {
+       width: 15px;
+}
+.tundra .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding: 0;
+}
diff --git a/lib/dijit/themes/tundra/form/Checkbox.css b/lib/dijit/themes/tundra/form/Checkbox.css
new file mode 100644 (file)
index 0000000..e7ff2f9
--- /dev/null
@@ -0,0 +1,45 @@
+.tundra .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url('../images/checkmarkNoBorder.png');
+}
+.dj_ie6 .tundra .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url('../images/checkmarkNoBorder.gif');
+}
+.tundra .dijitCheckBox,
+.tundra .dijitCheckBoxIcon                     {
+       background-image: url('../images/checkmark.png'); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0 2px 0 0;
+       padding: 0;
+}
+.dj_ie6 .tundra .dijitCheckBox,
+.dj_ie6 .tundra .dijitCheckBoxIcon                     {
+       background-image: url('../images/checkmark.gif'); 
+}
+.tundra .dijitCheckBox,
+.tundra .dijitToggleButton .dijitCheckBoxIcon {
+       
+       background-position: -16px;
+}
+.tundra .dijitCheckBoxChecked,
+.tundra .dijitToggleButtonChecked .dijitCheckBoxIcon {
+       
+       background-position: 0px;
+}
+.tundra .dijitCheckBoxDisabled {
+       
+       background-position: -48px;
+}
+.tundra .dijitCheckBoxCheckedDisabled {
+       
+       background-position: -32px;
+}
+.tundra .dijitCheckBoxHover {
+       
+       background-position: -80px;
+}
+.tundra .dijitCheckBoxCheckedHover {
+       
+       background-position: -64px;
+}
diff --git a/lib/dijit/themes/tundra/form/Common.css b/lib/dijit/themes/tundra/form/Common.css
new file mode 100644 (file)
index 0000000..999eb22
--- /dev/null
@@ -0,0 +1,48 @@
+
+.tundra .dijitInputContainer INPUT,
+.tundra .dijitTextBox {
+       margin: 0em 0.1em;
+}
+.tundra .dijitTextArea {
+       padding: 3px;
+}
+.tundra .dijitTextBox {
+       
+       background:#fff url("../images/validationInputBg.png") repeat-x top left;
+       #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+       border:1px solid #b3b3b3;
+}
+.tundra .dijitComboBox .dijitButtonNode {
+       padding: 0 0.2em;
+}
+.tundra .dijitTextBox .dijitButtonNode {
+       
+       border-color: #9b9b9b;
+}
+.tundra .dijitTextBoxFocused {
+       
+       border-color:#406b9b;
+}
+.tundra .dijitTextBoxFocused .dijitButtonNode {
+       border-color:#366dba;
+}
+.tundra .dijitError {
+       background-color:#f9f7ba;
+       background-image:none;
+}
+.tundra .dijitErrorFocused {
+       background-color:#f9f999;
+       background-image:none;
+}
+.tundra .dijitValidationIcon {
+       
+       width: 16px;
+       background: transparent url('../images/warning.png') no-repeat center center;
+}
+.tundra .dijitComboBoxHighlightMatch {
+       background-color:#a5beda;
+}
+.tundra .dijitFocusedLabel {
+       
+       outline: 1px dotted #666666;
+}
diff --git a/lib/dijit/themes/tundra/form/RadioButton.css b/lib/dijit/themes/tundra/form/RadioButton.css
new file mode 100644 (file)
index 0000000..3044d0e
--- /dev/null
@@ -0,0 +1,44 @@
+
+.tundra .dijitRadio,                   
+.tundra .dijitRadioIcon        {               
+       background-image: url('../images/checkmark.png'); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.dj_ie6 .tundra .dijitRadio,
+.dj_ie6 .tundra .dijitRadioIcon        {
+       background-image: url('../images/checkmark.gif'); 
+}
+.tundra .dijitToggleButton .dijitRadioIcon {
+       
+       background-image: url('../images/checkmarkNoBorder.png');
+}
+.dj_ie6 .tundra .dijitToggleButton .dijitRadioIcon {
+       background-image: url('../images/checkmarkNoBorder.gif');
+}
+.tundra .dijitRadio,
+.tundra .dijitRadioIcon {
+       
+       background-position: -112px;
+}
+.tundra .dijitRadioDisabled {
+       
+       background-position: -144px;
+}
+.tundra .dijitRadioHover {
+       
+       background-position: -176px;
+}
+.tundra .dijitRadioChecked,
+.tundra .dijitRadioCheckedHover,
+.tundra .dijitToggleButtonChecked .dijitRadioIcon {
+       
+       background-position: -96px;
+}
+.tundra .dijitRadioCheckedDisabled {
+       
+       background-position: -128px;
+}
diff --git a/lib/dijit/themes/tundra/form/Select.css b/lib/dijit/themes/tundra/form/Select.css
new file mode 100644 (file)
index 0000000..072b120
--- /dev/null
@@ -0,0 +1,47 @@
+.tundra .dijitSelect .dijitButtonNode {
+       padding: 0px;
+}
+.tundra .dijitSelect .dijitButtonNode .dijitArrowButtonInner {
+       margin: 0px 4px 0px 5px;
+}
+.tundra .dijitSelect .dijitButtonContents {
+       padding-top: 1px;
+       background:#fff url("../images/validationInputBg.png") repeat-x top left;
+       #background:#fff url('../images/validationInputBg.gif') repeat-x top left;
+}
+.tundra .dijitSelectHover .dijitButtonContents,
+.tundra .dijitSelectActive .dijitButtonContents,
+.tundra .dijitSelectOpened .dijitButtonContents,
+.tundra .dijitSelectDisabled .dijitButtonContents,
+.tundra .dijitSelectReadOnly .dijitButtonContents{
+       background: transparent none;
+}
+.dj_ie .tundra .dijitSelect .dijitButtonContents {
+       padding-top: 0px;
+}
+.tundra .dijitSelectDisabled .dijitButtonNode {
+       border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
+       background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x;
+}
+.dj_ie .tundra .dijitSelectDisabled  .dijitButtonNode * {
+       filter: gray() alpha(opacity=50);
+}
+.tundra .dijitSelectHover .dijitButtonNode {
+       border-color:#a5beda;
+       border-bottom-color:#5c7590;
+       border-right-color:#5c7590;
+       color:#243C5F;
+       background:#fcfdff url("../images/buttonHover.png") repeat-x bottom;
+}
+.tundra .dijitSelectActive .dijitButtonNode,
+.tundra .dijitSelectOpened .dijitButtonNode {
+       border-color:#366dba;
+       background: #ededed url("../images/buttonActive.png") bottom repeat-x;
+}
+.tundra .dijitSelectMenu td {
+       padding: 0em;
+}
+.tundra .dijitSelectMenu .dijitMenuItemLabel,
+.tundra .dijitSelectMenu .dijitMenuArrowCell {
+       padding: 0.1em 0.2em;
+}
diff --git a/lib/dijit/themes/tundra/form/Slider.css b/lib/dijit/themes/tundra/form/Slider.css
new file mode 100644 (file)
index 0000000..b2c2b69
--- /dev/null
@@ -0,0 +1,129 @@
+.tundra .dijitSliderProgressBarH {
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+.tundra .dijitSliderProgressBarV {
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+.tundra .dijitSliderFocused .dijitSliderProgressBarH,
+.tundra .dijitSliderFocused .dijitSliderLeftBumper {
+       background-image:url("../images/sliderFullFocus.png");
+}
+.tundra .dijitSliderFocused .dijitSliderProgressBarV,
+.tundra .dijitSliderFocused .dijitSliderBottomBumper {
+       background-image:url("../images/sliderFullVerticalFocus.png");
+}
+.tundra .dijitSliderRemainingBarV {
+       border-color: #b4b4b4;
+       background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left;
+}
+.tundra .dijitSliderRemainingBarH {
+       border-color: #b4b4b4;
+       background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+}
+.tundra .dijitSliderBar {
+       border-style: solid;
+       outline:1px;
+}
+.tundra .dijitSliderFocused .dijitSliderBar {
+       border-color:#888;
+}
+.tundra .dijitSliderImageHandleH {
+       border:0px;
+       width:16px;
+       height:16px;
+       background:url("../images/preciseSliderThumb.png") no-repeat center top;
+}
+.tundra .dijitSliderFocused .dijitSliderImageHandleH {
+       background-image:url("../images/preciseSliderThumbFocus.png");
+       #background-image:url("../images/preciseSliderThumbFocus.gif");
+}
+.dj_ie6 .tundra .dijitSliderImageHandleH {
+       background-image:url("../images/preciseSliderThumb.gif");
+}
+.tundra .dijitSliderLeftBumper {
+       border-left-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left;
+}
+.tundra .dijitSliderRightBumper {
+       background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left;
+       border-color: #b4b4b4;
+       border-right-width: 1px;
+}
+.tundra .dijitSliderImageHandleV {
+       border:0px;
+       width:16px;
+       height:16px;
+       background:url("../images/sliderThumb.png") no-repeat center center;
+}
+.tundra .dijitSliderFocused .dijitSliderImageHandleV {
+       background-image:url("../images/sliderThumbFocus.png");
+}
+.dj_ie6 .tundra .dijitSliderFocused .dijitSliderImageHandleV {
+       background-image:url("../images/sliderThumbFocus.gif");
+}
+.tundra .dijitSliderBottomBumper {
+       border-bottom-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left;
+}
+.tundra .dijitSliderTopBumper {
+       background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left;
+       border-color: #b4b4b4;
+       border-top-width: 1px;
+}
+.tundra .dijitSliderDecrementIconH,
+.tundra .dijitSliderDecrementIconV,
+.tundra .dijitSliderIncrementIconH,
+.tundra .dijitSliderIncrementIconV {
+       background-image: url('../images/spriteArrows.png');
+       background-repeat: no-repeat;
+       margin: 5px;
+       height: 7px;
+       width: 7px;
+       font-size: 1px;
+}
+.dj_ie6 .tundra .dijitSliderDecrementIconH,
+.dj_ie6 .tundra .dijitSliderDecrementIconV,
+.dj_ie6 .tundra .dijitSliderIncrementIconH,
+.dj_ie6 .tundra .dijitSliderIncrementIconV {
+       background-image: url('../images/spriteArrows.gif');
+}
+.tundra .dijitSliderDecrementIconH {
+       background-position: -7px 0px;
+}
+.tundra .dijitSliderIncrementIconH {
+       background-position: -14px 0px;
+}
+.tundra .dijitSliderDecrementIconV {
+       background-position: 0px 0px;
+}
+.tundra .dijitSliderIncrementIconV {
+       background-position: -21px 0px;
+}
+.tundra .dijitSliderButtonInner {
+       visibility:hidden;
+}
+.tundra .dijitSliderReadOnly *,
+.tundra .dijitSliderDisabled * {
+       border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
+       color: #bdbdbd;
+}
+.tundra .dijitSliderReadOnly .dijitSliderDecrementIconH,
+.tundra .dijitSliderDisabled .dijitSliderDecrementIconH {
+       background-position: -35px 0px;
+}
+.tundra .dijitSliderReadOnly .dijitSliderIncrementIconH,
+.tundra .dijitSliderDisabled .dijitSliderIncrementIconH {
+       background-position: -42px 0px;
+}
+.tundra .dijitSliderReadOnly .dijitSliderDecrementIconV,
+.tundra .dijitSliderDisabled .dijitSliderDecrementIconV {
+       background-position: -28px 0px;
+}
+.tundra .dijitSliderReadOnly .dijitSliderIncrementIconV,
+.tundra .dijitSliderDisabled .dijitSliderIncrementIconV {
+       background-position: -49px 0px;
+}
diff --git a/lib/dijit/themes/tundra/form/Slider_rtl.css b/lib/dijit/themes/tundra/form/Slider_rtl.css
new file mode 100644 (file)
index 0000000..979eed6
--- /dev/null
@@ -0,0 +1,26 @@
+.tundra .dijitSliderRtl .dijitSliderProgressBarH,
+.tundra .dijitSliderRtl .dijitSliderRemainingBarH,
+.tundra .dijitSliderRtl .dijitSliderLeftBumper,
+.tundra .dijitSliderRtl .dijitSliderRightBumper,
+.tundra .dijitSliderRtl .dijitSliderTopBumper {
+       background-position: top right;
+}
+.tundra .dijitSliderRtl .dijitSliderProgressBarV,
+.tundra .dijitSliderRtl .dijitSliderRemainingBarV,
+.tundra .dijitSliderRtl .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.tundra .dijitSliderRtl .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.tundra .dijitSliderRtl .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.tundra .dijitSliderRtl .dijitSliderIncrementIconH {
+       background-position: -7px 0px;
+}
+.tundra .dijitSliderRtl .dijitSliderDecrementIconH {
+       background-position: -14px 0px;
+}
diff --git a/lib/dijit/themes/tundra/images/accordionItemActive.gif b/lib/dijit/themes/tundra/images/accordionItemActive.gif
new file mode 100644 (file)
index 0000000..ccff383
Binary files /dev/null and b/lib/dijit/themes/tundra/images/accordionItemActive.gif differ
diff --git a/lib/dijit/themes/tundra/images/accordionItemHover.gif b/lib/dijit/themes/tundra/images/accordionItemHover.gif
new file mode 100644 (file)
index 0000000..96bd3a4
Binary files /dev/null and b/lib/dijit/themes/tundra/images/accordionItemHover.gif differ
diff --git a/lib/dijit/themes/tundra/images/buttonActive.png b/lib/dijit/themes/tundra/images/buttonActive.png
new file mode 100644 (file)
index 0000000..09417b1
Binary files /dev/null and b/lib/dijit/themes/tundra/images/buttonActive.png differ
diff --git a/lib/dijit/themes/tundra/images/buttonDisabled.png b/lib/dijit/themes/tundra/images/buttonDisabled.png
new file mode 100644 (file)
index 0000000..70766f4
Binary files /dev/null and b/lib/dijit/themes/tundra/images/buttonDisabled.png differ
diff --git a/lib/dijit/themes/tundra/images/buttonEnabled.png b/lib/dijit/themes/tundra/images/buttonEnabled.png
new file mode 100644 (file)
index 0000000..cf0eb20
Binary files /dev/null and b/lib/dijit/themes/tundra/images/buttonEnabled.png differ
diff --git a/lib/dijit/themes/tundra/images/buttonHover.png b/lib/dijit/themes/tundra/images/buttonHover.png
new file mode 100644 (file)
index 0000000..b074e4e
Binary files /dev/null and b/lib/dijit/themes/tundra/images/buttonHover.png differ
diff --git a/lib/dijit/themes/tundra/images/calendarDayLabel.png b/lib/dijit/themes/tundra/images/calendarDayLabel.png
new file mode 100644 (file)
index 0000000..c1a1553
Binary files /dev/null and b/lib/dijit/themes/tundra/images/calendarDayLabel.png differ
diff --git a/lib/dijit/themes/tundra/images/calendarMonthLabel.png b/lib/dijit/themes/tundra/images/calendarMonthLabel.png
new file mode 100644 (file)
index 0000000..fd2cf0a
Binary files /dev/null and b/lib/dijit/themes/tundra/images/calendarMonthLabel.png differ
diff --git a/lib/dijit/themes/tundra/images/calendarYearLabel.png b/lib/dijit/themes/tundra/images/calendarYearLabel.png
new file mode 100644 (file)
index 0000000..dd344f5
Binary files /dev/null and b/lib/dijit/themes/tundra/images/calendarYearLabel.png differ
diff --git a/lib/dijit/themes/tundra/images/checkmark.gif b/lib/dijit/themes/tundra/images/checkmark.gif
new file mode 100644 (file)
index 0000000..ae6faa9
Binary files /dev/null and b/lib/dijit/themes/tundra/images/checkmark.gif differ
diff --git a/lib/dijit/themes/tundra/images/checkmark.png b/lib/dijit/themes/tundra/images/checkmark.png
new file mode 100644 (file)
index 0000000..0307109
Binary files /dev/null and b/lib/dijit/themes/tundra/images/checkmark.png differ
diff --git a/lib/dijit/themes/tundra/images/checkmarkNoBorder.gif b/lib/dijit/themes/tundra/images/checkmarkNoBorder.gif
new file mode 100644 (file)
index 0000000..324bfb3
Binary files /dev/null and b/lib/dijit/themes/tundra/images/checkmarkNoBorder.gif differ
diff --git a/lib/dijit/themes/tundra/images/checkmarkNoBorder.png b/lib/dijit/themes/tundra/images/checkmarkNoBorder.png
new file mode 100644 (file)
index 0000000..9cec0c0
Binary files /dev/null and b/lib/dijit/themes/tundra/images/checkmarkNoBorder.png differ
diff --git a/lib/dijit/themes/tundra/images/circleIcon.gif b/lib/dijit/themes/tundra/images/circleIcon.gif
new file mode 100644 (file)
index 0000000..d582290
Binary files /dev/null and b/lib/dijit/themes/tundra/images/circleIcon.gif differ
diff --git a/lib/dijit/themes/tundra/images/circleIcon.png b/lib/dijit/themes/tundra/images/circleIcon.png
new file mode 100644 (file)
index 0000000..6f059e6
Binary files /dev/null and b/lib/dijit/themes/tundra/images/circleIcon.png differ
diff --git a/lib/dijit/themes/tundra/images/comboArrowDown.gif b/lib/dijit/themes/tundra/images/comboArrowDown.gif
new file mode 100644 (file)
index 0000000..e00a87b
Binary files /dev/null and b/lib/dijit/themes/tundra/images/comboArrowDown.gif differ
diff --git a/lib/dijit/themes/tundra/images/dijitProgressBarAnim.gif b/lib/dijit/themes/tundra/images/dijitProgressBarAnim.gif
new file mode 100644 (file)
index 0000000..167a3e0
Binary files /dev/null and b/lib/dijit/themes/tundra/images/dijitProgressBarAnim.gif differ
diff --git a/lib/dijit/themes/tundra/images/dijitProgressBarAnim.psd b/lib/dijit/themes/tundra/images/dijitProgressBarAnim.psd
new file mode 100644 (file)
index 0000000..0a7bf23
Binary files /dev/null and b/lib/dijit/themes/tundra/images/dijitProgressBarAnim.psd differ
diff --git a/lib/dijit/themes/tundra/images/dndCopy.png b/lib/dijit/themes/tundra/images/dndCopy.png
new file mode 100644 (file)
index 0000000..baecd7c
Binary files /dev/null and b/lib/dijit/themes/tundra/images/dndCopy.png differ
diff --git a/lib/dijit/themes/tundra/images/dndMove.png b/lib/dijit/themes/tundra/images/dndMove.png
new file mode 100644 (file)
index 0000000..07f878c
Binary files /dev/null and b/lib/dijit/themes/tundra/images/dndMove.png differ
diff --git a/lib/dijit/themes/tundra/images/dndNoCopy.png b/lib/dijit/themes/tundra/images/dndNoCopy.png
new file mode 100644 (file)
index 0000000..9bf9c33
Binary files /dev/null and b/lib/dijit/themes/tundra/images/dndNoCopy.png differ
diff --git a/lib/dijit/themes/tundra/images/dndNoMove.png b/lib/dijit/themes/tundra/images/dndNoMove.png
new file mode 100644 (file)
index 0000000..cb8bd8b
Binary files /dev/null and b/lib/dijit/themes/tundra/images/dndNoMove.png differ
diff --git a/lib/dijit/themes/tundra/images/dojoTundraGradientBg.gif b/lib/dijit/themes/tundra/images/dojoTundraGradientBg.gif
new file mode 100644 (file)
index 0000000..0da1239
Binary files /dev/null and b/lib/dijit/themes/tundra/images/dojoTundraGradientBg.gif differ
diff --git a/lib/dijit/themes/tundra/images/dojoTundraGradientBg.png b/lib/dijit/themes/tundra/images/dojoTundraGradientBg.png
new file mode 100644 (file)
index 0000000..ac118dd
Binary files /dev/null and b/lib/dijit/themes/tundra/images/dojoTundraGradientBg.png differ
diff --git a/lib/dijit/themes/tundra/images/doubleArrowDown.png b/lib/dijit/themes/tundra/images/doubleArrowDown.png
new file mode 100644 (file)
index 0000000..92678d2
Binary files /dev/null and b/lib/dijit/themes/tundra/images/doubleArrowDown.png differ
diff --git a/lib/dijit/themes/tundra/images/doubleArrowUp.png b/lib/dijit/themes/tundra/images/doubleArrowUp.png
new file mode 100644 (file)
index 0000000..bba30fe
Binary files /dev/null and b/lib/dijit/themes/tundra/images/doubleArrowUp.png differ
diff --git a/lib/dijit/themes/tundra/images/folderClosed.gif b/lib/dijit/themes/tundra/images/folderClosed.gif
new file mode 100644 (file)
index 0000000..9d5fcbc
Binary files /dev/null and b/lib/dijit/themes/tundra/images/folderClosed.gif differ
diff --git a/lib/dijit/themes/tundra/images/folderOpened.gif b/lib/dijit/themes/tundra/images/folderOpened.gif
new file mode 100644 (file)
index 0000000..a514c7b
Binary files /dev/null and b/lib/dijit/themes/tundra/images/folderOpened.gif differ
diff --git a/lib/dijit/themes/tundra/images/i.gif b/lib/dijit/themes/tundra/images/i.gif
new file mode 100644 (file)
index 0000000..ebd95a7
Binary files /dev/null and b/lib/dijit/themes/tundra/images/i.gif differ
diff --git a/lib/dijit/themes/tundra/images/i_half.gif b/lib/dijit/themes/tundra/images/i_half.gif
new file mode 100644 (file)
index 0000000..2947c4f
Binary files /dev/null and b/lib/dijit/themes/tundra/images/i_half.gif differ
diff --git a/lib/dijit/themes/tundra/images/i_half_rtl.gif b/lib/dijit/themes/tundra/images/i_half_rtl.gif
new file mode 100644 (file)
index 0000000..4f60ec4
Binary files /dev/null and b/lib/dijit/themes/tundra/images/i_half_rtl.gif differ
diff --git a/lib/dijit/themes/tundra/images/i_rtl.gif b/lib/dijit/themes/tundra/images/i_rtl.gif
new file mode 100644 (file)
index 0000000..7dafaad
Binary files /dev/null and b/lib/dijit/themes/tundra/images/i_rtl.gif differ
diff --git a/lib/dijit/themes/tundra/images/leaf.gif b/lib/dijit/themes/tundra/images/leaf.gif
new file mode 100644 (file)
index 0000000..85b0178
Binary files /dev/null and b/lib/dijit/themes/tundra/images/leaf.gif differ
diff --git a/lib/dijit/themes/tundra/images/loading.gif b/lib/dijit/themes/tundra/images/loading.gif
new file mode 100644 (file)
index 0000000..6e7c8e5
Binary files /dev/null and b/lib/dijit/themes/tundra/images/loading.gif differ
diff --git a/lib/dijit/themes/tundra/images/menu.png b/lib/dijit/themes/tundra/images/menu.png
new file mode 100644 (file)
index 0000000..f5b93d1
Binary files /dev/null and b/lib/dijit/themes/tundra/images/menu.png differ
diff --git a/lib/dijit/themes/tundra/images/minusButton.gif b/lib/dijit/themes/tundra/images/minusButton.gif
new file mode 100644 (file)
index 0000000..48d5172
Binary files /dev/null and b/lib/dijit/themes/tundra/images/minusButton.gif differ
diff --git a/lib/dijit/themes/tundra/images/no.gif b/lib/dijit/themes/tundra/images/no.gif
new file mode 100644 (file)
index 0000000..9021a14
Binary files /dev/null and b/lib/dijit/themes/tundra/images/no.gif differ
diff --git a/lib/dijit/themes/tundra/images/noX.gif b/lib/dijit/themes/tundra/images/noX.gif
new file mode 100644 (file)
index 0000000..4a16dc7
Binary files /dev/null and b/lib/dijit/themes/tundra/images/noX.gif differ
diff --git a/lib/dijit/themes/tundra/images/plusButton.gif b/lib/dijit/themes/tundra/images/plusButton.gif
new file mode 100644 (file)
index 0000000..103c021
Binary files /dev/null and b/lib/dijit/themes/tundra/images/plusButton.gif differ
diff --git a/lib/dijit/themes/tundra/images/popupMenuBg.gif b/lib/dijit/themes/tundra/images/popupMenuBg.gif
new file mode 100644 (file)
index 0000000..15f4f1b
Binary files /dev/null and b/lib/dijit/themes/tundra/images/popupMenuBg.gif differ
diff --git a/lib/dijit/themes/tundra/images/preciseSliderThumb.gif b/lib/dijit/themes/tundra/images/preciseSliderThumb.gif
new file mode 100644 (file)
index 0000000..15d4879
Binary files /dev/null and b/lib/dijit/themes/tundra/images/preciseSliderThumb.gif differ
diff --git a/lib/dijit/themes/tundra/images/preciseSliderThumb.png b/lib/dijit/themes/tundra/images/preciseSliderThumb.png
new file mode 100644 (file)
index 0000000..f2fc338
Binary files /dev/null and b/lib/dijit/themes/tundra/images/preciseSliderThumb.png differ
diff --git a/lib/dijit/themes/tundra/images/preciseSliderThumbFocus.gif b/lib/dijit/themes/tundra/images/preciseSliderThumbFocus.gif
new file mode 100644 (file)
index 0000000..b44611c
Binary files /dev/null and b/lib/dijit/themes/tundra/images/preciseSliderThumbFocus.gif differ
diff --git a/lib/dijit/themes/tundra/images/preciseSliderThumbFocus.png b/lib/dijit/themes/tundra/images/preciseSliderThumbFocus.png
new file mode 100644 (file)
index 0000000..fb06323
Binary files /dev/null and b/lib/dijit/themes/tundra/images/preciseSliderThumbFocus.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim-1.png b/lib/dijit/themes/tundra/images/progressBarAnim-1.png
new file mode 100644 (file)
index 0000000..cfc3fd2
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim-1.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim-2.png b/lib/dijit/themes/tundra/images/progressBarAnim-2.png
new file mode 100644 (file)
index 0000000..d27981d
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim-2.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim-3.png b/lib/dijit/themes/tundra/images/progressBarAnim-3.png
new file mode 100644 (file)
index 0000000..3b92a7d
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim-3.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim-4.png b/lib/dijit/themes/tundra/images/progressBarAnim-4.png
new file mode 100644 (file)
index 0000000..61e4276
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim-4.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim-5.png b/lib/dijit/themes/tundra/images/progressBarAnim-5.png
new file mode 100644 (file)
index 0000000..48b189a
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim-5.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim-6.png b/lib/dijit/themes/tundra/images/progressBarAnim-6.png
new file mode 100644 (file)
index 0000000..af50c4d
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim-6.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim-7.png b/lib/dijit/themes/tundra/images/progressBarAnim-7.png
new file mode 100644 (file)
index 0000000..a4fffa3
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim-7.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim-8.png b/lib/dijit/themes/tundra/images/progressBarAnim-8.png
new file mode 100644 (file)
index 0000000..b4c92f3
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim-8.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim-9.png b/lib/dijit/themes/tundra/images/progressBarAnim-9.png
new file mode 100644 (file)
index 0000000..d8bff13
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim-9.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim.gif b/lib/dijit/themes/tundra/images/progressBarAnim.gif
new file mode 100644 (file)
index 0000000..d3df139
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim.gif differ
diff --git a/lib/dijit/themes/tundra/images/progressBarAnim.psd b/lib/dijit/themes/tundra/images/progressBarAnim.psd
new file mode 100644 (file)
index 0000000..0a7bf23
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarAnim.psd differ
diff --git a/lib/dijit/themes/tundra/images/progressBarEmpty.png b/lib/dijit/themes/tundra/images/progressBarEmpty.png
new file mode 100644 (file)
index 0000000..07f4c91
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarEmpty.png differ
diff --git a/lib/dijit/themes/tundra/images/progressBarFull.png b/lib/dijit/themes/tundra/images/progressBarFull.png
new file mode 100644 (file)
index 0000000..0ce60f5
Binary files /dev/null and b/lib/dijit/themes/tundra/images/progressBarFull.png differ
diff --git a/lib/dijit/themes/tundra/images/radioButtonActive.png b/lib/dijit/themes/tundra/images/radioButtonActive.png
new file mode 100644 (file)
index 0000000..60840c7
Binary files /dev/null and b/lib/dijit/themes/tundra/images/radioButtonActive.png differ
diff --git a/lib/dijit/themes/tundra/images/radioButtonActiveDisabled.png b/lib/dijit/themes/tundra/images/radioButtonActiveDisabled.png
new file mode 100644 (file)
index 0000000..b49724e
Binary files /dev/null and b/lib/dijit/themes/tundra/images/radioButtonActiveDisabled.png differ
diff --git a/lib/dijit/themes/tundra/images/radioButtonActiveHover.png b/lib/dijit/themes/tundra/images/radioButtonActiveHover.png
new file mode 100644 (file)
index 0000000..f21d4e5
Binary files /dev/null and b/lib/dijit/themes/tundra/images/radioButtonActiveHover.png differ
diff --git a/lib/dijit/themes/tundra/images/radioButtonDisabled.png b/lib/dijit/themes/tundra/images/radioButtonDisabled.png
new file mode 100644 (file)
index 0000000..8da7e78
Binary files /dev/null and b/lib/dijit/themes/tundra/images/radioButtonDisabled.png differ
diff --git a/lib/dijit/themes/tundra/images/radioButtonEnabled.png b/lib/dijit/themes/tundra/images/radioButtonEnabled.png
new file mode 100644 (file)
index 0000000..4342fea
Binary files /dev/null and b/lib/dijit/themes/tundra/images/radioButtonEnabled.png differ
diff --git a/lib/dijit/themes/tundra/images/radioButtonHover.png b/lib/dijit/themes/tundra/images/radioButtonHover.png
new file mode 100644 (file)
index 0000000..fcb697f
Binary files /dev/null and b/lib/dijit/themes/tundra/images/radioButtonHover.png differ
diff --git a/lib/dijit/themes/tundra/images/sliderEmpty.png b/lib/dijit/themes/tundra/images/sliderEmpty.png
new file mode 100644 (file)
index 0000000..070c12f
Binary files /dev/null and b/lib/dijit/themes/tundra/images/sliderEmpty.png differ
diff --git a/lib/dijit/themes/tundra/images/sliderEmptyVertical.png b/lib/dijit/themes/tundra/images/sliderEmptyVertical.png
new file mode 100644 (file)
index 0000000..45aceb7
Binary files /dev/null and b/lib/dijit/themes/tundra/images/sliderEmptyVertical.png differ
diff --git a/lib/dijit/themes/tundra/images/sliderFull.png b/lib/dijit/themes/tundra/images/sliderFull.png
new file mode 100644 (file)
index 0000000..4b3fcbb
Binary files /dev/null and b/lib/dijit/themes/tundra/images/sliderFull.png differ
diff --git a/lib/dijit/themes/tundra/images/sliderFullFocus.png b/lib/dijit/themes/tundra/images/sliderFullFocus.png
new file mode 100644 (file)
index 0000000..ee19356
Binary files /dev/null and b/lib/dijit/themes/tundra/images/sliderFullFocus.png differ
diff --git a/lib/dijit/themes/tundra/images/sliderFullVertical.png b/lib/dijit/themes/tundra/images/sliderFullVertical.png
new file mode 100644 (file)
index 0000000..e7618e8
Binary files /dev/null and b/lib/dijit/themes/tundra/images/sliderFullVertical.png differ
diff --git a/lib/dijit/themes/tundra/images/sliderFullVerticalFocus.png b/lib/dijit/themes/tundra/images/sliderFullVerticalFocus.png
new file mode 100644 (file)
index 0000000..3ab37e6
Binary files /dev/null and b/lib/dijit/themes/tundra/images/sliderFullVerticalFocus.png differ
diff --git a/lib/dijit/themes/tundra/images/sliderThumb.png b/lib/dijit/themes/tundra/images/sliderThumb.png
new file mode 100644 (file)
index 0000000..fe33583
Binary files /dev/null and b/lib/dijit/themes/tundra/images/sliderThumb.png differ
diff --git a/lib/dijit/themes/tundra/images/sliderThumbFocus.gif b/lib/dijit/themes/tundra/images/sliderThumbFocus.gif
new file mode 100644 (file)
index 0000000..15dd3d9
Binary files /dev/null and b/lib/dijit/themes/tundra/images/sliderThumbFocus.gif differ
diff --git a/lib/dijit/themes/tundra/images/sliderThumbFocus.png b/lib/dijit/themes/tundra/images/sliderThumbFocus.png
new file mode 100644 (file)
index 0000000..fe9763a
Binary files /dev/null and b/lib/dijit/themes/tundra/images/sliderThumbFocus.png differ
diff --git a/lib/dijit/themes/tundra/images/smallArrowDown.png b/lib/dijit/themes/tundra/images/smallArrowDown.png
new file mode 100644 (file)
index 0000000..cabd01c
Binary files /dev/null and b/lib/dijit/themes/tundra/images/smallArrowDown.png differ
diff --git a/lib/dijit/themes/tundra/images/smallArrowUp.png b/lib/dijit/themes/tundra/images/smallArrowUp.png
new file mode 100644 (file)
index 0000000..a4dd670
Binary files /dev/null and b/lib/dijit/themes/tundra/images/smallArrowUp.png differ
diff --git a/lib/dijit/themes/tundra/images/splitContainerSizerH-thumb.png b/lib/dijit/themes/tundra/images/splitContainerSizerH-thumb.png
new file mode 100644 (file)
index 0000000..e7bc204
Binary files /dev/null and b/lib/dijit/themes/tundra/images/splitContainerSizerH-thumb.png differ
diff --git a/lib/dijit/themes/tundra/images/splitContainerSizerH.png b/lib/dijit/themes/tundra/images/splitContainerSizerH.png
new file mode 100644 (file)
index 0000000..0e5e471
Binary files /dev/null and b/lib/dijit/themes/tundra/images/splitContainerSizerH.png differ
diff --git a/lib/dijit/themes/tundra/images/splitContainerSizerV-thumb.png b/lib/dijit/themes/tundra/images/splitContainerSizerV-thumb.png
new file mode 100644 (file)
index 0000000..410a0a7
Binary files /dev/null and b/lib/dijit/themes/tundra/images/splitContainerSizerV-thumb.png differ
diff --git a/lib/dijit/themes/tundra/images/splitContainerSizerV.png b/lib/dijit/themes/tundra/images/splitContainerSizerV.png
new file mode 100644 (file)
index 0000000..6781f0e
Binary files /dev/null and b/lib/dijit/themes/tundra/images/splitContainerSizerV.png differ
diff --git a/lib/dijit/themes/tundra/images/spriteArrows.gif b/lib/dijit/themes/tundra/images/spriteArrows.gif
new file mode 100644 (file)
index 0000000..56a37f4
Binary files /dev/null and b/lib/dijit/themes/tundra/images/spriteArrows.gif differ
diff --git a/lib/dijit/themes/tundra/images/spriteArrows.png b/lib/dijit/themes/tundra/images/spriteArrows.png
new file mode 100644 (file)
index 0000000..e0229c9
Binary files /dev/null and b/lib/dijit/themes/tundra/images/spriteArrows.png differ
diff --git a/lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif b/lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif
new file mode 100644 (file)
index 0000000..251389a
Binary files /dev/null and b/lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif differ
diff --git a/lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.png b/lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.png
new file mode 100644 (file)
index 0000000..e81ba07
Binary files /dev/null and b/lib/dijit/themes/tundra/images/spriteRoundedIconsSmall.png differ
diff --git a/lib/dijit/themes/tundra/images/tabActive.png b/lib/dijit/themes/tundra/images/tabActive.png
new file mode 100644 (file)
index 0000000..eaf1ed4
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tabActive.png differ
diff --git a/lib/dijit/themes/tundra/images/tabClose.gif b/lib/dijit/themes/tundra/images/tabClose.gif
new file mode 100644 (file)
index 0000000..2cb0ee1
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tabClose.gif differ
diff --git a/lib/dijit/themes/tundra/images/tabClose.png b/lib/dijit/themes/tundra/images/tabClose.png
new file mode 100644 (file)
index 0000000..136cd22
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tabClose.png differ
diff --git a/lib/dijit/themes/tundra/images/tabCloseHover.gif b/lib/dijit/themes/tundra/images/tabCloseHover.gif
new file mode 100644 (file)
index 0000000..f59471e
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tabCloseHover.gif differ
diff --git a/lib/dijit/themes/tundra/images/tabCloseHover.png b/lib/dijit/themes/tundra/images/tabCloseHover.png
new file mode 100644 (file)
index 0000000..290e77f
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tabCloseHover.png differ
diff --git a/lib/dijit/themes/tundra/images/tabDisabled.png b/lib/dijit/themes/tundra/images/tabDisabled.png
new file mode 100644 (file)
index 0000000..ea0f617
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tabDisabled.png differ
diff --git a/lib/dijit/themes/tundra/images/tabEnabled.png b/lib/dijit/themes/tundra/images/tabEnabled.png
new file mode 100644 (file)
index 0000000..d40cf45
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tabEnabled.png differ
diff --git a/lib/dijit/themes/tundra/images/tabHover.gif b/lib/dijit/themes/tundra/images/tabHover.gif
new file mode 100644 (file)
index 0000000..471e0ee
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tabHover.gif differ
diff --git a/lib/dijit/themes/tundra/images/tabHover.png b/lib/dijit/themes/tundra/images/tabHover.png
new file mode 100644 (file)
index 0000000..16487f1
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tabHover.png differ
diff --git a/lib/dijit/themes/tundra/images/titleBar.png b/lib/dijit/themes/tundra/images/titleBar.png
new file mode 100644 (file)
index 0000000..b2609f3
Binary files /dev/null and b/lib/dijit/themes/tundra/images/titleBar.png differ
diff --git a/lib/dijit/themes/tundra/images/titleBarBg.gif b/lib/dijit/themes/tundra/images/titleBarBg.gif
new file mode 100644 (file)
index 0000000..1cd57cf
Binary files /dev/null and b/lib/dijit/themes/tundra/images/titleBarBg.gif differ
diff --git a/lib/dijit/themes/tundra/images/tooltipConnectorDown.gif b/lib/dijit/themes/tundra/images/tooltipConnectorDown.gif
new file mode 100644 (file)
index 0000000..18b2795
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tooltipConnectorDown.gif differ
diff --git a/lib/dijit/themes/tundra/images/tooltipConnectorDown.png b/lib/dijit/themes/tundra/images/tooltipConnectorDown.png
new file mode 100644 (file)
index 0000000..1aff5a3
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tooltipConnectorDown.png differ
diff --git a/lib/dijit/themes/tundra/images/tooltipConnectorLeft.gif b/lib/dijit/themes/tundra/images/tooltipConnectorLeft.gif
new file mode 100644 (file)
index 0000000..3d9cbc5
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tooltipConnectorLeft.gif differ
diff --git a/lib/dijit/themes/tundra/images/tooltipConnectorLeft.png b/lib/dijit/themes/tundra/images/tooltipConnectorLeft.png
new file mode 100644 (file)
index 0000000..e68fec3
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tooltipConnectorLeft.png differ
diff --git a/lib/dijit/themes/tundra/images/tooltipConnectorRight.gif b/lib/dijit/themes/tundra/images/tooltipConnectorRight.gif
new file mode 100644 (file)
index 0000000..2b887f7
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tooltipConnectorRight.gif differ
diff --git a/lib/dijit/themes/tundra/images/tooltipConnectorRight.png b/lib/dijit/themes/tundra/images/tooltipConnectorRight.png
new file mode 100644 (file)
index 0000000..dc2434a
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tooltipConnectorRight.png differ
diff --git a/lib/dijit/themes/tundra/images/tooltipConnectorUp.gif b/lib/dijit/themes/tundra/images/tooltipConnectorUp.gif
new file mode 100644 (file)
index 0000000..d0cad8a
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tooltipConnectorUp.gif differ
diff --git a/lib/dijit/themes/tundra/images/tooltipConnectorUp.png b/lib/dijit/themes/tundra/images/tooltipConnectorUp.png
new file mode 100644 (file)
index 0000000..55a378b
Binary files /dev/null and b/lib/dijit/themes/tundra/images/tooltipConnectorUp.png differ
diff --git a/lib/dijit/themes/tundra/images/treeExpand_leaf.gif b/lib/dijit/themes/tundra/images/treeExpand_leaf.gif
new file mode 100644 (file)
index 0000000..4b1c6c1
Binary files /dev/null and b/lib/dijit/themes/tundra/images/treeExpand_leaf.gif differ
diff --git a/lib/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif b/lib/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif
new file mode 100644 (file)
index 0000000..b563d7c
Binary files /dev/null and b/lib/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif differ
diff --git a/lib/dijit/themes/tundra/images/treeExpand_loading.gif b/lib/dijit/themes/tundra/images/treeExpand_loading.gif
new file mode 100644 (file)
index 0000000..424d376
Binary files /dev/null and b/lib/dijit/themes/tundra/images/treeExpand_loading.gif differ
diff --git a/lib/dijit/themes/tundra/images/treeExpand_minus.gif b/lib/dijit/themes/tundra/images/treeExpand_minus.gif
new file mode 100644 (file)
index 0000000..5977782
Binary files /dev/null and b/lib/dijit/themes/tundra/images/treeExpand_minus.gif differ
diff --git a/lib/dijit/themes/tundra/images/treeExpand_minus_rtl.gif b/lib/dijit/themes/tundra/images/treeExpand_minus_rtl.gif
new file mode 100644 (file)
index 0000000..cf50054
Binary files /dev/null and b/lib/dijit/themes/tundra/images/treeExpand_minus_rtl.gif differ
diff --git a/lib/dijit/themes/tundra/images/treeExpand_mius.gif b/lib/dijit/themes/tundra/images/treeExpand_mius.gif
new file mode 100644 (file)
index 0000000..5977782
Binary files /dev/null and b/lib/dijit/themes/tundra/images/treeExpand_mius.gif differ
diff --git a/lib/dijit/themes/tundra/images/treeExpand_plus.gif b/lib/dijit/themes/tundra/images/treeExpand_plus.gif
new file mode 100644 (file)
index 0000000..2b96a55
Binary files /dev/null and b/lib/dijit/themes/tundra/images/treeExpand_plus.gif differ
diff --git a/lib/dijit/themes/tundra/images/treeExpand_plus_rtl.gif b/lib/dijit/themes/tundra/images/treeExpand_plus_rtl.gif
new file mode 100644 (file)
index 0000000..11f9916
Binary files /dev/null and b/lib/dijit/themes/tundra/images/treeExpand_plus_rtl.gif differ
diff --git a/lib/dijit/themes/tundra/images/treeHover.png b/lib/dijit/themes/tundra/images/treeHover.png
new file mode 100644 (file)
index 0000000..cd6d28b
Binary files /dev/null and b/lib/dijit/themes/tundra/images/treeHover.png differ
diff --git a/lib/dijit/themes/tundra/images/validationInputBg.gif b/lib/dijit/themes/tundra/images/validationInputBg.gif
new file mode 100644 (file)
index 0000000..5a9916a
Binary files /dev/null and b/lib/dijit/themes/tundra/images/validationInputBg.gif differ
diff --git a/lib/dijit/themes/tundra/images/validationInputBg.png b/lib/dijit/themes/tundra/images/validationInputBg.png
new file mode 100644 (file)
index 0000000..d222fb4
Binary files /dev/null and b/lib/dijit/themes/tundra/images/validationInputBg.png differ
diff --git a/lib/dijit/themes/tundra/images/warning.png b/lib/dijit/themes/tundra/images/warning.png
new file mode 100644 (file)
index 0000000..c52f83d
Binary files /dev/null and b/lib/dijit/themes/tundra/images/warning.png differ
diff --git a/lib/dijit/themes/tundra/layout/AccordionContainer.css b/lib/dijit/themes/tundra/layout/AccordionContainer.css
new file mode 100644 (file)
index 0000000..6479956
--- /dev/null
@@ -0,0 +1,20 @@
+
+.tundra .dijitAccordionContainer {
+       border-color: #ccc;
+       background-color: #fff;
+}
+.tundra .dijitAccordionTitle {
+       background:#fafafa url("../images/titleBar.png") repeat-x bottom left;
+       border-top: 1px solid #bfbfbf;
+       padding: 4px 4px 4px 8px;
+}
+.tundra .dijitAccordionTitleHover  {
+       background: #f8fafd url("../images/accordionItemHover.gif") bottom repeat-x;
+}
+.tundra .dijitAccordionTitleSelected  {
+       background: #f9f9f9 url("../images/accordionItemActive.gif") bottom repeat-x;
+       font-weight: bold;
+       border-top: 1px solid #aaaaaa;
+       border-bottom: 1px solid #bfbfbf;
+       padding: 4px 4px 4px 8px;
+}
diff --git a/lib/dijit/themes/tundra/layout/BorderContainer.css b/lib/dijit/themes/tundra/layout/BorderContainer.css
new file mode 100644 (file)
index 0000000..076460f
--- /dev/null
@@ -0,0 +1,55 @@
+
+.tundra .dijitBorderContainer {
+       background-color: #fcfcfc;
+       padding: 5px;
+}
+.tundra .dijitSplitContainer-child,
+.tundra .dijitBorderContainer-child {
+       
+       border: 1px #ccc solid;
+}
+.tundra .dijitBorderContainer-dijitTabContainerTop,
+.tundra .dijitBorderContainer-dijitTabContainerBottom,
+.tundra .dijitBorderContainer-dijitTabContainerLeft,
+.tundra .dijitBorderContainer-dijitTabContainerRight {
+       
+        border: none;
+}
+.tundra .dijitBorderContainer-dijitBorderContainer {
+       
+       border: none;
+       padding: 0px;
+}
+.tundra .dijitSplitterH,
+.tundra .dijitGutterH {
+       background:#fcfcfc;
+       border:0;
+       height:5px;
+}
+.tundra .dijitSplitterH .dijitSplitterThumb {
+       background:#B0B0B0 none;
+       height:1px;
+       top:2px;
+       width:19px;
+}
+.tundra .dijitSplitterV,
+.tundra .dijitGutterV {
+       background:#fcfcfc;
+       border:0;
+       width:5px;
+}
+.tundra .dijitSplitterV .dijitSplitterThumb {
+       background:#B0B0B0 none;
+       height:19px;
+       left:2px;
+       width:1px;
+}
+.tundra .dijitSplitterActive {
+       font-size: 1px;
+       background-image: none;
+       background-color: #aaa;
+       -moz-opacity: 0.6;
+       opacity: 0.6;
+       filter: Alpha(Opacity=60);
+       margin: 0;
+}
diff --git a/lib/dijit/themes/tundra/layout/ContentPane.css b/lib/dijit/themes/tundra/layout/ContentPane.css
new file mode 100644 (file)
index 0000000..8b470b9
--- /dev/null
@@ -0,0 +1,17 @@
+
+.tundra .dijitContentPane {
+       padding: 0px;
+}
+.tundra .dijitTabContainerTop-dijitContentPane,
+.tundra .dijitTabContainerLeft-dijitContentPane,
+.tundra .dijitTabContainerBottom-dijitContentPane,
+.tundra .dijitTabContainerRight-dijitContentPane,
+.tundra .dijitAccordionContainer-dijitContentPane {
+       background-color: #fff;
+       padding: 5px;
+}
+.tundra .dijitSplitContainer-dijitContentPane,
+.tundra .dijitBorderContainer-dijitContentPane {
+       background-color: #fff;         
+       padding: 5px;
+}
diff --git a/lib/dijit/themes/tundra/layout/SplitContainer.css b/lib/dijit/themes/tundra/layout/SplitContainer.css
new file mode 100644 (file)
index 0000000..2785031
--- /dev/null
@@ -0,0 +1,28 @@
+.tundra .dijitSplitContainerSizerH {
+       background:url("../images/splitContainerSizerV.png") repeat-y #fff;
+       border:0;
+       border-left:1px solid #bfbfbf;
+       border-right:1px solid #bfbfbf;
+       width:7px;
+}
+.tundra .dijitSplitContainerSizerH .thumb {
+       background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc;
+       left:1px;
+       width:3px;
+       height:19px;
+       overflow: hidden;
+}
+.tundra .dijitSplitContainerSizerV {
+       background:url("../images/splitContainerSizerH.png") repeat-x #fff;
+       border:0;
+       border-top:1px solid #bfbfbf;
+       border-bottom:1px solid #bfbfbf;
+       height:7px;
+}
+.tundra .dijitSplitContainerSizerV .thumb {
+       background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc;
+       top:1px;
+       width:19px;
+       height:3px;
+       overflow: hidden;
+}
diff --git a/lib/dijit/themes/tundra/layout/TabContainer.css b/lib/dijit/themes/tundra/layout/TabContainer.css
new file mode 100644 (file)
index 0000000..8e859b9
--- /dev/null
@@ -0,0 +1,249 @@
+
+.tundra .dijitTabPaneWrapper {
+       background:#fff;
+       border:1px solid #ccc;
+       margin: 0;
+       padding: 0;
+}
+.tundra .dijitTab {
+       line-height:normal;
+       margin-right:4px;       
+       padding:0px;
+       border:1px solid #ccc;
+       background:#e2e2e2 url("../images/tabEnabled.png") repeat-x;
+}
+.tundra .dijitTabInnerDiv {
+       padding:2px 8px 2px 9px;
+}
+.tundra .dijitTabSpacer {
+       display: none;
+}
+.tundra .dijitTabContainer .tabStripRBtn {
+       margin-right: 20px;
+}
+.tundra .dijitTabContainer .tabStripLBtn {
+       margin-left: 20px;
+}
+.tundra .nowrapTabStrip .dijitTab {
+       top: 2px;
+}
+.tundra .dijitTabContainerBottom .nowrapTabStrip .dijitTab {
+       top: 0px;
+       bottom: 2px;
+}
+.tundra .dijitTabChecked {
+       
+       background-color:#fff;
+       border-color: #ccc;
+       background-image:none;
+}
+.tundra .dijitTabHover {
+       color: #243C5F;
+       border-top-color:#92a0b3;
+       border-left-color:#92a0b3;
+       border-right-color:#92a0b3;
+       border-bottom-color:#92a0b3;
+       background:#e2e2e2 url("../images/tabHover.gif") repeat-x;
+}
+.tundra .dijitTabContainerTop .dijitTabHover {
+       border-bottom-color:#ccc;
+}
+.tundra .dijitTabContainerBottom .dijitTabHover {
+       border-top-color:#ccc;
+}
+.tundra .dijitTabContainerLeft .dijitTabHover {
+       border-right-color:#ccc;
+}
+.tundra .dijitTabContainerRight .dijitTabHover {
+       border-left-color:#ccc;
+}
+.tundra .dijitTabContainer .dijitTabCheckedHover {
+       color: inherit;
+       border:1px solid #ccc;
+       background:#fff;
+}
+.tundra .dijitTab .tabLabel {
+       
+       min-height: 12px;
+       display: inline-block;
+}
+.tundra .dijitTabContainerNested .dijitTabListWrapper {
+       height: auto;
+}
+.tundra .dijitTabContainerNested .dijitTabContainerTop-tabs {
+       border-bottom: 1px solid #CCC;
+}
+.tundra .dijitTabContainerTabListNested .dijitTab {
+       background: none;
+       border: none;
+       top: 0px;               
+}
+.tundra .dijitTabContainerTabListNested .dijitTab .dijitTabContent {
+}
+.tundra .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel {
+       text-decoration: underline;
+}
+.tundra .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent .tabLabel {
+       text-decoration: underline;
+       font-weight: bold;
+       
+}
+.tundra .dijitTabContainer .dijitTabPaneWrapperNested {
+       border: none;   
+}
+.tundra .dijitTabCloseButton {
+       background: url("../images/tabClose.png") no-repeat right top;
+       width: 12px;
+       height: 12px;
+}
+.dj_ie6 .tundra .dijitTabCloseButton {
+       background-image : url("../images/tabClose.gif");
+}
+.tundra .dijitTabCloseButtonHover {
+       background-image : url("../images/tabCloseHover.png");
+}
+.dj_ie6 .tundra .dijitTabCloseButtonHover {
+       background-image : url("../images/tabCloseHover.gif");
+}
+.tundra .dijitTabContainerTop-tabs {
+       margin-bottom: 0px;
+       border-color: #cccccc;
+       padding-left: 3px;
+       background-position: bottom;
+}
+.tundra .dijitTabContainerTop-tabs .dijitTab {
+       top: 0px;
+       margin-bottom: -1px;
+}
+.tundra .dijitTabContainerTop-container {
+       border-top: none;
+}
+.tundra .dijitTabContainerTop-tabs .dijitTabChecked {
+       border-bottom-color:white;
+}
+.tundra .dijitTabContainerTop-tabs,
+.tundra .dijitTabContainerBottom-tabs {
+       padding-left: 3px;
+       padding-right: 3px;
+}
+.tundra .dijitTabContainerTopStrip {
+       border-top: 1px solid #CCC;
+       border-right: 1px solid #CCC;
+       border-left: 1px solid #CCC;
+       padding-top: 2px;
+       background: #f2f2f2;
+}
+.tundra .dijitTabContainerTopNone {
+       padding-top: 0px;
+}
+.tundra .dijitTabContainerBottom-tabs {
+       margin-top: 0px;
+       border-color: #cccccc;
+       background-position: top;
+       padding-left: 3px;
+}
+.tundra .dijitTabContainerBottom-tabs .dijitTab {
+       bottom: 0px;
+       margin-top: -1px;
+}
+.tundra .dijitTabContainerBottom-container {
+       border-bottom: none;
+}
+.tundra .dijitTabContainerBottom-tabs .dijitTabChecked {
+       border-top-color:white;
+}
+.tundra .dijitTabContainerBottomStrip {
+       padding-bottom: 2px;
+       border: 1px solid #ccc;
+       background: #f2f2f2;
+       border-top: none;
+}
+.tundra .dijitTabContainerRight-tabs {
+       border-color: #ccc;
+       height: 100%;
+       padding-top: 3px;
+}
+.tundra .dijitTabContainerRightStrip {
+       margin-left: -1px;
+}
+.tundra .dijitTabContainerRight-container {
+       border-right: none;
+}
+.tundra .dijitTabContainerRight-tabs .dijitTabChecked {
+       border-left-color:white;
+}
+.tundra .dijitTabContainerRightStrip {
+       padding-right: 2px;
+       border: 1px solid #ccc;
+}
+.tundra .dijitTabContainerRightStrip {
+       background: #f2f2f2;
+}
+.tundra .dijitTabContainerLeft-tabs {
+       border-color: #ccc;
+       padding-top: 3px;
+       height: 100%;
+}
+.tundra .dijitTabContainerLeft-container {
+       border-left: none;
+}
+.tundra .dijitTabContainerLeft-tabs .dijitTabChecked {
+       border-right-color:white;
+}
+.tundra .dijitTabContainerLeftStrip {
+       padding-left: 2px;
+       border: 1px solid #ccc;
+       background: #f2f2f2;
+       border-right: none;
+}
+.tundra .dijitTabContainerLeft-tabs .dijitTab,
+.tundra .dijitTabContainerRight-tabs .dijitTab {
+       margin-right:0px;
+       margin-bottom:4px;      
+}
+.tundra .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {
+       border-left: 0px solid #ccc;
+       border-top: 0px solid #ccc;
+       border-right: 0px solid #ccc;
+       padding-top: 0px;
+       padding-left: 0px;
+}
+.tundra .dijitTabContainer .tabStripButton {
+       margin-right: 0;
+       padding-top: 2px;
+       z-index: 12;
+}
+.tundra .dijitTabContainerBottom .tabStripButton {
+       padding-top: 2px;
+}
+.tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv {
+       padding-bottom: 3px;
+       padding-top: 1px;
+}
+.tundra .tabStripButton .dijitTabInnerDiv {
+       padding: 3px 2px 4px 2px;
+}
+.dj_ie6 .tundra .tabStripButton .dijitTabInnerDiv,
+.dj_ie7 .tundra .tabStripButton .dijitTabInnerDiv,
+.dj_opera .tundra .tabStripButton .dijitTabInnerDiv {
+       padding-bottom: 5px;
+}
+.dj_ie6 .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv,
+.dj_ie7 .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv,
+.dj_opera .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv {
+       padding-bottom: 4px;
+}
+.tundra .dijitTabStripIcon {
+       height: 14px;
+       width: 14px;
+       background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top ;
+}
+.dj_ie6 .tundra .dijitTabStripIcon {
+       background-image: url(../images/spriteRoundedIconsSmall.gif);
+}
+.tundra .dijitTabStripSlideRightIcon {
+       background-position: -30px top;
+}
+.tundra .dijitTabStripMenuIcon {
+       background-position: -15px top;
+}
diff --git a/lib/dijit/themes/tundra/layout/TabContainer_rtl.css b/lib/dijit/themes/tundra/layout/TabContainer_rtl.css
new file mode 100644 (file)
index 0000000..1811a5b
--- /dev/null
@@ -0,0 +1,38 @@
+.tundra .dijitTabRtl {
+       -moz-box-orient:horizontal;
+       text-align: right;
+}
+.tundra .dijitTabRtl .dijitTabInnerDiv {
+       padding:2px 9px 2px 8px;
+}
+.tundra .tabStrip-disabled .tabStripButtonRtl .dijitTabInnerDiv {
+       
+       padding-bottom: 3px;
+       padding-top: 1px;
+}
+.tundra .tabStripButtonRtl .dijitTabInnerDiv {
+       padding: 3px 2px 4px 2px;
+}
+.tundra .dijitTabPaneWrapper {
+       #zoom: 1;
+}
+.dj_ie-rtl .tundra .dijitTabContainerLeft-tabs {
+       margin-left: 1px !important;
+}
+.dj_ie-rtl .tundra .dijitTabContainerRight-tabs {
+       margin-right: 1px !important;
+}
+.tundra .dijitTabContainerLeft-tabs .dijitTabRtl,
+.tundra .dijitTabContainerRight-tabs .dijitTabRtl {
+       margin-left:0px;
+}
+.dj_ie .tundra .dijitTabRtl .dijitTabInnerDiv {
+       
+       width : 0.1% !important;
+}
+.dj_iequirks-rtl .tundra .dijitTabContainerTopNone,
+.dj_iequirks-rtl .tundra .dijitTabContainerBottomNone {
+       
+       border-left: 1px solid #fff;
+       border-right: 1px solid #fff;
+}
diff --git a/lib/dijit/themes/tundra/tundra.css b/lib/dijit/themes/tundra/tundra.css
new file mode 100644 (file)
index 0000000..ee23609
--- /dev/null
@@ -0,0 +1,3437 @@
+
+.dijitReset {
+       
+       margin:0;
+       border:0;
+       padding:0;
+       line-height:normal;
+       font: inherit;
+       color: inherit;
+}
+.dijit_a11y .dijitReset {
+       -moz-appearance: none; 
+}
+.dijitInline {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+       border:0;
+       padding:0;
+       vertical-align:middle;
+       #vertical-align: auto;  
+}
+.dijitHidden {
+       
+       display: none !important;
+}
+.dijitVisible {
+       
+       display: block !important;      
+       position: relative;                     
+}
+.dijitInputContainer {
+       
+       #zoom: 1;
+       overflow: hidden;
+       float: none !important; 
+       position:relative;
+}
+.dj_ie INPUT.dijitTextBox,
+.dj_ie .dijitTextBox INPUT {
+       font-size: 100%;
+}
+.dijitTextBox .dijitSpinnerButtonContainer,
+.dijitTextBox .dijitArrowButtonContainer,
+.dijitTextBox .dijitValidationContainer {
+       float: right;
+       text-align: center;
+}
+.dijitTextBox INPUT.dijitInputField {
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+}
+.dijitTextBox .dijitValidationContainer {
+       display: none;
+}
+.dijitInlineTable {
+       
+       display:inline-table;
+       display:inline-block;           
+       #zoom: 1; 
+       #display:inline; 
+       box-sizing: content-box; -moz-box-sizing: content-box;
+       border:0;
+       padding:0;
+}
+.dijitTeeny {
+       font-size:1px;
+       line-height:1px;
+}
+.dijitOffScreen {
+       position: absolute;
+       visibility: hidden;
+       left: 50%;
+       top: -10000px;
+}
+.dijitPopup {
+       position: absolute;
+       background-color: transparent;
+       margin: 0;
+       border: 0;
+       padding: 0;
+}
+.dijit_a11y .dijitPopup,
+.dijit_ally .dijitPopup DIV,
+.dijit_a11y .dijitPopup TABLE,
+.dijit_a11y .dijitTooltipContainer {
+       background-color: white !important;
+}
+.dijitPositionOnly {
+       
+       padding: 0 !important;
+       border: 0 !important;
+       background-color: transparent !important;
+       background-image: none !important;
+       height: auto !important;
+       width: auto !important;
+}
+.dijitNonPositionOnly {
+       
+       float: none !important;
+       position: static !important;
+       margin: 0 0 0 0 !important;
+       vertical-align: middle !important;
+}
+.dijitBackgroundIframe {
+       
+       position: absolute;
+       left: 0;
+       top: 0;
+       width: 100%;
+       height: 100%;
+       z-index: -1;
+       border: 0;
+       padding: 0;
+       margin: 0;
+}
+.dijitDisplayNone {
+       
+       display:none !important;
+}
+.dijitContainer {
+       
+       overflow: hidden;       
+}
+.dijit_a11y * {
+       background-image:none !important;
+}
+.dijit_a11y .dijitIcon,
+.dijit_a11y DIV.dijitArrowButtonInner, 
+.dijit_a11y SPAN.dijitArrowButtonInner,
+.dijit_a11y IMG.dijitArrowButtonInner,
+.dijit_a11y .dijitCalendarIncrementControl {
+       
+       display: none;
+}
+.dijitSpinner DIV.dijitArrowButtonInner {
+       display: block; 
+}
+.dijit_a11y .dijitA11ySideArrow {
+       display: inline !important; 
+       cursor: pointer;
+}
+.dijit_a11y .dijitCalendarDateLabel {
+       padding: 1px;
+}
+.dijit_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {
+       border-style: dotted !important;
+       border-width: 1px;
+       padding: 0px;
+}
+.dijit_a11y .dijitCalendarDateTemplate {
+       padding-bottom: 0.1em !important;       
+}
+.dijit_a11y .dijit * {
+       background:white !important;
+       color:black !important;
+}
+.dijit_a11y .dijitButtonNode {
+       border-color: black!important;
+       border-style: outset!important;
+       border-width: medium!important;
+}
+.dijit_a11y .dijitTextBoxReadOnly .dijitInputField,
+.dijit_a11y .dijitTextBoxReadOnly .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitButtonNode * {
+       vertical-align: middle;
+}
+.dijitButtonNode .dijitArrowButtonInner {
+       
+       background: no-repeat center;
+       width: 12px;
+       height: 12px;
+       direction: ltr; 
+}
+.dijitLeft {
+       
+       background-position:left top;
+       background-repeat:no-repeat;
+}
+.dijitStretch {
+       
+       white-space:nowrap;                     
+       background-repeat:repeat-x;
+}
+.dijitRight {
+       
+       #display:inline;                                
+       background-position:right top;
+       background-repeat:no-repeat;
+}
+.dijitToggleButton,
+.dijitButton,
+.dijitDropDownButton,
+.dijitComboButton {
+       
+       margin: 0.2em;
+}
+.dijitButtonContents {
+       display: block;         
+}
+td.dijitButtonContents {
+       display: table-cell;    
+}
+.dijitButtonNode IMG {
+       
+       vertical-align:middle;
+       
+}
+TABLE.dijitComboButton { 
+       
+       border-collapse: collapse;
+       border:0;
+       padding:0;
+       margin:0;
+}
+.dijitToolbar .dijitComboButton {
+       
+       border-collapse: separate;
+}
+.dijitToolbar .dijitToggleButton,
+.dijitToolbar .dijitButton,
+.dijitToolbar .dijitDropDownButton,
+.dijitToolbar .dijitComboButton {
+       margin: 0;
+}
+.dijitToolbar .dijitButtonContents {
+       
+       padding: 1px 2px;
+}
+.dj_ie .dijitComboButton {
+       
+       margin-bottom: -3px;
+}
+.dj_webkit .dijitToolbar .dijitDropDownButton {
+       padding-left: 0.3em;
+}
+.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {
+       padding:0;
+}
+.dijitButtonNode {
+       
+       border:1px solid gray;
+       margin:0;
+       line-height:normal;
+       vertical-align: middle;
+       #vertical-align: auto;
+       text-align:center;
+       white-space: nowrap;
+}
+.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {
+       
+       line-height:inherit;
+}
+.dijitTextBox .dijitButtonNode {
+       border-width: 0;
+}
+.dijitButtonNode,
+.dijitButtonNode * {
+       cursor: pointer;
+}
+.dj_ie .dijitButtonNode {
+       
+       zoom: 1;
+}
+.dj_ie .dijitButtonNode button {
+       
+       overflow: visible;
+}
+DIV.dijitArrowButton {
+       float: right;
+}
+.dijitTextBox {
+       border: solid black 1px;
+       #overflow: hidden; 
+       width: 15em;    
+       vertical-align: middle;
+       #vertical-align: auto;
+}
+.dijitTextBoxReadOnly,
+.dijitTextBoxDisabled {
+       color: gray;
+}
+.dj_webkit .dijitTextBoxDisabled INPUT {
+       color: #eee; 
+}
+.dj_webkit TEXTAREA.dijitTextAreaDisabled {
+       color: #333; 
+}
+.dj_gecko .dijitTextBoxReadOnly INPUT,
+.dj_gecko .dijitTextBoxDisabled INPUT {
+       -moz-user-input: none; 
+}
+.dijitPlaceHolder {
+       
+       color: #AAAAAA;
+       font-style: italic;
+       position: absolute;
+       top: 0;
+       left: 0;
+       #filter: ""; 
+}
+.dijitTimeTextBox {
+       width: 8em;
+}
+.dijitTextBox INPUT:focus {
+       outline: none;  
+}
+.dijitTextBoxFocused {
+       outline: auto 5px -webkit-focus-ring-color;
+}
+.dijitTextBox INPUT {
+       float: left; 
+}
+.dijitInputInner {
+       
+       border:0 !important;
+       vertical-align:middle !important;
+       background-color:transparent !important;
+       width:100% !important;
+       
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+}
+.dijit_a11y .dijitTextBox INPUT {
+       margin: 0 !important;
+}
+.dijitTextBoxError INPUT.dijitValidationInner,
+.dijitTextBox INPUT.dijitArrowButtonInner {
+       
+       text-indent: -1em !important;
+       direction: ltr !important;
+       text-align: left !important;
+       height: auto !important;
+       #text-indent: 0 !important;
+       #letter-spacing: -5em !important;
+       #text-align: right !important;
+}
+.dj_ie .dijitTextBox INPUT,
+.dj_ie INPUT.dijitTextBox {
+       overflow-y: visible; 
+       line-height: normal; 
+}
+.dj_ie7 .dijitTextBox INPUT.dijitValidationInner,
+.dj_ie7 .dijitTextBox INPUT.dijitArrowButtonInner {
+       line-height: 86%; 
+}
+.dj_ie6 .dijitTextBox INPUT,
+.dj_ie6 INPUT.dijitTextBox,
+.dj_iequirks .dijitTextBox INPUT.dijitValidationInner,
+.dj_iequirks .dijitTextBox INPUT.dijitArrowButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitSpinnerButtonInner,
+.dj_iequirks .dijitTextBox INPUT.dijitInputInner,
+.dj_iequirks INPUT.dijitTextBox {
+       line-height: 100%; 
+}
+.dijit_a11y INPUT.dijitValidationInner,
+.dijit_a11y INPUT.dijitArrowButtonInner {
+       
+       text-indent: 0 !important;
+       width: 1em !important;
+       #text-align: left !important;
+}
+.dijitTextBoxError .dijitValidationContainer {
+       display: inline;
+       cursor: default;
+}
+.dijitSpinner .dijitSpinnerButtonContainer,
+.dijitComboBox .dijitArrowButtonContainer {
+       
+       border-width: 0 0 0 1px !important; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       
+       border-width: 0;
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {
+       clear: both; 
+}
+.dijit_a11y .dijitTextBox .dijitValidationContainer,
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBox .dijitArrowButtonContainer {
+       
+       border: solid black !important;
+       border-width: 0 0 0 1px !important;
+}
+.dj_ie .dijitToolbar .dijitComboBox {
+       
+       vertical-align: middle;
+}
+.dijitTextBox .dijitSpinnerButtonContainer {
+       width: 1em;
+       position: relative !important;
+       overflow: hidden;
+}
+.dijitSpinner .dijitSpinnerButtonInner {
+       width:1em;
+       visibility:hidden !important; 
+       overflow-x:hidden;
+}
+.dijitComboBox .dijitButtonNode,
+.dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 0;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border: 0 none !important;
+}
+.dijit_a11y .dijitTextBox .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner,
+.dijit_a11y .dijitSpinnerButtonContainer INPUT {
+       width: 1em !important;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner {
+       margin: 0 auto !important; 
+}
+.dj_ie .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.3em !important;
+       padding-right: 0.3em !important;
+       margin-left: 0.3em !important;
+       margin-right: 0.3em !important;
+       width: 1.4em !important;
+}
+.dj_ie7 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding-left: 0.0em !important; 
+       padding-right: 0.0em !important;
+       width: 1em !important;
+}
+.dj_ie6 .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0.1em !important;
+       margin-right: 0.1em !important;
+       width: 1em !important;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       margin-left: 0 !important;
+       margin-right: 0 !important;
+       width: 2em !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       
+       padding: 0;
+       position: absolute !important;
+       right: 0;
+       float: none;
+       height: 50%;
+       width: 100%;
+       bottom: auto;
+       left: 0;
+       right: auto;
+}
+.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: auto;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitArrowButton {
+       overflow: visible !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {
+       top: 50%;
+       border-top-width: 1px !important;
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {
+       #bottom: 50%;   
+       top: 0;
+}
+.dijitSpinner .dijitArrowButtonInner {
+       margin: auto;
+       overflow-x: hidden;
+       height: 100% !important;
+}
+.dj_iequirks .dijitSpinner .dijitArrowButtonInner {
+       height: auto !important;
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       -moz-transform: scale(0.5);
+       -moz-transform-origin: center top;
+       -webkit-transform: scale(0.5);
+       -webkit-transform-origin: center top;
+       -o-transform: scale(0.5);
+       -o-transform-origin: center top;
+       transform: scale(0.5);
+       transform-origin: left top;
+       padding-top: 0;
+       padding-bottom: 0;
+       padding-left: 0 !important;
+       padding-right: 0 !important;
+       width: 100%;
+}
+.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       zoom: 50%; 
+}
+.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {
+       overflow: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 100%;
+}
+.dj_iequirks .dijit_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {
+       width: 1em; 
+}
+.dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       visibility: hidden;
+}
+.dijit_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       vertical-align:top;
+       visibility: visible;
+}
+.dijit_a11y .dijitSpinnerButtonContainer {
+       width: 1em;
+}
+.dijit_a11y .dijitSpinnerButtonContainer .dijitButtonNode {
+       border-width: 1px 0px 0px 0px;
+       border-style: solid !important;
+}
+.dijitCheckBox,
+.dijitRadio,
+.dijitCheckBoxInput {
+       padding: 0;
+       border: 0;
+       width: 16px;
+       height: 16px;
+       background-position:center center;
+       background-repeat:no-repeat;
+       overflow: hidden;
+}
+.dijitCheckBox INPUT,
+.dijitRadio INPUT {
+       margin: 0;
+       padding: 0;
+       display: block;
+}
+.dijitCheckBoxInput {
+       
+       opacity: 0.01;
+}
+.dj_ie .dijitCheckBoxInput {
+       filter: alpha(opacity=0);
+}
+.dijit_a11y .dijitCheckBox,
+.dijit_a11y .dijitRadio {
+       
+       width: auto !important;
+       height: auto !important;
+}
+.dijit_a11y .dijitCheckBoxInput {
+       opacity: 1;
+       filter: none;
+       width: auto;
+       height: auto;
+}
+.dijitProgressBarEmpty {
+       
+       position:relative;overflow:hidden;
+       border:1px solid black;         
+       z-index:0;                      
+}
+.dijitProgressBarFull {
+       
+       position:absolute;
+       overflow:hidden;
+       z-index:-1;
+       top:0;
+       width:100%;
+}
+.dj_ie6 .dijitProgressBarFull {
+       height:1.6em;
+}
+.dijitProgressBarTile {
+       
+       position:absolute;
+       overflow:hidden;
+       top:0;
+       left:0;
+       bottom:0;
+       right:0;
+       margin:0;
+       padding:0;
+       width:auto;
+       height:auto;
+       background-color:#aaa;
+       background-attachment: fixed;
+}
+.dijit_a11y .dijitProgressBarTile {
+       
+       border-width:2px;
+       border-style:solid;
+       background-color:transparent !important;
+}
+.dj_ie6 .dijitProgressBarTile {
+       
+       position:static;
+       
+       height:1.6em;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarLabel {
+       visibility:hidden;
+}
+.dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+}
+.dijitProgressBarIndeterminateHighContrastImage {
+       display:none;
+}
+.dijit_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {
+       display:block;
+       position:absolute;
+       top:0;
+       bottom:0;
+       margin:0;
+       padding:0;
+       width:100%;
+       height:auto;
+}
+.dijitProgressBarLabel {
+       display:block;
+       position:static;
+       width:100%;
+       text-align:center;
+       background-color:transparent !important;
+}
+.dijitTooltip {
+       position: absolute;
+       z-index: 2000;
+       display: block;
+       
+       left: 50%;
+       top: -10000px;
+       overflow: visible;
+}
+.dijitTooltipContainer {
+       border: solid black 2px;
+       background: #b8b5b5;
+       color: black;
+       font-size: small;
+}
+.dijitTooltipFocusNode {
+       padding: 2px 2px 2px 2px;
+}
+.dijitTooltipConnector {
+       position: absolute;
+}
+.dijit_a11y .dijitTooltipConnector {
+       display: none;  
+}
+.dijitTooltipData {
+       display:none;
+}
+.dijitLayoutContainer {
+       position: relative;
+       display: block;
+       overflow: hidden;
+}
+body .dijitAlignTop,
+body .dijitAlignBottom,
+body .dijitAlignLeft,
+body .dijitAlignRight {
+       position: absolute;
+       overflow: hidden;
+}
+body .dijitAlignClient { position: absolute; }
+.dijitBorderContainer, .dijitBorderContainerNoGutter {
+       position:relative;
+       overflow: hidden;
+}
+.dijitBorderContainerPane,
+.dijitBorderContainerNoGutterPane {
+       position: absolute !important;  
+       z-index: 2;             
+}
+.dijitBorderContainer > .dijitTextArea {
+       
+       resize: none;
+}
+.dijitGutter {
+       
+       position: absolute;
+       font-size: 1px;         
+}
+.dijitSplitter {
+       position: absolute;
+       overflow: hidden;
+       z-index: 10;            
+       background-color: #fff;
+       border-color: gray;
+       border-style: solid;
+       border-width: 0;
+}
+.dj_ie .dijitSplitter {
+       z-index: 1;     
+}
+.dijitSplitterActive {
+       z-index: 11 !important;
+}
+.dijitSplitterCover {
+       position:absolute;
+       z-index:-1;
+       top:0;
+       left:0;
+       width:100%;
+       height:100%;
+}
+.dijitSplitterCoverActive {
+       z-index:3 !important;
+}
+.dj_ie .dijitSplitterCover {
+       background: white;
+       filter: alpha(opacity=0);
+}
+.dijitSplitterH {
+       height: 7px;
+       border-top:1px;
+       border-bottom:1px;
+       cursor: ns-resize;
+}
+.dijitSplitterV {
+       width: 7px;
+       border-left:1px;
+       border-right:1px;
+       cursor: ew-resize;
+}
+.dijitSplitContainer {
+       position: relative;
+       overflow: hidden;
+       display: block;
+}
+.dj_ff3 .dijit_a11y div.dijitSplitter:focus {
+       outline-style:dotted;
+       outline-width: 2px;
+}
+.dijitSplitPane {
+       position: absolute;
+}
+.dijitSplitContainerSizerH,
+.dijitSplitContainerSizerV {
+       position:absolute;
+       font-size: 1px;
+       cursor: move;
+       cursor: w-resize;
+       background-color: ThreeDFace;
+       border: 1px solid;
+       border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;
+       margin: 0;
+}
+.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {
+       overflow:hidden;
+       position:absolute;
+       top:49%;
+}
+.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {
+       position:absolute;
+       left:49%;
+}
+.dijitSplitterShadow,
+.dijitSplitContainerVirtualSizerH,
+.dijitSplitContainerVirtualSizerV {
+       font-size: 1px;
+       background-color: ThreeDShadow;
+       -moz-opacity: 0.5;
+       opacity: 0.5;
+       filter: Alpha(Opacity=50);
+       margin: 0;
+}
+.dj_ie .dijitSplitterV, .dijitSplitContainerVirtualSizerH {
+       cursor: w-resize;
+}
+.dj_ie .dijitSplitterH, .dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {
+       cursor: n-resize;
+}
+.dijit_a11y .dijitSplitterH {
+       border-top:1px solid #d3d3d3 !important;
+       border-bottom:1px solid #d3d3d3 !important;
+}
+.dijit_a11y .dijitSplitterV {
+       border-left:1px solid #d3d3d3 !important;
+       border-right:1px solid #d3d3d3 !important;
+}
+.dijitContentPane {
+       display: block;
+       overflow: auto; 
+}
+.dijitContentPaneSingleChild {
+       
+       overflow: hidden;
+}
+.dijitTitlePane {
+       display: block;
+       overflow: hidden;
+}
+.dijitTitlePaneTitle {
+       cursor: pointer;
+}
+.dijitFixedOpen {
+       
+       cursor: default;
+}
+.dijitTitlePaneTitle * {
+       vertical-align: middle;
+}
+.dijitTitlePane .dijitArrowNodeInner {
+       
+       display: none;
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNodeInner {
+       
+       display:inline !important;
+       font-family: monospace;         
+}
+.dijit_a11y .dijitTitlePane .dijitArrowNode {
+       
+       display:none;
+}
+.dj_ie6 .dijitTitlePaneContentOuter,
+.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {
+       
+       zoom: 1;
+}
+.dijitColorPalette {
+       border: 1px solid #999;
+       background: #fff;
+       position: relative;
+}
+img.dijitColorPaletteUnder {
+       
+       border-style: none;
+       position: absolute;
+       left: 0;
+       top: 0;
+}
+.dijitColorPalette .dijitPaletteTable {
+       
+       padding: 2px 3px 3px 3px;
+       position: relative;
+       overflow: hidden;
+       outline: 0;
+       border-collapse: separate;
+}
+.dj_ie6 .dijitColorPalette .dijitPaletteTable,
+.dj_ie7 .dijitColorPalette .dijitPaletteTable,
+.dj_iequirks .dijitColorPalette .dijitPaletteTable {
+       
+       padding: 0;
+       margin: 2px 3px 3px 3px;
+}
+.dijitColorPalette .dijitPaletteCell {
+       
+       height: 20px;
+       width: 20px;
+       font-size: 1px;
+       vertical-align: middle;
+       text-align: center;
+}
+.dijitColorPalette .dijitPaletteImg {
+       
+       width: 16px;
+       height: 14px;
+       border: 1px solid #999;
+       cursor: default;
+       vertical-align: middle;
+}
+.dj_iequirks .dijitColorPalette .dijitPaletteImg {
+       margin: 1px;    
+}
+.dijitPaletteTable td {
+               padding: 0px;
+}
+.dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       
+       border: 1px solid #000;
+}
+.dijitColorPalette .dijitPaletteCellActive .dijitPaletteImg,
+.dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg {
+       border: 2px solid #000;
+}
+.dijit_a11y .dijitColorPalette .dijitPaletteTable,
+.dijit_a11y .dijitColorPalette .dijitPaletteTable * {
+       
+       background-color: transparent !important;
+}
+.dj_gecko .dijit_a11y .dijitColorPalette .dijitPaletteCellFocused .dijitPaletteImg {
+       border: 3px dotted #000;        
+       margin: -1px;
+}
+.dijit_a11y  .dijitColorPalette .dijitPaletteCellHover .dijitPaletteImg {
+       border: 2px solid #000 !important;
+}
+.dijitAccordionContainer {
+       border:1px solid #b7b7b7;
+       border-top:0 !important;
+}
+.dijitAccordionTitle {
+       cursor: pointer;
+}
+.dijitAccordionTitleSelected {
+       cursor: default;
+}
+.dijitAccordionTitle .arrowTextUp,
+.dijitAccordionTitle .arrowTextDown {
+       display: none;
+       font-size: 0.65em;
+       font-weight: normal !important;
+}
+.dijit_a11y .dijitAccordionTitle .arrowTextUp,
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextDown {
+       display: inline;
+}
+.dijit_a11y .dijitAccordionTitleSelected .arrowTextUp {
+       display: none;
+}
+.dj_ie6 .dijitAccordionTitle,
+.dj_iequirks .dijitAccordionTitle {
+       
+       zoom: 1;
+}
+.dijitCalendarContainer {
+       width: auto;    
+}
+.dijitCalendarContainer th, .dijitCalendarContainer td {
+       padding: 0;
+}
+.dijitCalendarNextYear {
+       margin:0 0 0 0.55em;
+}
+.dijitCalendarPreviousYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarIncrementControl {
+       vertical-align: middle;
+}
+.dijitCalendarIncrementControl,
+.dijitCalendarDateTemplate,
+.dijitCalendarMonthLabel,
+.dijitCalendarPreviousYear,
+.dijitCalendarNextYear {
+       cursor: pointer;
+}
+.dijitCalendarDisabledDate {
+       color: gray;
+       text-decoration: line-through;
+       cursor: default;
+}
+.dijitSpacer {
+       
+       position: relative;
+       height: 1px;
+       overflow: hidden;
+       visibility: hidden;
+}
+.dijitMenu {
+       border:1px solid black;
+       background-color:white;
+}
+.dijitMenuTable {
+       border-collapse:collapse;
+       border-width:0;
+       background-color:white;
+}
+.dj_webkit .dijitMenuTable td[colspan="2"]{
+       border-right:hidden;
+}
+.dijitMenuItem {
+       text-align: left;
+       white-space: nowrap;
+       padding:.1em .2em;
+       cursor:pointer;
+}
+.dijitMenuPassive .dijitMenuItemHover,
+.dijitMenuItemSelected {
+       
+       background-color:black;
+       color:white;
+}
+.dijitMenuItemIcon, .dijitMenuExpand {
+       background-repeat: no-repeat;
+}
+.dijitMenuItemDisabled * {
+       
+       opacity:0.5;
+       cursor:default;
+}
+.dj_ie .dijit_a11y .dijitMenuItemDisabled,
+.dj_ie .dijit_a11y .dijitMenuItemDisabled td,
+.dj_ie .dijitMenuItemDisabled *,
+.dj_ie .dijitMenuItemDisabled td {
+       color:gray !important;
+       filter: alpha(opacity=35);
+}
+.dijitMenuItemLabel {
+       position: relative;
+       vertical-align: middle;
+}
+.dijit_a11y .dijitMenuItemSelected {
+       border: 1px dotted black !important;
+}
+.dj_ff3 .dijit_a11y .dijitMenuItem td {
+       padding: none !important;
+       background:none !important;
+}
+.dijit_a11y .dijitMenuItemSelected .dijitMenuItemLabel {
+       border-width: 1px;
+       border-style: solid;
+}
+.dj_ie8 .dijit_a11y .dijitMenuItemLabel {
+       position:static;
+}
+.dijitMenuExpandA11y {
+       display: none;
+}
+.dijit_a11y .dijitMenuExpandA11y {
+       display: inline;
+}
+.dijitMenuSeparator td {
+       border: 0;
+       padding: 0;
+}
+.dijitMenuSeparatorTop {
+       height: 50%;
+       margin: 0;
+       margin-top:3px;
+       font-size: 1px;
+}
+.dijitMenuSeparatorBottom {
+       height: 50%;
+       margin: 0;
+       margin-bottom:3px;
+       font-size: 1px;
+}
+.dijitCheckedMenuItemIconChar {
+       vertical-align: middle;
+       visibility:hidden;
+}
+.dijitCheckedMenuItemChecked .dijitCheckedMenuItemIconChar {
+       visibility: visible;
+}
+.dijit_a11y .dijitCheckedMenuItemIconChar {
+       display:inline !important;
+}
+.dijit_a11y .dijitCheckedMenuItemIcon {
+       display: none;
+}
+.dj_ie .dijit_a11y .dijitMenuBar .dijitMenuItem {
+       
+       margin: 0px;
+}
+.dijitStackController .dijitToggleButtonChecked * {
+       cursor: default;        
+}
+.dijitTabContainerNoLayout {
+       width: 100%;    
+}
+.dijitTabContainerBottom-tabs,
+.dijitTabContainerTop-tabs,
+.dijitTabContainerLeft-tabs,
+.dijitTabContainerRight-tabs {
+       overflow: visible !important;  
+}
+.dijitTabContainerBottom-container,
+.dijitTabContainerTop-container,
+.dijitTabContainerLeft-container,
+.dijitTabContainerRight-container {
+       z-index:0;
+       overflow: hidden;
+       border: 1px solid black;
+}
+.nowrapTabStrip {
+       width: 50000px;
+       display: block;
+       position: relative;
+}
+.dijitTabListWrapper {
+       overflow: hidden;
+}
+.dijit_a11y .tabStripButton img {
+       
+       display: none;
+}
+.dijitTabContainerTop-tabs {
+       border-bottom: 1px solid black;
+}
+.dijitTabContainerTop-container {
+       border-top: 0px;
+}
+.dijitTabContainerLeft-tabs {
+       border-right: 1px solid black;
+       float: left;
+}
+.dijitTabContainerLeft-container {
+       border-left: 0px;
+}
+.dijitTabContainerBottom-tabs {
+       border-top: 1px solid black;
+}
+.dijitTabContainerBottom-container {
+       border-bottom: 0px;
+}
+.dijitTabContainerRight-tabs {
+       border-left: 1px solid black;
+       float: left;
+}
+.dijitTabContainerRight-container {
+       border-right: 0px;
+}
+DIV.dijitTabDisabled, .dj_ie DIV.dijitTabDisabled {
+       cursor: auto;
+}
+.dijitTab {
+       position:relative;
+       cursor:pointer;
+       white-space:nowrap;
+       z-index:3;
+}
+.dijitTab * {
+       
+       vertical-align: middle;
+}
+.dijitTabChecked {
+       cursor: default;        
+}
+.dijitTabContainerTop-tabs .dijitTab {
+       top: 1px;       
+}
+.dijitTabContainerBottom-tabs .dijitTab {
+       top: -1px;      
+}
+.dijitTabContainerLeft-tabs .dijitTab {
+       left: 1px;      
+}
+.dijitTabContainerRight-tabs .dijitTab {
+       left: -1px;     
+}
+.dijitTabContainerTop-tabs .dijitTab,
+.dijitTabContainerBottom-tabs .dijitTab {
+       
+       display:inline-block;                   
+       #zoom: 1; 
+       #display:inline; 
+}
+.dijitTabInnerDiv {
+       position:relative;
+}
+.tabStripButton {
+       z-index: 12;
+}
+.dijitTabButtonDisabled .tabStripButton {
+       display: none;
+}
+.dijitTabCloseButton {
+       margin-left: 1em;
+}
+.dijitTabCloseText {
+       display:none;
+}
+.dijit_a11y .dijitTabCloseButton {
+       background-image: none !important;
+       width: auto !important;
+       height: auto !important;
+       border: thin dotted;    
+}
+.dijit_a11y .dijitTabCloseButtonHover {
+       border:thin solid;      
+}
+.dijit_a11y .dijitTabCloseText {
+       display: inline;
+}
+.dijit_a11y .dijitTabChecked {
+       
+       border-style:dashed !important;
+}
+.dijit_a11y .dijitTabInnerDiv {
+       border-left:none !important;
+ }
+.dijitTabPane,
+.dijitStackContainer-child,
+.dijitAccordionContainer-child {
+       
+    border: none !important;
+}
+.dijitInlineEditBoxDisplayMode {
+       border: 1px solid transparent;  
+       cursor: text;
+}
+.dijit_a11y .dijitInlineEditBoxDisplayMode,
+.dj_ie6 .dijitInlineEditBoxDisplayMode {
+       
+       border: none;
+}
+.dijitInlineEditBoxDisplayModeHover,
+.dijit_a11y .dijitInlineEditBoxDisplayModeHover,
+.dj_ie6 .dijitInlineEditBoxDisplayModeHover {
+       
+       background-color: #e2ebf2;
+       border: solid 1px black;
+}
+.dijitInlineEditBoxDisplayModeDisabled {
+       cursor: default;
+}
+.dijitTreeIndent {
+       
+       width: 19px;
+}
+.dijitTreeRow, .dijitTreeContent {
+       white-space: nowrap;
+}
+.dijitTreeRow img {
+       
+       vertical-align: middle;
+}
+.dijitTreeContent {
+    cursor: default;
+}
+.dijitExpandoText {
+       display: none;
+}
+.dijit_a11y .dijitExpandoText {
+       display: inline;
+       padding-left: 10px;
+       padding-right: 10px;
+       font-family: monospace;
+       border-style: solid;
+       border-width: thin;
+       cursor: pointer;
+}
+.dijitTreeLabel {
+       margin: 0px 4px;
+}
+.dijitDialog {
+       position: absolute;
+       z-index: 999;
+       overflow: hidden;       
+}
+.dijitDialogTitleBar {
+       cursor: move;
+}
+.dijitDialogFixed .dijitDialogTitleBar {
+       cursor:default;
+}
+.dijitDialogCloseIcon {
+       cursor: pointer;
+}
+.dijitDialogUnderlayWrapper {
+       position: absolute;
+       left: 0;
+       top: 0;
+       z-index: 998;
+       display: none;
+       background: transparent !important;
+}
+.dijitDialogUnderlay {
+       background: #eee;
+       opacity: 0.5;
+}
+.dj_ie .dijitDialogUnderlay {
+       filter: alpha(opacity=50);
+}
+.dijit_a11y .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitDialog {
+       opacity: 1 !important;
+       background-color: white !important;
+}
+.dijitDialog .closeText {
+       display:none;
+       
+       position:absolute;
+}
+.dijit_a11y .dijitDialog .closeText {
+       display:inline;
+}
+.dijitSliderMoveable {
+       z-index:99;
+       position:absolute !important;
+       display:block;
+       vertical-align:middle;
+}
+.dijitSliderMoveableH {
+       right:0;
+}
+.dijitSliderMoveableV {
+       right:50%;
+}
+.dijit_a11y DIV.dijitSliderImageHandle,
+.dijitSliderImageHandle {
+       margin:0;
+       padding:0;
+       position:relative !important;
+       border:8px solid gray;
+       width:0;
+       height:0;
+       cursor: pointer;
+}
+.dj_iequirks .dijit_a11y .dijitSliderImageHandle {
+       font-size: 0;
+}
+.dj_ie7 .dijitSliderImageHandle {
+       overflow: hidden; 
+}
+.dj_ie7 .dijit_a11y .dijitSliderImageHandle {
+       overflow: visible; 
+}
+.dijit_a11y .dijitSliderFocused .dijitSliderImageHandle {
+       border:4px solid #000;
+       height:8px;
+       width:8px;
+}
+.dijitSliderImageHandleV {
+       top:-8px;
+       right: -50%;
+}
+.dijitSliderImageHandleH {
+       left:50%;
+       top:-5px;
+       vertical-align:top;
+}
+.dijitSliderBar {
+       border-style:solid;
+       border-color:black;
+       cursor: pointer;
+}
+.dijitSliderBarContainerV {
+       position:relative;
+       height:100%;
+       z-index:1;
+}
+.dijitSliderBarContainerH {
+       position:relative;
+       z-index:1;
+}
+.dijitSliderBarH {
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBarV {
+       width:4px;
+       border-width:0 1px;
+}
+.dijitSliderProgressBar {
+       background-color:red;
+       z-index:1;
+}
+.dijitSliderProgressBarV {
+       position:static !important;
+       height:0%;
+       vertical-align:top;
+       text-align:left;
+}
+.dijitSliderProgressBarH {
+       position:absolute !important;
+       width:0%;
+       vertical-align:middle;
+       overflow:visible;
+}
+.dijitSliderRemainingBar {
+       overflow:hidden;
+       background-color:transparent;
+       z-index:1;
+}
+.dijitSliderRemainingBarV {
+       height:100%;
+       text-align:left;
+}
+.dijitSliderRemainingBarH {
+       width:100% !important;
+}
+.dijitSliderBumper {
+       overflow:hidden;
+       z-index:1;
+}
+.dijitSliderBumperV {
+       width:4px;
+       height:8px;
+       border-width:0 1px;
+}
+.dijitSliderBumperH {
+       width:8px;
+       height:4px;
+       border-width:1px 0;
+}
+.dijitSliderBottomBumper,
+.dijitSliderLeftBumper {
+       background-color:red;
+}
+.dijitSliderTopBumper,
+.dijitSliderRightBumper {
+       background-color:transparent;
+}
+.dijitSliderDecoration {
+       text-align:center;
+}
+.dijitSliderV TD {
+       position: relative; 
+}
+.dijitSliderDecorationH {
+       width: 100%;
+}
+.dijitSliderDecorationV {
+       height: 100%;
+}
+.dijitSliderButton {
+       font-family:monospace;
+       margin:0;
+       padding:0;
+       display:block;
+}
+.dijit_a11y .dijitSliderButtonInner {
+       visibility:visible !important;
+}
+.dijitSliderButtonContainer {
+       text-align:center;
+       height:0;       
+}
+.dijitSliderButtonContainer * {
+       cursor: pointer;
+}
+.dijitSlider .dijitButtonNode {
+       padding:0;
+       display:block;
+}
+.dijitRuleContainer {
+       position:relative;
+       overflow:visible;
+}
+.dijitRuleContainerV {
+       height:100%;
+       line-height:0;
+       float:left;
+       text-align:left;
+}
+.dj_opera .dijitRuleContainerV {
+       line-height:2%;
+}
+.dj_ie .dijitRuleContainerV {
+       line-height:normal;
+}
+.dj_gecko .dijitRuleContainerV {
+       margin:0 0 1px 0; 
+}
+.dijitRuleMark {
+       position:absolute;
+       border:1px solid black;
+       line-height:0;
+       height:100%;
+}
+.dijitRuleMarkH {
+       width:0;
+       border-top-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+}
+.dijitRuleLabelContainer {
+       position:absolute;
+}
+.dijitRuleLabelContainerH {
+       text-align:center;
+       display:inline-block;
+}
+.dijitRuleLabelH {
+       position:relative;
+       left:-50%;
+}
+.dijitRuleLabelV {
+       
+       text-overflow: ellipsis;
+       white-space: nowrap;
+       overflow: hidden;
+}
+.dijitRuleMarkV {
+       height:0;
+       border-right-width:0 !important;
+       border-bottom-width:0 !important;
+       border-left-width:0 !important;
+       width:100%;
+       left:0;
+}
+.dj_ie .dijitRuleLabelContainerV {
+       margin-top:-.55em;
+}
+.dijit_a11y .dijitSliderReadOnly,
+.dijit_a11y .dijitSliderDisabled {
+       opacity:0.6;
+}
+.dj_ie .dijit_a11y .dijitSliderReadOnly .dijitSliderBar,
+.dj_ie .dijit_a11y .dijitSliderDisabled .dijitSliderBar {
+       filter: alpha(opacity=40);
+}
+.dijit_a11y .dijitSlider .dijitSliderButtonContainer DIV {
+       font-family: monospace; 
+       font-size: 1em;
+       line-height: 1em;
+       height: auto;
+       width: auto;
+       margin: 0px 4px;
+}
+.dijit_a11y .dijitButtonContents .dijitButtonText,
+.dijit_a11y .dijitTab .tabLabel {
+       display: inline !important;
+}
+.dijitTextArea {
+       width:100%;
+       overflow-y: auto;       
+}
+.dijitTextArea[cols] {
+       width:auto; 
+}
+.dj_ie .dijitTextAreaCols {
+       width:auto;
+}
+.dijitToolbarSeparator {
+       height: 18px;
+       width: 5px;
+       padding: 0 1px;
+       margin: 0;
+}
+.dijitIEFixedToolbar {
+       position:absolute;
+       
+       top: expression(eval((document.documentElement||document.body).scrollTop));
+}
+.dijitEditor {
+       display: block; 
+}
+.dijitEditorDisabled,
+.dijitEditorReadOnly {
+       color: gray;
+}
+.dijitTimePickerItemInner {
+       text-align:center;
+       border:0;
+       padding:2px 8px 2px 8px;
+}
+.dijitTimePickerTick,
+.dijitTimePickerMarker {
+       border-bottom:1px solid gray;
+}
+.dijitTimePicker .dijitDownArrowButton {
+       border-top: none !important;
+}
+.dijitTimePickerTick {
+       color:#CCC;
+}
+.dijitTimePickerMarker {
+       color:black;
+       background-color:#CCC;
+}
+.dijitTimePickerItemSelected {
+       font-weight:bold;
+       color:#333;
+       background-color:#b7cdee;
+}
+.dijitTimePickerItemHover {
+       background-color:gray;
+       color:white;
+       cursor:pointer;
+}
+.dijit_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       border: solid 4px black;
+}
+.dijit_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {
+       border: dashed 4px black;
+}
+.dijitToggleButtonIconChar {
+       
+       display:none !important;
+}
+.dijit_a11y .dijitToggleButton .dijitToggleButtonIconChar {
+       display:inline !important;
+       visibility:hidden;
+}
+.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {
+       font-family: "Arial Unicode MS";        
+}
+.dijit_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {
+       display: inline !important; 
+       visibility:visible !important;
+}
+.dijitArrowButtonChar {
+        display:none !important;
+}
+.dijit_a11y .dijitArrowButtonChar {
+        display:inline !important;
+}
+.dijit_a11y .dijitDropDownButton .dijitArrowButtonInner,
+.dijit_a11y .dijitComboButton .dijitArrowButtonInner {
+       display:none !important;
+}
+.dijitSelect {
+       margin: 0.2em;
+       border-collapse: collapse;
+}
+.dj_ie .dijitSelect,
+.dj_ie7 .dijitSelect,
+.dj_iequirks .dijitSelect {
+       vertical-align: middle; 
+}
+.dj_ie8 .dijitSelect .dijitButtonText {
+       vertical-align: top;
+}
+.dijitToolbar .dijitSelect {
+       margin: 0;
+}
+.dj_webkit .dijitToolbar .dijitSelect {
+       padding-left: 0.3em;
+}
+.dijit_a11y .dijitSelectDisabled .dijitButtonNode {
+       border-style: outset!important;
+       border-width: medium!important;
+       border-color: #999 !important;
+       color:#999 !important;
+}
+.dijitSelect .dijitButtonContents {
+       padding: 0px;
+       background: transparent none;
+       white-space: nowrap;
+       text-align: left;
+}
+.dijitSelectFixedWidth .dijitButtonContents {
+       width: 100%;
+}
+.dijitSelectMenu .dijitMenuItemIcon {
+       
+       display:none;
+}
+.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,
+.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {
+       
+       position: static;
+}
+.dijitSelectLabel *
+{
+       vertical-align: baseline;
+}
+.dijitSelectSelectedOption * {
+       font-weight: bold;
+}
+.dijitSelectMenu {
+       border-width: 1px;
+}
+.dijitSelectMenu .dijitMenuTable {
+       margin: 0px;
+       background-color: transparent;
+}
+.dijitForceStatic {
+       position: static !important;
+}
+.dijitReadOnly *,
+.dijitDisabled *,
+.dijitReadOnly,
+.dijitDisabled {
+       
+       cursor: default;
+}
+.dijitIconSave,
+.dijitIconPrint,
+.dijitIconCut,
+.dijitIconCopy,
+.dijitIconClear,
+.dijitIconDelete,
+.dijitIconUndo,
+.dijitIconEdit,
+.dijitIconNewTask,
+.dijitIconEditTask,
+.dijitIconEditProperty,
+.dijitIconTask,
+.dijitIconFilter,
+.dijitIconConfigure,
+.dijitIconSearch,
+.dijitIconApplication,
+.dijitIconBookmark,
+.dijitIconChart,
+.dijitIconConnector,
+.dijitIconDatabase,
+.dijitIconDocuments,
+.dijitIconMail,
+.dijitLeaf,
+.dijitIconFile,
+.dijitIconFunction,
+.dijitIconKey,
+.dijitIconPackage,
+.dijitIconSample,
+.dijitIconTable,
+.dijitIconUsers,
+.dijitFolderClosed,
+.dijitIconFolderClosed,
+.dijitFolderOpened,
+.dijitIconFolderOpen,
+.dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled.png); 
+       width: 16px;
+       height: 16px;
+}
+.dj_ie6 .dijitIconSave,
+.dj_ie6 .dijitIconPrint,
+.dj_ie6 .dijitIconCut,
+.dj_ie6 .dijitIconCopy,
+.dj_ie6 .dijitIconClear,
+.dj_ie6 .dijitIconDelete,
+.dj_ie6 .dijitIconUndo,
+.dj_ie6 .dijitIconEdit,
+.dj_ie6 .dijitIconNewTask,
+.dj_ie6 .dijitIconEditTask,
+.dj_ie6 .dijitIconEditProperty,
+.dj_ie6 .dijitIconTask,
+.dj_ie6 .dijitIconFilter,
+.dj_ie6 .dijitIconConfigure,
+.dj_ie6 .dijitIconSearch,
+.dj_ie6 .dijitIconApplication,
+.dj_ie6 .dijitIconBookmark,
+.dj_ie6 .dijitIconChart,
+.dj_ie6 .dijitIconConnector,
+.dj_ie6 .dijitIconDatabase,
+.dj_ie6 .dijitIconDocuments,
+.dj_ie6 .dijitIconMail,
+.dj_ie6 .dijitLeaf,
+.dj_ie6 .dijitIconFile,
+.dj_ie6 .dijitIconFunction,
+.dj_ie6 .dijitIconKey,
+.dj_ie6 .dijitIconPackage,
+.dj_ie6 .dijitIconSample,
+.dj_ie6 .dijitIconTable,
+.dj_ie6 .dijitIconUsers,
+.dj_ie6 .dijitFolderClosed,
+.dj_ie6 .dijitIconFolderClosed,
+.dj_ie6 .dijitFolderOpened,
+.dj_ie6 .dijitIconFolderOpen,
+.dj_ie6 .dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActEnabled8bit.png);
+}
+.dijitDisabled .dijitIconSave,
+.dijitDisabled .dijitIconPrint,
+.dijitDisabled .dijitIconCut,
+.dijitDisabled .dijitIconCopy,
+.dijitDisabled .dijitIconClear,
+.dijitDisabled .dijitIconDelete,
+.dijitDisabled .dijitIconUndo,
+.dijitDisabled .dijitIconEdit,
+.dijitDisabled .dijitIconNewTask,
+.dijitDisabled .dijitIconEditTask,
+.dijitDisabled .dijitIconEditProperty,
+.dijitDisabled .dijitIconTask,
+.dijitDisabled .dijitIconFilter,
+.dijitDisabled .dijitIconConfigure,
+.dijitDisabled .dijitIconSearch,
+.dijitDisabled .dijitIconApplication,
+.dijitDisabled .dijitIconBookmark,
+.dijitDisabled .dijitIconChart,
+.dijitDisabled .dijitIconConnector,
+.dijitDisabled .dijitIconDatabase,
+.dijitDisabled .dijitIconDocuments,
+.dijitDisabled .dijitIconMail,
+.dijitDisabled .dijitLeaf,
+.dijitDisabled .dijitIconFile,
+.dijitDisabled .dijitIconFunction,
+.dijitDisabled .dijitIconKey,
+.dijitDisabled .dijitIconPackage,
+.dijitDisabled .dijitIconSample,
+.dijitDisabled .dijitIconTable,
+.dijitDisabled .dijitIconUsers,
+.dijitDisabled .dijitFolderClosed,
+.dijitDisabled .dijitIconFolderClosed,
+.dijitDisabled .dijitFolderOpened,
+.dijitDisabled .dijitIconFolderOpen,
+.dijitDisabled .dijitIconError {
+       background-image: url(../../icons/images/commonIconsObjActDisabled.png); 
+}
+.dijitIconSave { background-position: 0px; }
+.dijitIconPrint { background-position: -16px; }
+.dijitIconCut { background-position: -32px; }
+.dijitIconCopy { background-position: -48px; }
+.dijitIconClear { background-position: -64px; }
+.dijitIconDelete { background-position: -80px; }
+.dijitIconUndo { background-position: -96px; }
+.dijitIconEdit { background-position: -112px; }
+.dijitIconNewTask { background-position: -128px; }
+.dijitIconEditTask { background-position: -144px; }
+.dijitIconEditProperty { background-position: -166px; }
+.dijitIconTask { background-position: -176px; }
+.dijitIconFilter { background-position: -192px; }
+.dijitIconConfigure { background-position: -208px; }
+.dijitIconSearch { background-position: -224px; }
+.dijitIconError { background-position: -496px; } 
+.dijitIconApplication { background-position: -240px; }
+.dijitIconBookmark { background-position: -256px; }
+.dijitIconChart { background-position: -272px; }
+.dijitIconConnector { background-position: -288px; }
+.dijitIconDatabase { background-position: -304px; }
+.dijitIconDocuments { background-position: -320px; }
+.dijitIconMail { background-position: -336px; }
+.dijitIconFile, .dijitLeaf { background-position: -352px; }
+.dijitIconFunction { background-position: -368px; }
+.dijitIconKey { background-position: -384px; }
+.dijitIconPackage{ background-position: -400px; }
+.dijitIconSample { background-position: -416px; }
+.dijitIconTable { background-position: -432px; }
+.dijitIconUsers { background-position: -448px; }
+.dijitIconFolderClosed, .dijitFolderClosed { background-position: -464px; }
+.dijitIconFolderOpen, .dijitFolderOpened { background-position: -480px; }
+.tundra .dojoDndItemBefore {
+       border-top: 2px solid #369;
+}
+.tundra .dojoDndItemAfter {
+       border-bottom: 2px solid #369;
+}
+.tundra .dojoDndItemOver {
+       cursor:pointer;
+}
+.tundra table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}
+.tundra .dojoDndAvatar td      { border: none; }
+.tundra .dojoDndAvatar tr      { border: none; }
+.tundra .dojoDndAvatarHeader td        { height: 20px; padding: 0 0 0 21px; }
+.tundra .dojoDndAvatarItem td { padding: 2px;}
+.tundra.dojoDndMove .dojoDndAvatarHeader       {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra.dojoDndCopy .dojoDndAvatarHeader       {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;}
+.tundra .dijitContentPaneLoading {
+       background:url(images/loading.gif) no-repeat left center;
+       padding-left:25px;
+}
+.tundra .dijitContentPaneError {
+       background:url(images/warning.png) no-repeat left center;
+       padding-left:25px;
+}
+.tundra .dijitContentPane {
+       padding: 0px;
+}
+.tundra .dijitTabContainerTop-dijitContentPane,
+.tundra .dijitTabContainerLeft-dijitContentPane,
+.tundra .dijitTabContainerBottom-dijitContentPane,
+.tundra .dijitTabContainerRight-dijitContentPane,
+.tundra .dijitAccordionContainer-dijitContentPane {
+       background-color: #fff;
+       padding: 5px;
+}
+.tundra .dijitSplitContainer-dijitContentPane,
+.tundra .dijitBorderContainer-dijitContentPane {
+       background-color: #fff;         
+       padding: 5px;
+}
+.tundra .dijitTabPaneWrapper {
+       background:#fff;
+       border:1px solid #ccc;
+       margin: 0;
+       padding: 0;
+}
+.tundra .dijitTab {
+       line-height:normal;
+       margin-right:4px;       
+       padding:0px;
+       border:1px solid #ccc;
+       background:#e2e2e2 url(images/tabEnabled.png) repeat-x;
+}
+.tundra .dijitTabInnerDiv {
+       padding:2px 8px 2px 9px;
+}
+.tundra .dijitTabSpacer {
+       display: none;
+}
+.tundra .dijitTabContainer .tabStripRBtn {
+       margin-right: 20px;
+}
+.tundra .dijitTabContainer .tabStripLBtn {
+       margin-left: 20px;
+}
+.tundra .nowrapTabStrip .dijitTab {
+       top: 2px;
+}
+.tundra .dijitTabContainerBottom .nowrapTabStrip .dijitTab {
+       top: 0px;
+       bottom: 2px;
+}
+.tundra .dijitTabChecked {
+       
+       background-color:#fff;
+       border-color: #ccc;
+       background-image:none;
+}
+.tundra .dijitTabHover {
+       color: #243C5F;
+       border-top-color:#92a0b3;
+       border-left-color:#92a0b3;
+       border-right-color:#92a0b3;
+       border-bottom-color:#92a0b3;
+       background:#e2e2e2 url(images/tabHover.gif) repeat-x;
+}
+.tundra .dijitTabContainerTop .dijitTabHover {
+       border-bottom-color:#ccc;
+}
+.tundra .dijitTabContainerBottom .dijitTabHover {
+       border-top-color:#ccc;
+}
+.tundra .dijitTabContainerLeft .dijitTabHover {
+       border-right-color:#ccc;
+}
+.tundra .dijitTabContainerRight .dijitTabHover {
+       border-left-color:#ccc;
+}
+.tundra .dijitTabContainer .dijitTabCheckedHover {
+       color: inherit;
+       border:1px solid #ccc;
+       background:#fff;
+}
+.tundra .dijitTab .tabLabel {
+       
+       min-height: 12px;
+       display: inline-block;
+}
+.tundra .dijitTabContainerNested .dijitTabListWrapper {
+       height: auto;
+}
+.tundra .dijitTabContainerNested .dijitTabContainerTop-tabs {
+       border-bottom: 1px solid #CCC;
+}
+.tundra .dijitTabContainerTabListNested .dijitTab {
+       background: none;
+       border: none;
+       top: 0px;               
+}
+.tundra .dijitTabContainerTabListNested .dijitTab .dijitTabContent {
+}
+.tundra .dijitTabContainerTabListNested .dijitTabHover .dijitTabContent .tabLabel {
+       text-decoration: underline;
+}
+.tundra .dijitTabContainerTabListNested .dijitTabChecked .dijitTabContent .tabLabel {
+       text-decoration: underline;
+       font-weight: bold;
+       
+}
+.tundra .dijitTabContainer .dijitTabPaneWrapperNested {
+       border: none;   
+}
+.tundra .dijitTabCloseButton {
+       background: url(images/tabClose.png) no-repeat right top;
+       width: 12px;
+       height: 12px;
+}
+.dj_ie6 .tundra .dijitTabCloseButton {
+       background-image : url(images/tabClose.gif);
+}
+.tundra .dijitTabCloseButtonHover {
+       background-image : url(images/tabCloseHover.png);
+}
+.dj_ie6 .tundra .dijitTabCloseButtonHover {
+       background-image : url(images/tabCloseHover.gif);
+}
+.tundra .dijitTabContainerTop-tabs {
+       margin-bottom: 0px;
+       border-color: #cccccc;
+       padding-left: 3px;
+       background-position: bottom;
+}
+.tundra .dijitTabContainerTop-tabs .dijitTab {
+       top: 0px;
+       margin-bottom: -1px;
+}
+.tundra .dijitTabContainerTop-container {
+       border-top: none;
+}
+.tundra .dijitTabContainerTop-tabs .dijitTabChecked {
+       border-bottom-color:white;
+}
+.tundra .dijitTabContainerTop-tabs,
+.tundra .dijitTabContainerBottom-tabs {
+       padding-left: 3px;
+       padding-right: 3px;
+}
+.tundra .dijitTabContainerTopStrip {
+       border-top: 1px solid #CCC;
+       border-right: 1px solid #CCC;
+       border-left: 1px solid #CCC;
+       padding-top: 2px;
+       background: #f2f2f2;
+}
+.tundra .dijitTabContainerTopNone {
+       padding-top: 0px;
+}
+.tundra .dijitTabContainerBottom-tabs {
+       margin-top: 0px;
+       border-color: #cccccc;
+       background-position: top;
+       padding-left: 3px;
+}
+.tundra .dijitTabContainerBottom-tabs .dijitTab {
+       bottom: 0px;
+       margin-top: -1px;
+}
+.tundra .dijitTabContainerBottom-container {
+       border-bottom: none;
+}
+.tundra .dijitTabContainerBottom-tabs .dijitTabChecked {
+       border-top-color:white;
+}
+.tundra .dijitTabContainerBottomStrip {
+       padding-bottom: 2px;
+       border: 1px solid #ccc;
+       background: #f2f2f2;
+       border-top: none;
+}
+.tundra .dijitTabContainerRight-tabs {
+       border-color: #ccc;
+       height: 100%;
+       padding-top: 3px;
+}
+.tundra .dijitTabContainerRightStrip {
+       margin-left: -1px;
+}
+.tundra .dijitTabContainerRight-container {
+       border-right: none;
+}
+.tundra .dijitTabContainerRight-tabs .dijitTabChecked {
+       border-left-color:white;
+}
+.tundra .dijitTabContainerRightStrip {
+       padding-right: 2px;
+       border: 1px solid #ccc;
+}
+.tundra .dijitTabContainerRightStrip {
+       background: #f2f2f2;
+}
+.tundra .dijitTabContainerLeft-tabs {
+       border-color: #ccc;
+       padding-top: 3px;
+       height: 100%;
+}
+.tundra .dijitTabContainerLeft-container {
+       border-left: none;
+}
+.tundra .dijitTabContainerLeft-tabs .dijitTabChecked {
+       border-right-color:white;
+}
+.tundra .dijitTabContainerLeftStrip {
+       padding-left: 2px;
+       border: 1px solid #ccc;
+       background: #f2f2f2;
+       border-right: none;
+}
+.tundra .dijitTabContainerLeft-tabs .dijitTab,
+.tundra .dijitTabContainerRight-tabs .dijitTab {
+       margin-right:0px;
+       margin-bottom:4px;      
+}
+.tundra .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {
+       border-left: 0px solid #ccc;
+       border-top: 0px solid #ccc;
+       border-right: 0px solid #ccc;
+       padding-top: 0px;
+       padding-left: 0px;
+}
+.tundra .dijitTabContainer .tabStripButton {
+       margin-right: 0;
+       padding-top: 2px;
+       z-index: 12;
+}
+.tundra .dijitTabContainerBottom .tabStripButton {
+       padding-top: 2px;
+}
+.tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv {
+       padding-bottom: 3px;
+       padding-top: 1px;
+}
+.tundra .tabStripButton .dijitTabInnerDiv {
+       padding: 3px 2px 4px 2px;
+}
+.dj_ie6 .tundra .tabStripButton .dijitTabInnerDiv,
+.dj_ie7 .tundra .tabStripButton .dijitTabInnerDiv,
+.dj_opera .tundra .tabStripButton .dijitTabInnerDiv {
+       padding-bottom: 5px;
+}
+.dj_ie6 .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv,
+.dj_ie7 .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv,
+.dj_opera .tundra .tabStrip-disabled .tabStripButton .dijitTabInnerDiv {
+       padding-bottom: 4px;
+}
+.tundra .dijitTabStripIcon {
+       height: 14px;
+       width: 14px;
+       background: url(images/spriteRoundedIconsSmall.png) no-repeat left top ;
+}
+.dj_ie6 .tundra .dijitTabStripIcon {
+       background-image: url(images/spriteRoundedIconsSmall.gif);
+}
+.tundra .dijitTabStripSlideRightIcon {
+       background-position: -30px top;
+}
+.tundra .dijitTabStripMenuIcon {
+       background-position: -15px top;
+}
+.tundra .dijitAccordionContainer {
+       border-color: #ccc;
+       background-color: #fff;
+}
+.tundra .dijitAccordionTitle {
+       background:#fafafa url(images/titleBar.png) repeat-x bottom left;
+       border-top: 1px solid #bfbfbf;
+       padding: 4px 4px 4px 8px;
+}
+.tundra .dijitAccordionTitleHover  {
+       background: #f8fafd url(images/accordionItemHover.gif) bottom repeat-x;
+}
+.tundra .dijitAccordionTitleSelected  {
+       background: #f9f9f9 url(images/accordionItemActive.gif) bottom repeat-x;
+       font-weight: bold;
+       border-top: 1px solid #aaaaaa;
+       border-bottom: 1px solid #bfbfbf;
+       padding: 4px 4px 4px 8px;
+}
+.tundra .dijitSplitContainerSizerH {
+       background:url(images/splitContainerSizerV.png) repeat-y #fff;
+       border:0;
+       border-left:1px solid #bfbfbf;
+       border-right:1px solid #bfbfbf;
+       width:7px;
+}
+.tundra .dijitSplitContainerSizerH .thumb {
+       background:url(images/splitContainerSizerV-thumb.png) no-repeat #ccc;
+       left:1px;
+       width:3px;
+       height:19px;
+       overflow: hidden;
+}
+.tundra .dijitSplitContainerSizerV {
+       background:url(images/splitContainerSizerH.png) repeat-x #fff;
+       border:0;
+       border-top:1px solid #bfbfbf;
+       border-bottom:1px solid #bfbfbf;
+       height:7px;
+}
+.tundra .dijitSplitContainerSizerV .thumb {
+       background:url(images/splitContainerSizerH-thumb.png) no-repeat #ccc;
+       top:1px;
+       width:19px;
+       height:3px;
+       overflow: hidden;
+}
+.tundra .dijitBorderContainer {
+       background-color: #fcfcfc;
+       padding: 5px;
+}
+.tundra .dijitSplitContainer-child,
+.tundra .dijitBorderContainer-child {
+       
+       border: 1px #ccc solid;
+}
+.tundra .dijitBorderContainer-dijitTabContainerTop,
+.tundra .dijitBorderContainer-dijitTabContainerBottom,
+.tundra .dijitBorderContainer-dijitTabContainerLeft,
+.tundra .dijitBorderContainer-dijitTabContainerRight {
+       
+        border: none;
+}
+.tundra .dijitBorderContainer-dijitBorderContainer {
+       
+       border: none;
+       padding: 0px;
+}
+.tundra .dijitSplitterH,
+.tundra .dijitGutterH {
+       background:#fcfcfc;
+       border:0;
+       height:5px;
+}
+.tundra .dijitSplitterH .dijitSplitterThumb {
+       background:#B0B0B0 none;
+       height:1px;
+       top:2px;
+       width:19px;
+}
+.tundra .dijitSplitterV,
+.tundra .dijitGutterV {
+       background:#fcfcfc;
+       border:0;
+       width:5px;
+}
+.tundra .dijitSplitterV .dijitSplitterThumb {
+       background:#B0B0B0 none;
+       height:19px;
+       left:2px;
+       width:1px;
+}
+.tundra .dijitSplitterActive {
+       font-size: 1px;
+       background-image: none;
+       background-color: #aaa;
+       -moz-opacity: 0.6;
+       opacity: 0.6;
+       filter: Alpha(Opacity=60);
+       margin: 0;
+}
+.tundra .dijitInputContainer INPUT,
+.tundra .dijitTextBox {
+       margin: 0em 0.1em;
+}
+.tundra .dijitTextArea {
+       padding: 3px;
+}
+.tundra .dijitTextBox {
+       
+       background:#fff url(images/validationInputBg.png) repeat-x top left;
+       #background:#fff url(images/validationInputBg.gif) repeat-x top left;
+       border:1px solid #b3b3b3;
+}
+.tundra .dijitComboBox .dijitButtonNode {
+       padding: 0 0.2em;
+}
+.tundra .dijitTextBox .dijitButtonNode {
+       
+       border-color: #9b9b9b;
+}
+.tundra .dijitTextBoxFocused {
+       
+       border-color:#406b9b;
+}
+.tundra .dijitTextBoxFocused .dijitButtonNode {
+       border-color:#366dba;
+}
+.tundra .dijitError {
+       background-color:#f9f7ba;
+       background-image:none;
+}
+.tundra .dijitErrorFocused {
+       background-color:#f9f999;
+       background-image:none;
+}
+.tundra .dijitValidationIcon {
+       
+       width: 16px;
+       background: transparent url(images/warning.png) no-repeat center center;
+}
+.tundra .dijitComboBoxHighlightMatch {
+       background-color:#a5beda;
+}
+.tundra .dijitFocusedLabel {
+       
+       outline: 1px dotted #666666;
+}
+.tundra .dijitButtonNode {
+       
+       border: 1px solid #c0c0c0;
+       border-bottom: 1px solid #9b9b9b;
+       padding: 0.1em 0.2em 0.2em 0.2em;
+       background: #fff url(images/buttonEnabled.png) repeat-x bottom left;
+}
+.tundra .dijitButtonText {
+       text-align: center;
+       padding: 0 0.3em;
+}
+.tundra .dijitDisabled .dijitButtonText {
+       color: #7F7F7F;
+}
+.tundra .dijitArrowButton {
+       color: #111;
+}
+.tundra .dijitComboButton .dijitDownArrowButton {
+       padding-right:4px;
+}
+.tundra .dijitTextBoxReadOnly,
+.tundra .dijitTextBoxReadOnly .dijitButtonNode,
+.tundra .dijitButtonDisabled .dijitButtonNode,
+.tundra .dijitToggleButtonDisabled .dijitButtonNode,
+.tundra .dijitDropDownButtonDisabled .dijitButtonNode,
+.tundra .dijitComboButtonDisabled .dijitButtonNode,
+.tundra .dijitTextBoxDisabled,
+.tundra .dijitTextBoxDisabled .dijitButtonNode {
+       
+       border-color: #d5d5d5 #d5d5d5 #bdbdbd #d5d5d5;
+       background:#e4e4e4 url(images/buttonDisabled.png) top repeat-x;
+}
+.tundra .dijitButtonHover .dijitButtonNode,
+.tundra .dijitButtonNodeHover,
+.tundra .dijitToggleButtonHover .dijitButtonNode,
+.tundra .dijitDropDownButtonHover .dijitButtonNode,
+.tundra .dijitComboButton .dijitButtonContentsHover,
+.tundra .dijitComboButton .dijitDownArrowButtonHover {
+       
+       
+       border-color: #a5beda;
+       border-bottom-color:#5c7590;
+       color:#243C5F;
+       background:#fcfdff url(images/buttonHover.png) repeat-x bottom;
+}
+.tundra .dijitDownArrowButtonHover,
+.tundra .dijitUpArrowButtonHover {
+       
+       color:#243C5F;
+       background:#fcfdff url(images/buttonHover.png) repeat-x bottom;
+}
+.tundra .dijitUpArrowButtonActive,
+.tundra .dijitDownArrowButtonActive,
+.tundra .dijitButtonActive .dijitButtonNode,
+.tundra .dijitToggleButtonActive .dijitButtonNode,
+.tundra .dijitDropDownButtonActive .dijitButtonNode,
+.tundra .dijitButtonContentsActive,
+.tundra .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {
+       
+       border-color:#366dba;
+       background: #ededed url(images/buttonActive.png) bottom repeat-x;
+}
+.tundra .dijitArrowButtonInner {
+       background:url(images/spriteArrows.png) no-repeat scroll 0px center;
+       width: 7px;
+       height: 7px;
+       margin: 0px 4px 0px 4px;
+}
+.tundra .dijitTextBox .dijitArrowButtonInner {
+       background-position: 0 center;
+}
+.dj_ie6 .tundra .dijitArrowButtonInner {
+       background-image:url(images/spriteArrows.gif);
+}
+.tundra .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -7px center;
+}
+.tundra .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -14px center;
+}
+.tundra .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -21px center;
+}
+.tundra .dijitDisabled .dijitArrowButtonInner {
+       background-position: -28px center;
+}
+.tundra .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner {
+       background-position: -35px center;
+}
+.tundra .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner {
+       background-position: -42px center;
+}
+.tundra .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner {
+       background-position: -49px center;
+}
+.dj_webkit .tundra .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {
+       margin-top: -1px; 
+}
+.dj_ie .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {
+       margin-top: -2px; 
+}
+.dj_ie8 .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {
+       margin-top: -1px; 
+}
+.tundra .dijitSpinnerButtonContainer {
+       width: auto;
+       padding: 0;
+}
+.tundra .dijitSpinner .dijitArrowButton {
+       width: 15px;
+}
+.tundra .dijitSpinner .dijitSpinnerButtonInner {
+       width: 15px;
+}
+.tundra .dijitSpinner .dijitArrowButtonInner .dijitInputField {
+       padding: 0;
+}
+.tundra .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url(images/checkmarkNoBorder.png);
+}
+.dj_ie6 .tundra .dijitToggleButton .dijitCheckBoxIcon {
+       background-image: url(images/checkmarkNoBorder.gif);
+}
+.tundra .dijitCheckBox,
+.tundra .dijitCheckBoxIcon                     {
+       background-image: url(images/checkmark.png); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0 2px 0 0;
+       padding: 0;
+}
+.dj_ie6 .tundra .dijitCheckBox,
+.dj_ie6 .tundra .dijitCheckBoxIcon                     {
+       background-image: url(images/checkmark.gif); 
+}
+.tundra .dijitCheckBox,
+.tundra .dijitToggleButton .dijitCheckBoxIcon {
+       
+       background-position: -16px;
+}
+.tundra .dijitCheckBoxChecked,
+.tundra .dijitToggleButtonChecked .dijitCheckBoxIcon {
+       
+       background-position: 0px;
+}
+.tundra .dijitCheckBoxDisabled {
+       
+       background-position: -48px;
+}
+.tundra .dijitCheckBoxCheckedDisabled {
+       
+       background-position: -32px;
+}
+.tundra .dijitCheckBoxHover {
+       
+       background-position: -80px;
+}
+.tundra .dijitCheckBoxCheckedHover {
+       
+       background-position: -64px;
+}
+.tundra .dijitRadio,                   
+.tundra .dijitRadioIcon        {               
+       background-image: url(images/checkmark.png); 
+       background-repeat: no-repeat;
+       width: 16px;
+       height: 16px;
+       margin: 0;
+       padding: 0;
+}
+.dj_ie6 .tundra .dijitRadio,
+.dj_ie6 .tundra .dijitRadioIcon        {
+       background-image: url(images/checkmark.gif); 
+}
+.tundra .dijitToggleButton .dijitRadioIcon {
+       
+       background-image: url(images/checkmarkNoBorder.png);
+}
+.dj_ie6 .tundra .dijitToggleButton .dijitRadioIcon {
+       background-image: url(images/checkmarkNoBorder.gif);
+}
+.tundra .dijitRadio,
+.tundra .dijitRadioIcon {
+       
+       background-position: -112px;
+}
+.tundra .dijitRadioDisabled {
+       
+       background-position: -144px;
+}
+.tundra .dijitRadioHover {
+       
+       background-position: -176px;
+}
+.tundra .dijitRadioChecked,
+.tundra .dijitRadioCheckedHover,
+.tundra .dijitToggleButtonChecked .dijitRadioIcon {
+       
+       background-position: -96px;
+}
+.tundra .dijitRadioCheckedDisabled {
+       
+       background-position: -128px;
+}
+.tundra .dijitSliderProgressBarH {
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFull.png) repeat-x top left;
+}
+.tundra .dijitSliderProgressBarV {
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFullVertical.png) repeat-y bottom left;
+}
+.tundra .dijitSliderFocused .dijitSliderProgressBarH,
+.tundra .dijitSliderFocused .dijitSliderLeftBumper {
+       background-image:url(images/sliderFullFocus.png);
+}
+.tundra .dijitSliderFocused .dijitSliderProgressBarV,
+.tundra .dijitSliderFocused .dijitSliderBottomBumper {
+       background-image:url(images/sliderFullVerticalFocus.png);
+}
+.tundra .dijitSliderRemainingBarV {
+       border-color: #b4b4b4;
+       background: #dcdcdc url(images/sliderEmptyVertical.png) repeat-y bottom left;
+}
+.tundra .dijitSliderRemainingBarH {
+       border-color: #b4b4b4;
+       background: #dcdcdc url(images/sliderEmpty.png) repeat-x top left;
+}
+.tundra .dijitSliderBar {
+       border-style: solid;
+       outline:1px;
+}
+.tundra .dijitSliderFocused .dijitSliderBar {
+       border-color:#888;
+}
+.tundra .dijitSliderImageHandleH {
+       border:0px;
+       width:16px;
+       height:16px;
+       background:url(images/preciseSliderThumb.png) no-repeat center top;
+}
+.tundra .dijitSliderFocused .dijitSliderImageHandleH {
+       background-image:url(images/preciseSliderThumbFocus.png);
+       #background-image:url(images/preciseSliderThumbFocus.gif);
+}
+.dj_ie6 .tundra .dijitSliderImageHandleH {
+       background-image:url(images/preciseSliderThumb.gif);
+}
+.tundra .dijitSliderLeftBumper {
+       border-left-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFull.png) repeat-x top left;
+}
+.tundra .dijitSliderRightBumper {
+       background: #dcdcdc url(images/sliderEmpty.png) repeat-x top left;
+       border-color: #b4b4b4;
+       border-right-width: 1px;
+}
+.tundra .dijitSliderImageHandleV {
+       border:0px;
+       width:16px;
+       height:16px;
+       background:url(images/sliderThumb.png) no-repeat center center;
+}
+.tundra .dijitSliderFocused .dijitSliderImageHandleV {
+       background-image:url(images/sliderThumbFocus.png);
+}
+.dj_ie6 .tundra .dijitSliderFocused .dijitSliderImageHandleV {
+       background-image:url(images/sliderThumbFocus.gif);
+}
+.tundra .dijitSliderBottomBumper {
+       border-bottom-width: 1px;
+       border-color: #aab0bb;
+       background: #c0c2c5 url(images/sliderFullVertical.png) repeat-y bottom left;
+}
+.tundra .dijitSliderTopBumper {
+       background: #dcdcdc url(images/sliderEmptyVertical.png) repeat-y top left;
+       border-color: #b4b4b4;
+       border-top-width: 1px;
+}
+.tundra .dijitSliderDecrementIconH,
+.tundra .dijitSliderDecrementIconV,
+.tundra .dijitSliderIncrementIconH,
+.tundra .dijitSliderIncrementIconV {
+       background-image: url(images/spriteArrows.png);
+       background-repeat: no-repeat;
+       margin: 5px;
+       height: 7px;
+       width: 7px;
+       font-size: 1px;
+}
+.dj_ie6 .tundra .dijitSliderDecrementIconH,
+.dj_ie6 .tundra .dijitSliderDecrementIconV,
+.dj_ie6 .tundra .dijitSliderIncrementIconH,
+.dj_ie6 .tundra .dijitSliderIncrementIconV {
+       background-image: url(images/spriteArrows.gif);
+}
+.tundra .dijitSliderDecrementIconH {
+       background-position: -7px 0px;
+}
+.tundra .dijitSliderIncrementIconH {
+       background-position: -14px 0px;
+}
+.tundra .dijitSliderDecrementIconV {
+       background-position: 0px 0px;
+}
+.tundra .dijitSliderIncrementIconV {
+       background-position: -21px 0px;
+}
+.tundra .dijitSliderButtonInner {
+       visibility:hidden;
+}
+.tundra .dijitSliderReadOnly *,
+.tundra .dijitSliderDisabled * {
+       border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
+       color: #bdbdbd;
+}
+.tundra .dijitSliderReadOnly .dijitSliderDecrementIconH,
+.tundra .dijitSliderDisabled .dijitSliderDecrementIconH {
+       background-position: -35px 0px;
+}
+.tundra .dijitSliderReadOnly .dijitSliderIncrementIconH,
+.tundra .dijitSliderDisabled .dijitSliderIncrementIconH {
+       background-position: -42px 0px;
+}
+.tundra .dijitSliderReadOnly .dijitSliderDecrementIconV,
+.tundra .dijitSliderDisabled .dijitSliderDecrementIconV {
+       background-position: -28px 0px;
+}
+.tundra .dijitSliderReadOnly .dijitSliderIncrementIconV,
+.tundra .dijitSliderDisabled .dijitSliderIncrementIconV {
+       background-position: -49px 0px;
+}
+.tundra .dijitSelect .dijitButtonNode {
+       padding: 0px;
+}
+.tundra .dijitSelect .dijitButtonNode .dijitArrowButtonInner {
+       margin: 0px 4px 0px 5px;
+}
+.tundra .dijitSelect .dijitButtonContents {
+       padding-top: 1px;
+       background:#fff url(images/validationInputBg.png) repeat-x top left;
+       #background:#fff url(images/validationInputBg.gif) repeat-x top left;
+}
+.tundra .dijitSelectHover .dijitButtonContents,
+.tundra .dijitSelectActive .dijitButtonContents,
+.tundra .dijitSelectOpened .dijitButtonContents,
+.tundra .dijitSelectDisabled .dijitButtonContents,
+.tundra .dijitSelectReadOnly .dijitButtonContents{
+       background: transparent none;
+}
+.dj_ie .tundra .dijitSelect .dijitButtonContents {
+       padding-top: 0px;
+}
+.tundra .dijitSelectDisabled .dijitButtonNode {
+       border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5;
+       background:#e4e4e4 url(images/buttonDisabled.png) top repeat-x;
+}
+.dj_ie .tundra .dijitSelectDisabled  .dijitButtonNode * {
+       filter: gray() alpha(opacity=50);
+}
+.tundra .dijitSelectHover .dijitButtonNode {
+       border-color:#a5beda;
+       border-bottom-color:#5c7590;
+       border-right-color:#5c7590;
+       color:#243C5F;
+       background:#fcfdff url(images/buttonHover.png) repeat-x bottom;
+}
+.tundra .dijitSelectActive .dijitButtonNode,
+.tundra .dijitSelectOpened .dijitButtonNode {
+       border-color:#366dba;
+       background: #ededed url(images/buttonActive.png) bottom repeat-x;
+}
+.tundra .dijitSelectMenu td {
+       padding: 0em;
+}
+.tundra .dijitSelectMenu .dijitMenuItemLabel,
+.tundra .dijitSelectMenu .dijitMenuArrowCell {
+       padding: 0.1em 0.2em;
+}
+.tundra .dijitTreeNode {
+    background-image : url(images/i.gif);
+    background-repeat : repeat-y;
+    zoom: 1;   
+}
+.tundra .dijitTreeIsLast {
+    background: url(images/i_half.gif) no-repeat;
+}
+.tundra .dijitTreeIsRoot {
+    margin-left: 0;
+    background-image: none;
+}
+.tundra .dijitTreeExpando {
+    width: 18px;
+    height: 18px;
+}
+.tundra .dijitTreeRow {
+       
+       padding-bottom: 2px;
+}
+.tundra .dijitTreeContent {
+    min-height: 18px;
+    min-width: 18px;
+}
+.tundra .dijitTreeRowSelected .dijitTreeLabel {
+       background:#e2ebfe;
+}
+.tundra .dijitTreeRowHover {
+       
+       background-image: url(images/treeHover.png);
+       background-repeat: repeat;
+       background-color: transparent !important;
+}
+.tundra .dijitTreeExpandoOpened {
+       background-image: url(images/treeExpand_minus.gif);
+}
+.tundra .dijitTreeExpandoClosed {
+       background-image: url(images/treeExpand_plus.gif);
+}
+.tundra .dijitTreeExpandoLeaf {
+       background-image: url(images/treeExpand_leaf.gif);
+}
+.tundra .dijitTreeExpandoLoading {
+       background-image: url(images/treeExpand_loading.gif);
+}
+.tundra .dijitTreeIcon {
+       width: 16px;
+       height: 16px;
+}
+.tundra .dijitFolderOpened {
+       background: url(images/folderOpened.gif) no-repeat;
+}
+.tundra .dijitFolderClosed {
+       background: url(images/folderClosed.gif) no-repeat;
+}
+.tundra .dijitLeaf {
+       background: url(images/leaf.gif) no-repeat;
+}
+.tundra .dijitTreeNode .dojoDndItemBefore,
+.tundra .dijitTreeNode .dojoDndItemAfter {
+       border-bottom: none;
+       border-top: none;
+}
+.tundra .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {
+       
+       border-top: 2px solid #369;
+}
+.tundra .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {
+       
+       border-bottom: 2px solid #369;
+}
+.tundra .dijitProgressBar {
+       margin:2px 0px 2px 0px;
+}
+.tundra .dijitProgressBarEmpty {
+       
+       background:#fff url(images/progressBarEmpty.png) repeat-x center center;
+       border-color: #a2a2a2 #b8b8b8 #b8b8b8 #a2a2a2;
+}
+.tundra .dijitProgressBarTile {
+       
+       background:#f0f0f0 url(images/progressBarFull.png) repeat-x center center;
+}
+.tundra .dijitProgressBarFull {
+       border-right:1px solid #b8b8b8;
+}
+.tundra .dijitProgressBarLabel {
+       
+       color:#293a4b;
+}
+.tundra .dijitProgressBarIndeterminate .dijitProgressBarTile {
+       
+       background:#cad2de url(images/progressBarAnim.gif) repeat-x center center;
+}
+.tundra .dijitTitlePaneTitle {
+       background: #cccccc;
+       background:#fff url(images/titleBar.png) repeat-x bottom left;
+       border:1px solid #bfbfbf;
+       padding:3px 4px;
+}
+.tundra .dijitTitlePaneTitleHover  {
+       background: #f8fafd url(images/accordionItemHover.gif) bottom repeat-x;
+}
+.tundra .dijitTitlePane .dijitArrowNode {
+       background-image: url(images/spriteArrows.png);
+       background-repeat: no-repeat;
+       background-position: 0px 0px;
+       height: 7px;
+       width: 7px;
+}
+.dj_ie6 .tundra .dijitTitlePane .dijitArrowNode {
+       background-image: url(images/spriteArrows.gif);
+}
+.tundra .dijitTitlePane .dijitClosed .dijitArrowNode {
+       background-position: -14px 0px;
+}
+.tundra .dijitTitlePaneContentOuter {
+       background: #ffffff;
+       border:1px solid #bfbfbf;
+       border-top: 0px;
+}
+.tundra .dijitTitlePaneContentInner {
+       padding:10px;
+}
+.tundra .dijitTitlePaneTextNode {
+       margin-left: 4px;
+       margin-right: 4px;
+}
+.tundra .dijitCalendarIncrementControl {
+       
+       width:15px;
+       height:15px;
+       background-image: url(images/spriteRoundedIconsSmall.png);
+       background-repeat: no-repeat
+}
+.dj_ie6 .tundra .dijitCalendarIncrementControl {
+       font-size:.1em;
+       background-image: url(images/spriteRoundedIconsSmall.gif);
+}
+.tundra .dijitA11ySideArrow {
+       display: none;
+}
+.tundra .dijitCalendarDecrease {
+       background-position: top left;
+}
+.tundra .dijitCalendarIncrease {
+       background-position: -30px top;
+}
+.tundra .dijitCalendarContainer {
+       font-size: 100%;
+       border-spacing: 0;
+       border-collapse: separate;
+       border: 1px solid #ccc;
+       margin: 0;
+}
+.tundra .dijitCalendarMonthContainer th {
+       
+       background:#d3d3d3 url(images/titleBar.png) repeat-x top;
+       padding-top:.3em;
+       padding-bottom:.2em;
+       text-align:center;
+}
+.dj_ie6 .tundra .dijitCalendarMonthContainer th {
+       padding-top:.2em;
+       padding-bottom:.1em;
+}
+.tundra .dijitCalendarDayLabelTemplate {
+       
+       background:white url(images/calendarDayLabel.png) repeat-x bottom;
+       font-weight:normal;
+       padding-top:.15em;
+       padding-bottom:0em;
+       border-top: 1px solid #eeeeee;
+       color:#293a4b;
+       text-align:center;
+}
+.tundra .dijitCalendarBodyContainer {
+       border-bottom: 1px solid #eeeeee;
+}
+.tundra .dijitCalendarMonthLabel {
+       color:#293a4b;
+       font-weight: bold;
+}
+.tundra .dijitCalendarDateTemplate {
+       
+       font-size: 0.9em;
+       font-weight: bold;
+       text-align: center;
+       padding: 0.3em 0.3em 0.05em 0.3em;
+       letter-spacing: 1px;
+}
+.dj_ie .tundra .dijitCalendarDateTemplate {
+       padding: 0.1em .33em 0.02em .33em;
+}
+.tundra .dijitCalendarPreviousMonth,
+.tundra .dijitCalendarNextMonth                {
+       
+       color:#999999;
+       background-color:#f8f8f8;
+}
+.tundra .dijitCalendarCurrentMonth {
+       
+       background-color: white;
+}
+.tundra .dijitCalendarCurrentDate {
+       
+       text-decoration:underline;
+       font-weight:bold;
+}
+.tundra .dijitCalendarHoveredDate {
+       background-color: #e2ebf2;
+}
+.tundra .dijitCalendarDisabledDate {
+       text-decoration: line-through;
+       background-color: white;        
+}
+.tundra .dijitCalendarSelectedDate {
+       
+       background-color:#bbc4d0 !important;
+       color:black !important;
+}
+.tundra .dijitCalendarYearContainer {
+       
+       background:white url(images/calendarYearLabel.png) repeat-x bottom;
+       border-top:1px solid #ccc;
+}
+.tundra .dijitCalendarYearLabel {
+       
+       margin:0;
+       padding:0.4em 0 0.25em 0;
+       text-align:center;
+}
+.tundra .dijitCalendarSelectedYear {
+       
+       color:black;
+       padding:0.2em;
+       padding-bottom:0.1em;
+       background-color:#bbc4d0 !important;
+}
+.tundra .dijitCalendarNextYear,
+.tundra .dijitCalendarPreviousYear {
+       
+       color:black !important;
+       font-weight:normal;
+}
+.tundra .dijitTimePickerTick,
+.tundra .dijitTimePickerMarker {
+       border-color: #ccc;
+}
+.tundra .dijitTimePickerTick {
+       color:white;
+}
+.tundra .dijitTimePickerMarker {
+       background:#d3d3d3 url(images/titleBar.png) repeat-x top;
+       color:#293a4b;
+       font-weight: bold;
+}
+.tundra .dijitTimePickerItemSelected {
+       color: black;
+       background: #bbc4d0 none;
+}
+.tundra .dijitTimePickerItemHover {
+       background: #60a1ea none;
+       color:white;
+}
+.tundra .dijitTimePickerItemHover,
+.tundra .dijitTimePickerItemSelected {
+       position: relative;
+       z-index: 10;
+}
+.tundra .dijitTimePickerTick .dijitTimePickerItemInner {
+       font-size:0.4em;
+}
+.tundra .dijitTimePickerItemHover .dijitTimePickerItemInner,
+.tundra .dijitTimePickerItemSelected .dijitTimePickerItemInner {
+       font-size:1em;
+}
+.tundra .dijitTimePickerMarkerHover {
+       border-top: 1px solid #ccc;
+}
+.tundra .dijitTimePickerTickHover,
+.tundra .dijitTimePickerTickSelected {
+       margin-top:-0.3em;
+       margin-bottom:-0.3em;
+       border-bottom: none;
+}
+.tundra .dijitToolbar {
+       border-bottom: 1px solid #ccc;
+       background:#eaeaea url(images/titleBar.png) repeat-x top left;
+}
+.dj_ie6 .tundra .dijitToolbar {
+       height: 10px;
+}
+.tundra .dijitToolbar .dijitButtonNode,
+.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,
+.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton {
+       background: none;
+       margin: 0px;
+       padding: 0px;
+       border: none;
+       font-size: 12px;
+}
+.tundra .dijitToolbar .dijitButton,
+.tundra .dijitToolbar .dijitToggleButton,
+.tundra .dijitToolbar .dijitDropDownButton,
+.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,
+.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton  {
+       background: none;
+       padding: 1px;
+}
+.tundra .dijitToolbar .dijitButtonChecked,
+.tundra .dijitToolbar .dijitToggleButtonChecked {
+       background-color:#d4dff2;
+       border:1px solid #316ac5;
+       padding: 0px;   
+}
+.tundra .dijitToolbar .dijitButtonCheckedHover,
+.tundra .dijitToolbar .dijitToggleButtonCheckedHover
+ {
+       background-color:#abc1e5;
+       border:1px solid #316ac5;
+       padding: 0px;   
+}
+.tundra .dijitToolbar .dijitButtonHover,
+.tundra .dijitToolbar .dijitToggleButtonHover,
+.tundra .dijitToolbar .dijitDropDownButtonHover,
+.tundra .dijitToolbar .dijitComboButton .dijitButtonContentsHover,
+.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {
+       
+       border: 1px solid #869cbf;
+       padding: 0px;   
+       background-color:#e1e5f0;
+}
+.tundra .dijitToolbar label {
+       padding: 3px 3px 0 6px;
+}
+.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,
+.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {
+       
+       border: 1px #555 dotted !important;
+       padding: 0px;
+}
+.tundra .dijitToolbarSeparator {
+       
+       background: url(../../icons/images/editorIconsEnabled.png);
+}
+.tundra .dijitToolbarRtl .dijitToolbarSeparator {
+       
+       background-image: url(../../icons/images/editorIconsDisabled.png);
+}
+.tundra .dijitDialog {
+       background: #fff;
+       border: 1px solid #7eabcd;
+       padding: 0px;
+       -webkit-box-shadow: 0px 5px 10px #adadad;
+}
+.tundra .dijitDialogPaneContent {
+       background: #fff;
+       border-top: 1px solid #d3d3d3;
+       padding:10px;
+}
+.tundra .dijitDialogTitleBar {
+       
+       background: #fafafa url(images/titleBar.png) repeat-x top left;
+       padding: 5px 6px 3px 6px;
+       outline:0; 
+}
+.tundra .dijitDialogTitle {
+       
+       font-weight: bold;
+       padding: 0px 4px;
+}
+.tundra .dijitDialogCloseIcon {
+       
+       
+       background: url(images/tabClose.png) no-repeat right top;
+       position: absolute;
+       vertical-align: middle;
+       right: 6px;
+       top: 4px;
+       height: 15px;
+       width: 15px;
+}
+.dj_ie6 .tundra .dijitDialogCloseIcon {
+       background : url(images/tabClose.gif) no-repeat right top;
+}
+.tundra .dijitDialogCloseIconHover {
+       background: url(images/tabCloseHover.png) no-repeat right top;
+}
+.dj_ie6 .tundra .dijitDialogCloseIconHover {
+       background : url(images/tabCloseHover.gif) no-repeat right top;
+}
+.tundra .dijitTooltip,
+.tundra .dijitTooltipDialog {
+       
+       background: transparent;        
+}
+.dijitTooltipBelow {
+       
+       padding-top: 13px;
+}
+.dijitTooltipAbove {
+       
+       padding-bottom: 13px;
+}
+.tundra .dijitTooltipContainer {
+       
+       background: #ffffff url(images/popupMenuBg.gif) repeat-x bottom left;
+       border: 1px solid #7eabcd;
+       padding: 0.45em;
+       -webkit-border-radius: 3px;
+       -moz-border-radius: 3px;
+}
+.tundra .dijitTooltipConnector {
+       
+       border:0px;
+       z-index: 2;
+}
+.tundra .dijitTooltipABRight .dijitTooltipConnector {
+       
+       left: auto !important;
+       right: 3px;
+}
+.tundra .dijitTooltipBelow .dijitTooltipConnector {
+       
+       top: 0px;
+       left: 3px;
+       background:url(images/tooltipConnectorUp.png) no-repeat top left;
+       width:16px;
+       height:14px;
+}
+.dj_ie .tundra .dijitTooltipBelow .dijitTooltipConnector {
+       
+       background-image: url(images/tooltipConnectorUp.gif);
+}
+.tundra .dijitTooltipAbove .dijitTooltipConnector {
+       
+       bottom: 0px;
+       left: 3px;
+       background:url(images/tooltipConnectorDown.png) no-repeat top left;
+       width:16px;
+       height:14px;
+}
+.dj_ie .tundra .dijitTooltipAbove .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorDown.gif);
+}
+.dj_ie6 .tundra .dijitTooltipAbove .dijitTooltipConnector {
+       bottom: -3px;
+}
+.tundra .dijitTooltipLeft {
+       padding-right: 14px;
+}
+.dj_ie6 .tundra .dijitTooltipLeft {
+       padding-left: 15px;
+}
+.tundra .dijitTooltipLeft .dijitTooltipConnector {
+       
+       right: 0px;
+       bottom: 3px;
+       background:url(images/tooltipConnectorRight.png) no-repeat top left;
+       width:16px;
+       height:14px;
+}
+.dj_ie .tundra .dijitTooltipLeft .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorRight.gif);
+}
+.tundra .dijitTooltipRight {
+       padding-left: 14px;
+}
+.tundra .dijitTooltipRight .dijitTooltipConnector {
+       
+       left: 0px;
+       bottom: 3px;
+       background:url(images/tooltipConnectorLeft.png) no-repeat top left;
+       width:16px;
+       height:14px;
+}
+.dj_ie .tundra .dijitTooltipRight .dijitTooltipConnector {
+       background-image: url(images/tooltipConnectorLeft.gif);
+}
+.dj_webkit .tundra .dijitTooltipContainer {
+       -webkit-box-shadow: 0px 5px 10px #adadad;
+}
+.tundra .dijitMenu,
+.tundra .dijitMenuBar {
+       border: 1px solid #7eabcd;
+       margin: 0px;
+       padding: 0px;
+       background-color: #f7f7f7;
+}
+.tundra .dijitBorderContainer .dijitMenuBar {
+       border:1px solid #ccc;
+}
+.tundra .dijitMenuItem {
+       font-family: sans-serif;
+       margin: 0;
+}
+.tundra .dijitMenuItem {
+       padding: 4px 5px;
+}
+.tundra .dijitMenuPreviousButton, .tundra .dijitMenuNextButton {
+       font-style: italic;
+}
+.tundra .dijitMenuItem td {
+       padding: 2px;
+}
+.tundra .dijitMenuPassive .dijitMenuItemHover,
+.tundra .dijitMenuItemSelected {
+       background-color: #3559ac;
+       color:#fff;
+}
+.tundra .dijitMenuItemIcon {
+       width: 16px;
+       height: 16px;
+}
+.tundra .dijitMenuExpand {
+       
+       width: 7px;
+       height: 7px;
+       background-image: url(images/spriteArrows.png);
+       background-position: -14px 0px;
+}
+.dj_ie6 .tundra .dijitMenuExpand {
+       background-image: url(images/spriteArrows.gif);
+}
+.tundra .dijitMenuSeparatorTop {
+       border-bottom: 1px solid #9b9b9b;
+}
+.tundra .dijitMenuSeparatorBottom {
+       border-top: 1px solid #e8e8e8;
+}
+.tundra .dijitCheckedMenuItemIconChar {
+       display: none;
+}
+.tundra .dijitCheckedMenuItemIcon {
+       background-image: url(images/checkmark.png);
+       background-position: -80px;
+}
+.dj_ie6 .tundra .dijitCheckedMenuItemIcon {
+       background-image: url(images/checkmark.gif);
+}
+.tundra .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {
+       background-position: -64px;
+}
+.dijitEditor {
+       border:1px solid #bfbfbf;
+       border-top:0;
+}
+.tundra .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled.png); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.tundra .dijitDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled.png); 
+}
+.dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled.png); 
+       background-repeat: no-repeat;
+       width: 18px;
+       height: 18px;
+       text-align: center;
+}
+.dijitDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled.png); 
+}
+.dijitEditorIconSep { background-position: 0px; }
+.dijitEditorIconSave { background-position: -18px; }
+.dijitEditorIconPrint { background-position: -36px; }
+.dijitEditorIconCut { background-position: -54px; }
+.dijitEditorIconCopy { background-position: -72px; }
+.dijitEditorIconPaste { background-position: -90px; }
+.dijitEditorIconDelete { background-position: -108px; }
+.dijitEditorIconCancel { background-position: -126px; }
+.dijitEditorIconUndo { background-position: -144px; }
+.dijitEditorIconRedo { background-position: -162px; }
+.dijitEditorIconSelectAll { background-position: -180px; }
+.dijitEditorIconBold { background-position: -198px; }
+.dijitEditorIconItalic { background-position: -216px; }
+.dijitEditorIconUnderline { background-position: -234px; }
+.dijitEditorIconStrikethrough { background-position: -252px; }
+.dijitEditorIconSuperscript { background-position: -270px; }
+.dijitEditorIconSubscript { background-position: -288px; }
+.dijitEditorIconJustifyCenter { background-position: -306px; }
+.dijitEditorIconJustifyFull { background-position: -324px; }
+.dijitEditorIconJustifyLeft { background-position: -342px; }
+.dijitEditorIconJustifyRight { background-position: -360px; }
+.dijitEditorIconIndent { background-position: -378px; }
+.dijitEditorIconOutdent { background-position: -396px; }
+.dijitEditorIconListBulletIndent { background-position: -414px; }
+.dijitEditorIconListBulletOutdent { background-position: -432px; }
+.dijitEditorIconListNumIndent { background-position: -450px; }
+.dijitEditorIconListNumOutdent { background-position: -468px; }
+.dijitEditorIconTabIndent { background-position: -486px; }
+.dijitEditorIconLeftToRight { background-position: -504px; }
+.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir { background-position: -522px; }
+.dijitEditorIconBackColor { background-position: -540px; }
+.dijitEditorIconForeColor { background-position: -558px; }
+.dijitEditorIconHiliteColor { background-position: -576px; }
+.dijitEditorIconNewPage { background-position: -594px; }
+.dijitEditorIconInsertImage { background-position: -612px; }
+.dijitEditorIconInsertTable { background-position: -630px; }
+.dijitEditorIconSpace { background-position: -648px; }
+.dijitEditorIconInsertHorizontalRule { background-position: -666px; }
+.dijitEditorIconInsertOrderedList { background-position: -684px; }
+.dijitEditorIconInsertUnorderedList { background-position: -702px; }
+.dijitEditorIconCreateLink { background-position: -720px; }
+.dijitEditorIconUnlink { background-position: -738px; }
+.dijitEditorIconViewSource { background-position: -756px; }
+.dijitEditorIconRemoveFormat { background-position: -774px; }
+.dijitEditorIconFullScreen { background-position: -792px; }
+.dijitEditorIconWikiword { background-position: -810px; }
+.dijitColorPalette {
+       border:1px solid #7eabcd;
+       background:#fff;
+       -moz-border-radius: 0px !important;
+}
+.dijitRtl .dijitPlaceHolder {
+       left: auto;
+       right: 0;
+}
+.dijitMenuItemRtl {
+       text-align: right;
+}
+.dj_iequirks .dijitComboButtonRtl BUTTON {
+       
+       float:left;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitComboBoxRtl .dijitArrowButtonContainer {
+       
+       border-right-width: 1px !important;
+       border-right-style: solid !important;
+       border-left-width: 0px !important;
+       border-left-style: none !important;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijit_a11y .dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBoxRtl .dijitArrowButtonContainer {
+       border-right: 1px solid black !important;
+       border-left: 0px none black !important;
+}
+.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {
+       right: 0;
+       left: auto;
+}
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitArrowButtonContainer {
+       float: left;
+}
+.dijitCalendarRtl .dijitCalendarNextYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarRtl .dijitCalendarPreviousYear {
+       margin:0 0 0 0.55em;
+}
+.dijitSliderRtl .dijitSliderImageHandleV {
+       left:auto;
+}
+.dijitSliderRtl .dijitSliderImageHandleH {
+       left:-50%;
+}
+.dijitSliderRtl .dijitSliderMoveableH {
+       right:auto;
+       left:0;
+}
+.dijitSliderRtl .dijitRuleContainerV {
+       float:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleContainerV {
+       text-align:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelV {
+       text-align:left;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelH {
+       zoom:1;
+}
+.dijitSliderRtl .dijitSliderProgressBarH {
+       
+       float:right;
+       right:0;
+       left:auto;
+}
+.dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError {
+       background-position:right;
+       padding-right:25px;
+}
+.dijitTabRtl .dijitTabCloseButton {
+       margin-left: 0px;
+       margin-right: 1em;
+}
+.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {
+       width:100%;
+}
+.dijitColorPaletteRtl .dijitColorPaletteUnder {
+       
+       left: auto;
+       right: 0;
+}
+.dijitSelectRtl .dijitButtonContents {
+       text-align: right;
+}
+.tundra .dijitCalendarRtl .dijitCalendarDecrease {
+       background-position: -30px top;
+}
+.tundra .dijitCalendarRtl .dijitCalendarIncrease {
+       background-position: 0px top;
+}
+ .dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover,
+.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover {
+        border-top: 0px; 
+}
+.tundra .dijitDialogRtl .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
+.tundra .dijitEditorRtl .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.tundra .dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitEditorRtl .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitToolbarRtl .dijitToolbarSeparator {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png);
+}
+.tundra .dijitMenuItemRtl .dijitMenuExpand {
+       background-position: -7px 0px;
+}
+.tundra .dijitTreeNodeRtl,
+.tundra .dijitTreeNodeRtl .dijitTreeExpandoLeaf {
+       
+    background-image: none;
+}
+.tundra .dijitTreeNodeRtl .dijitTreeExpandoOpened {
+       
+       background-image: url(images/treeExpand_minus_rtl.gif);
+}
+.tundra .dijitTreeNodeRtl .dijitTreeExpandoClosed {
+       background-image: url(images/treeExpand_plus_rtl.gif);
+}
+.tundra .dijitTitlePaneRtl .dijitClosed .dijitArrowNode {
+       background-position: -7px 0px;
+}
+.tundra .dijitTabRtl {
+       -moz-box-orient:horizontal;
+       text-align: right;
+}
+.tundra .dijitTabRtl .dijitTabInnerDiv {
+       padding:2px 9px 2px 8px;
+}
+.tundra .tabStrip-disabled .tabStripButtonRtl .dijitTabInnerDiv {
+       
+       padding-bottom: 3px;
+       padding-top: 1px;
+}
+.tundra .tabStripButtonRtl .dijitTabInnerDiv {
+       padding: 3px 2px 4px 2px;
+}
+.tundra .dijitTabPaneWrapper {
+       #zoom: 1;
+}
+.dj_ie-rtl .tundra .dijitTabContainerLeft-tabs {
+       margin-left: 1px !important;
+}
+.dj_ie-rtl .tundra .dijitTabContainerRight-tabs {
+       margin-right: 1px !important;
+}
+.tundra .dijitTabContainerLeft-tabs .dijitTabRtl,
+.tundra .dijitTabContainerRight-tabs .dijitTabRtl {
+       margin-left:0px;
+}
+.dj_ie .tundra .dijitTabRtl .dijitTabInnerDiv {
+       
+       width : 0.1% !important;
+}
+.dj_iequirks-rtl .tundra .dijitTabContainerTopNone,
+.dj_iequirks-rtl .tundra .dijitTabContainerBottomNone {
+       
+       border-left: 1px solid #fff;
+       border-right: 1px solid #fff;
+}
+.tundra .dijitSliderRtl .dijitSliderProgressBarH,
+.tundra .dijitSliderRtl .dijitSliderRemainingBarH,
+.tundra .dijitSliderRtl .dijitSliderLeftBumper,
+.tundra .dijitSliderRtl .dijitSliderRightBumper,
+.tundra .dijitSliderRtl .dijitSliderTopBumper {
+       background-position: top right;
+}
+.tundra .dijitSliderRtl .dijitSliderProgressBarV,
+.tundra .dijitSliderRtl .dijitSliderRemainingBarV,
+.tundra .dijitSliderRtl .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.tundra .dijitSliderRtl .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.tundra .dijitSliderRtl .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.tundra .dijitSliderRtl .dijitSliderIncrementIconH {
+       background-position: -7px 0px;
+}
+.tundra .dijitSliderRtl .dijitSliderDecrementIconH {
+       background-position: -14px 0px;
+}
diff --git a/lib/dijit/themes/tundra/tundra_rtl.css b/lib/dijit/themes/tundra/tundra_rtl.css
new file mode 100644 (file)
index 0000000..0ec76de
--- /dev/null
@@ -0,0 +1,200 @@
+
+.dijitRtl .dijitPlaceHolder {
+       left: auto;
+       right: 0;
+}
+.dijitMenuItemRtl {
+       text-align: right;
+}
+.dj_iequirks .dijitComboButtonRtl BUTTON {
+       
+       float:left;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitComboBoxRtl .dijitArrowButtonContainer {
+       
+       border-right-width: 1px !important;
+       border-right-style: solid !important;
+       border-left-width: 0px !important;
+       border-left-style: none !important;
+}
+.dijit_a11y .dijitTextBoxRtl .dijitValidationContainer,
+.dijit_a11y .dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijit_a11y .dijitComboBoxRtl .dijitArrowButtonContainer {
+       border-right: 1px solid black !important;
+       border-left: 0px none black !important;
+}
+.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {
+       right: 0;
+       left: auto;
+}
+.dijitTextBoxRtl .dijitSpinnerButtonContainer,
+.dijitTextBoxRtl .dijitValidationContainer,
+.dijitTextBoxRtl .dijitArrowButtonContainer {
+       float: left;
+}
+.dijitCalendarRtl .dijitCalendarNextYear {
+       margin:0 0.55em 0 0;
+}
+.dijitCalendarRtl .dijitCalendarPreviousYear {
+       margin:0 0 0 0.55em;
+}
+.dijitSliderRtl .dijitSliderImageHandleV {
+       left:auto;
+}
+.dijitSliderRtl .dijitSliderImageHandleH {
+       left:-50%;
+}
+.dijitSliderRtl .dijitSliderMoveableH {
+       right:auto;
+       left:0;
+}
+.dijitSliderRtl .dijitRuleContainerV {
+       float:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleContainerV {
+       text-align:right;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelV {
+       text-align:left;
+}
+.dj_ie .dijitSliderRtl .dijitRuleLabelH {
+       zoom:1;
+}
+.dijitSliderRtl .dijitSliderProgressBarH {
+       
+       float:right;
+       right:0;
+       left:auto;
+}
+.dijitRtl .dijitContentPaneLoading, .dijitRtl .dijitContentPaneError {
+       background-position:right;
+       padding-right:25px;
+}
+.dijitTabRtl .dijitTabCloseButton {
+       margin-left: 0px;
+       margin-right: 1em;
+}
+.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {
+       width:100%;
+}
+.dijitColorPaletteRtl .dijitColorPaletteUnder {
+       
+       left: auto;
+       right: 0;
+}
+.dijitSelectRtl .dijitButtonContents {
+       text-align: right;
+}
+.tundra .dijitCalendarRtl .dijitCalendarDecrease {
+       background-position: -30px top;
+}
+.tundra .dijitCalendarRtl .dijitCalendarIncrease {
+       background-position: 0px top;
+}
+ .dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover,
+.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover {
+        border-top: 0px; 
+}
+.tundra .dijitDialogRtl .dijitDialogCloseIcon {
+       right: auto;
+       left: 5px;
+}
+.tundra .dijitEditorRtl .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.tundra .dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitEditorRtl .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png); 
+}
+.dijitEditorRtlDisabled .dijitEditorIcon {
+       background-image: url(../../icons/images/editorIconsDisabled_rtl.png); 
+}
+.dijitToolbarRtl .dijitToolbarSeparator {
+       background-image: url(../../icons/images/editorIconsEnabled_rtl.png);
+}
+.tundra .dijitMenuItemRtl .dijitMenuExpand {
+       background-position: -7px 0px;
+}
+.tundra .dijitTreeNodeRtl,
+.tundra .dijitTreeNodeRtl .dijitTreeExpandoLeaf {
+       
+    background-image: none;
+}
+.tundra .dijitTreeNodeRtl .dijitTreeExpandoOpened {
+       
+       background-image: url(images/treeExpand_minus_rtl.gif);
+}
+.tundra .dijitTreeNodeRtl .dijitTreeExpandoClosed {
+       background-image: url(images/treeExpand_plus_rtl.gif);
+}
+.tundra .dijitTitlePaneRtl .dijitClosed .dijitArrowNode {
+       background-position: -7px 0px;
+}
+.tundra .dijitTabRtl {
+       -moz-box-orient:horizontal;
+       text-align: right;
+}
+.tundra .dijitTabRtl .dijitTabInnerDiv {
+       padding:2px 9px 2px 8px;
+}
+.tundra .tabStrip-disabled .tabStripButtonRtl .dijitTabInnerDiv {
+       
+       padding-bottom: 3px;
+       padding-top: 1px;
+}
+.tundra .tabStripButtonRtl .dijitTabInnerDiv {
+       padding: 3px 2px 4px 2px;
+}
+.tundra .dijitTabPaneWrapper {
+       #zoom: 1;
+}
+.dj_ie-rtl .tundra .dijitTabContainerLeft-tabs {
+       margin-left: 1px !important;
+}
+.dj_ie-rtl .tundra .dijitTabContainerRight-tabs {
+       margin-right: 1px !important;
+}
+.tundra .dijitTabContainerLeft-tabs .dijitTabRtl,
+.tundra .dijitTabContainerRight-tabs .dijitTabRtl {
+       margin-left:0px;
+}
+.dj_ie .tundra .dijitTabRtl .dijitTabInnerDiv {
+       
+       width : 0.1% !important;
+}
+.dj_iequirks-rtl .tundra .dijitTabContainerTopNone,
+.dj_iequirks-rtl .tundra .dijitTabContainerBottomNone {
+       
+       border-left: 1px solid #fff;
+       border-right: 1px solid #fff;
+}
+.tundra .dijitSliderRtl .dijitSliderProgressBarH,
+.tundra .dijitSliderRtl .dijitSliderRemainingBarH,
+.tundra .dijitSliderRtl .dijitSliderLeftBumper,
+.tundra .dijitSliderRtl .dijitSliderRightBumper,
+.tundra .dijitSliderRtl .dijitSliderTopBumper {
+       background-position: top right;
+}
+.tundra .dijitSliderRtl .dijitSliderProgressBarV,
+.tundra .dijitSliderRtl .dijitSliderRemainingBarV,
+.tundra .dijitSliderRtl .dijitSliderBottomBumper {
+       background-position: bottom right;
+}
+.tundra .dijitSliderRtl .dijitSliderLeftBumper {
+       border-left-width: 0px;
+       border-right-width: 1px;
+}
+.tundra .dijitSliderRtl .dijitSliderRightBumper {
+       border-left-width: 1px;
+       border-right-width: 0px;
+}
+.tundra .dijitSliderRtl .dijitSliderIncrementIconH {
+       background-position: -7px 0px;
+}
+.tundra .dijitSliderRtl .dijitSliderDecrementIconH {
+       background-position: -14px 0px;
+}
diff --git a/lib/dijit/tree/ForestStoreModel.js b/lib/dijit/tree/ForestStoreModel.js
new file mode 100644 (file)
index 0000000..aa51b00
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.tree.ForestStoreModel"]){
+dojo._hasResource["dijit.tree.ForestStoreModel"]=true;
+dojo.provide("dijit.tree.ForestStoreModel");
+dojo.require("dijit.tree.TreeStoreModel");
+dojo.declare("dijit.tree.ForestStoreModel",dijit.tree.TreeStoreModel,{rootId:"$root$",rootLabel:"ROOT",query:null,constructor:function(_1){
+this.root={store:this,root:true,id:_1.rootId,label:_1.rootLabel,children:_1.rootChildren};
+},mayHaveChildren:function(_2){
+return _2===this.root||this.inherited(arguments);
+},getChildren:function(_3,_4,_5){
+if(_3===this.root){
+if(this.root.children){
+_4(this.root.children);
+}else{
+this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_6){
+this.root.children=_6;
+_4(_6);
+}),onError:_5});
+}
+}else{
+this.inherited(arguments);
+}
+},isItem:function(_7){
+return (_7===this.root)?true:this.inherited(arguments);
+},fetchItemByIdentity:function(_8){
+if(_8.identity==this.root.id){
+var _9=_8.scope?_8.scope:dojo.global;
+if(_8.onItem){
+_8.onItem.call(_9,this.root);
+}
+}else{
+this.inherited(arguments);
+}
+},getIdentity:function(_a){
+return (_a===this.root)?this.root.id:this.inherited(arguments);
+},getLabel:function(_b){
+return (_b===this.root)?this.root.label:this.inherited(arguments);
+},newItem:function(_c,_d,_e){
+if(_d===this.root){
+this.onNewRootItem(_c);
+return this.store.newItem(_c);
+}else{
+return this.inherited(arguments);
+}
+},onNewRootItem:function(_f){
+},pasteItem:function(_10,_11,_12,_13,_14){
+if(_11===this.root){
+if(!_13){
+this.onLeaveRoot(_10);
+}
+}
+dijit.tree.TreeStoreModel.prototype.pasteItem.call(this,_10,_11===this.root?null:_11,_12===this.root?null:_12,_13,_14);
+if(_12===this.root){
+this.onAddToRoot(_10);
+}
+},onAddToRoot:function(_15){
+},onLeaveRoot:function(_16){
+},_requeryTop:function(){
+var _17=this.root.children||[];
+this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_18){
+this.root.children=_18;
+if(_17.length!=_18.length||dojo.some(_17,function(_19,idx){
+return _18[idx]!=_19;
+})){
+this.onChildrenChange(this.root,_18);
+}
+})});
+},onNewItem:function(_1a,_1b){
+this._requeryTop();
+this.inherited(arguments);
+},onDeleteItem:function(_1c){
+if(dojo.indexOf(this.root.children,_1c)!=-1){
+this._requeryTop();
+}
+this.inherited(arguments);
+}});
+}
diff --git a/lib/dijit/tree/TreeStoreModel.js b/lib/dijit/tree/TreeStoreModel.js
new file mode 100644 (file)
index 0000000..c03bef5
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+       Copyright (c) 2004-2010, 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["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(_1){
+dojo.mixin(this,_1);
+this.connects=[];
+var _2=this.store;
+if(!_2.getFeatures()["dojo.data.api.Identity"]){
+throw new Error("dijit.Tree: store must support dojo.data.Identity");
+}
+if(_2.getFeatures()["dojo.data.api.Notification"]){
+this.connects=this.connects.concat([dojo.connect(_2,"onNew",this,"onNewItem"),dojo.connect(_2,"onDelete",this,"onDeleteItem"),dojo.connect(_2,"onSet",this,"onSetItem")]);
+}
+},destroy:function(){
+dojo.forEach(this.connects,dojo.disconnect);
+},getRoot:function(_3,_4){
+if(this.root){
+_3(this.root);
+}else{
+this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_5){
+if(_5.length!=1){
+throw new Error(this.declaredClass+": query "+dojo.toJson(this.query)+" returned "+_5.length+" items, but must return exactly one item");
+}
+this.root=_5[0];
+_3(this.root);
+}),onError:_4});
+}
+},mayHaveChildren:function(_6){
+return dojo.some(this.childrenAttrs,function(_7){
+return this.store.hasAttribute(_6,_7);
+},this);
+},getChildren:function(_8,_9,_a){
+var _b=this.store;
+if(!_b.isItemLoaded(_8)){
+var _c=dojo.hitch(this,arguments.callee);
+_b.loadItem({item:_8,onItem:function(_d){
+_c(_d,_9,_a);
+},onError:_a});
+return;
+}
+var _e=[];
+for(var i=0;i<this.childrenAttrs.length;i++){
+var _f=_b.getValues(_8,this.childrenAttrs[i]);
+_e=_e.concat(_f);
+}
+var _10=0;
+if(!this.deferItemLoadingUntilExpand){
+dojo.forEach(_e,function(_11){
+if(!_b.isItemLoaded(_11)){
+_10++;
+}
+});
+}
+if(_10==0){
+_9(_e);
+}else{
+dojo.forEach(_e,function(_12,idx){
+if(!_b.isItemLoaded(_12)){
+_b.loadItem({item:_12,onItem:function(_13){
+_e[idx]=_13;
+if(--_10==0){
+_9(_e);
+}
+},onError:_a});
+}
+});
+}
+},isItem:function(_14){
+return this.store.isItem(_14);
+},fetchItemByIdentity:function(_15){
+this.store.fetchItemByIdentity(_15);
+},getIdentity:function(_16){
+return this.store.getIdentity(_16);
+},getLabel:function(_17){
+if(this.labelAttr){
+return this.store.getValue(_17,this.labelAttr);
+}else{
+return this.store.getLabel(_17);
+}
+},newItem:function(_18,_19,_1a){
+var _1b={parent:_19,attribute:this.childrenAttrs[0],insertIndex:_1a};
+if(this.newItemIdAttr&&_18[this.newItemIdAttr]){
+this.fetchItemByIdentity({identity:_18[this.newItemIdAttr],scope:this,onItem:function(_1c){
+if(_1c){
+this.pasteItem(_1c,null,_19,true,_1a);
+}else{
+this.store.newItem(_18,_1b);
+}
+}});
+}else{
+this.store.newItem(_18,_1b);
+}
+},pasteItem:function(_1d,_1e,_1f,_20,_21){
+var _22=this.store,_23=this.childrenAttrs[0];
+if(_1e){
+dojo.forEach(this.childrenAttrs,function(_24){
+if(_22.containsValue(_1e,_24,_1d)){
+if(!_20){
+var _25=dojo.filter(_22.getValues(_1e,_24),function(x){
+return x!=_1d;
+});
+_22.setValues(_1e,_24,_25);
+}
+_23=_24;
+}
+});
+}
+if(_1f){
+if(typeof _21=="number"){
+var _26=_22.getValues(_1f,_23).slice();
+_26.splice(_21,0,_1d);
+_22.setValues(_1f,_23,_26);
+}else{
+_22.setValues(_1f,_23,_22.getValues(_1f,_23).concat(_1d));
+}
+}
+},onChange:function(_27){
+},onChildrenChange:function(_28,_29){
+},onDelete:function(_2a,_2b){
+},onNewItem:function(_2c,_2d){
+if(!_2d){
+return;
+}
+this.getChildren(_2d.item,dojo.hitch(this,function(_2e){
+this.onChildrenChange(_2d.item,_2e);
+}));
+},onDeleteItem:function(_2f){
+this.onDelete(_2f);
+},onSetItem:function(_30,_31,_32,_33){
+if(dojo.indexOf(this.childrenAttrs,_31)!=-1){
+this.getChildren(_30,dojo.hitch(this,function(_34){
+this.onChildrenChange(_30,_34);
+}));
+}else{
+this.onChange(_30);
+}
+}});
+}
diff --git a/lib/dijit/tree/_dndContainer.js b/lib/dijit/tree/_dndContainer.js
new file mode 100644 (file)
index 0000000..e925283
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.tree._dndContainer"]){
+dojo._hasResource["dijit.tree._dndContainer"]=true;
+dojo.provide("dijit.tree._dndContainer");
+dojo.require("dojo.dnd.common");
+dojo.require("dojo.dnd.Container");
+dojo.declare("dijit.tree._dndContainer",null,{constructor:function(_1,_2){
+this.tree=_1;
+this.node=_1.domNode;
+dojo.mixin(this,_2);
+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(_3){
+var _4=this.selection[_3],_5={data:dijit.getEnclosingWidget(_4),type:["treeNode"]};
+return _5;
+},destroy:function(){
+dojo.forEach(this.events,dojo.disconnect);
+this.node=this.parent=null;
+},onMouseOver:function(_6,_7){
+this.current=_6.rowNode;
+this.currentWidget=_6;
+},onMouseOut:function(_8,_9){
+this.current=null;
+this.currentWidget=null;
+},_changeState:function(_a,_b){
+var _c="dojoDnd"+_a;
+var _d=_a.toLowerCase()+"State";
+dojo.removeClass(this.node,_c+this[_d]);
+dojo.addClass(this.node,_c+_b);
+this[_d]=_b;
+},_addItemClass:function(_e,_f){
+dojo.addClass(_e,"dojoDndItem"+_f);
+},_removeItemClass:function(_10,_11){
+dojo.removeClass(_10,"dojoDndItem"+_11);
+},onOverEvent:function(){
+this._changeState("Container","Over");
+},onOutEvent:function(){
+this._changeState("Container","");
+}});
+}
diff --git a/lib/dijit/tree/_dndSelector.js b/lib/dijit/tree/_dndSelector.js
new file mode 100644 (file)
index 0000000..3d77955
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.tree._dndSelector"]){
+dojo._hasResource["dijit.tree._dndSelector"]=true;
+dojo.provide("dijit.tree._dndSelector");
+dojo.require("dojo.dnd.common");
+dojo.require("dijit.tree._dndContainer");
+dojo.declare("dijit.tree._dndSelector",dijit.tree._dndContainer,{constructor:function(_1,_2){
+this.selection={};
+this.anchor=null;
+this.simpleSelection=false;
+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,getSelectedNodes:function(){
+return this.selection;
+},selectNone:function(){
+return this._removeSelection()._removeAnchor();
+},destroy:function(){
+this.inherited(arguments);
+this.selection=this.anchor=null;
+},onMouseDown:function(e){
+if(!this.current){
+return;
+}
+if(e.button==dojo.mouseButtons.RIGHT){
+return;
+}
+var _3=dijit.getEnclosingWidget(this.current),id=_3.id+"-dnd";
+if(!dojo.hasAttr(this.current,"id")){
+dojo.attr(this.current,"id",id);
+}
+if(!this.singular&&!dojo.isCopyKey(e)&&!e.shiftKey&&(this.current.id in this.selection)){
+this.simpleSelection=true;
+dojo.stopEvent(e);
+return;
+}
+if(this.singular){
+if(this.anchor==this.current){
+if(dojo.isCopyKey(e)){
+this.selectNone();
+}
+}else{
+this.selectNone();
+this.anchor=this.current;
+this._addItemClass(this.anchor,"Anchor");
+this.selection[this.current.id]=this.current;
+}
+}else{
+if(!this.singular&&e.shiftKey){
+if(dojo.isCopyKey(e)){
+}else{
+}
+}else{
+if(dojo.isCopyKey(e)){
+if(this.anchor==this.current){
+delete this.selection[this.anchor.id];
+this._removeAnchor();
+}else{
+if(this.current.id in this.selection){
+this._removeItemClass(this.current,"Selected");
+delete this.selection[this.current.id];
+}else{
+if(this.anchor){
+this._removeItemClass(this.anchor,"Anchor");
+this._addItemClass(this.anchor,"Selected");
+}
+this.anchor=this.current;
+this._addItemClass(this.current,"Anchor");
+this.selection[this.current.id]=this.current;
+}
+}
+}else{
+if(!(id in this.selection)){
+this.selectNone();
+this.anchor=this.current;
+this._addItemClass(this.current,"Anchor");
+this.selection[id]=this.current;
+}
+}
+}
+}
+dojo.stopEvent(e);
+},onMouseUp:function(e){
+if(!this.simpleSelection){
+return;
+}
+this.simpleSelection=false;
+this.selectNone();
+if(this.current){
+this.anchor=this.current;
+this._addItemClass(this.anchor,"Anchor");
+this.selection[this.current.id]=this.current;
+}
+},onMouseMove:function(e){
+this.simpleSelection=false;
+},_removeSelection:function(){
+var e=dojo.dnd._empty;
+for(var i in this.selection){
+if(i in e){
+continue;
+}
+var _4=dojo.byId(i);
+if(_4){
+this._removeItemClass(_4,"Selected");
+}
+}
+this.selection={};
+return this;
+},_removeAnchor:function(){
+if(this.anchor){
+this._removeItemClass(this.anchor,"Anchor");
+this.anchor=null;
+}
+return this;
+},forInSelectedItems:function(f,o){
+o=o||dojo.global;
+for(var id in this.selection){
+f.call(o,this.getItem(id),id,this);
+}
+}});
+}
diff --git a/lib/dijit/tree/dndSource.js b/lib/dijit/tree/dndSource.js
new file mode 100644 (file)
index 0000000..ef129d9
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+       Copyright (c) 2004-2010, 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["dijit.tree.dndSource"]){
+dojo._hasResource["dijit.tree.dndSource"]=true;
+dojo.provide("dijit.tree.dndSource");
+dojo.require("dijit.tree._dndSelector");
+dojo.require("dojo.dnd.Manager");
+dojo.declare("dijit.tree.dndSource",dijit.tree._dndSelector,{isSource:true,accept:["text","treeNode"],copyOnly:false,dragThreshold:5,betweenThreshold:0,constructor:function(_1,_2){
+if(!_2){
+_2={};
+}
+dojo.mixin(this,_2);
+this.isSource=typeof _2.isSource=="undefined"?true:_2.isSource;
+var _3=_2.accept instanceof Array?_2.accept:["text","treeNode"];
+this.accept=null;
+if(_3.length){
+this.accept={};
+for(var i=0;i<_3.length;++i){
+this.accept[_3[i]]=1;
+}
+}
+this.isDragging=false;
+this.mouseDown=false;
+this.targetAnchor=null;
+this.targetBox=null;
+this.dropPosition="";
+this._lastX=0;
+this._lastY=0;
+this.sourceState="";
+if(this.isSource){
+dojo.addClass(this.node,"dojoDndSource");
+}
+this.targetState="";
+if(this.accept){
+dojo.addClass(this.node,"dojoDndTarget");
+}
+this.topics=[dojo.subscribe("/dnd/source/over",this,"onDndSourceOver"),dojo.subscribe("/dnd/start",this,"onDndStart"),dojo.subscribe("/dnd/drop",this,"onDndDrop"),dojo.subscribe("/dnd/cancel",this,"onDndCancel")];
+},checkAcceptance:function(_4,_5){
+return true;
+},copyState:function(_6){
+return this.copyOnly||_6;
+},destroy:function(){
+this.inherited("destroy",arguments);
+dojo.forEach(this.topics,dojo.unsubscribe);
+this.targetAnchor=null;
+},_onDragMouse:function(e){
+var m=dojo.dnd.manager(),_7=this.targetAnchor,_8=this.current,_9=this.currentWidget,_a=this.dropPosition;
+var _b="Over";
+if(_8&&this.betweenThreshold>0){
+if(!this.targetBox||_7!=_8){
+this.targetBox=dojo.position(_8,true);
+}
+if((e.pageY-this.targetBox.y)<=this.betweenThreshold){
+_b="Before";
+}else{
+if((e.pageY-this.targetBox.y)>=(this.targetBox.h-this.betweenThreshold)){
+_b="After";
+}
+}
+}
+if(_8!=_7||_b!=_a){
+if(_7){
+this._removeItemClass(_7,_a);
+}
+if(_8){
+this._addItemClass(_8,_b);
+}
+if(!_8){
+m.canDrop(false);
+}else{
+if(_9==this.tree.rootNode&&_b!="Over"){
+m.canDrop(false);
+}else{
+if(m.source==this&&(_8.id in this.selection)){
+m.canDrop(false);
+}else{
+if(this.checkItemAcceptance(_8,m.source,_b.toLowerCase())&&!this._isParentChildDrop(m.source,_8)){
+m.canDrop(true);
+}else{
+m.canDrop(false);
+}
+}
+}
+}
+this.targetAnchor=_8;
+this.dropPosition=_b;
+}
+},onMouseMove:function(e){
+if(this.isDragging&&this.targetState=="Disabled"){
+return;
+}
+this.inherited(arguments);
+var m=dojo.dnd.manager();
+if(this.isDragging){
+this._onDragMouse(e);
+}else{
+if(this.mouseDown&&this.isSource&&(Math.abs(e.pageX-this._lastX)>=this.dragThreshold||Math.abs(e.pageY-this._lastY)>=this.dragThreshold)){
+var n=this.getSelectedNodes();
+var _c=[];
+for(var i in n){
+_c.push(n[i]);
+}
+if(_c.length){
+m.startDrag(this,_c,this.copyState(dojo.isCopyKey(e)));
+}
+}
+}
+},onMouseDown:function(e){
+this.mouseDown=true;
+this.mouseButton=e.button;
+this._lastX=e.pageX;
+this._lastY=e.pageY;
+this.inherited("onMouseDown",arguments);
+},onMouseUp:function(e){
+if(this.mouseDown){
+this.mouseDown=false;
+this.inherited("onMouseUp",arguments);
+}
+},onMouseOut:function(){
+this.inherited(arguments);
+this._unmarkTargetAnchor();
+},checkItemAcceptance:function(_d,_e,_f){
+return true;
+},onDndSourceOver:function(_10){
+if(this!=_10){
+this.mouseDown=false;
+this._unmarkTargetAnchor();
+}else{
+if(this.isDragging){
+var m=dojo.dnd.manager();
+m.canDrop(false);
+}
+}
+},onDndStart:function(_11,_12,_13){
+if(this.isSource){
+this._changeState("Source",this==_11?(_13?"Copied":"Moved"):"");
+}
+var _14=this.checkAcceptance(_11,_12);
+this._changeState("Target",_14?"":"Disabled");
+if(this==_11){
+dojo.dnd.manager().overSource(this);
+}
+this.isDragging=true;
+},itemCreator:function(_15,_16,_17){
+return dojo.map(_15,function(_18){
+return {"id":_18.id,"name":_18.textContent||_18.innerText||""};
+});
+},onDndDrop:function(_19,_1a,_1b){
+if(this.containerState=="Over"){
+var _1c=this.tree,_1d=_1c.model,_1e=this.targetAnchor,_1f=false;
+this.isDragging=false;
+var _20=dijit.getEnclosingWidget(_1e);
+var _21;
+var _22;
+_21=(_20&&_20.item)||_1c.item;
+if(this.dropPosition=="Before"||this.dropPosition=="After"){
+_21=(_20.getParent()&&_20.getParent().item)||_1c.item;
+_22=_20.getIndexInParent();
+if(this.dropPosition=="After"){
+_22=_20.getIndexInParent()+1;
+}
+}else{
+_21=(_20&&_20.item)||_1c.item;
+}
+var _23;
+dojo.forEach(_1a,function(_24,idx){
+var _25=_19.getItem(_24.id);
+if(dojo.indexOf(_25.type,"treeNode")!=-1){
+var _26=_25.data,_27=_26.item,_28=_26.getParent().item;
+}
+if(_19==this){
+if(typeof _22=="number"){
+if(_21==_28&&_26.getIndexInParent()<_22){
+_22-=1;
+}
+}
+_1d.pasteItem(_27,_28,_21,_1b,_22);
+}else{
+if(_1d.isItem(_27)){
+_1d.pasteItem(_27,_28,_21,_1b,_22);
+}else{
+if(!_23){
+_23=this.itemCreator(_1a,_1e,_19);
+}
+_1d.newItem(_23[idx],_21,_22);
+}
+}
+},this);
+this.tree._expandNode(_20);
+}
+this.onDndCancel();
+},onDndCancel:function(){
+this._unmarkTargetAnchor();
+this.isDragging=false;
+this.mouseDown=false;
+delete this.mouseButton;
+this._changeState("Source","");
+this._changeState("Target","");
+},onOverEvent:function(){
+this.inherited(arguments);
+dojo.dnd.manager().overSource(this);
+},onOutEvent:function(){
+this._unmarkTargetAnchor();
+var m=dojo.dnd.manager();
+if(this.isDragging){
+m.canDrop(false);
+}
+m.outSource(this);
+this.inherited(arguments);
+},_isParentChildDrop:function(_29,_2a){
+if(!_29.tree||_29.tree!=this.tree){
+return false;
+}
+var _2b=_29.tree.domNode;
+var ids={};
+for(var x in _29.selection){
+ids[_29.selection[x].parentNode.id]=true;
+}
+var _2c=_2a.parentNode;
+while(_2c!=_2b&&(!_2c.id||!ids[_2c.id])){
+_2c=_2c.parentNode;
+}
+return _2c.id&&ids[_2c.id];
+},_unmarkTargetAnchor:function(){
+if(!this.targetAnchor){
+return;
+}
+this._removeItemClass(this.targetAnchor,this.dropPosition);
+this.targetAnchor=null;
+this.targetBox=null;
+this.dropPosition=null;
+},_markDndStatus:function(_2d){
+this._changeState("Source",_2d?"Copied":"Moved");
+}});
+}
diff --git a/lib/dijit/tree/model.js b/lib/dijit/tree/model.js
new file mode 100644 (file)
index 0000000..091d72f
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+
+dojo.declare("dijit.tree.model",null,{destroy:function(){
+},getRoot:function(_1){
+},mayHaveChildren:function(_2){
+},getChildren:function(_3,_4){
+},isItem:function(_5){
+},fetchItemByIdentity:function(_6){
+},getIdentity:function(_7){
+},getLabel:function(_8){
+},newItem:function(_9,_a,_b){
+},pasteItem:function(_c,_d,_e,_f){
+},onChange:function(_10){
+},onChildrenChange:function(_11,_12){
+}});
diff --git a/lib/dojo/AdapterRegistry.js b/lib/dojo/AdapterRegistry.js
new file mode 100644 (file)
index 0000000..1939cfa
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.AdapterRegistry"]){
+dojo._hasResource["dojo.AdapterRegistry"]=true;
+dojo.provide("dojo.AdapterRegistry");
+dojo.AdapterRegistry=function(_1){
+this.pairs=[];
+this.returnWrappers=_1||false;
+};
+dojo.extend(dojo.AdapterRegistry,{register:function(_2,_3,_4,_5,_6){
+this.pairs[((_6)?"unshift":"push")]([_2,_3,_4,_5]);
+},match:function(){
+for(var i=0;i<this.pairs.length;i++){
+var _7=this.pairs[i];
+if(_7[1].apply(this,arguments)){
+if((_7[3])||(this.returnWrappers)){
+return _7[2];
+}else{
+return _7[2].apply(this,arguments);
+}
+}
+}
+throw new Error("No match found");
+},unregister:function(_8){
+for(var i=0;i<this.pairs.length;i++){
+var _9=this.pairs[i];
+if(_9[0]==_8){
+this.pairs.splice(i,1);
+return true;
+}
+}
+return false;
+}});
+}
diff --git a/lib/dojo/DeferredList.js b/lib/dojo/DeferredList.js
new file mode 100644 (file)
index 0000000..6a1a1aa
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.DeferredList"]){
+dojo._hasResource["dojo.DeferredList"]=true;
+dojo.provide("dojo.DeferredList");
+dojo.DeferredList=function(_1,_2,_3,_4,_5){
+var _6=[];
+dojo.Deferred.call(this);
+var _7=this;
+if(_1.length===0&&!_2){
+this.resolve([0,[]]);
+}
+var _8=0;
+dojo.forEach(_1,function(_9,i){
+_9.then(function(_a){
+if(_2){
+_7.resolve([i,_a]);
+}else{
+_b(true,_a);
+}
+},function(_c){
+if(_3){
+_7.reject(_c);
+}else{
+_b(false,_c);
+}
+if(_4){
+return null;
+}
+throw _c;
+});
+function _b(_d,_e){
+_6[i]=[_d,_e];
+_8++;
+if(_8===_1.length){
+_7.resolve(_6);
+}
+};
+});
+};
+dojo.DeferredList.prototype=new dojo.Deferred();
+dojo.DeferredList.prototype.gatherResults=function(_f){
+var d=new dojo.DeferredList(_f,false,true,false);
+d.addCallback(function(_10){
+var ret=[];
+dojo.forEach(_10,function(_11){
+ret.push(_11[1]);
+});
+return ret;
+});
+return d;
+};
+}
diff --git a/lib/dojo/LICENSE b/lib/dojo/LICENSE
new file mode 100644 (file)
index 0000000..4c93ded
--- /dev/null
@@ -0,0 +1,195 @@
+Dojo is available under *either* the terms of the modified BSD license *or* the
+Academic Free License version 2.1. As a recipient of Dojo, you may choose which
+license to receive this code under (except as noted in per-module LICENSE
+files). Some modules may not be the copyright of the Dojo Foundation. These
+modules contain explicit declarations of copyright in both the LICENSE files in
+the directories in which they reside and in the code itself. No external
+contributions are allowed under licenses which are fundamentally incompatible
+with the AFL or BSD licenses that Dojo is distributed under.
+
+The text of the AFL and BSD licenses is reproduced below. 
+
+-------------------------------------------------------------------------------
+The "New" BSD License:
+**********************
+
+Copyright (c) 2005-2010, The Dojo Foundation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+  * Neither the name of the Dojo Foundation nor the names of its contributors
+    may be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------------------
+The Academic Free License, v. 2.1:
+**********************************
+
+This Academic Free License (the "License") applies to any original work of
+authorship (the "Original Work") whose owner (the "Licensor") has placed the
+following notice immediately following the copyright notice for the Original
+Work:
+
+Licensed under the Academic Free License version 2.1
+
+1) Grant of Copyright License. Licensor hereby grants You a world-wide,
+royalty-free, non-exclusive, perpetual, sublicenseable license to do the
+following:
+
+a) to reproduce the Original Work in copies;
+
+b) to prepare derivative works ("Derivative Works") based upon the Original
+Work;
+
+c) to distribute copies of the Original Work and Derivative Works to the
+public;
+
+d) to perform the Original Work publicly; and
+
+e) to display the Original Work publicly.
+
+2) Grant of Patent License. Licensor hereby grants You a world-wide,
+royalty-free, non-exclusive, perpetual, sublicenseable license, under patent
+claims owned or controlled by the Licensor that are embodied in the Original
+Work as furnished by the Licensor, to make, use, sell and offer for sale the
+Original Work and Derivative Works.
+
+3) Grant of Source Code License. The term "Source Code" means the preferred
+form of the Original Work for making modifications to it and all available
+documentation describing how to modify the Original Work. Licensor hereby
+agrees to provide a machine-readable copy of the Source Code of the Original
+Work along with each copy of the Original Work that Licensor distributes.
+Licensor reserves the right to satisfy this obligation by placing a
+machine-readable copy of the Source Code in an information repository
+reasonably calculated to permit inexpensive and convenient access by You for as
+long as Licensor continues to distribute the Original Work, and by publishing
+the address of that information repository in a notice immediately following
+the copyright notice that applies to the Original Work.
+
+4) Exclusions From License Grant. Neither the names of Licensor, nor the names
+of any contributors to the Original Work, nor any of their trademarks or
+service marks, may be used to endorse or promote products derived from this
+Original Work without express prior written permission of the Licensor. Nothing
+in this License shall be deemed to grant any rights to trademarks, copyrights,
+patents, trade secrets or any other intellectual property of Licensor except as
+expressly stated herein. No patent license is granted to make, use, sell or
+offer to sell embodiments of any patent claims other than the licensed claims
+defined in Section 2. No right is granted to the trademarks of Licensor even if
+such marks are included in the Original Work. Nothing in this License shall be
+interpreted to prohibit Licensor from licensing under different terms from this
+License any Original Work that Licensor otherwise would have a right to
+license.
+
+5) This section intentionally omitted.
+
+6) Attribution Rights. You must retain, in the Source Code of any Derivative
+Works that You create, all copyright, patent or trademark notices from the
+Source Code of the Original Work, as well as any notices of licensing and any
+descriptive text identified therein as an "Attribution Notice." You must cause
+the Source Code for any Derivative Works that You create to carry a prominent
+Attribution Notice reasonably calculated to inform recipients that You have
+modified the Original Work.
+
+7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
+the copyright in and to the Original Work and the patent rights granted herein
+by Licensor are owned by the Licensor or are sublicensed to You under the terms
+of this License with the permission of the contributor(s) of those copyrights
+and patent rights. Except as expressly stated in the immediately proceeding
+sentence, the Original Work is provided under this License on an "AS IS" BASIS
+and WITHOUT WARRANTY, either express or implied, including, without limitation,
+the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU.
+This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No
+license to Original Work is granted hereunder except under this disclaimer.
+
+8) Limitation of Liability. Under no circumstances and under no legal theory,
+whether in tort (including negligence), contract, or otherwise, shall the
+Licensor be liable to any person for any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License
+or the use of the Original Work including, without limitation, damages for loss
+of goodwill, work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses. This limitation of liability shall not
+apply to liability for death or personal injury resulting from Licensor's
+negligence to the extent applicable law prohibits such limitation. Some
+jurisdictions do not allow the exclusion or limitation of incidental or
+consequential damages, so this exclusion and limitation may not apply to You.
+
+9) Acceptance and Termination. If You distribute copies of the Original Work or
+a Derivative Work, You must make a reasonable effort under the circumstances to
+obtain the express assent of recipients to the terms of this License. Nothing
+else but this License (or another written agreement between Licensor and You)
+grants You permission to create Derivative Works based upon the Original Work
+or to exercise any of the rights granted in Section 1 herein, and any attempt
+to do so except under the terms of this License (or another written agreement
+between Licensor and You) is expressly prohibited by U.S. copyright law, the
+equivalent laws of other countries, and by international treaty. Therefore, by
+exercising any of the rights granted to You in Section 1 herein, You indicate
+Your acceptance of this License and all of its terms and conditions.
+
+10) Termination for Patent Action. This License shall terminate automatically
+and You may no longer exercise any of the rights granted to You by this License
+as of the date You commence an action, including a cross-claim or counterclaim,
+against Licensor or any licensee alleging that the Original Work infringes a
+patent. This termination provision shall not apply for an action alleging
+patent infringement by combinations of the Original Work with other software or
+hardware.
+
+11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
+License may be brought only in the courts of a jurisdiction wherein the
+Licensor resides or in which Licensor conducts its primary business, and under
+the laws of that jurisdiction excluding its conflict-of-law provisions. The
+application of the United Nations Convention on Contracts for the International
+Sale of Goods is expressly excluded. Any use of the Original Work outside the
+scope of this License or after its termination shall be subject to the
+requirements and penalties of the U.S. Copyright Act, 17 U.S.C. Â§ 101 et
+seq., the equivalent laws of other countries, and international treaty. This
+section shall survive the termination of this License.
+
+12) Attorneys Fees. In any action to enforce the terms of this License or
+seeking damages relating thereto, the prevailing party shall be entitled to
+recover its costs and expenses, including, without limitation, reasonable
+attorneys' fees and costs incurred in connection with such action, including
+any appeal of such action. This section shall survive the termination of this
+License.
+
+13) Miscellaneous. This License represents the complete agreement concerning
+the subject matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent necessary to
+make it enforceable.
+
+14) Definition of "You" in This License. "You" throughout this License, whether
+in upper or lower case, means an individual or a legal entity exercising rights
+under, and complying with all of the terms of, this License. For legal
+entities, "You" includes any entity that controls, is controlled by, or is
+under common control with you. For purposes of this definition, "control" means
+(i) the power, direct or indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (ii) ownership of fifty percent
+(50%) or more of the outstanding shares, or (iii) beneficial ownership of such
+entity.
+
+15) Right to Use. You may use the Original Work in all ways not otherwise
+restricted or conditioned by this License or by law, and Licensor promises not
+to interfere with or be responsible for such uses by You.
+
+This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved.
+Permission is hereby granted to copy and distribute this license without
+modification. This license may not be modified without the express written
+permission of its copyright owner.
diff --git a/lib/dojo/NodeList-fx.js b/lib/dojo/NodeList-fx.js
new file mode 100644 (file)
index 0000000..f08fdca
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.NodeList-fx"]){
+dojo._hasResource["dojo.NodeList-fx"]=true;
+dojo.provide("dojo.NodeList-fx");
+dojo.require("dojo.fx");
+dojo.extend(dojo.NodeList,{_anim:function(_1,_2,_3){
+_3=_3||{};
+var a=dojo.fx.combine(this.map(function(_4){
+var _5={node:_4};
+dojo.mixin(_5,_3);
+return _1[_2](_5);
+}));
+return _3.auto?a.play()&&this:a;
+},wipeIn:function(_6){
+return this._anim(dojo.fx,"wipeIn",_6);
+},wipeOut:function(_7){
+return this._anim(dojo.fx,"wipeOut",_7);
+},slideTo:function(_8){
+return this._anim(dojo.fx,"slideTo",_8);
+},fadeIn:function(_9){
+return this._anim(dojo,"fadeIn",_9);
+},fadeOut:function(_a){
+return this._anim(dojo,"fadeOut",_a);
+},animateProperty:function(_b){
+return this._anim(dojo,"animateProperty",_b);
+},anim:function(_c,_d,_e,_f,_10){
+var _11=dojo.fx.combine(this.map(function(_12){
+return dojo.animateProperty({node:_12,properties:_c,duration:_d||350,easing:_e});
+}));
+if(_f){
+dojo.connect(_11,"onEnd",_f);
+}
+return _11.play(_10||0);
+}});
+}
diff --git a/lib/dojo/NodeList-html.js b/lib/dojo/NodeList-html.js
new file mode 100644 (file)
index 0000000..ccc6f10
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.NodeList-html"]){
+dojo._hasResource["dojo.NodeList-html"]=true;
+dojo.provide("dojo.NodeList-html");
+dojo.require("dojo.html");
+dojo.extend(dojo.NodeList,{html:function(_1,_2){
+var _3=new dojo.html._ContentSetter(_2||{});
+this.forEach(function(_4){
+_3.node=_4;
+_3.set(_1);
+_3.tearDown();
+});
+return this;
+}});
+}
diff --git a/lib/dojo/NodeList-manipulate.js b/lib/dojo/NodeList-manipulate.js
new file mode 100644 (file)
index 0000000..b0b7498
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.NodeList-manipulate"]){
+dojo._hasResource["dojo.NodeList-manipulate"]=true;
+dojo.provide("dojo.NodeList-manipulate");
+(function(){
+function _1(_2){
+var _3="",ch=_2.childNodes;
+for(var i=0,n;n=ch[i];i++){
+if(n.nodeType!=8){
+if(n.nodeType==1){
+_3+=_1(n);
+}else{
+_3+=n.nodeValue;
+}
+}
+}
+return _3;
+};
+function _4(_5){
+while(_5.childNodes[0]&&_5.childNodes[0].nodeType==1){
+_5=_5.childNodes[0];
+}
+return _5;
+};
+function _6(_7,_8){
+if(typeof _7=="string"){
+_7=dojo._toDom(_7,(_8&&_8.ownerDocument));
+if(_7.nodeType==11){
+_7=_7.childNodes[0];
+}
+}else{
+if(_7.nodeType==1&&_7.parentNode){
+_7=_7.cloneNode(false);
+}
+}
+return _7;
+};
+dojo.extend(dojo.NodeList,{_placeMultiple:function(_9,_a){
+var _b=typeof _9=="string"||_9.nodeType?dojo.query(_9):_9;
+var _c=[];
+for(var i=0;i<_b.length;i++){
+var _d=_b[i];
+var _e=this.length;
+for(var j=_e-1,_f;_f=this[j];j--){
+if(i>0){
+_f=this._cloneNode(_f);
+_c.unshift(_f);
+}
+if(j==_e-1){
+dojo.place(_f,_d,_a);
+}else{
+_d.parentNode.insertBefore(_f,_d);
+}
+_d=_f;
+}
+}
+if(_c.length){
+_c.unshift(0);
+_c.unshift(this.length-1);
+Array.prototype.splice.apply(this,_c);
+}
+return this;
+},innerHTML:function(_10){
+if(arguments.length){
+return this.addContent(_10,"only");
+}else{
+return this[0].innerHTML;
+}
+},text:function(_11){
+if(arguments.length){
+for(var i=0,_12;_12=this[i];i++){
+if(_12.nodeType==1){
+dojo.empty(_12);
+_12.appendChild(_12.ownerDocument.createTextNode(_11));
+}
+}
+return this;
+}else{
+var _13="";
+for(i=0;_12=this[i];i++){
+_13+=_1(_12);
+}
+return _13;
+}
+},val:function(_14){
+if(arguments.length){
+var _15=dojo.isArray(_14);
+for(var _16=0,_17;_17=this[_16];_16++){
+var _18=_17.nodeName.toUpperCase();
+var _19=_17.type;
+var _1a=_15?_14[_16]:_14;
+if(_18=="SELECT"){
+var _1b=_17.options;
+for(var i=0;i<_1b.length;i++){
+var opt=_1b[i];
+if(_17.multiple){
+opt.selected=(dojo.indexOf(_14,opt.value)!=-1);
+}else{
+opt.selected=(opt.value==_1a);
+}
+}
+}else{
+if(_19=="checkbox"||_19=="radio"){
+_17.checked=(_17.value==_1a);
+}else{
+_17.value=_1a;
+}
+}
+}
+return this;
+}else{
+_17=this[0];
+if(!_17||_17.nodeType!=1){
+return undefined;
+}
+_14=_17.value||"";
+if(_17.nodeName.toUpperCase()=="SELECT"&&_17.multiple){
+_14=[];
+_1b=_17.options;
+for(i=0;i<_1b.length;i++){
+opt=_1b[i];
+if(opt.selected){
+_14.push(opt.value);
+}
+}
+if(!_14.length){
+_14=null;
+}
+}
+return _14;
+}
+},append:function(_1c){
+return this.addContent(_1c,"last");
+},appendTo:function(_1d){
+return this._placeMultiple(_1d,"last");
+},prepend:function(_1e){
+return this.addContent(_1e,"first");
+},prependTo:function(_1f){
+return this._placeMultiple(_1f,"first");
+},after:function(_20){
+return this.addContent(_20,"after");
+},insertAfter:function(_21){
+return this._placeMultiple(_21,"after");
+},before:function(_22){
+return this.addContent(_22,"before");
+},insertBefore:function(_23){
+return this._placeMultiple(_23,"before");
+},remove:dojo.NodeList.prototype.orphan,wrap:function(_24){
+if(this[0]){
+_24=_6(_24,this[0]);
+for(var i=0,_25;_25=this[i];i++){
+var _26=this._cloneNode(_24);
+if(_25.parentNode){
+_25.parentNode.replaceChild(_26,_25);
+}
+var _27=_4(_26);
+_27.appendChild(_25);
+}
+}
+return this;
+},wrapAll:function(_28){
+if(this[0]){
+_28=_6(_28,this[0]);
+this[0].parentNode.replaceChild(_28,this[0]);
+var _29=_4(_28);
+for(var i=0,_2a;_2a=this[i];i++){
+_29.appendChild(_2a);
+}
+}
+return this;
+},wrapInner:function(_2b){
+if(this[0]){
+_2b=_6(_2b,this[0]);
+for(var i=0;i<this.length;i++){
+var _2c=this._cloneNode(_2b);
+this._wrap(dojo._toArray(this[i].childNodes),null,this._NodeListCtor).wrapAll(_2c);
+}
+}
+return this;
+},replaceWith:function(_2d){
+_2d=this._normalize(_2d,this[0]);
+for(var i=0,_2e;_2e=this[i];i++){
+this._place(_2d,_2e,"before",i>0);
+_2e.parentNode.removeChild(_2e);
+}
+return this;
+},replaceAll:function(_2f){
+var nl=dojo.query(_2f);
+var _30=this._normalize(this,this[0]);
+for(var i=0,_31;_31=nl[i];i++){
+this._place(_30,_31,"before",i>0);
+_31.parentNode.removeChild(_31);
+}
+return this;
+},clone:function(){
+var ary=[];
+for(var i=0;i<this.length;i++){
+ary.push(this._cloneNode(this[i]));
+}
+return this._wrap(ary,this,this._NodeListCtor);
+}});
+if(!dojo.NodeList.prototype.html){
+dojo.NodeList.prototype.html=dojo.NodeList.prototype.innerHTML;
+}
+})();
+}
diff --git a/lib/dojo/NodeList-traverse.js b/lib/dojo/NodeList-traverse.js
new file mode 100644 (file)
index 0000000..4fda2e7
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.NodeList-traverse"]){
+dojo._hasResource["dojo.NodeList-traverse"]=true;
+dojo.provide("dojo.NodeList-traverse");
+dojo.extend(dojo.NodeList,{_buildArrayFromCallback:function(_1){
+var _2=[];
+for(var i=0;i<this.length;i++){
+var _3=_1.call(this[i],this[i],_2);
+if(_3){
+_2=_2.concat(_3);
+}
+}
+return _2;
+},_filterQueryResult:function(_4,_5){
+var _6=dojo.filter(_4,function(_7){
+return dojo.query(_5,_7.parentNode).indexOf(_7)!=-1;
+});
+var _8=this._wrap(_6);
+return _8;
+},_getUniqueAsNodeList:function(_9){
+var _a=[];
+for(var i=0,_b;_b=_9[i];i++){
+if(_b.nodeType==1&&dojo.indexOf(_a,_b)==-1){
+_a.push(_b);
+}
+}
+return this._wrap(_a,null,this._NodeListCtor);
+},_getUniqueNodeListWithParent:function(_c,_d){
+var _e=this._getUniqueAsNodeList(_c);
+_e=(_d?this._filterQueryResult(_e,_d):_e);
+return _e._stash(this);
+},_getRelatedUniqueNodes:function(_f,_10){
+return this._getUniqueNodeListWithParent(this._buildArrayFromCallback(_10),_f);
+},children:function(_11){
+return this._getRelatedUniqueNodes(_11,function(_12,ary){
+return dojo._toArray(_12.childNodes);
+});
+},closest:function(_13){
+var _14=this;
+return this._getRelatedUniqueNodes(_13,function(_15,ary){
+do{
+if(_14._filterQueryResult([_15],_13).length){
+return _15;
+}
+}while((_15=_15.parentNode)&&_15.nodeType==1);
+return null;
+});
+},parent:function(_16){
+return this._getRelatedUniqueNodes(_16,function(_17,ary){
+return _17.parentNode;
+});
+},parents:function(_18){
+return this._getRelatedUniqueNodes(_18,function(_19,ary){
+var _1a=[];
+while(_19.parentNode){
+_19=_19.parentNode;
+_1a.push(_19);
+}
+return _1a;
+});
+},siblings:function(_1b){
+return this._getRelatedUniqueNodes(_1b,function(_1c,ary){
+var _1d=[];
+var _1e=(_1c.parentNode&&_1c.parentNode.childNodes);
+for(var i=0;i<_1e.length;i++){
+if(_1e[i]!=_1c){
+_1d.push(_1e[i]);
+}
+}
+return _1d;
+});
+},next:function(_1f){
+return this._getRelatedUniqueNodes(_1f,function(_20,ary){
+var _21=_20.nextSibling;
+while(_21&&_21.nodeType!=1){
+_21=_21.nextSibling;
+}
+return _21;
+});
+},nextAll:function(_22){
+return this._getRelatedUniqueNodes(_22,function(_23,ary){
+var _24=[];
+var _25=_23;
+while((_25=_25.nextSibling)){
+if(_25.nodeType==1){
+_24.push(_25);
+}
+}
+return _24;
+});
+},prev:function(_26){
+return this._getRelatedUniqueNodes(_26,function(_27,ary){
+var _28=_27.previousSibling;
+while(_28&&_28.nodeType!=1){
+_28=_28.previousSibling;
+}
+return _28;
+});
+},prevAll:function(_29){
+return this._getRelatedUniqueNodes(_29,function(_2a,ary){
+var _2b=[];
+var _2c=_2a;
+while((_2c=_2c.previousSibling)){
+if(_2c.nodeType==1){
+_2b.push(_2c);
+}
+}
+return _2b;
+});
+},andSelf:function(){
+return this.concat(this._parent);
+},first:function(){
+return this._wrap(((this[0]&&[this[0]])||[]),this);
+},last:function(){
+return this._wrap((this.length?[this[this.length-1]]:[]),this);
+},even:function(){
+return this.filter(function(_2d,i){
+return i%2!=0;
+});
+},odd:function(){
+return this.filter(function(_2e,i){
+return i%2==0;
+});
+}});
+}
diff --git a/lib/dojo/OpenAjax.js b/lib/dojo/OpenAjax.js
new file mode 100644 (file)
index 0000000..a33e67d
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+       Copyright (c) 2004-2010, 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(!window["OpenAjax"]){
+OpenAjax=new function(){
+var t=true;
+var f=false;
+var g=window;
+var _1;
+var _2="org.openajax.hub.";
+var h={};
+this.hub=h;
+h.implementer="http://openajax.org";
+h.implVersion="0.6";
+h.specVersion="0.6";
+h.implExtraData={};
+var _1={};
+h.libraries=_1;
+h.registerLibrary=function(_3,_4,_5,_6){
+_1[_3]={prefix:_3,namespaceURI:_4,version:_5,extraData:_6};
+this.publish(_2+"registerLibrary",_1[_3]);
+};
+h.unregisterLibrary=function(_7){
+this.publish(_2+"unregisterLibrary",_1[_7]);
+delete _1[_7];
+};
+h._subscriptions={c:{},s:[]};
+h._cleanup=[];
+h._subIndex=0;
+h._pubDepth=0;
+h.subscribe=function(_8,_9,_a,_b,_c){
+if(!_a){
+_a=window;
+}
+var _d=_8+"."+this._subIndex;
+var _e={scope:_a,cb:_9,fcb:_c,data:_b,sid:this._subIndex++,hdl:_d};
+var _f=_8.split(".");
+this._subscribe(this._subscriptions,_f,0,_e);
+return _d;
+};
+h.publish=function(_10,_11){
+var _12=_10.split(".");
+this._pubDepth++;
+this._publish(this._subscriptions,_12,0,_10,_11);
+this._pubDepth--;
+if((this._cleanup.length>0)&&(this._pubDepth==0)){
+for(var i=0;i<this._cleanup.length;i++){
+this.unsubscribe(this._cleanup[i].hdl);
+}
+delete (this._cleanup);
+this._cleanup=[];
+}
+};
+h.unsubscribe=function(sub){
+var _13=sub.split(".");
+var sid=_13.pop();
+this._unsubscribe(this._subscriptions,_13,0,sid);
+};
+h._subscribe=function(_14,_15,_16,sub){
+var _17=_15[_16];
+if(_16==_15.length){
+_14.s.push(sub);
+}else{
+if(typeof _14.c=="undefined"){
+_14.c={};
+}
+if(typeof _14.c[_17]=="undefined"){
+_14.c[_17]={c:{},s:[]};
+this._subscribe(_14.c[_17],_15,_16+1,sub);
+}else{
+this._subscribe(_14.c[_17],_15,_16+1,sub);
+}
+}
+};
+h._publish=function(_18,_19,_1a,_1b,msg){
+if(typeof _18!="undefined"){
+var _1c;
+if(_1a==_19.length){
+_1c=_18;
+}else{
+this._publish(_18.c[_19[_1a]],_19,_1a+1,_1b,msg);
+this._publish(_18.c["*"],_19,_1a+1,_1b,msg);
+_1c=_18.c["**"];
+}
+if(typeof _1c!="undefined"){
+var _1d=_1c.s;
+var max=_1d.length;
+for(var i=0;i<max;i++){
+if(_1d[i].cb){
+var sc=_1d[i].scope;
+var cb=_1d[i].cb;
+var fcb=_1d[i].fcb;
+var d=_1d[i].data;
+if(typeof cb=="string"){
+cb=sc[cb];
+}
+if(typeof fcb=="string"){
+fcb=sc[fcb];
+}
+if((!fcb)||(fcb.call(sc,_1b,msg,d))){
+cb.call(sc,_1b,msg,d);
+}
+}
+}
+}
+}
+};
+h._unsubscribe=function(_1e,_1f,_20,sid){
+if(typeof _1e!="undefined"){
+if(_20<_1f.length){
+var _21=_1e.c[_1f[_20]];
+this._unsubscribe(_21,_1f,_20+1,sid);
+if(_21.s.length==0){
+for(var x in _21.c){
+return;
+}
+delete _1e.c[_1f[_20]];
+}
+return;
+}else{
+var _22=_1e.s;
+var max=_22.length;
+for(var i=0;i<max;i++){
+if(sid==_22[i].sid){
+if(this._pubDepth>0){
+_22[i].cb=null;
+this._cleanup.push(_22[i]);
+}else{
+_22.splice(i,1);
+}
+return;
+}
+}
+}
+}
+};
+h.reinit=function(){
+for(var lib in OpenAjax.hub.libraries){
+delete OpenAjax.hub.libraries[lib];
+}
+OpenAjax.hub.registerLibrary("OpenAjax","http://openajax.org/hub","0.6",{});
+delete OpenAjax._subscriptions;
+OpenAjax._subscriptions={c:{},s:[]};
+delete OpenAjax._cleanup;
+OpenAjax._cleanup=[];
+OpenAjax._subIndex=0;
+OpenAjax._pubDepth=0;
+};
+};
+OpenAjax.hub.registerLibrary("OpenAjax","http://openajax.org/hub","0.6",{});
+}
diff --git a/lib/dojo/Stateful.js b/lib/dojo/Stateful.js
new file mode 100644 (file)
index 0000000..136b319
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.Stateful"]){
+dojo._hasResource["dojo.Stateful"]=true;
+dojo.provide("dojo.Stateful");
+dojo.declare("dojo.Stateful",null,{postscript:function(_1){
+if(_1){
+dojo.mixin(this,_1);
+}
+},get:function(_2){
+return this[_2];
+},set:function(_3,_4){
+if(typeof _3==="object"){
+for(var x in _3){
+this.set(x,_3[x]);
+}
+return this;
+}
+var _5=this[_3];
+this[_3]=_4;
+if(this._watchCallbacks){
+this._watchCallbacks(_3,_5,_4);
+}
+return this;
+},watch:function(_6,_7){
+var _8=this._watchCallbacks;
+if(!_8){
+var _9=this;
+_8=this._watchCallbacks=function(_a,_b,_c,_d){
+var _e=function(_f){
+for(var i=0,l=_f&&_f.length;i<l;i++){
+try{
+_f[i].call(_9,_a,_b,_c);
+}
+catch(e){
+console.error(e);
+}
+}
+};
+_e(_8[_a]);
+if(!_d){
+_e(_8["*"]);
+}
+};
+}
+if(!_7&&typeof _6==="function"){
+_7=_6;
+_6="*";
+}
+var _10=_8[_6];
+if(typeof _10!=="object"){
+_10=_8[_6]=[];
+}
+_10.push(_7);
+return {unwatch:function(){
+_10.splice(dojo.indexOf(_10,_7),1);
+}};
+}});
+}
diff --git a/lib/dojo/_base.js b/lib/dojo/_base.js
new file mode 100644 (file)
index 0000000..7309740
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base"]){
+dojo._hasResource["dojo._base"]=true;
+dojo.provide("dojo._base");
+dojo.require("dojo._base.lang");
+dojo.require("dojo._base.array");
+dojo.require("dojo._base.declare");
+dojo.require("dojo._base.connect");
+dojo.require("dojo._base.Deferred");
+dojo.require("dojo._base.json");
+dojo.require("dojo._base.Color");
+dojo.requireIf(dojo.isBrowser,"dojo._base.browser");
+}
diff --git a/lib/dojo/_base/Color.js b/lib/dojo/_base/Color.js
new file mode 100644 (file)
index 0000000..0ee5888
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.Color"]){
+dojo._hasResource["dojo._base.Color"]=true;
+dojo.provide("dojo._base.Color");
+dojo.require("dojo._base.array");
+dojo.require("dojo._base.lang");
+(function(){
+var d=dojo;
+dojo.Color=function(_1){
+if(_1){
+this.setColor(_1);
+}
+};
+dojo.Color.named={black:[0,0,0],silver:[192,192,192],gray:[128,128,128],white:[255,255,255],maroon:[128,0,0],red:[255,0,0],purple:[128,0,128],fuchsia:[255,0,255],green:[0,128,0],lime:[0,255,0],olive:[128,128,0],yellow:[255,255,0],navy:[0,0,128],blue:[0,0,255],teal:[0,128,128],aqua:[0,255,255],transparent:d.config.transparentColor||[255,255,255]};
+dojo.extend(dojo.Color,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){
+var t=this;
+t.r=r;
+t.g=g;
+t.b=b;
+t.a=a;
+},setColor:function(_2){
+if(d.isString(_2)){
+d.colorFromString(_2,this);
+}else{
+if(d.isArray(_2)){
+d.colorFromArray(_2,this);
+}else{
+this._set(_2.r,_2.g,_2.b,_2.a);
+if(!(_2 instanceof d.Color)){
+this.sanitize();
+}
+}
+}
+return this;
+},sanitize:function(){
+return this;
+},toRgb:function(){
+var t=this;
+return [t.r,t.g,t.b];
+},toRgba:function(){
+var t=this;
+return [t.r,t.g,t.b,t.a];
+},toHex:function(){
+var _3=d.map(["r","g","b"],function(x){
+var s=this[x].toString(16);
+return s.length<2?"0"+s:s;
+},this);
+return "#"+_3.join("");
+},toCss:function(_4){
+var t=this,_5=t.r+", "+t.g+", "+t.b;
+return (_4?"rgba("+_5+", "+t.a:"rgb("+_5)+")";
+},toString:function(){
+return this.toCss(true);
+}});
+dojo.blendColors=function(_6,_7,_8,_9){
+var t=_9||new d.Color();
+d.forEach(["r","g","b","a"],function(x){
+t[x]=_6[x]+(_7[x]-_6[x])*_8;
+if(x!="a"){
+t[x]=Math.round(t[x]);
+}
+});
+return t.sanitize();
+};
+dojo.colorFromRgb=function(_a,_b){
+var m=_a.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);
+return m&&dojo.colorFromArray(m[1].split(/\s*,\s*/),_b);
+};
+dojo.colorFromHex=function(_c,_d){
+var t=_d||new d.Color(),_e=(_c.length==4)?4:8,_f=(1<<_e)-1;
+_c=Number("0x"+_c.substr(1));
+if(isNaN(_c)){
+return null;
+}
+d.forEach(["b","g","r"],function(x){
+var c=_c&_f;
+_c>>=_e;
+t[x]=_e==4?17*c:c;
+});
+t.a=1;
+return t;
+};
+dojo.colorFromArray=function(a,obj){
+var t=obj||new d.Color();
+t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));
+if(isNaN(t.a)){
+t.a=1;
+}
+return t.sanitize();
+};
+dojo.colorFromString=function(str,obj){
+var a=d.Color.named[str];
+return a&&d.colorFromArray(a,obj)||d.colorFromRgb(str,obj)||d.colorFromHex(str,obj);
+};
+})();
+}
diff --git a/lib/dojo/_base/Deferred.js b/lib/dojo/_base/Deferred.js
new file mode 100644 (file)
index 0000000..dfbabc4
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.Deferred"]){
+dojo._hasResource["dojo._base.Deferred"]=true;
+dojo.provide("dojo._base.Deferred");
+dojo.require("dojo._base.lang");
+(function(){
+var _1=function(){
+};
+var _2=Object.freeze||function(){
+};
+dojo.Deferred=function(_3){
+var _4,_5,_6,_7,_8;
+var _9=this.promise={};
+function _a(_b){
+if(_5){
+throw new Error("This deferred has already been resolved");
+}
+_4=_b;
+_5=true;
+_c();
+};
+function _c(){
+var _d;
+while(!_d&&_8){
+var _e=_8;
+_8=_8.next;
+if(_d=(_e.progress==_1)){
+_5=false;
+}
+var _f=(_6?_e.error:_e.resolved);
+if(_f){
+try{
+var _10=_f(_4);
+if(_10&&typeof _10.then==="function"){
+_10.then(dojo.hitch(_e.deferred,"resolve"),dojo.hitch(_e.deferred,"reject"));
+continue;
+}
+var _11=_d&&_10===undefined;
+_e.deferred[_11&&_6?"reject":"resolve"](_11?_4:_10);
+}
+catch(e){
+_e.deferred.reject(e);
+}
+}else{
+if(_6){
+_e.deferred.reject(_4);
+}else{
+_e.deferred.resolve(_4);
+}
+}
+}
+};
+this.resolve=this.callback=function(_12){
+this.fired=0;
+this.results=[_12,null];
+_a(_12);
+};
+this.reject=this.errback=function(_13){
+_6=true;
+this.fired=1;
+_a(_13);
+this.results=[null,_13];
+if(!_13||_13.log!==false){
+(dojo.config.deferredOnError||function(x){
+console.error(x);
+})(_13);
+}
+};
+this.progress=function(_14){
+var _15=_8;
+while(_15){
+var _16=_15.progress;
+_16&&_16(_14);
+_15=_15.next;
+}
+};
+this.addCallbacks=function(_17,_18){
+this.then(_17,_18,_1);
+return this;
+};
+this.then=_9.then=function(_19,_1a,_1b){
+var _1c=_1b==_1?this:new dojo.Deferred(_9.cancel);
+var _1d={resolved:_19,error:_1a,progress:_1b,deferred:_1c};
+if(_8){
+_7=_7.next=_1d;
+}else{
+_8=_7=_1d;
+}
+if(_5){
+_c();
+}
+return _1c.promise;
+};
+var _1e=this;
+this.cancel=_9.cancel=function(){
+if(!_5){
+var _1f=_3&&_3(_1e);
+if(!_5){
+if(!(_1f instanceof Error)){
+_1f=new Error(_1f);
+}
+_1f.log=false;
+_1e.reject(_1f);
+}
+}
+};
+_2(_9);
+};
+dojo.extend(dojo.Deferred,{addCallback:function(_20){
+return this.addCallbacks(dojo.hitch.apply(dojo,arguments));
+},addErrback:function(_21){
+return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments));
+},addBoth:function(_22){
+var _23=dojo.hitch.apply(dojo,arguments);
+return this.addCallbacks(_23,_23);
+},fired:-1});
+})();
+dojo.when=function(_24,_25,_26,_27){
+if(_24&&typeof _24.then==="function"){
+return _24.then(_25,_26,_27);
+}
+return _25(_24);
+};
+}
diff --git a/lib/dojo/_base/NodeList.js b/lib/dojo/_base/NodeList.js
new file mode 100644 (file)
index 0000000..6df6db9
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.NodeList"]){
+dojo._hasResource["dojo._base.NodeList"]=true;
+dojo.provide("dojo._base.NodeList");
+dojo.require("dojo._base.lang");
+dojo.require("dojo._base.array");
+(function(){
+var d=dojo;
+var ap=Array.prototype,_1=ap.slice,_2=ap.concat;
+var _3=function(a,_4,_5){
+if(!a.sort){
+a=_1.call(a,0);
+}
+var _6=_5||this._NodeListCtor||d._NodeListCtor;
+a.constructor=_6;
+dojo._mixin(a,_6.prototype);
+a._NodeListCtor=_6;
+return _4?a._stash(_4):a;
+};
+var _7=function(f,a,o){
+a=[0].concat(_1.call(a,0));
+o=o||d.global;
+return function(_8){
+a[0]=_8;
+return f.apply(o,a);
+};
+};
+var _9=function(f,o){
+return function(){
+this.forEach(_7(f,arguments,o));
+return this;
+};
+};
+var _a=function(f,o){
+return function(){
+return this.map(_7(f,arguments,o));
+};
+};
+var _b=function(f,o){
+return function(){
+return this.filter(_7(f,arguments,o));
+};
+};
+var _c=function(f,g,o){
+return function(){
+var a=arguments,_d=_7(f,a,o);
+if(g.call(o||d.global,a)){
+return this.map(_d);
+}
+this.forEach(_d);
+return this;
+};
+};
+var _e=function(a){
+return a.length==1&&(typeof a[0]=="string");
+};
+var _f=function(_10){
+var p=_10.parentNode;
+if(p){
+p.removeChild(_10);
+}
+};
+dojo.NodeList=function(){
+return _3(Array.apply(null,arguments));
+};
+d._NodeListCtor=d.NodeList;
+var nl=d.NodeList,nlp=nl.prototype;
+nl._wrap=nlp._wrap=_3;
+nl._adaptAsMap=_a;
+nl._adaptAsForEach=_9;
+nl._adaptAsFilter=_b;
+nl._adaptWithCondition=_c;
+d.forEach(["slice","splice"],function(_11){
+var f=ap[_11];
+nlp[_11]=function(){
+return this._wrap(f.apply(this,arguments),_11=="slice"?this:null);
+};
+});
+d.forEach(["indexOf","lastIndexOf","every","some"],function(_12){
+var f=d[_12];
+nlp[_12]=function(){
+return f.apply(d,[this].concat(_1.call(arguments,0)));
+};
+});
+d.forEach(["attr","style"],function(_13){
+nlp[_13]=_c(d[_13],_e);
+});
+d.forEach(["connect","addClass","removeClass","toggleClass","empty","removeAttr"],function(_14){
+nlp[_14]=_9(d[_14]);
+});
+dojo.extend(dojo.NodeList,{_normalize:function(_15,_16){
+var _17=_15.parse===true?true:false;
+if(typeof _15.template=="string"){
+var _18=_15.templateFunc||(dojo.string&&dojo.string.substitute);
+_15=_18?_18(_15.template,_15):_15;
+}
+var _19=(typeof _15);
+if(_19=="string"||_19=="number"){
+_15=dojo._toDom(_15,(_16&&_16.ownerDocument));
+if(_15.nodeType==11){
+_15=dojo._toArray(_15.childNodes);
+}else{
+_15=[_15];
+}
+}else{
+if(!dojo.isArrayLike(_15)){
+_15=[_15];
+}else{
+if(!dojo.isArray(_15)){
+_15=dojo._toArray(_15);
+}
+}
+}
+if(_17){
+_15._runParse=true;
+}
+return _15;
+},_cloneNode:function(_1a){
+return _1a.cloneNode(true);
+},_place:function(ary,_1b,_1c,_1d){
+if(_1b.nodeType!=1&&_1c=="only"){
+return;
+}
+var _1e=_1b,_1f;
+var _20=ary.length;
+for(var i=_20-1;i>=0;i--){
+var _21=(_1d?this._cloneNode(ary[i]):ary[i]);
+if(ary._runParse&&dojo.parser&&dojo.parser.parse){
+if(!_1f){
+_1f=_1e.ownerDocument.createElement("div");
+}
+_1f.appendChild(_21);
+dojo.parser.parse(_1f);
+_21=_1f.firstChild;
+while(_1f.firstChild){
+_1f.removeChild(_1f.firstChild);
+}
+}
+if(i==_20-1){
+dojo.place(_21,_1e,_1c);
+}else{
+_1e.parentNode.insertBefore(_21,_1e);
+}
+_1e=_21;
+}
+},_stash:function(_22){
+this._parent=_22;
+return this;
+},end:function(){
+if(this._parent){
+return this._parent;
+}else{
+return new this._NodeListCtor();
+}
+},concat:function(_23){
+var t=d.isArray(this)?this:_1.call(this,0),m=d.map(arguments,function(a){
+return a&&!d.isArray(a)&&(typeof NodeList!="undefined"&&a.constructor===NodeList||a.constructor===this._NodeListCtor)?_1.call(a,0):a;
+});
+return this._wrap(_2.apply(t,m),this);
+},map:function(_24,obj){
+return this._wrap(d.map(this,_24,obj),this);
+},forEach:function(_25,_26){
+d.forEach(this,_25,_26);
+return this;
+},coords:_a(d.coords),position:_a(d.position),place:function(_27,_28){
+var _29=d.query(_27)[0];
+return this.forEach(function(_2a){
+d.place(_2a,_29,_28);
+});
+},orphan:function(_2b){
+return (_2b?d._filterQueryResult(this,_2b):this).forEach(_f);
+},adopt:function(_2c,_2d){
+return d.query(_2c).place(this[0],_2d)._stash(this);
+},query:function(_2e){
+if(!_2e){
+return this;
+}
+var ret=this.map(function(_2f){
+return d.query(_2e,_2f).filter(function(_30){
+return _30!==undefined;
+});
+});
+return this._wrap(_2.apply([],ret),this);
+},filter:function(_31){
+var a=arguments,_32=this,_33=0;
+if(typeof _31=="string"){
+_32=d._filterQueryResult(this,a[0]);
+if(a.length==1){
+return _32._stash(this);
+}
+_33=1;
+}
+return this._wrap(d.filter(_32,a[_33],a[_33+1]),this);
+},addContent:function(_34,_35){
+_34=this._normalize(_34,this[0]);
+for(var i=0,_36;_36=this[i];i++){
+this._place(_34,_36,_35,i>0);
+}
+return this;
+},instantiate:function(_37,_38){
+var c=d.isFunction(_37)?_37:d.getObject(_37);
+_38=_38||{};
+return this.forEach(function(_39){
+new c(_38,_39);
+});
+},at:function(){
+var t=new this._NodeListCtor();
+d.forEach(arguments,function(i){
+if(i<0){
+i=this.length+i;
+}
+if(this[i]){
+t.push(this[i]);
+}
+},this);
+return t._stash(this);
+}});
+nl.events=["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"];
+d.forEach(nl.events,function(evt){
+var _3a="on"+evt;
+nlp[_3a]=function(a,b){
+return this.connect(_3a,a,b);
+};
+});
+})();
+}
diff --git a/lib/dojo/_base/_loader/bootstrap.js b/lib/dojo/_base/_loader/bootstrap.js
new file mode 100644 (file)
index 0000000..7cc168e
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+
+(function(){
+if(typeof this["loadFirebugConsole"]=="function"){
+this["loadFirebugConsole"]();
+}else{
+this.console=this.console||{};
+var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];
+var i=0,tn;
+while((tn=cn[i++])){
+if(!console[tn]){
+(function(){
+var _1=tn+"";
+console[_1]=("log" in console)?function(){
+var a=Array.apply({},arguments);
+a.unshift(_1+":");
+console["log"](a.join(" "));
+}:function(){
+};
+console[_1]._fake=true;
+})();
+}
+}
+}
+if(typeof dojo=="undefined"){
+dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};
+}
+var d=dojo;
+if(typeof dijit=="undefined"){
+dijit={_scopeName:"dijit"};
+}
+if(typeof dojox=="undefined"){
+dojox={_scopeName:"dojox"};
+}
+if(!d._scopeArgs){
+d._scopeArgs=[dojo,dijit,dojox];
+}
+d.global=this;
+d.config={isDebug:false,debugAtAllCosts:false};
+if(typeof djConfig!="undefined"){
+for(var _2 in djConfig){
+d.config[_2]=djConfig[_2];
+}
+}
+dojo.locale=d.config.locale;
+var _3="$Rev: 22487 $".match(/\d+/);
+dojo.version={major:1,minor:5,patch:0,flag:"",revision:_3?+_3[0]:NaN,toString:function(){
+with(d.version){
+return major+"."+minor+"."+patch+flag+" ("+revision+")";
+}
+}};
+if(typeof OpenAjax!="undefined"){
+OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());
+}
+var _4,_5,_6={};
+for(var i in {toString:1}){
+_4=[];
+break;
+}
+dojo._extraNames=_4=_4||["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];
+_5=_4.length;
+dojo._mixin=function(_7,_8){
+var _9,s,i;
+for(_9 in _8){
+s=_8[_9];
+if(!(_9 in _7)||(_7[_9]!==s&&(!(_9 in _6)||_6[_9]!==s))){
+_7[_9]=s;
+}
+}
+if(_5&&_8){
+for(i=0;i<_5;++i){
+_9=_4[i];
+s=_8[_9];
+if(!(_9 in _7)||(_7[_9]!==s&&(!(_9 in _6)||_6[_9]!==s))){
+_7[_9]=s;
+}
+}
+}
+return _7;
+};
+dojo.mixin=function(_a,_b){
+if(!_a){
+_a={};
+}
+for(var i=1,l=arguments.length;i<l;i++){
+d._mixin(_a,arguments[i]);
+}
+return _a;
+};
+dojo._getProp=function(_c,_d,_e){
+var _f=_e||d.global;
+for(var i=0,p;_f&&(p=_c[i]);i++){
+if(i==0&&d._scopeMap[p]){
+p=d._scopeMap[p];
+}
+_f=(p in _f?_f[p]:(_d?_f[p]={}:undefined));
+}
+return _f;
+};
+dojo.setObject=function(_10,_11,_12){
+var _13=_10.split("."),p=_13.pop(),obj=d._getProp(_13,true,_12);
+return obj&&p?(obj[p]=_11):undefined;
+};
+dojo.getObject=function(_14,_15,_16){
+return d._getProp(_14.split("."),_15,_16);
+};
+dojo.exists=function(_17,obj){
+return !!d.getObject(_17,false,obj);
+};
+dojo["eval"]=function(_18){
+return d.global.eval?d.global.eval(_18):eval(_18);
+};
+d.deprecated=d.experimental=function(){
+};
+})();
diff --git a/lib/dojo/_base/_loader/hostenv_browser.js b/lib/dojo/_base/_loader/hostenv_browser.js
new file mode 100644 (file)
index 0000000..0d74683
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+       Copyright (c) 2004-2010, 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(typeof window!="undefined"){
+dojo.isBrowser=true;
+dojo._name="browser";
+(function(){
+var d=dojo;
+if(document&&document.getElementsByTagName){
+var _1=document.getElementsByTagName("script");
+var _2=/dojo(\.xd)?\.js(\W|$)/i;
+for(var i=0;i<_1.length;i++){
+var _3=_1[i].getAttribute("src");
+if(!_3){
+continue;
+}
+var m=_3.match(_2);
+if(m){
+if(!d.config.baseUrl){
+d.config.baseUrl=_3.substring(0,m.index);
+}
+var _4=_1[i].getAttribute("djConfig");
+if(_4){
+var _5=eval("({ "+_4+" })");
+for(var x in _5){
+dojo.config[x]=_5[x];
+}
+}
+break;
+}
+}
+}
+d.baseUrl=d.config.baseUrl;
+var n=navigator;
+var _6=n.userAgent,_7=n.appVersion,tv=parseFloat(_7);
+if(_6.indexOf("Opera")>=0){
+d.isOpera=tv;
+}
+if(_6.indexOf("AdobeAIR")>=0){
+d.isAIR=1;
+}
+d.isKhtml=(_7.indexOf("Konqueror")>=0)?tv:0;
+d.isWebKit=parseFloat(_6.split("WebKit/")[1])||undefined;
+d.isChrome=parseFloat(_6.split("Chrome/")[1])||undefined;
+d.isMac=_7.indexOf("Macintosh")>=0;
+var _8=Math.max(_7.indexOf("WebKit"),_7.indexOf("Safari"),0);
+if(_8&&!dojo.isChrome){
+d.isSafari=parseFloat(_7.split("Version/")[1]);
+if(!d.isSafari||parseFloat(_7.substr(_8+7))<=419.3){
+d.isSafari=2;
+}
+}
+if(_6.indexOf("Gecko")>=0&&!d.isKhtml&&!d.isWebKit){
+d.isMozilla=d.isMoz=tv;
+}
+if(d.isMoz){
+d.isFF=parseFloat(_6.split("Firefox/")[1]||_6.split("Minefield/")[1])||undefined;
+}
+if(document.all&&!d.isOpera){
+d.isIE=parseFloat(_7.split("MSIE ")[1])||undefined;
+var _9=document.documentMode;
+if(_9&&_9!=5&&Math.floor(d.isIE)!=_9){
+d.isIE=_9;
+}
+}
+if(dojo.isIE&&window.location.protocol==="file:"){
+dojo.config.ieForceActiveXXhr=true;
+}
+d.isQuirks=document.compatMode=="BackCompat";
+d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();
+d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];
+d._xhrObj=function(){
+var _a,_b;
+if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){
+try{
+_a=new XMLHttpRequest();
+}
+catch(e){
+}
+}
+if(!_a){
+for(var i=0;i<3;++i){
+var _c=d._XMLHTTP_PROGIDS[i];
+try{
+_a=new ActiveXObject(_c);
+}
+catch(e){
+_b=e;
+}
+if(_a){
+d._XMLHTTP_PROGIDS=[_c];
+break;
+}
+}
+}
+if(!_a){
+throw new Error("XMLHTTP not available: "+_b);
+}
+return _a;
+};
+d._isDocumentOk=function(_d){
+var _e=_d.status||0,lp=location.protocol;
+return (_e>=200&&_e<300)||_e==304||_e==1223||(!_e&&(lp=="file:"||lp=="chrome:"||lp=="chrome-extension:"||lp=="app:"));
+};
+var _f=window.location+"";
+var _10=document.getElementsByTagName("base");
+var _11=(_10&&_10.length>0);
+d._getText=function(uri,_12){
+var _13=d._xhrObj();
+if(!_11&&dojo._Url){
+uri=(new dojo._Url(_f,uri)).toString();
+}
+if(d.config.cacheBust){
+uri+="";
+uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");
+}
+_13.open("GET",uri,false);
+try{
+_13.send(null);
+if(!d._isDocumentOk(_13)){
+var err=Error("Unable to load "+uri+" status:"+_13.status);
+err.status=_13.status;
+err.responseText=_13.responseText;
+throw err;
+}
+}
+catch(e){
+if(_12){
+return null;
+}
+throw e;
+}
+return _13.responseText;
+};
+var _14=window;
+var _15=function(_16,fp){
+var _17=_14.attachEvent||_14.addEventListener;
+_16=_14.attachEvent?_16:_16.substring(2);
+_17(_16,function(){
+fp.apply(_14,arguments);
+},false);
+};
+d._windowUnloaders=[];
+d.windowUnloaded=function(){
+var mll=d._windowUnloaders;
+while(mll.length){
+(mll.pop())();
+}
+d=null;
+};
+var _18=0;
+d.addOnWindowUnload=function(obj,_19){
+d._onto(d._windowUnloaders,obj,_19);
+if(!_18){
+_18=1;
+_15("onunload",d.windowUnloaded);
+}
+};
+var _1a=0;
+d.addOnUnload=function(obj,_1b){
+d._onto(d._unloaders,obj,_1b);
+if(!_1a){
+_1a=1;
+_15("onbeforeunload",dojo.unloaded);
+}
+};
+})();
+dojo._initFired=false;
+dojo._loadInit=function(e){
+if(dojo._scrollIntervalId){
+clearInterval(dojo._scrollIntervalId);
+dojo._scrollIntervalId=0;
+}
+if(!dojo._initFired){
+dojo._initFired=true;
+if(!dojo.config.afterOnLoad&&window.detachEvent){
+window.detachEvent("onload",dojo._loadInit);
+}
+if(dojo._inFlightCount==0){
+dojo._modulesLoaded();
+}
+}
+};
+if(!dojo.config.afterOnLoad){
+if(document.addEventListener){
+document.addEventListener("DOMContentLoaded",dojo._loadInit,false);
+window.addEventListener("load",dojo._loadInit,false);
+}else{
+if(window.attachEvent){
+window.attachEvent("onload",dojo._loadInit);
+if(!dojo.config.skipIeDomLoaded&&self===self.top){
+dojo._scrollIntervalId=setInterval(function(){
+try{
+if(document.body){
+document.documentElement.doScroll("left");
+dojo._loadInit();
+}
+}
+catch(e){
+}
+},30);
+}
+}
+}
+}
+if(dojo.isIE){
+try{
+(function(){
+document.namespaces.add("v","urn:schemas-microsoft-com:vml");
+var _1c=["*","group","roundrect","oval","shape","rect","imagedata","path","textpath","text"],i=0,l=1,s=document.createStyleSheet();
+if(dojo.isIE>=8){
+i=1;
+l=_1c.length;
+}
+for(;i<l;++i){
+s.addRule("v\\:"+_1c[i],"behavior:url(#default#VML); display:inline-block");
+}
+})();
+}
+catch(e){
+}
+}
+}
+(function(){
+var mp=dojo.config["modulePaths"];
+if(mp){
+for(var _1d in mp){
+dojo.registerModulePath(_1d,mp[_1d]);
+}
+}
+})();
+if(dojo.config.isDebug){
+dojo.require("dojo._firebug.firebug");
+}
+if(dojo.config.debugAtAllCosts){
+dojo.config.useXDomain=true;
+dojo.require("dojo._base._loader.loader_xd");
+dojo.require("dojo._base._loader.loader_debug");
+dojo.require("dojo.i18n");
+}
diff --git a/lib/dojo/_base/_loader/hostenv_ff_ext.js b/lib/dojo/_base/_loader/hostenv_ff_ext.js
new file mode 100644 (file)
index 0000000..0824239
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+       Copyright (c) 2004-2010, 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(typeof window!="undefined"){
+dojo.isBrowser=true;
+dojo._name="browser";
+(function(){
+var d=dojo;
+d.baseUrl=d.config.baseUrl;
+var n=navigator;
+var _1=n.userAgent;
+var _2=n.appVersion;
+var tv=parseFloat(_2);
+d.isMozilla=d.isMoz=tv;
+if(d.isMoz){
+d.isFF=parseFloat(_1.split("Firefox/")[1])||undefined;
+}
+d.isQuirks=document.compatMode=="BackCompat";
+d.locale=dojo.config.locale||n.language.toLowerCase();
+d._xhrObj=function(){
+return new XMLHttpRequest();
+};
+var _3=d._loadUri;
+d._loadUri=function(_4,cb){
+var _5=["file:","chrome:","resource:"].some(function(_6){
+return String(_4).indexOf(_6)==0;
+});
+if(_5){
+var l=Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
+var _7=l.loadSubScript(_4,d.global);
+if(cb){
+cb(_7);
+}
+return true;
+}else{
+return _3.apply(d,arguments);
+}
+};
+d._isDocumentOk=function(_8){
+var _9=_8.status||0;
+return (_9>=200&&_9<300)||_9==304||_9==1223||(!_9&&(location.protocol=="file:"||location.protocol=="chrome:"));
+};
+var _a=false;
+d._getText=function(_b,_c){
+var _d=d._xhrObj();
+if(!_a&&dojo._Url){
+_b=(new dojo._Url(_b)).toString();
+}
+if(d.config.cacheBust){
+_b+="";
+_b+=(_b.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");
+}
+var _e=["file:","chrome:","resource:"].some(function(_f){
+return String(_b).indexOf(_f)==0;
+});
+if(_e){
+var _10=Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
+var _11=Components.classes["@mozilla.org/scriptableinputstream;1"].getService(Components.interfaces.nsIScriptableInputStream);
+var _12=_10.newChannel(_b,null,null);
+var _13=_12.open();
+_11.init(_13);
+var str=_11.read(_13.available());
+_11.close();
+_13.close();
+return str;
+}else{
+_d.open("GET",_b,false);
+try{
+_d.send(null);
+if(!d._isDocumentOk(_d)){
+var err=Error("Unable to load "+_b+" status:"+_d.status);
+err.status=_d.status;
+err.responseText=_d.responseText;
+throw err;
+}
+}
+catch(e){
+if(_c){
+return null;
+}
+throw e;
+}
+return _d.responseText;
+}
+};
+d._windowUnloaders=[];
+d.windowUnloaded=function(){
+var mll=d._windowUnloaders;
+while(mll.length){
+(mll.pop())();
+}
+};
+d.addOnWindowUnload=function(obj,_14){
+d._onto(d._windowUnloaders,obj,_14);
+};
+var _15=[];
+var _16=null;
+dojo._defaultContext=[window,document];
+dojo.pushContext=function(g,d){
+var old=[dojo.global,dojo.doc];
+_15.push(old);
+var n;
+if(!g&&!d){
+n=dojo._defaultContext;
+}else{
+n=[g,d];
+if(!d&&dojo.isString(g)){
+var t=document.getElementById(g);
+if(t.contentDocument){
+n=[t.contentWindow,t.contentDocument];
+}
+}
+}
+_16=n;
+dojo.setContext.apply(dojo,n);
+return old;
+};
+dojo.popContext=function(){
+var oc=_16;
+if(!_15.length){
+return oc;
+}
+dojo.setContext.apply(dojo,_15.pop());
+return oc;
+};
+dojo._inContext=function(g,d,f){
+var a=dojo._toArray(arguments);
+f=a.pop();
+if(a.length==1){
+d=null;
+}
+dojo.pushContext(g,d);
+var r=f();
+dojo.popContext();
+return r;
+};
+})();
+dojo._initFired=false;
+dojo._loadInit=function(e){
+dojo._initFired=true;
+var _17=(e&&e.type)?e.type.toLowerCase():"load";
+if(arguments.callee.initialized||(_17!="domcontentloaded"&&_17!="load")){
+return;
+}
+arguments.callee.initialized=true;
+if(dojo._inFlightCount==0){
+dojo._modulesLoaded();
+}
+};
+if(!dojo.config.afterOnLoad){
+window.addEventListener("DOMContentLoaded",function(e){
+dojo._loadInit(e);
+},false);
+}
+}
+(function(){
+var mp=dojo.config["modulePaths"];
+if(mp){
+for(var _18 in mp){
+dojo.registerModulePath(_18,mp[_18]);
+}
+}
+})();
+if(dojo.config.isDebug){
+console.log=function(m){
+var s=Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
+s.logStringMessage(m);
+};
+console.debug=function(){
+};
+}
diff --git a/lib/dojo/_base/_loader/hostenv_rhino.js b/lib/dojo/_base/_loader/hostenv_rhino.js
new file mode 100644 (file)
index 0000000..9cd8827
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+       Copyright (c) 2004-2010, 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.config["baseUrl"]){
+dojo.baseUrl=dojo.config["baseUrl"];
+}else{
+dojo.baseUrl="./";
+}
+dojo.locale=dojo.locale||String(java.util.Locale.getDefault().toString().replace("_","-").toLowerCase());
+dojo._name="rhino";
+dojo.isRhino=true;
+if(typeof print=="function"){
+console.debug=print;
+}
+if(!("byId" in dojo)){
+dojo.byId=function(id,_1){
+if(id&&(typeof id=="string"||id instanceof String)){
+if(!_1){
+_1=document;
+}
+return _1.getElementById(id);
+}
+return id;
+};
+}
+dojo._isLocalUrl=function(_2){
+var _3=(new java.io.File(_2)).exists();
+if(!_3){
+var _4;
+try{
+_4=(new java.net.URL(_2)).openStream();
+_4.close();
+}
+finally{
+if(_4&&_4.close){
+_4.close();
+}
+}
+}
+return _3;
+};
+dojo._loadUri=function(_5,cb){
+try{
+var _6;
+try{
+_6=dojo._isLocalUrl(_5);
+}
+catch(e){
+return false;
+}
+if(cb){
+var _7=(_6?readText:readUri)(_5,"UTF-8");
+if(!eval("'‏'").length){
+_7=String(_7).replace(/[\u200E\u200F\u202A-\u202E]/g,function(_8){
+return "\\u"+_8.charCodeAt(0).toString(16);
+});
+}
+cb(eval("("+_7+")"));
+}else{
+load(_5);
+}
+return true;
+}
+catch(e){
+return false;
+}
+};
+dojo.exit=function(_9){
+quit(_9);
+};
+function readText(_a,_b){
+_b=_b||"utf-8";
+var jf=new java.io.File(_a);
+var is=new java.io.FileInputStream(jf);
+return dj_readInputStream(is,_b);
+};
+function readUri(_c,_d){
+var _e=(new java.net.URL(_c)).openConnection();
+_d=_d||_e.getContentEncoding()||"utf-8";
+var is=_e.getInputStream();
+return dj_readInputStream(is,_d);
+};
+function dj_readInputStream(is,_f){
+var _10=new java.io.BufferedReader(new java.io.InputStreamReader(is,_f));
+try{
+var sb=new java.lang.StringBuffer();
+var _11="";
+while((_11=_10.readLine())!==null){
+sb.append(_11);
+sb.append(java.lang.System.getProperty("line.separator"));
+}
+return sb.toString();
+}
+finally{
+_10.close();
+}
+};
+dojo._getText=function(uri,_12){
+try{
+var _13=dojo._isLocalUrl(uri);
+var _14=(_13?readText:readUri)(uri,"UTF-8");
+if(_14!==null){
+_14+="";
+}
+return _14;
+}
+catch(e){
+if(_12){
+return null;
+}else{
+throw e;
+}
+}
+};
+dojo.doc=typeof document!="undefined"?document:null;
+dojo.body=function(){
+return document.body;
+};
+if(typeof setTimeout=="undefined"||typeof clearTimeout=="undefined"){
+dojo._timeouts=[];
+clearTimeout=function(idx){
+if(!dojo._timeouts[idx]){
+return;
+}
+dojo._timeouts[idx].stop();
+};
+setTimeout=function(_15,_16){
+var def={sleepTime:_16,hasSlept:false,run:function(){
+if(!this.hasSlept){
+this.hasSlept=true;
+java.lang.Thread.currentThread().sleep(this.sleepTime);
+}
+try{
+_15();
+}
+catch(e){
+}
+}};
+var _17=new java.lang.Runnable(def);
+var _18=new java.lang.Thread(_17);
+_18.start();
+return dojo._timeouts.push(_18)-1;
+};
+}
+if(dojo.config["modulePaths"]){
+for(var param in dojo.config["modulePaths"]){
+dojo.registerModulePath(param,dojo.config["modulePaths"][param]);
+}
+}
diff --git a/lib/dojo/_base/_loader/hostenv_spidermonkey.js b/lib/dojo/_base/_loader/hostenv_spidermonkey.js
new file mode 100644 (file)
index 0000000..ca63f16
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+       Copyright (c) 2004-2010, 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.config["baseUrl"]){
+dojo.baseUrl=dojo.config["baseUrl"];
+}else{
+dojo.baseUrl="./";
+}
+dojo._name="spidermonkey";
+dojo.isSpidermonkey=true;
+dojo.exit=function(_1){
+quit(_1);
+};
+if(typeof print=="function"){
+console.debug=print;
+}
+if(typeof line2pc=="undefined"){
+throw new Error("attempt to use SpiderMonkey host environment when no 'line2pc' global");
+}
+dojo._spidermonkeyCurrentFile=function(_2){
+var s="";
+try{
+throw Error("whatever");
+}
+catch(e){
+s=e.stack;
+}
+var _3=s.match(/[^@]*\.js/gi);
+if(!_3){
+throw Error("could not parse stack string: '"+s+"'");
+}
+var _4=(typeof _2!="undefined"&&_2)?_3[_2+1]:_3[_3.length-1];
+if(!_4){
+throw Error("could not find file name in stack string '"+s+"'");
+}
+return _4;
+};
+dojo._loadUri=function(_5){
+var ok=load(_5);
+return 1;
+};
+if(dojo.config["modulePaths"]){
+for(var param in dojo.config["modulePaths"]){
+dojo.registerModulePath(param,dojo.config["modulePaths"][param]);
+}
+}
diff --git a/lib/dojo/_base/_loader/loader.js b/lib/dojo/_base/_loader/loader.js
new file mode 100644 (file)
index 0000000..3f31040
--- /dev/null
@@ -0,0 +1,300 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.foo"]){
+dojo._hasResource["dojo.foo"]=true;
+(function(){
+var d=dojo;
+d.mixin(d,{_loadedModules:{},_inFlightCount:0,_hasResource:{},_modulePrefixes:{dojo:{name:"dojo",value:"."},doh:{name:"doh",value:"../util/doh"},tests:{name:"tests",value:"tests"}},_moduleHasPrefix:function(_1){
+var mp=d._modulePrefixes;
+return !!(mp[_1]&&mp[_1].value);
+},_getModulePrefix:function(_2){
+var mp=d._modulePrefixes;
+if(d._moduleHasPrefix(_2)){
+return mp[_2].value;
+}
+return _2;
+},_loadedUrls:[],_postLoad:false,_loaders:[],_unloaders:[],_loadNotifying:false});
+dojo._loadPath=function(_3,_4,cb){
+var _5=((_3.charAt(0)=="/"||_3.match(/^\w+:/))?"":d.baseUrl)+_3;
+try{
+return !_4?d._loadUri(_5,cb):d._loadUriAndCheck(_5,_4,cb);
+}
+catch(e){
+console.error(e);
+return false;
+}
+};
+dojo._loadUri=function(_6,cb){
+if(d._loadedUrls[_6]){
+return true;
+}
+d._inFlightCount++;
+var _7=d._getText(_6,true);
+if(_7){
+d._loadedUrls[_6]=true;
+d._loadedUrls.push(_6);
+if(cb){
+_7="("+_7+")";
+}else{
+_7=d._scopePrefix+_7+d._scopeSuffix;
+}
+if(!d.isIE){
+_7+="\r\n//@ sourceURL="+_6;
+}
+var _8=d["eval"](_7);
+if(cb){
+cb(_8);
+}
+}
+if(--d._inFlightCount==0&&d._postLoad&&d._loaders.length){
+setTimeout(function(){
+if(d._inFlightCount==0){
+d._callLoaded();
+}
+},0);
+}
+return !!_7;
+};
+dojo._loadUriAndCheck=function(_9,_a,cb){
+var ok=false;
+try{
+ok=d._loadUri(_9,cb);
+}
+catch(e){
+console.error("failed loading "+_9+" with error: "+e);
+}
+return !!(ok&&d._loadedModules[_a]);
+};
+dojo.loaded=function(){
+d._loadNotifying=true;
+d._postLoad=true;
+var _b=d._loaders;
+d._loaders=[];
+for(var x=0;x<_b.length;x++){
+_b[x]();
+}
+d._loadNotifying=false;
+if(d._postLoad&&d._inFlightCount==0&&_b.length){
+d._callLoaded();
+}
+};
+dojo.unloaded=function(){
+var _c=d._unloaders;
+while(_c.length){
+(_c.pop())();
+}
+};
+d._onto=function(_d,_e,fn){
+if(!fn){
+_d.push(_e);
+}else{
+if(fn){
+var _f=(typeof fn=="string")?_e[fn]:fn;
+_d.push(function(){
+_f.call(_e);
+});
+}
+}
+};
+dojo.ready=dojo.addOnLoad=function(obj,_10){
+d._onto(d._loaders,obj,_10);
+if(d._postLoad&&d._inFlightCount==0&&!d._loadNotifying){
+d._callLoaded();
+}
+};
+var dca=d.config.addOnLoad;
+if(dca){
+d.addOnLoad[(dca instanceof Array?"apply":"call")](d,dca);
+}
+dojo._modulesLoaded=function(){
+if(d._postLoad){
+return;
+}
+if(d._inFlightCount>0){
+console.warn("files still in flight!");
+return;
+}
+d._callLoaded();
+};
+dojo._callLoaded=function(){
+if(typeof setTimeout=="object"||(d.config.useXDomain&&d.isOpera)){
+setTimeout(d.isAIR?function(){
+d.loaded();
+}:d._scopeName+".loaded();",0);
+}else{
+d.loaded();
+}
+};
+dojo._getModuleSymbols=function(_11){
+var _12=_11.split(".");
+for(var i=_12.length;i>0;i--){
+var _13=_12.slice(0,i).join(".");
+if(i==1&&!d._moduleHasPrefix(_13)){
+_12[0]="../"+_12[0];
+}else{
+var _14=d._getModulePrefix(_13);
+if(_14!=_13){
+_12.splice(0,i,_14);
+break;
+}
+}
+}
+return _12;
+};
+dojo._global_omit_module_check=false;
+dojo.loadInit=function(_15){
+_15();
+};
+dojo._loadModule=dojo.require=function(_16,_17){
+_17=d._global_omit_module_check||_17;
+var _18=d._loadedModules[_16];
+if(_18){
+return _18;
+}
+var _19=d._getModuleSymbols(_16).join("/")+".js";
+var _1a=!_17?_16:null;
+var ok=d._loadPath(_19,_1a);
+if(!ok&&!_17){
+throw new Error("Could not load '"+_16+"'; last tried '"+_19+"'");
+}
+if(!_17&&!d._isXDomain){
+_18=d._loadedModules[_16];
+if(!_18){
+throw new Error("symbol '"+_16+"' is not defined after loading '"+_19+"'");
+}
+}
+return _18;
+};
+dojo.provide=function(_1b){
+_1b=_1b+"";
+return (d._loadedModules[_1b]=d.getObject(_1b,true));
+};
+dojo.platformRequire=function(_1c){
+var _1d=_1c.common||[];
+var _1e=_1d.concat(_1c[d._name]||_1c["default"]||[]);
+for(var x=0;x<_1e.length;x++){
+var _1f=_1e[x];
+if(_1f.constructor==Array){
+d._loadModule.apply(d,_1f);
+}else{
+d._loadModule(_1f);
+}
+}
+};
+dojo.requireIf=function(_20,_21){
+if(_20===true){
+var _22=[];
+for(var i=1;i<arguments.length;i++){
+_22.push(arguments[i]);
+}
+d.require.apply(d,_22);
+}
+};
+dojo.requireAfterIf=d.requireIf;
+dojo.registerModulePath=function(_23,_24){
+d._modulePrefixes[_23]={name:_23,value:_24};
+};
+dojo.requireLocalization=function(_25,_26,_27,_28){
+d.require("dojo.i18n");
+d.i18n._requireLocalization.apply(d.hostenv,arguments);
+};
+var ore=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),ire=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");
+dojo._Url=function(){
+var n=null,_29=arguments,uri=[_29[0]];
+for(var i=1;i<_29.length;i++){
+if(!_29[i]){
+continue;
+}
+var _2a=new d._Url(_29[i]+""),_2b=new d._Url(uri[0]+"");
+if(_2a.path==""&&!_2a.scheme&&!_2a.authority&&!_2a.query){
+if(_2a.fragment!=n){
+_2b.fragment=_2a.fragment;
+}
+_2a=_2b;
+}else{
+if(!_2a.scheme){
+_2a.scheme=_2b.scheme;
+if(!_2a.authority){
+_2a.authority=_2b.authority;
+if(_2a.path.charAt(0)!="/"){
+var _2c=_2b.path.substring(0,_2b.path.lastIndexOf("/")+1)+_2a.path;
+var _2d=_2c.split("/");
+for(var j=0;j<_2d.length;j++){
+if(_2d[j]=="."){
+if(j==_2d.length-1){
+_2d[j]="";
+}else{
+_2d.splice(j,1);
+j--;
+}
+}else{
+if(j>0&&!(j==1&&_2d[0]=="")&&_2d[j]==".."&&_2d[j-1]!=".."){
+if(j==(_2d.length-1)){
+_2d.splice(j,1);
+_2d[j-1]="";
+}else{
+_2d.splice(j-1,2);
+j-=2;
+}
+}
+}
+}
+_2a.path=_2d.join("/");
+}
+}
+}
+}
+uri=[];
+if(_2a.scheme){
+uri.push(_2a.scheme,":");
+}
+if(_2a.authority){
+uri.push("//",_2a.authority);
+}
+uri.push(_2a.path);
+if(_2a.query){
+uri.push("?",_2a.query);
+}
+if(_2a.fragment){
+uri.push("#",_2a.fragment);
+}
+}
+this.uri=uri.join("");
+var r=this.uri.match(ore);
+this.scheme=r[2]||(r[1]?"":n);
+this.authority=r[4]||(r[3]?"":n);
+this.path=r[5];
+this.query=r[7]||(r[6]?"":n);
+this.fragment=r[9]||(r[8]?"":n);
+if(this.authority!=n){
+r=this.authority.match(ire);
+this.user=r[3]||n;
+this.password=r[4]||n;
+this.host=r[6]||r[7];
+this.port=r[9]||n;
+}
+};
+dojo._Url.prototype.toString=function(){
+return this.uri;
+};
+dojo.moduleUrl=function(_2e,url){
+var loc=d._getModuleSymbols(_2e).join("/");
+if(!loc){
+return null;
+}
+if(loc.lastIndexOf("/")!=loc.length-1){
+loc+="/";
+}
+var _2f=loc.indexOf(":");
+if(loc.charAt(0)!="/"&&(_2f==-1||_2f>loc.indexOf("/"))){
+loc=d.baseUrl+loc;
+}
+return new d._Url(loc,url);
+};
+})();
+}
diff --git a/lib/dojo/_base/_loader/loader_debug.js b/lib/dojo/_base/_loader/loader_debug.js
new file mode 100644 (file)
index 0000000..a28040f
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base._loader.loader_debug"]){
+dojo._hasResource["dojo._base._loader.loader_debug"]=true;
+dojo.provide("dojo._base._loader.loader_debug");
+dojo.nonDebugProvide=dojo.provide;
+dojo.provide=function(_1){
+var _2=dojo["_xdDebugQueue"];
+if(_2&&_2.length>0&&_1==_2["currentResourceName"]){
+if(dojo.isAIR){
+window.setTimeout(function(){
+dojo._xdDebugFileLoaded(_1);
+},1);
+}else{
+window.setTimeout(dojo._scopeName+"._xdDebugFileLoaded('"+_1+"')",1);
+}
+}
+return dojo.nonDebugProvide.apply(dojo,arguments);
+};
+dojo._xdDebugFileLoaded=function(_3){
+if(!dojo._xdDebugScopeChecked){
+if(dojo._scopeName!="dojo"){
+window.dojo=window[dojo.config.scopeMap[0][1]];
+window.dijit=window[dojo.config.scopeMap[1][1]];
+window.dojox=window[dojo.config.scopeMap[2][1]];
+}
+dojo._xdDebugScopeChecked=true;
+}
+var _4=dojo._xdDebugQueue;
+if(_3&&_3==_4.currentResourceName){
+_4.shift();
+}
+if(_4.length==0){
+dojo._xdWatchInFlight();
+}
+if(_4.length==0){
+_4.currentResourceName=null;
+for(var _5 in dojo._xdInFlight){
+if(dojo._xdInFlight[_5]===true){
+return;
+}
+}
+dojo._xdNotifyLoaded();
+}else{
+if(_3==_4.currentResourceName){
+_4.currentResourceName=_4[0].resourceName;
+var _6=document.createElement("script");
+_6.type="text/javascript";
+_6.src=_4[0].resourcePath;
+document.getElementsByTagName("head")[0].appendChild(_6);
+}
+}
+};
+}
diff --git a/lib/dojo/_base/_loader/loader_xd.js b/lib/dojo/_base/_loader/loader_xd.js
new file mode 100644 (file)
index 0000000..2ecab3d
--- /dev/null
@@ -0,0 +1,465 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base._loader.loader_xd"]){
+dojo._hasResource["dojo._base._loader.loader_xd"]=true;
+dojo.provide("dojo._base._loader.loader_xd");
+dojo._xdReset=function(){
+dojo._isXDomain=dojo.config.useXDomain||false;
+dojo._xdClearInterval();
+dojo._xdInFlight={};
+dojo._xdOrderedReqs=[];
+dojo._xdDepMap={};
+dojo._xdContents=[];
+dojo._xdDefList=[];
+};
+dojo._xdClearInterval=function(){
+if(dojo._xdTimer){
+clearInterval(dojo._xdTimer);
+dojo._xdTimer=0;
+}
+};
+dojo._xdReset();
+dojo._xdCreateResource=function(_1,_2,_3){
+var _4=_1.replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,"");
+var _5=[];
+var _6=/dojo.(require|requireIf|provide|requireAfterIf|platformRequire|requireLocalization)\s*\(([\w\W]*?)\)/mg;
+var _7;
+while((_7=_6.exec(_4))!=null){
+if(_7[1]=="requireLocalization"){
+eval(_7[0]);
+}else{
+_5.push("\""+_7[1]+"\", "+_7[2]);
+}
+}
+var _8=[];
+_8.push(dojo._scopeName+"._xdResourceLoaded(function("+dojo._scopePrefixArgs+"){\n");
+var _9=dojo._xdExtractLoadInits(_1);
+if(_9){
+_1=_9[0];
+for(var i=1;i<_9.length;i++){
+_8.push(_9[i]+";\n");
+}
+}
+_8.push("return {");
+if(_5.length>0){
+_8.push("depends: [");
+for(i=0;i<_5.length;i++){
+if(i>0){
+_8.push(",\n");
+}
+_8.push("["+_5[i]+"]");
+}
+_8.push("],");
+}
+_8.push("\ndefineResource: function("+dojo._scopePrefixArgs+"){");
+if(!dojo.config["debugAtAllCosts"]||_2=="dojo._base._loader.loader_debug"){
+_8.push(_1);
+}
+_8.push("\n}, resourceName: '"+_2+"', resourcePath: '"+_3+"'};});");
+return _8.join("");
+};
+dojo._xdExtractLoadInits=function(_a){
+var _b=/dojo.loadInit\s*\(/g;
+_b.lastIndex=0;
+var _c=/[\(\)]/g;
+_c.lastIndex=0;
+var _d=[];
+var _e;
+while((_e=_b.exec(_a))){
+_c.lastIndex=_b.lastIndex;
+var _f=1;
+var _10;
+while((_10=_c.exec(_a))){
+if(_10[0]==")"){
+_f-=1;
+}else{
+_f+=1;
+}
+if(_f==0){
+break;
+}
+}
+if(_f!=0){
+throw "unmatched paren around character "+_c.lastIndex+" in: "+_a;
+}
+var _11=_b.lastIndex-_e[0].length;
+_d.push(_a.substring(_11,_c.lastIndex));
+var _12=_c.lastIndex-_11;
+_a=_a.substring(0,_11)+_a.substring(_c.lastIndex,_a.length);
+_b.lastIndex=_c.lastIndex-_12;
+_b.lastIndex=_c.lastIndex;
+}
+if(_d.length>0){
+_d.unshift(_a);
+}
+return (_d.length?_d:null);
+};
+dojo._xdIsXDomainPath=function(_13){
+var _14=_13.indexOf(":");
+var _15=_13.indexOf("/");
+if(_14>0&&_14<_15){
+return true;
+}else{
+var url=dojo.baseUrl;
+_14=url.indexOf(":");
+_15=url.indexOf("/");
+if(_14>0&&_14<_15&&(!location.host||url.indexOf("http://"+location.host)!=0)){
+return true;
+}
+}
+return false;
+};
+dojo._loadPath=function(_16,_17,cb){
+var _18=dojo._xdIsXDomainPath(_16);
+dojo._isXDomain|=_18;
+var uri=((_16.charAt(0)=="/"||_16.match(/^\w+:/))?"":dojo.baseUrl)+_16;
+try{
+return ((!_17||dojo._isXDomain)?dojo._loadUri(uri,cb,_18,_17):dojo._loadUriAndCheck(uri,_17,cb));
+}
+catch(e){
+console.error(e);
+return false;
+}
+};
+dojo._xdCharSet="utf-8";
+dojo._loadUri=function(uri,cb,_19,_1a){
+if(dojo._loadedUrls[uri]){
+return 1;
+}
+if(dojo._isXDomain&&_1a&&_1a!="dojo.i18n"){
+dojo._xdOrderedReqs.push(_1a);
+if(_19||uri.indexOf("/nls/")==-1){
+dojo._xdInFlight[_1a]=true;
+dojo._inFlightCount++;
+}
+if(!dojo._xdTimer){
+if(dojo.isAIR){
+dojo._xdTimer=setInterval(function(){
+dojo._xdWatchInFlight();
+},100);
+}else{
+dojo._xdTimer=setInterval(dojo._scopeName+"._xdWatchInFlight();",100);
+}
+}
+dojo._xdStartTime=(new Date()).getTime();
+}
+if(_19){
+var _1b=uri.lastIndexOf(".");
+if(_1b<=0){
+_1b=uri.length-1;
+}
+var _1c=uri.substring(0,_1b)+".xd";
+if(_1b!=uri.length-1){
+_1c+=uri.substring(_1b,uri.length);
+}
+if(dojo.isAIR){
+_1c=_1c.replace("app:/","/");
+}
+var _1d=document.createElement("script");
+_1d.type="text/javascript";
+if(dojo._xdCharSet){
+_1d.charset=dojo._xdCharSet;
+}
+_1d.src=_1c;
+if(!dojo.headElement){
+dojo._headElement=document.getElementsByTagName("head")[0];
+if(!dojo._headElement){
+dojo._headElement=document.getElementsByTagName("html")[0];
+}
+}
+dojo._headElement.appendChild(_1d);
+}else{
+var _1e=dojo._getText(uri,null,true);
+if(_1e==null){
+return 0;
+}
+if(dojo._isXDomain&&uri.indexOf("/nls/")==-1&&_1a!="dojo.i18n"){
+var res=dojo._xdCreateResource(_1e,_1a,uri);
+dojo.eval(res);
+}else{
+if(cb){
+_1e="("+_1e+")";
+}else{
+_1e=dojo._scopePrefix+_1e+dojo._scopeSuffix;
+}
+var _1f=dojo["eval"](_1e+"\r\n//@ sourceURL="+uri);
+if(cb){
+cb(_1f);
+}
+}
+}
+dojo._loadedUrls[uri]=true;
+dojo._loadedUrls.push(uri);
+return true;
+};
+dojo._xdResourceLoaded=function(res){
+res=res.apply(dojo.global,dojo._scopeArgs);
+var _20=res.depends;
+var _21=null;
+var _22=null;
+var _23=[];
+if(_20&&_20.length>0){
+var dep=null;
+var _24=0;
+var _25=false;
+for(var i=0;i<_20.length;i++){
+dep=_20[i];
+if(dep[0]=="provide"){
+_23.push(dep[1]);
+}else{
+if(!_21){
+_21=[];
+}
+if(!_22){
+_22=[];
+}
+var _26=dojo._xdUnpackDependency(dep);
+if(_26.requires){
+_21=_21.concat(_26.requires);
+}
+if(_26.requiresAfter){
+_22=_22.concat(_26.requiresAfter);
+}
+}
+var _27=dep[0];
+var _28=_27.split(".");
+if(_28.length==2){
+dojo[_28[0]][_28[1]].apply(dojo[_28[0]],dep.slice(1));
+}else{
+dojo[_27].apply(dojo,dep.slice(1));
+}
+}
+if(_23.length==1&&_23[0]=="dojo._base._loader.loader_debug"){
+res.defineResource(dojo);
+}else{
+var _29=dojo._xdContents.push({content:res.defineResource,resourceName:res["resourceName"],resourcePath:res["resourcePath"],isDefined:false})-1;
+for(i=0;i<_23.length;i++){
+dojo._xdDepMap[_23[i]]={requires:_21,requiresAfter:_22,contentIndex:_29};
+}
+}
+for(i=0;i<_23.length;i++){
+dojo._xdInFlight[_23[i]]=false;
+}
+}
+};
+dojo._xdLoadFlattenedBundle=function(_2a,_2b,_2c,_2d){
+_2c=_2c||"root";
+var _2e=dojo.i18n.normalizeLocale(_2c).replace("-","_");
+var _2f=[_2a,"nls",_2b].join(".");
+var _30=dojo["provide"](_2f);
+_30[_2e]=_2d;
+var _31=[_2a,_2e,_2b].join(".");
+var _32=dojo._xdBundleMap[_31];
+if(_32){
+for(var _33 in _32){
+_30[_33]=_2d;
+}
+}
+};
+dojo._xdInitExtraLocales=function(){
+var _34=dojo.config.extraLocale;
+if(_34){
+if(!_34 instanceof Array){
+_34=[_34];
+}
+dojo._xdReqLoc=dojo.xdRequireLocalization;
+dojo.xdRequireLocalization=function(m,b,_35,_36){
+dojo._xdReqLoc(m,b,_35,_36);
+if(_35){
+return;
+}
+for(var i=0;i<_34.length;i++){
+dojo._xdReqLoc(m,b,_34[i],_36);
+}
+};
+}
+};
+dojo._xdBundleMap={};
+dojo.xdRequireLocalization=function(_37,_38,_39,_3a){
+if(dojo._xdInitExtraLocales){
+dojo._xdInitExtraLocales();
+dojo._xdInitExtraLocales=null;
+dojo.xdRequireLocalization.apply(dojo,arguments);
+return;
+}
+var _3b=_3a.split(",");
+var _3c=dojo.i18n.normalizeLocale(_39);
+var _3d="";
+for(var i=0;i<_3b.length;i++){
+if(_3c.indexOf(_3b[i])==0){
+if(_3b[i].length>_3d.length){
+_3d=_3b[i];
+}
+}
+}
+var _3e=_3d.replace("-","_");
+var _3f=dojo.getObject([_37,"nls",_38].join("."));
+if(!_3f||!_3f[_3e]){
+var _40=[_37,(_3e||"root"),_38].join(".");
+var _41=dojo._xdBundleMap[_40];
+if(!_41){
+_41=dojo._xdBundleMap[_40]={};
+}
+_41[_3c.replace("-","_")]=true;
+dojo.require(_37+".nls"+(_3d?"."+_3d:"")+"."+_38);
+}
+};
+dojo._xdRealRequireLocalization=dojo.requireLocalization;
+dojo.requireLocalization=function(_42,_43,_44,_45){
+var _46=dojo.moduleUrl(_42).toString();
+if(dojo._xdIsXDomainPath(_46)){
+return dojo.xdRequireLocalization.apply(dojo,arguments);
+}else{
+return dojo._xdRealRequireLocalization.apply(dojo,arguments);
+}
+};
+dojo._xdUnpackDependency=function(dep){
+var _47=null;
+var _48=null;
+switch(dep[0]){
+case "requireIf":
+case "requireAfterIf":
+if(dep[1]===true){
+_47=[{name:dep[2],content:null}];
+}
+break;
+case "platformRequire":
+var _49=dep[1];
+var _4a=_49["common"]||[];
+_47=(_49[dojo.hostenv.name_])?_4a.concat(_49[dojo.hostenv.name_]||[]):_4a.concat(_49["default"]||[]);
+if(_47){
+for(var i=0;i<_47.length;i++){
+if(_47[i] instanceof Array){
+_47[i]={name:_47[i][0],content:null};
+}else{
+_47[i]={name:_47[i],content:null};
+}
+}
+}
+break;
+case "require":
+_47=[{name:dep[1],content:null}];
+break;
+case "i18n._preloadLocalizations":
+dojo.i18n._preloadLocalizations.apply(dojo.i18n._preloadLocalizations,dep.slice(1));
+break;
+}
+if(dep[0]=="requireAfterIf"||dep[0]=="requireIf"){
+_48=_47;
+_47=null;
+}
+return {requires:_47,requiresAfter:_48};
+};
+dojo._xdWalkReqs=function(){
+var _4b=null;
+var req;
+for(var i=0;i<dojo._xdOrderedReqs.length;i++){
+req=dojo._xdOrderedReqs[i];
+if(dojo._xdDepMap[req]){
+_4b=[req];
+_4b[req]=true;
+dojo._xdEvalReqs(_4b);
+}
+}
+};
+dojo._xdEvalReqs=function(_4c){
+while(_4c.length>0){
+var req=_4c[_4c.length-1];
+var res=dojo._xdDepMap[req];
+var i,_4d,_4e;
+if(res){
+_4d=res.requires;
+if(_4d&&_4d.length>0){
+for(i=0;i<_4d.length;i++){
+_4e=_4d[i].name;
+if(_4e&&!_4c[_4e]){
+_4c.push(_4e);
+_4c[_4e]=true;
+dojo._xdEvalReqs(_4c);
+}
+}
+}
+var _4f=dojo._xdContents[res.contentIndex];
+if(!_4f.isDefined){
+var _50=_4f.content;
+_50["resourceName"]=_4f["resourceName"];
+_50["resourcePath"]=_4f["resourcePath"];
+dojo._xdDefList.push(_50);
+_4f.isDefined=true;
+}
+dojo._xdDepMap[req]=null;
+_4d=res.requiresAfter;
+if(_4d&&_4d.length>0){
+for(i=0;i<_4d.length;i++){
+_4e=_4d[i].name;
+if(_4e&&!_4c[_4e]){
+_4c.push(_4e);
+_4c[_4e]=true;
+dojo._xdEvalReqs(_4c);
+}
+}
+}
+}
+_4c.pop();
+}
+};
+dojo._xdWatchInFlight=function(){
+var _51="";
+var _52=(dojo.config.xdWaitSeconds||15)*1000;
+var _53=(dojo._xdStartTime+_52)<(new Date()).getTime();
+for(var _54 in dojo._xdInFlight){
+if(dojo._xdInFlight[_54]===true){
+if(_53){
+_51+=_54+" ";
+}else{
+return;
+}
+}
+}
+dojo._xdClearInterval();
+if(_53){
+throw "Could not load cross-domain resources: "+_51;
+}
+dojo._xdWalkReqs();
+var _55=dojo._xdDefList.length;
+for(var i=0;i<_55;i++){
+var _56=dojo._xdDefList[i];
+if(dojo.config["debugAtAllCosts"]&&_56["resourceName"]){
+if(!dojo["_xdDebugQueue"]){
+dojo._xdDebugQueue=[];
+}
+dojo._xdDebugQueue.push({resourceName:_56.resourceName,resourcePath:_56.resourcePath});
+}else{
+_56.apply(dojo.global,dojo._scopeArgs);
+}
+}
+for(i=0;i<dojo._xdContents.length;i++){
+var _57=dojo._xdContents[i];
+if(_57.content&&!_57.isDefined){
+_57.content.apply(dojo.global,dojo._scopeArgs);
+}
+}
+dojo._xdReset();
+if(dojo["_xdDebugQueue"]&&dojo._xdDebugQueue.length>0){
+dojo._xdDebugFileLoaded();
+}else{
+dojo._xdNotifyLoaded();
+}
+};
+dojo._xdNotifyLoaded=function(){
+for(var _58 in dojo._xdInFlight){
+if(typeof dojo._xdInFlight[_58]=="boolean"){
+return;
+}
+}
+dojo._inFlightCount=0;
+if(dojo._initFired&&!dojo._loadNotifying){
+dojo._callLoaded();
+}
+};
+}
diff --git a/lib/dojo/_base/array.js b/lib/dojo/_base/array.js
new file mode 100644 (file)
index 0000000..83c21c8
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.array"]){
+dojo._hasResource["dojo._base.array"]=true;
+dojo.require("dojo._base.lang");
+dojo.provide("dojo._base.array");
+(function(){
+var _1=function(_2,_3,cb){
+return [(typeof _2=="string")?_2.split(""):_2,_3||dojo.global,(typeof cb=="string")?new Function("item","index","array",cb):cb];
+};
+var _4=function(_5,_6,_7,_8){
+var _9=_1(_6,_8,_7);
+_6=_9[0];
+for(var i=0,l=_6.length;i<l;++i){
+var _a=!!_9[2].call(_9[1],_6[i],i,_6);
+if(_5^_a){
+return _a;
+}
+}
+return _5;
+};
+dojo.mixin(dojo,{indexOf:function(_b,_c,_d,_e){
+var _f=1,end=_b.length||0,i=0;
+if(_e){
+i=end-1;
+_f=end=-1;
+}
+if(_d!=undefined){
+i=_d;
+}
+if((_e&&i>end)||i<end){
+for(;i!=end;i+=_f){
+if(_b[i]==_c){
+return i;
+}
+}
+}
+return -1;
+},lastIndexOf:function(_10,_11,_12){
+return dojo.indexOf(_10,_11,_12,true);
+},forEach:function(arr,_13,_14){
+if(!arr||!arr.length){
+return;
+}
+var _15=_1(arr,_14,_13);
+arr=_15[0];
+for(var i=0,l=arr.length;i<l;++i){
+_15[2].call(_15[1],arr[i],i,arr);
+}
+},every:function(arr,_16,_17){
+return _4(true,arr,_16,_17);
+},some:function(arr,_18,_19){
+return _4(false,arr,_18,_19);
+},map:function(arr,_1a,_1b){
+var _1c=_1(arr,_1b,_1a);
+arr=_1c[0];
+var _1d=(arguments[3]?(new arguments[3]()):[]);
+for(var i=0,l=arr.length;i<l;++i){
+_1d.push(_1c[2].call(_1c[1],arr[i],i,arr));
+}
+return _1d;
+},filter:function(arr,_1e,_1f){
+var _20=_1(arr,_1f,_1e);
+arr=_20[0];
+var _21=[];
+for(var i=0,l=arr.length;i<l;++i){
+if(_20[2].call(_20[1],arr[i],i,arr)){
+_21.push(arr[i]);
+}
+}
+return _21;
+}});
+})();
+}
diff --git a/lib/dojo/_base/browser.js b/lib/dojo/_base/browser.js
new file mode 100644 (file)
index 0000000..67c1eef
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.browser"]){
+dojo._hasResource["dojo._base.browser"]=true;
+dojo.provide("dojo._base.browser");
+dojo.require("dojo._base.window");
+dojo.require("dojo._base.connect");
+dojo.require("dojo._base.event");
+dojo.require("dojo._base.html");
+dojo.require("dojo._base.NodeList");
+dojo.require("dojo._base.query");
+dojo.require("dojo._base.xhr");
+dojo.require("dojo._base.fx");
+dojo.forEach(dojo.config.require,function(i){
+dojo["require"](i);
+});
+}
diff --git a/lib/dojo/_base/connect.js b/lib/dojo/_base/connect.js
new file mode 100644 (file)
index 0000000..3905d92
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.connect"]){
+dojo._hasResource["dojo._base.connect"]=true;
+dojo.provide("dojo._base.connect");
+dojo.require("dojo._base.lang");
+dojo._listener={getDispatcher:function(){
+return function(){
+var ap=Array.prototype,c=arguments.callee,ls=c._listeners,t=c.target;
+var r=t&&t.apply(this,arguments);
+var i,_1;
+_1=[].concat(ls);
+for(i in _1){
+if(!(i in ap)){
+_1[i].apply(this,arguments);
+}
+}
+return r;
+};
+},add:function(_2,_3,_4){
+_2=_2||dojo.global;
+var f=_2[_3];
+if(!f||!f._listeners){
+var d=dojo._listener.getDispatcher();
+d.target=f;
+d._listeners=[];
+f=_2[_3]=d;
+}
+return f._listeners.push(_4);
+},remove:function(_5,_6,_7){
+var f=(_5||dojo.global)[_6];
+if(f&&f._listeners&&_7--){
+delete f._listeners[_7];
+}
+}};
+dojo.connect=function(_8,_9,_a,_b,_c){
+var a=arguments,_d=[],i=0;
+_d.push(dojo.isString(a[0])?null:a[i++],a[i++]);
+var a1=a[i+1];
+_d.push(dojo.isString(a1)||dojo.isFunction(a1)?a[i++]:null,a[i++]);
+for(var l=a.length;i<l;i++){
+_d.push(a[i]);
+}
+return dojo._connect.apply(this,_d);
+};
+dojo._connect=function(_e,_f,_10,_11){
+var l=dojo._listener,h=l.add(_e,_f,dojo.hitch(_10,_11));
+return [_e,_f,h,l];
+};
+dojo.disconnect=function(_12){
+if(_12&&_12[0]!==undefined){
+dojo._disconnect.apply(this,_12);
+delete _12[0];
+}
+};
+dojo._disconnect=function(obj,_13,_14,_15){
+_15.remove(obj,_13,_14);
+};
+dojo._topics={};
+dojo.subscribe=function(_16,_17,_18){
+return [_16,dojo._listener.add(dojo._topics,_16,dojo.hitch(_17,_18))];
+};
+dojo.unsubscribe=function(_19){
+if(_19){
+dojo._listener.remove(dojo._topics,_19[0],_19[1]);
+}
+};
+dojo.publish=function(_1a,_1b){
+var f=dojo._topics[_1a];
+if(f){
+f.apply(this,_1b||[]);
+}
+};
+dojo.connectPublisher=function(_1c,obj,_1d){
+var pf=function(){
+dojo.publish(_1c,arguments);
+};
+return _1d?dojo.connect(obj,_1d,pf):dojo.connect(obj,pf);
+};
+}
diff --git a/lib/dojo/_base/declare.js b/lib/dojo/_base/declare.js
new file mode 100644 (file)
index 0000000..f8ce201
--- /dev/null
@@ -0,0 +1,423 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.declare"]){
+dojo._hasResource["dojo._base.declare"]=true;
+dojo.provide("dojo._base.declare");
+dojo.require("dojo._base.lang");
+dojo.require("dojo._base.array");
+(function(){
+var d=dojo,_1=d._mixin,op=Object.prototype,_2=op.toString,_3=new Function,_4=0,_5="constructor";
+function _6(_7){
+throw new Error("declare: "+_7);
+};
+function _8(_9){
+var _a=[],_b=[{cls:0,refs:[]}],_c={},_d=1,l=_9.length,i=0,j,_e,_f,top,_10,rec,_11,_12;
+for(;i<l;++i){
+_f=_9[i];
+if(!_f){
+_6("mixin #"+i+" is unknown. Did you use dojo.require to pull it in?");
+}else{
+if(_2.call(_f)!="[object Function]"){
+_6("mixin #"+i+" is not a callable constructor.");
+}
+}
+_e=_f._meta?_f._meta.bases:[_f];
+top=0;
+for(j=_e.length-1;j>=0;--j){
+_10=_e[j].prototype;
+if(!_10.hasOwnProperty("declaredClass")){
+_10.declaredClass="uniqName_"+(_4++);
+}
+_11=_10.declaredClass;
+if(!_c.hasOwnProperty(_11)){
+_c[_11]={count:0,refs:[],cls:_e[j]};
+++_d;
+}
+rec=_c[_11];
+if(top&&top!==rec){
+rec.refs.push(top);
+++top.count;
+}
+top=rec;
+}
+++top.count;
+_b[0].refs.push(top);
+}
+while(_b.length){
+top=_b.pop();
+_a.push(top.cls);
+--_d;
+while(_12=top.refs,_12.length==1){
+top=_12[0];
+if(!top||--top.count){
+top=0;
+break;
+}
+_a.push(top.cls);
+--_d;
+}
+if(top){
+for(i=0,l=_12.length;i<l;++i){
+top=_12[i];
+if(!--top.count){
+_b.push(top);
+}
+}
+}
+}
+if(_d){
+_6("can't build consistent linearization");
+}
+_f=_9[0];
+_a[0]=_f?_f._meta&&_f===_a[_a.length-_f._meta.bases.length]?_f._meta.bases.length:1:0;
+return _a;
+};
+function _13(_14,a,f){
+var _15,_16,_17,_18,_19,_1a,_1b,opf,pos,_1c=this._inherited=this._inherited||{};
+if(typeof _14=="string"){
+_15=_14;
+_14=a;
+a=f;
+}
+f=0;
+_18=_14.callee;
+_15=_15||_18.nom;
+if(!_15){
+_6("can't deduce a name to call inherited()");
+}
+_19=this.constructor._meta;
+_17=_19.bases;
+pos=_1c.p;
+if(_15!=_5){
+if(_1c.c!==_18){
+pos=0;
+_1a=_17[0];
+_19=_1a._meta;
+if(_19.hidden[_15]!==_18){
+_16=_19.chains;
+if(_16&&typeof _16[_15]=="string"){
+_6("calling chained method with inherited: "+_15);
+}
+do{
+_19=_1a._meta;
+_1b=_1a.prototype;
+if(_19&&(_1b[_15]===_18&&_1b.hasOwnProperty(_15)||_19.hidden[_15]===_18)){
+break;
+}
+}while(_1a=_17[++pos]);
+pos=_1a?pos:-1;
+}
+}
+_1a=_17[++pos];
+if(_1a){
+_1b=_1a.prototype;
+if(_1a._meta&&_1b.hasOwnProperty(_15)){
+f=_1b[_15];
+}else{
+opf=op[_15];
+do{
+_1b=_1a.prototype;
+f=_1b[_15];
+if(f&&(_1a._meta?_1b.hasOwnProperty(_15):f!==opf)){
+break;
+}
+}while(_1a=_17[++pos]);
+}
+}
+f=_1a&&f||op[_15];
+}else{
+if(_1c.c!==_18){
+pos=0;
+_19=_17[0]._meta;
+if(_19&&_19.ctor!==_18){
+_16=_19.chains;
+if(!_16||_16.constructor!=="manual"){
+_6("calling chained constructor with inherited");
+}
+while(_1a=_17[++pos]){
+_19=_1a._meta;
+if(_19&&_19.ctor===_18){
+break;
+}
+}
+pos=_1a?pos:-1;
+}
+}
+while(_1a=_17[++pos]){
+_19=_1a._meta;
+f=_19?_19.ctor:_1a;
+if(f){
+break;
+}
+}
+f=_1a&&f;
+}
+_1c.c=f;
+_1c.p=pos;
+if(f){
+return a===true?f:f.apply(this,a||_14);
+}
+};
+function _1d(_1e,_1f){
+if(typeof _1e=="string"){
+return this.inherited(_1e,_1f,true);
+}
+return this.inherited(_1e,true);
+};
+function _20(cls){
+var _21=this.constructor._meta.bases;
+for(var i=0,l=_21.length;i<l;++i){
+if(_21[i]===cls){
+return true;
+}
+}
+return this instanceof cls;
+};
+function _22(_23,_24){
+var _25,i=0,l=d._extraNames.length;
+for(_25 in _24){
+if(_25!=_5&&_24.hasOwnProperty(_25)){
+_23[_25]=_24[_25];
+}
+}
+for(;i<l;++i){
+_25=d._extraNames[i];
+if(_25!=_5&&_24.hasOwnProperty(_25)){
+_23[_25]=_24[_25];
+}
+}
+};
+function _26(_27,_28){
+var _29,t,i=0,l=d._extraNames.length;
+for(_29 in _28){
+t=_28[_29];
+if((t!==op[_29]||!(_29 in op))&&_29!=_5){
+if(_2.call(t)=="[object Function]"){
+t.nom=_29;
+}
+_27[_29]=t;
+}
+}
+for(;i<l;++i){
+_29=d._extraNames[i];
+t=_28[_29];
+if((t!==op[_29]||!(_29 in op))&&_29!=_5){
+if(_2.call(t)=="[object Function]"){
+t.nom=_29;
+}
+_27[_29]=t;
+}
+}
+return _27;
+};
+function _2a(_2b){
+_26(this.prototype,_2b);
+return this;
+};
+function _2c(_2d,_2e){
+return function(){
+var a=arguments,_2f=a,a0=a[0],f,i,m,l=_2d.length,_30;
+if(!(this instanceof a.callee)){
+return _31(a);
+}
+if(_2e&&(a0&&a0.preamble||this.preamble)){
+_30=new Array(_2d.length);
+_30[0]=a;
+for(i=0;;){
+a0=a[0];
+if(a0){
+f=a0.preamble;
+if(f){
+a=f.apply(this,a)||a;
+}
+}
+f=_2d[i].prototype;
+f=f.hasOwnProperty("preamble")&&f.preamble;
+if(f){
+a=f.apply(this,a)||a;
+}
+if(++i==l){
+break;
+}
+_30[i]=a;
+}
+}
+for(i=l-1;i>=0;--i){
+f=_2d[i];
+m=f._meta;
+f=m?m.ctor:f;
+if(f){
+f.apply(this,_30?_30[i]:a);
+}
+}
+f=this.postscript;
+if(f){
+f.apply(this,_2f);
+}
+};
+};
+function _32(_33,_34){
+return function(){
+var a=arguments,t=a,a0=a[0],f;
+if(!(this instanceof a.callee)){
+return _31(a);
+}
+if(_34){
+if(a0){
+f=a0.preamble;
+if(f){
+t=f.apply(this,t)||t;
+}
+}
+f=this.preamble;
+if(f){
+f.apply(this,t);
+}
+}
+if(_33){
+_33.apply(this,a);
+}
+f=this.postscript;
+if(f){
+f.apply(this,a);
+}
+};
+};
+function _35(_36){
+return function(){
+var a=arguments,i=0,f,m;
+if(!(this instanceof a.callee)){
+return _31(a);
+}
+for(;f=_36[i];++i){
+m=f._meta;
+f=m?m.ctor:f;
+if(f){
+f.apply(this,a);
+break;
+}
+}
+f=this.postscript;
+if(f){
+f.apply(this,a);
+}
+};
+};
+function _37(_38,_39,_3a){
+return function(){
+var b,m,f,i=0,_3b=1;
+if(_3a){
+i=_39.length-1;
+_3b=-1;
+}
+for(;b=_39[i];i+=_3b){
+m=b._meta;
+f=(m?m.hidden:b.prototype)[_38];
+if(f){
+f.apply(this,arguments);
+}
+}
+};
+};
+function _3c(_3d){
+_3.prototype=_3d.prototype;
+var t=new _3;
+_3.prototype=null;
+return t;
+};
+function _31(_3e){
+var _3f=_3e.callee,t=_3c(_3f);
+_3f.apply(t,_3e);
+return t;
+};
+d.declare=function(_40,_41,_42){
+if(typeof _40!="string"){
+_42=_41;
+_41=_40;
+_40="";
+}
+_42=_42||{};
+var _43,i,t,_44,_45,_46,_47,_48=1,_49=_41;
+if(_2.call(_41)=="[object Array]"){
+_46=_8(_41);
+t=_46[0];
+_48=_46.length-t;
+_41=_46[_48];
+}else{
+_46=[0];
+if(_41){
+if(_2.call(_41)=="[object Function]"){
+t=_41._meta;
+_46=_46.concat(t?t.bases:_41);
+}else{
+_6("base class is not a callable constructor.");
+}
+}else{
+if(_41!==null){
+_6("unknown base class. Did you use dojo.require to pull it in?");
+}
+}
+}
+if(_41){
+for(i=_48-1;;--i){
+_43=_3c(_41);
+if(!i){
+break;
+}
+t=_46[i];
+(t._meta?_22:_1)(_43,t.prototype);
+_44=new Function;
+_44.superclass=_41;
+_44.prototype=_43;
+_41=_43.constructor=_44;
+}
+}else{
+_43={};
+}
+_26(_43,_42);
+t=_42.constructor;
+if(t!==op.constructor){
+t.nom=_5;
+_43.constructor=t;
+}
+for(i=_48-1;i;--i){
+t=_46[i]._meta;
+if(t&&t.chains){
+_47=_1(_47||{},t.chains);
+}
+}
+if(_43["-chains-"]){
+_47=_1(_47||{},_43["-chains-"]);
+}
+t=!_47||!_47.hasOwnProperty(_5);
+_46[0]=_44=(_47&&_47.constructor==="manual")?_35(_46):(_46.length==1?_32(_42.constructor,t):_2c(_46,t));
+_44._meta={bases:_46,hidden:_42,chains:_47,parents:_49,ctor:_42.constructor};
+_44.superclass=_41&&_41.prototype;
+_44.extend=_2a;
+_44.prototype=_43;
+_43.constructor=_44;
+_43.getInherited=_1d;
+_43.inherited=_13;
+_43.isInstanceOf=_20;
+if(_40){
+_43.declaredClass=_40;
+d.setObject(_40,_44);
+}
+if(_47){
+for(_45 in _47){
+if(_43[_45]&&typeof _47[_45]=="string"&&_45!=_5){
+t=_43[_45]=_37(_45,_46,_47[_45]==="after");
+t.nom=_45;
+}
+}
+}
+return _44;
+};
+d.safeMixin=_26;
+})();
+}
diff --git a/lib/dojo/_base/event.js b/lib/dojo/_base/event.js
new file mode 100644 (file)
index 0000000..1e6ef78
--- /dev/null
@@ -0,0 +1,359 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.event"]){
+dojo._hasResource["dojo._base.event"]=true;
+dojo.provide("dojo._base.event");
+dojo.require("dojo._base.connect");
+(function(){
+var _1=(dojo._event_listener={add:function(_2,_3,fp){
+if(!_2){
+return;
+}
+_3=_1._normalizeEventName(_3);
+fp=_1._fixCallback(_3,fp);
+var _4=_3;
+if(!dojo.isIE&&(_3=="mouseenter"||_3=="mouseleave")){
+var _5=fp;
+_3=(_3=="mouseenter")?"mouseover":"mouseout";
+fp=function(e){
+if(!dojo.isDescendant(e.relatedTarget,_2)){
+return _5.call(this,e);
+}
+};
+}
+_2.addEventListener(_3,fp,false);
+return fp;
+},remove:function(_6,_7,_8){
+if(_6){
+_7=_1._normalizeEventName(_7);
+if(!dojo.isIE&&(_7=="mouseenter"||_7=="mouseleave")){
+_7=(_7=="mouseenter")?"mouseover":"mouseout";
+}
+_6.removeEventListener(_7,_8,false);
+}
+},_normalizeEventName:function(_9){
+return _9.slice(0,2)=="on"?_9.slice(2):_9;
+},_fixCallback:function(_a,fp){
+return _a!="keypress"?fp:function(e){
+return fp.call(this,_1._fixEvent(e,this));
+};
+},_fixEvent:function(_b,_c){
+switch(_b.type){
+case "keypress":
+_1._setKeyChar(_b);
+break;
+}
+return _b;
+},_setKeyChar:function(_d){
+_d.keyChar=_d.charCode?String.fromCharCode(_d.charCode):"";
+_d.charOrCode=_d.keyChar||_d.keyCode;
+},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}});
+dojo.fixEvent=function(_e,_f){
+return _1._fixEvent(_e,_f);
+};
+dojo.stopEvent=function(evt){
+evt.preventDefault();
+evt.stopPropagation();
+};
+var _10=dojo._listener;
+dojo._connect=function(obj,_11,_12,_13,_14){
+var _15=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);
+var lid=_15?(_14?2:1):0,l=[dojo._listener,_1,_10][lid];
+var h=l.add(obj,_11,dojo.hitch(_12,_13));
+return [obj,_11,h,lid];
+};
+dojo._disconnect=function(obj,_16,_17,_18){
+([dojo._listener,_1,_10][_18]).remove(obj,_16,_17);
+};
+dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:dojo.isSafari?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,copyKey:dojo.isMac&&!dojo.isAIR?(dojo.isSafari?91:224):17};
+var _19=dojo.isMac?"metaKey":"ctrlKey";
+dojo.isCopyKey=function(e){
+return e[_19];
+};
+if(dojo.isIE){
+dojo.mouseButtons={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_1a){
+return e.button&_1a;
+},isLeft:function(e){
+return e.button&1;
+},isMiddle:function(e){
+return e.button&4;
+},isRight:function(e){
+return e.button&2;
+}};
+}else{
+dojo.mouseButtons={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_1b){
+return e.button==_1b;
+},isLeft:function(e){
+return e.button==0;
+},isMiddle:function(e){
+return e.button==1;
+},isRight:function(e){
+return e.button==2;
+}};
+}
+if(dojo.isIE){
+var _1c=function(e,_1d){
+try{
+return (e.keyCode=_1d);
+}
+catch(e){
+return 0;
+}
+};
+var iel=dojo._listener;
+var _1e=(dojo._ieListenersName="_"+dojo._scopeName+"_listeners");
+if(!dojo.config._allow_leaks){
+_10=iel=dojo._ie_listener={handlers:[],add:function(_1f,_20,_21){
+_1f=_1f||dojo.global;
+var f=_1f[_20];
+if(!f||!f[_1e]){
+var d=dojo._getIeDispatcher();
+d.target=f&&(ieh.push(f)-1);
+d[_1e]=[];
+f=_1f[_20]=d;
+}
+return f[_1e].push(ieh.push(_21)-1);
+},remove:function(_22,_23,_24){
+var f=(_22||dojo.global)[_23],l=f&&f[_1e];
+if(f&&l&&_24--){
+delete ieh[l[_24]];
+delete l[_24];
+}
+}};
+var ieh=iel.handlers;
+}
+dojo.mixin(_1,{add:function(_25,_26,fp){
+if(!_25){
+return;
+}
+_26=_1._normalizeEventName(_26);
+if(_26=="onkeypress"){
+var kd=_25.onkeydown;
+if(!kd||!kd[_1e]||!kd._stealthKeydownHandle){
+var h=_1.add(_25,"onkeydown",_1._stealthKeyDown);
+kd=_25.onkeydown;
+kd._stealthKeydownHandle=h;
+kd._stealthKeydownRefs=1;
+}else{
+kd._stealthKeydownRefs++;
+}
+}
+return iel.add(_25,_26,_1._fixCallback(fp));
+},remove:function(_27,_28,_29){
+_28=_1._normalizeEventName(_28);
+iel.remove(_27,_28,_29);
+if(_28=="onkeypress"){
+var kd=_27.onkeydown;
+if(--kd._stealthKeydownRefs<=0){
+iel.remove(_27,"onkeydown",kd._stealthKeydownHandle);
+delete kd._stealthKeydownHandle;
+}
+}
+},_normalizeEventName:function(_2a){
+return _2a.slice(0,2)!="on"?"on"+_2a:_2a;
+},_nop:function(){
+},_fixEvent:function(evt,_2b){
+if(!evt){
+var w=_2b&&(_2b.ownerDocument||_2b.document||_2b).parentWindow||window;
+evt=w.event;
+}
+if(!evt){
+return (evt);
+}
+evt.target=evt.srcElement;
+evt.currentTarget=(_2b||evt.srcElement);
+evt.layerX=evt.offsetX;
+evt.layerY=evt.offsetY;
+var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;
+var _2c=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;
+var _2d=dojo._getIeDocumentElementOffset();
+evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_2c.scrollLeft||0)-_2d.x;
+evt.pageY=evt.clientY+(_2c.scrollTop||0)-_2d.y;
+if(evt.type=="mouseover"){
+evt.relatedTarget=evt.fromElement;
+}
+if(evt.type=="mouseout"){
+evt.relatedTarget=evt.toElement;
+}
+evt.stopPropagation=_1._stopPropagation;
+evt.preventDefault=_1._preventDefault;
+return _1._fixKeys(evt);
+},_fixKeys:function(evt){
+switch(evt.type){
+case "keypress":
+var c=("charCode" in evt?evt.charCode:evt.keyCode);
+if(c==10){
+c=0;
+evt.keyCode=13;
+}else{
+if(c==13||c==27){
+c=0;
+}else{
+if(c==3){
+c=99;
+}
+}
+}
+evt.charCode=c;
+_1._setKeyChar(evt);
+break;
+}
+return evt;
+},_stealthKeyDown:function(evt){
+var kp=evt.currentTarget.onkeypress;
+if(!kp||!kp[_1e]){
+return;
+}
+var k=evt.keyCode;
+var _2e=k!=13&&k!=32&&k!=27&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);
+if(_2e||evt.ctrlKey){
+var c=_2e?0:k;
+if(evt.ctrlKey){
+if(k==3||k==13){
+return;
+}else{
+if(c>95&&c<106){
+c-=48;
+}else{
+if((!evt.shiftKey)&&(c>=65&&c<=90)){
+c+=32;
+}else{
+c=_1._punctMap[c]||c;
+}
+}
+}
+}
+var _2f=_1._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});
+kp.call(evt.currentTarget,_2f);
+evt.cancelBubble=_2f.cancelBubble;
+evt.returnValue=_2f.returnValue;
+_1c(evt,_2f.keyCode);
+}
+},_stopPropagation:function(){
+this.cancelBubble=true;
+},_preventDefault:function(){
+this.bubbledKeyCode=this.keyCode;
+if(this.ctrlKey){
+_1c(this,0);
+}
+this.returnValue=false;
+}});
+dojo.stopEvent=function(evt){
+evt=evt||window.event;
+_1._stopPropagation.call(evt);
+_1._preventDefault.call(evt);
+};
+}
+_1._synthesizeEvent=function(evt,_30){
+var _31=dojo.mixin({},evt,_30);
+_1._setKeyChar(_31);
+_31.preventDefault=function(){
+evt.preventDefault();
+};
+_31.stopPropagation=function(){
+evt.stopPropagation();
+};
+return _31;
+};
+if(dojo.isOpera){
+dojo.mixin(_1,{_fixEvent:function(evt,_32){
+switch(evt.type){
+case "keypress":
+var c=evt.which;
+if(c==3){
+c=99;
+}
+c=c<41&&!evt.shiftKey?0:c;
+if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){
+c+=32;
+}
+return _1._synthesizeEvent(evt,{charCode:c});
+}
+return evt;
+}});
+}
+if(dojo.isWebKit){
+_1._add=_1.add;
+_1._remove=_1.remove;
+dojo.mixin(_1,{add:function(_33,_34,fp){
+if(!_33){
+return;
+}
+var _35=_1._add(_33,_34,fp);
+if(_1._normalizeEventName(_34)=="keypress"){
+_35._stealthKeyDownHandle=_1._add(_33,"keydown",function(evt){
+var k=evt.keyCode;
+var _36=k!=13&&k!=32&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);
+if(_36||evt.ctrlKey){
+var c=_36?0:k;
+if(evt.ctrlKey){
+if(k==3||k==13){
+return;
+}else{
+if(c>95&&c<106){
+c-=48;
+}else{
+if(!evt.shiftKey&&c>=65&&c<=90){
+c+=32;
+}else{
+c=_1._punctMap[c]||c;
+}
+}
+}
+}
+var _37=_1._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});
+fp.call(evt.currentTarget,_37);
+}
+});
+}
+return _35;
+},remove:function(_38,_39,_3a){
+if(_38){
+if(_3a._stealthKeyDownHandle){
+_1._remove(_38,"keydown",_3a._stealthKeyDownHandle);
+}
+_1._remove(_38,_39,_3a);
+}
+},_fixEvent:function(evt,_3b){
+switch(evt.type){
+case "keypress":
+if(evt.faux){
+return evt;
+}
+var c=evt.charCode;
+c=c>=32?c:0;
+return _1._synthesizeEvent(evt,{charCode:c,faux:true});
+}
+return evt;
+}});
+}
+})();
+if(dojo.isIE){
+dojo._ieDispatcher=function(_3c,_3d){
+var ap=Array.prototype,h=dojo._ie_listener.handlers,c=_3c.callee,ls=c[dojo._ieListenersName],t=h[c.target];
+var r=t&&t.apply(_3d,_3c);
+var lls=[].concat(ls);
+for(var i in lls){
+var f=h[lls[i]];
+if(!(i in ap)&&f){
+f.apply(_3d,_3c);
+}
+}
+return r;
+};
+dojo._getIeDispatcher=function(){
+return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");
+};
+dojo._event_listener._fixCallback=function(fp){
+var f=dojo._event_listener._fixEvent;
+return function(e){
+return fp.call(this,f(e,this));
+};
+};
+}
+}
diff --git a/lib/dojo/_base/fx.js b/lib/dojo/_base/fx.js
new file mode 100644 (file)
index 0000000..1c58940
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.fx"]){
+dojo._hasResource["dojo._base.fx"]=true;
+dojo.provide("dojo._base.fx");
+dojo.require("dojo._base.Color");
+dojo.require("dojo._base.connect");
+dojo.require("dojo._base.lang");
+dojo.require("dojo._base.html");
+(function(){
+var d=dojo;
+var _1=d._mixin;
+dojo._Line=function(_2,_3){
+this.start=_2;
+this.end=_3;
+};
+dojo._Line.prototype.getValue=function(n){
+return ((this.end-this.start)*n)+this.start;
+};
+dojo.Animation=function(_4){
+_1(this,_4);
+if(d.isArray(this.curve)){
+this.curve=new d._Line(this.curve[0],this.curve[1]);
+}
+};
+d._Animation=d.Animation;
+d.extend(dojo.Animation,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){
+var _5=this._percent,_6=this.easing;
+return _6?_6(_5):_5;
+},_fire:function(_7,_8){
+var a=_8||[];
+if(this[_7]){
+if(d.config.debugAtAllCosts){
+this[_7].apply(this,a);
+}else{
+try{
+this[_7].apply(this,a);
+}
+catch(e){
+console.error("exception in animation handler for:",_7);
+console.error(e);
+}
+}
+}
+return this;
+},play:function(_9,_a){
+var _b=this;
+if(_b._delayTimer){
+_b._clearTimer();
+}
+if(_a){
+_b._stopTimer();
+_b._active=_b._paused=false;
+_b._percent=0;
+}else{
+if(_b._active&&!_b._paused){
+return _b;
+}
+}
+_b._fire("beforeBegin",[_b.node]);
+var de=_9||_b.delay,_c=dojo.hitch(_b,"_play",_a);
+if(de>0){
+_b._delayTimer=setTimeout(_c,de);
+return _b;
+}
+_c();
+return _b;
+},_play:function(_d){
+var _e=this;
+if(_e._delayTimer){
+_e._clearTimer();
+}
+_e._startTime=new Date().valueOf();
+if(_e._paused){
+_e._startTime-=_e.duration*_e._percent;
+}
+_e._active=true;
+_e._paused=false;
+var _f=_e.curve.getValue(_e._getStep());
+if(!_e._percent){
+if(!_e._startRepeatCount){
+_e._startRepeatCount=_e.repeat;
+}
+_e._fire("onBegin",[_f]);
+}
+_e._fire("onPlay",[_f]);
+_e._cycle();
+return _e;
+},pause:function(){
+var _10=this;
+if(_10._delayTimer){
+_10._clearTimer();
+}
+_10._stopTimer();
+if(!_10._active){
+return _10;
+}
+_10._paused=true;
+_10._fire("onPause",[_10.curve.getValue(_10._getStep())]);
+return _10;
+},gotoPercent:function(_11,_12){
+var _13=this;
+_13._stopTimer();
+_13._active=_13._paused=true;
+_13._percent=_11;
+if(_12){
+_13.play();
+}
+return _13;
+},stop:function(_14){
+var _15=this;
+if(_15._delayTimer){
+_15._clearTimer();
+}
+if(!_15._timer){
+return _15;
+}
+_15._stopTimer();
+if(_14){
+_15._percent=1;
+}
+_15._fire("onStop",[_15.curve.getValue(_15._getStep())]);
+_15._active=_15._paused=false;
+return _15;
+},status:function(){
+if(this._active){
+return this._paused?"paused":"playing";
+}
+return "stopped";
+},_cycle:function(){
+var _16=this;
+if(_16._active){
+var _17=new Date().valueOf();
+var _18=(_17-_16._startTime)/(_16.duration);
+if(_18>=1){
+_18=1;
+}
+_16._percent=_18;
+if(_16.easing){
+_18=_16.easing(_18);
+}
+_16._fire("onAnimate",[_16.curve.getValue(_18)]);
+if(_16._percent<1){
+_16._startTimer();
+}else{
+_16._active=false;
+if(_16.repeat>0){
+_16.repeat--;
+_16.play(null,true);
+}else{
+if(_16.repeat==-1){
+_16.play(null,true);
+}else{
+if(_16._startRepeatCount){
+_16.repeat=_16._startRepeatCount;
+_16._startRepeatCount=0;
+}
+}
+}
+_16._percent=0;
+_16._fire("onEnd",[_16.node]);
+!_16.repeat&&_16._stopTimer();
+}
+}
+return _16;
+},_clearTimer:function(){
+clearTimeout(this._delayTimer);
+delete this._delayTimer;
+}});
+var ctr=0,_19=null,_1a={run:function(){
+}};
+d.extend(d.Animation,{_startTimer:function(){
+if(!this._timer){
+this._timer=d.connect(_1a,"run",this,"_cycle");
+ctr++;
+}
+if(!_19){
+_19=setInterval(d.hitch(_1a,"run"),this.rate);
+}
+},_stopTimer:function(){
+if(this._timer){
+d.disconnect(this._timer);
+this._timer=null;
+ctr--;
+}
+if(ctr<=0){
+clearInterval(_19);
+_19=null;
+ctr=0;
+}
+}});
+var _1b=d.isIE?function(_1c){
+var ns=_1c.style;
+if(!ns.width.length&&d.style(_1c,"width")=="auto"){
+ns.width="auto";
+}
+}:function(){
+};
+dojo._fade=function(_1d){
+_1d.node=d.byId(_1d.node);
+var _1e=_1({properties:{}},_1d),_1f=(_1e.properties.opacity={});
+_1f.start=!("start" in _1e)?function(){
+return +d.style(_1e.node,"opacity")||0;
+}:_1e.start;
+_1f.end=_1e.end;
+var _20=d.animateProperty(_1e);
+d.connect(_20,"beforeBegin",d.partial(_1b,_1e.node));
+return _20;
+};
+dojo.fadeIn=function(_21){
+return d._fade(_1({end:1},_21));
+};
+dojo.fadeOut=function(_22){
+return d._fade(_1({end:0},_22));
+};
+dojo._defaultEasing=function(n){
+return 0.5+((Math.sin((n+1.5)*Math.PI))/2);
+};
+var _23=function(_24){
+this._properties=_24;
+for(var p in _24){
+var _25=_24[p];
+if(_25.start instanceof d.Color){
+_25.tempColor=new d.Color();
+}
+}
+};
+_23.prototype.getValue=function(r){
+var ret={};
+for(var p in this._properties){
+var _26=this._properties[p],_27=_26.start;
+if(_27 instanceof d.Color){
+ret[p]=d.blendColors(_27,_26.end,r,_26.tempColor).toCss();
+}else{
+if(!d.isArray(_27)){
+ret[p]=((_26.end-_27)*r)+_27+(p!="opacity"?_26.units||"px":0);
+}
+}
+}
+return ret;
+};
+dojo.animateProperty=function(_28){
+var n=_28.node=d.byId(_28.node);
+if(!_28.easing){
+_28.easing=d._defaultEasing;
+}
+var _29=new d.Animation(_28);
+d.connect(_29,"beforeBegin",_29,function(){
+var pm={};
+for(var p in this.properties){
+if(p=="width"||p=="height"){
+this.node.display="block";
+}
+var _2a=this.properties[p];
+if(d.isFunction(_2a)){
+_2a=_2a(n);
+}
+_2a=pm[p]=_1({},(d.isObject(_2a)?_2a:{end:_2a}));
+if(d.isFunction(_2a.start)){
+_2a.start=_2a.start(n);
+}
+if(d.isFunction(_2a.end)){
+_2a.end=_2a.end(n);
+}
+var _2b=(p.toLowerCase().indexOf("color")>=0);
+function _2c(_2d,p){
+var v={height:_2d.offsetHeight,width:_2d.offsetWidth}[p];
+if(v!==undefined){
+return v;
+}
+v=d.style(_2d,p);
+return (p=="opacity")?+v:(_2b?v:parseFloat(v));
+};
+if(!("end" in _2a)){
+_2a.end=_2c(n,p);
+}else{
+if(!("start" in _2a)){
+_2a.start=_2c(n,p);
+}
+}
+if(_2b){
+_2a.start=new d.Color(_2a.start);
+_2a.end=new d.Color(_2a.end);
+}else{
+_2a.start=(p=="opacity")?+_2a.start:parseFloat(_2a.start);
+}
+}
+this.curve=new _23(pm);
+});
+d.connect(_29,"onAnimate",d.hitch(d,"style",_29.node));
+return _29;
+};
+dojo.anim=function(_2e,_2f,_30,_31,_32,_33){
+return d.animateProperty({node:_2e,duration:_30||d.Animation.prototype.duration,properties:_2f,easing:_31,onEnd:_32}).play(_33||0);
+};
+})();
+}
diff --git a/lib/dojo/_base/html.js b/lib/dojo/_base/html.js
new file mode 100644 (file)
index 0000000..0508415
--- /dev/null
@@ -0,0 +1,749 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.html"]){
+dojo._hasResource["dojo._base.html"]=true;
+dojo.require("dojo._base.lang");
+dojo.provide("dojo._base.html");
+try{
+document.execCommand("BackgroundImageCache",false,true);
+}
+catch(e){
+}
+if(dojo.isIE||dojo.isOpera){
+dojo.byId=function(id,_1){
+if(typeof id!="string"){
+return id;
+}
+var _2=_1||dojo.doc,te=_2.getElementById(id);
+if(te&&(te.attributes.id.value==id||te.id==id)){
+return te;
+}else{
+var _3=_2.all[id];
+if(!_3||_3.nodeName){
+_3=[_3];
+}
+var i=0;
+while((te=_3[i++])){
+if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){
+return te;
+}
+}
+}
+};
+}else{
+dojo.byId=function(id,_4){
+return (typeof id=="string")?(_4||dojo.doc).getElementById(id):id;
+};
+}
+(function(){
+var d=dojo;
+var _5=d.byId;
+var _6=null,_7;
+d.addOnWindowUnload(function(){
+_6=null;
+});
+dojo._destroyElement=dojo.destroy=function(_8){
+_8=_5(_8);
+try{
+var _9=_8.ownerDocument;
+if(!_6||_7!=_9){
+_6=_9.createElement("div");
+_7=_9;
+}
+_6.appendChild(_8.parentNode?_8.parentNode.removeChild(_8):_8);
+_6.innerHTML="";
+}
+catch(e){
+}
+};
+dojo.isDescendant=function(_a,_b){
+try{
+_a=_5(_a);
+_b=_5(_b);
+while(_a){
+if(_a==_b){
+return true;
+}
+_a=_a.parentNode;
+}
+}
+catch(e){
+}
+return false;
+};
+dojo.setSelectable=function(_c,_d){
+_c=_5(_c);
+if(d.isMozilla){
+_c.style.MozUserSelect=_d?"":"none";
+}else{
+if(d.isKhtml||d.isWebKit){
+_c.style.KhtmlUserSelect=_d?"auto":"none";
+}else{
+if(d.isIE){
+var v=(_c.unselectable=_d?"":"on");
+d.query("*",_c).forEach("item.unselectable = '"+v+"'");
+}
+}
+}
+};
+var _e=function(_f,ref){
+var _10=ref.parentNode;
+if(_10){
+_10.insertBefore(_f,ref);
+}
+};
+var _11=function(_12,ref){
+var _13=ref.parentNode;
+if(_13){
+if(_13.lastChild==ref){
+_13.appendChild(_12);
+}else{
+_13.insertBefore(_12,ref.nextSibling);
+}
+}
+};
+dojo.place=function(_14,_15,_16){
+_15=_5(_15);
+if(typeof _14=="string"){
+_14=_14.charAt(0)=="<"?d._toDom(_14,_15.ownerDocument):_5(_14);
+}
+if(typeof _16=="number"){
+var cn=_15.childNodes;
+if(!cn.length||cn.length<=_16){
+_15.appendChild(_14);
+}else{
+_e(_14,cn[_16<0?0:_16]);
+}
+}else{
+switch(_16){
+case "before":
+_e(_14,_15);
+break;
+case "after":
+_11(_14,_15);
+break;
+case "replace":
+_15.parentNode.replaceChild(_14,_15);
+break;
+case "only":
+d.empty(_15);
+_15.appendChild(_14);
+break;
+case "first":
+if(_15.firstChild){
+_e(_14,_15.firstChild);
+break;
+}
+default:
+_15.appendChild(_14);
+}
+}
+return _14;
+};
+dojo.boxModel="content-box";
+if(d.isIE){
+d.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";
+}
+var gcs;
+if(d.isWebKit){
+gcs=function(_17){
+var s;
+if(_17.nodeType==1){
+var dv=_17.ownerDocument.defaultView;
+s=dv.getComputedStyle(_17,null);
+if(!s&&_17.style){
+_17.style.display="";
+s=dv.getComputedStyle(_17,null);
+}
+}
+return s||{};
+};
+}else{
+if(d.isIE){
+gcs=function(_18){
+return _18.nodeType==1?_18.currentStyle:{};
+};
+}else{
+gcs=function(_19){
+return _19.nodeType==1?_19.ownerDocument.defaultView.getComputedStyle(_19,null):{};
+};
+}
+}
+dojo.getComputedStyle=gcs;
+if(!d.isIE){
+d._toPixelValue=function(_1a,_1b){
+return parseFloat(_1b)||0;
+};
+}else{
+d._toPixelValue=function(_1c,_1d){
+if(!_1d){
+return 0;
+}
+if(_1d=="medium"){
+return 4;
+}
+if(_1d.slice&&_1d.slice(-2)=="px"){
+return parseFloat(_1d);
+}
+with(_1c){
+var _1e=style.left;
+var _1f=runtimeStyle.left;
+runtimeStyle.left=currentStyle.left;
+try{
+style.left=_1d;
+_1d=style.pixelLeft;
+}
+catch(e){
+_1d=0;
+}
+style.left=_1e;
+runtimeStyle.left=_1f;
+}
+return _1d;
+};
+}
+var px=d._toPixelValue;
+var _20="DXImageTransform.Microsoft.Alpha";
+var af=function(n,f){
+try{
+return n.filters.item(_20);
+}
+catch(e){
+return f?{}:null;
+}
+};
+dojo._getOpacity=d.isIE?function(_21){
+try{
+return af(_21).Opacity/100;
+}
+catch(e){
+return 1;
+}
+}:function(_22){
+return gcs(_22).opacity;
+};
+dojo._setOpacity=d.isIE?function(_23,_24){
+var ov=_24*100,_25=_24==1;
+_23.style.zoom=_25?"":1;
+if(!af(_23)){
+if(_25){
+return _24;
+}
+_23.style.filter+=" progid:"+_20+"(Opacity="+ov+")";
+}else{
+af(_23,1).Opacity=ov;
+}
+af(_23,1).Enabled=!_25;
+if(_23.nodeName.toLowerCase()=="tr"){
+d.query("> td",_23).forEach(function(i){
+d._setOpacity(i,_24);
+});
+}
+return _24;
+}:function(_26,_27){
+return _26.style.opacity=_27;
+};
+var _28={left:true,top:true};
+var _29=/margin|padding|width|height|max|min|offset/;
+var _2a=function(_2b,_2c,_2d){
+_2c=_2c.toLowerCase();
+if(d.isIE){
+if(_2d=="auto"){
+if(_2c=="height"){
+return _2b.offsetHeight;
+}
+if(_2c=="width"){
+return _2b.offsetWidth;
+}
+}
+if(_2c=="fontweight"){
+switch(_2d){
+case 700:
+return "bold";
+case 400:
+default:
+return "normal";
+}
+}
+}
+if(!(_2c in _28)){
+_28[_2c]=_29.test(_2c);
+}
+return _28[_2c]?px(_2b,_2d):_2d;
+};
+var _2e=d.isIE?"styleFloat":"cssFloat",_2f={"cssFloat":_2e,"styleFloat":_2e,"float":_2e};
+dojo.style=function(_30,_31,_32){
+var n=_5(_30),_33=arguments.length,op=(_31=="opacity");
+_31=_2f[_31]||_31;
+if(_33==3){
+return op?d._setOpacity(n,_32):n.style[_31]=_32;
+}
+if(_33==2&&op){
+return d._getOpacity(n);
+}
+var s=gcs(n);
+if(_33==2&&typeof _31!="string"){
+for(var x in _31){
+d.style(_30,x,_31[x]);
+}
+return s;
+}
+return (_33==1)?s:_2a(n,_31,s[_31]||n.style[_31]);
+};
+dojo._getPadExtents=function(n,_34){
+var s=_34||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);
+return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};
+};
+dojo._getBorderExtents=function(n,_35){
+var ne="none",s=_35||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);
+return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};
+};
+dojo._getPadBorderExtents=function(n,_36){
+var s=_36||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);
+return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};
+};
+dojo._getMarginExtents=function(n,_37){
+var s=_37||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);
+if(d.isWebKit&&(s.position!="absolute")){
+r=l;
+}
+return {l:l,t:t,w:l+r,h:t+b};
+};
+dojo._getMarginBox=function(_38,_39){
+var s=_39||gcs(_38),me=d._getMarginExtents(_38,s);
+var l=_38.offsetLeft-me.l,t=_38.offsetTop-me.t,p=_38.parentNode;
+if(d.isMoz){
+var sl=parseFloat(s.left),st=parseFloat(s.top);
+if(!isNaN(sl)&&!isNaN(st)){
+l=sl,t=st;
+}else{
+if(p&&p.style){
+var pcs=gcs(p);
+if(pcs.overflow!="visible"){
+var be=d._getBorderExtents(p,pcs);
+l+=be.l,t+=be.t;
+}
+}
+}
+}else{
+if(d.isOpera||(d.isIE>7&&!d.isQuirks)){
+if(p){
+be=d._getBorderExtents(p);
+l-=be.l;
+t-=be.t;
+}
+}
+}
+return {l:l,t:t,w:_38.offsetWidth+me.w,h:_38.offsetHeight+me.h};
+};
+dojo._getContentBox=function(_3a,_3b){
+var s=_3b||gcs(_3a),pe=d._getPadExtents(_3a,s),be=d._getBorderExtents(_3a,s),w=_3a.clientWidth,h;
+if(!w){
+w=_3a.offsetWidth,h=_3a.offsetHeight;
+}else{
+h=_3a.clientHeight,be.w=be.h=0;
+}
+if(d.isOpera){
+pe.l+=be.l;
+pe.t+=be.t;
+}
+return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};
+};
+dojo._getBorderBox=function(_3c,_3d){
+var s=_3d||gcs(_3c),pe=d._getPadExtents(_3c,s),cb=d._getContentBox(_3c,s);
+return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};
+};
+dojo._setBox=function(_3e,l,t,w,h,u){
+u=u||"px";
+var s=_3e.style;
+if(!isNaN(l)){
+s.left=l+u;
+}
+if(!isNaN(t)){
+s.top=t+u;
+}
+if(w>=0){
+s.width=w+u;
+}
+if(h>=0){
+s.height=h+u;
+}
+};
+dojo._isButtonTag=function(_3f){
+return _3f.tagName=="BUTTON"||_3f.tagName=="INPUT"&&(_3f.getAttribute("type")||"").toUpperCase()=="BUTTON";
+};
+dojo._usesBorderBox=function(_40){
+var n=_40.tagName;
+return d.boxModel=="border-box"||n=="TABLE"||d._isButtonTag(_40);
+};
+dojo._setContentSize=function(_41,_42,_43,_44){
+if(d._usesBorderBox(_41)){
+var pb=d._getPadBorderExtents(_41,_44);
+if(_42>=0){
+_42+=pb.w;
+}
+if(_43>=0){
+_43+=pb.h;
+}
+}
+d._setBox(_41,NaN,NaN,_42,_43);
+};
+dojo._setMarginBox=function(_45,_46,_47,_48,_49,_4a){
+var s=_4a||gcs(_45),bb=d._usesBorderBox(_45),pb=bb?_4b:d._getPadBorderExtents(_45,s);
+if(d.isWebKit){
+if(d._isButtonTag(_45)){
+var ns=_45.style;
+if(_48>=0&&!ns.width){
+ns.width="4px";
+}
+if(_49>=0&&!ns.height){
+ns.height="4px";
+}
+}
+}
+var mb=d._getMarginExtents(_45,s);
+if(_48>=0){
+_48=Math.max(_48-pb.w-mb.w,0);
+}
+if(_49>=0){
+_49=Math.max(_49-pb.h-mb.h,0);
+}
+d._setBox(_45,_46,_47,_48,_49);
+};
+var _4b={l:0,t:0,w:0,h:0};
+dojo.marginBox=function(_4c,box){
+var n=_5(_4c),s=gcs(n),b=box;
+return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);
+};
+dojo.contentBox=function(_4d,box){
+var n=_5(_4d),s=gcs(n),b=box;
+return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);
+};
+var _4e=function(_4f,_50){
+if(!(_4f=(_4f||0).parentNode)){
+return 0;
+}
+var val,_51=0,_52=d.body();
+while(_4f&&_4f.style){
+if(gcs(_4f).position=="fixed"){
+return 0;
+}
+val=_4f[_50];
+if(val){
+_51+=val-0;
+if(_4f==_52){
+break;
+}
+}
+_4f=_4f.parentNode;
+}
+return _51;
+};
+dojo._docScroll=function(){
+var n=d.global;
+return "pageXOffset" in n?{x:n.pageXOffset,y:n.pageYOffset}:(n=d.doc.documentElement,n.clientHeight?{x:d._fixIeBiDiScrollLeft(n.scrollLeft),y:n.scrollTop}:(n=d.body(),{x:n.scrollLeft||0,y:n.scrollTop||0}));
+};
+dojo._isBodyLtr=function(){
+return "_bodyLtr" in d?d._bodyLtr:d._bodyLtr=(d.body().dir||d.doc.documentElement.dir||"ltr").toLowerCase()=="ltr";
+};
+dojo._getIeDocumentElementOffset=function(){
+var de=d.doc.documentElement;
+if(d.isIE<8){
+var r=de.getBoundingClientRect();
+var l=r.left,t=r.top;
+if(d.isIE<7){
+l+=de.clientLeft;
+t+=de.clientTop;
+}
+return {x:l<0?0:l,y:t<0?0:t};
+}else{
+return {x:0,y:0};
+}
+};
+dojo._fixIeBiDiScrollLeft=function(_53){
+var dd=d.doc;
+if(d.isIE<8&&!d._isBodyLtr()){
+var de=d.isQuirks?dd.body:dd.documentElement;
+return _53+de.clientWidth-de.scrollWidth;
+}
+return _53;
+};
+dojo._abs=dojo.position=function(_54,_55){
+var db=d.body(),dh=db.parentNode,ret;
+_54=_5(_54);
+if(_54["getBoundingClientRect"]){
+ret=_54.getBoundingClientRect();
+ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};
+if(d.isIE){
+var _56=d._getIeDocumentElementOffset();
+ret.x-=_56.x+(d.isQuirks?db.clientLeft+db.offsetLeft:0);
+ret.y-=_56.y+(d.isQuirks?db.clientTop+db.offsetTop:0);
+}else{
+if(d.isFF==3){
+var cs=gcs(dh);
+ret.x-=px(dh,cs.marginLeft)+px(dh,cs.borderLeftWidth);
+ret.y-=px(dh,cs.marginTop)+px(dh,cs.borderTopWidth);
+}
+}
+}else{
+ret={x:0,y:0,w:_54.offsetWidth,h:_54.offsetHeight};
+if(_54["offsetParent"]){
+ret.x-=_4e(_54,"scrollLeft");
+ret.y-=_4e(_54,"scrollTop");
+var _57=_54;
+do{
+var n=_57.offsetLeft,t=_57.offsetTop;
+ret.x+=isNaN(n)?0:n;
+ret.y+=isNaN(t)?0:t;
+cs=gcs(_57);
+if(_57!=_54){
+if(d.isMoz){
+ret.x+=2*px(_57,cs.borderLeftWidth);
+ret.y+=2*px(_57,cs.borderTopWidth);
+}else{
+ret.x+=px(_57,cs.borderLeftWidth);
+ret.y+=px(_57,cs.borderTopWidth);
+}
+}
+if(d.isMoz&&cs.position=="static"){
+var _58=_57.parentNode;
+while(_58!=_57.offsetParent){
+var pcs=gcs(_58);
+if(pcs.position=="static"){
+ret.x+=px(_57,pcs.borderLeftWidth);
+ret.y+=px(_57,pcs.borderTopWidth);
+}
+_58=_58.parentNode;
+}
+}
+_57=_57.offsetParent;
+}while((_57!=dh)&&_57);
+}else{
+if(_54.x&&_54.y){
+ret.x+=isNaN(_54.x)?0:_54.x;
+ret.y+=isNaN(_54.y)?0:_54.y;
+}
+}
+}
+if(_55){
+var _59=d._docScroll();
+ret.x+=_59.x;
+ret.y+=_59.y;
+}
+return ret;
+};
+dojo.coords=function(_5a,_5b){
+var n=_5(_5a),s=gcs(n),mb=d._getMarginBox(n,s);
+var abs=d.position(n,_5b);
+mb.x=abs.x;
+mb.y=abs.y;
+return mb;
+};
+var _5c={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"},_5d={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"},_5e={innerHTML:1,className:1,htmlFor:d.isIE,value:1};
+var _5f=function(_60){
+return _5d[_60.toLowerCase()]||_60;
+};
+var _61=function(_62,_63){
+var _64=_62.getAttributeNode&&_62.getAttributeNode(_63);
+return _64&&_64.specified;
+};
+dojo.hasAttr=function(_65,_66){
+var lc=_66.toLowerCase();
+return _5e[_5c[lc]||_66]||_61(_5(_65),_5d[lc]||_66);
+};
+var _67={},_68=0,_69=dojo._scopeName+"attrid",_6a={col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1};
+dojo.attr=function(_6b,_6c,_6d){
+_6b=_5(_6b);
+var _6e=arguments.length,_6f;
+if(_6e==2&&typeof _6c!="string"){
+for(var x in _6c){
+d.attr(_6b,x,_6c[x]);
+}
+return _6b;
+}
+var lc=_6c.toLowerCase(),_70=_5c[lc]||_6c,_71=_5e[_70],_72=_5d[lc]||_6c;
+if(_6e==3){
+do{
+if(_70=="style"&&typeof _6d!="string"){
+d.style(_6b,_6d);
+break;
+}
+if(_70=="innerHTML"){
+if(d.isIE&&_6b.tagName.toLowerCase() in _6a){
+d.empty(_6b);
+_6b.appendChild(d._toDom(_6d,_6b.ownerDocument));
+}else{
+_6b[_70]=_6d;
+}
+break;
+}
+if(d.isFunction(_6d)){
+var _73=d.attr(_6b,_69);
+if(!_73){
+_73=_68++;
+d.attr(_6b,_69,_73);
+}
+if(!_67[_73]){
+_67[_73]={};
+}
+var h=_67[_73][_70];
+if(h){
+d.disconnect(h);
+}else{
+try{
+delete _6b[_70];
+}
+catch(e){
+}
+}
+_67[_73][_70]=d.connect(_6b,_70,_6d);
+break;
+}
+if(_71||typeof _6d=="boolean"){
+_6b[_70]=_6d;
+break;
+}
+_6b.setAttribute(_72,_6d);
+}while(false);
+return _6b;
+}
+_6d=_6b[_70];
+if(_71&&typeof _6d!="undefined"){
+return _6d;
+}
+if(_70!="href"&&(typeof _6d=="boolean"||d.isFunction(_6d))){
+return _6d;
+}
+return _61(_6b,_72)?_6b.getAttribute(_72):null;
+};
+dojo.removeAttr=function(_74,_75){
+_5(_74).removeAttribute(_5f(_75));
+};
+dojo.getNodeProp=function(_76,_77){
+_76=_5(_76);
+var lc=_77.toLowerCase(),_78=_5c[lc]||_77;
+if((_78 in _76)&&_78!="href"){
+return _76[_78];
+}
+var _79=_5d[lc]||_77;
+return _61(_76,_79)?_76.getAttribute(_79):null;
+};
+dojo.create=function(tag,_7a,_7b,pos){
+var doc=d.doc;
+if(_7b){
+_7b=_5(_7b);
+doc=_7b.ownerDocument;
+}
+if(typeof tag=="string"){
+tag=doc.createElement(tag);
+}
+if(_7a){
+d.attr(tag,_7a);
+}
+if(_7b){
+d.place(tag,_7b,pos);
+}
+return tag;
+};
+d.empty=d.isIE?function(_7c){
+_7c=_5(_7c);
+for(var c;c=_7c.lastChild;){
+d.destroy(c);
+}
+}:function(_7d){
+_5(_7d).innerHTML="";
+};
+var _7e={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_7f=/<\s*([\w\:]+)/,_80={},_81=0,_82="__"+d._scopeName+"ToDomId";
+for(var _83 in _7e){
+var tw=_7e[_83];
+tw.pre=_83=="option"?"<select multiple=\"multiple\">":"<"+tw.join("><")+">";
+tw.post="</"+tw.reverse().join("></")+">";
+}
+d._toDom=function(_84,doc){
+doc=doc||d.doc;
+var _85=doc[_82];
+if(!_85){
+doc[_82]=_85=++_81+"";
+_80[_85]=doc.createElement("div");
+}
+_84+="";
+var _86=_84.match(_7f),tag=_86?_86[1].toLowerCase():"",_87=_80[_85],_88,i,fc,df;
+if(_86&&_7e[tag]){
+_88=_7e[tag];
+_87.innerHTML=_88.pre+_84+_88.post;
+for(i=_88.length;i;--i){
+_87=_87.firstChild;
+}
+}else{
+_87.innerHTML=_84;
+}
+if(_87.childNodes.length==1){
+return _87.removeChild(_87.firstChild);
+}
+df=doc.createDocumentFragment();
+while(fc=_87.firstChild){
+df.appendChild(fc);
+}
+return df;
+};
+var _89="className";
+dojo.hasClass=function(_8a,_8b){
+return ((" "+_5(_8a)[_89]+" ").indexOf(" "+_8b+" ")>=0);
+};
+var _8c=/\s+/,a1=[""],_8d=function(s){
+if(typeof s=="string"||s instanceof String){
+if(s.indexOf(" ")<0){
+a1[0]=s;
+return a1;
+}else{
+return s.split(_8c);
+}
+}
+return s||"";
+};
+dojo.addClass=function(_8e,_8f){
+_8e=_5(_8e);
+_8f=_8d(_8f);
+var cls=_8e[_89],_90;
+cls=cls?" "+cls+" ":" ";
+_90=cls.length;
+for(var i=0,len=_8f.length,c;i<len;++i){
+c=_8f[i];
+if(c&&cls.indexOf(" "+c+" ")<0){
+cls+=c+" ";
+}
+}
+if(_90<cls.length){
+_8e[_89]=cls.substr(1,cls.length-2);
+}
+};
+dojo.removeClass=function(_91,_92){
+_91=_5(_91);
+var cls;
+if(_92!==undefined){
+_92=_8d(_92);
+cls=" "+_91[_89]+" ";
+for(var i=0,len=_92.length;i<len;++i){
+cls=cls.replace(" "+_92[i]+" "," ");
+}
+cls=d.trim(cls);
+}else{
+cls="";
+}
+if(_91[_89]!=cls){
+_91[_89]=cls;
+}
+};
+dojo.toggleClass=function(_93,_94,_95){
+if(_95===undefined){
+_95=!d.hasClass(_93,_94);
+}
+d[_95?"addClass":"removeClass"](_93,_94);
+};
+})();
+}
diff --git a/lib/dojo/_base/json.js b/lib/dojo/_base/json.js
new file mode 100644 (file)
index 0000000..7d8c5af
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.json"]){
+dojo._hasResource["dojo._base.json"]=true;
+dojo.provide("dojo._base.json");
+dojo.fromJson=function(_1){
+return eval("("+_1+")");
+};
+dojo._escapeString=function(_2){
+return ("\""+_2.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");
+};
+dojo.toJsonIndentStr="\t";
+dojo.toJson=function(it,_3,_4){
+if(it===undefined){
+return "undefined";
+}
+var _5=typeof it;
+if(_5=="number"||_5=="boolean"){
+return it+"";
+}
+if(it===null){
+return "null";
+}
+if(dojo.isString(it)){
+return dojo._escapeString(it);
+}
+var _6=arguments.callee;
+var _7;
+_4=_4||"";
+var _8=_3?_4+dojo.toJsonIndentStr:"";
+var tf=it.__json__||it.json;
+if(dojo.isFunction(tf)){
+_7=tf.call(it);
+if(it!==_7){
+return _6(_7,_3,_8);
+}
+}
+if(it.nodeType&&it.cloneNode){
+throw new Error("Can't serialize DOM nodes");
+}
+var _9=_3?" ":"";
+var _a=_3?"\n":"";
+if(dojo.isArray(it)){
+var _b=dojo.map(it,function(_c){
+var _d=_6(_c,_3,_8);
+if(typeof _d!="string"){
+_d="undefined";
+}
+return _a+_8+_d;
+});
+return "["+_b.join(","+_9)+_a+_4+"]";
+}
+if(_5=="function"){
+return null;
+}
+var _e=[],_f;
+for(_f in it){
+var _10,val;
+if(typeof _f=="number"){
+_10="\""+_f+"\"";
+}else{
+if(typeof _f=="string"){
+_10=dojo._escapeString(_f);
+}else{
+continue;
+}
+}
+val=_6(it[_f],_3,_8);
+if(typeof val!="string"){
+continue;
+}
+_e.push(_a+_8+_10+":"+_9+val);
+}
+return "{"+_e.join(","+_9)+_a+_4+"}";
+};
+}
diff --git a/lib/dojo/_base/lang.js b/lib/dojo/_base/lang.js
new file mode 100644 (file)
index 0000000..e7721a3
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.lang"]){
+dojo._hasResource["dojo._base.lang"]=true;
+dojo.provide("dojo._base.lang");
+(function(){
+var d=dojo,_1=Object.prototype.toString;
+dojo.isString=function(it){
+return (typeof it=="string"||it instanceof String);
+};
+dojo.isArray=function(it){
+return it&&(it instanceof Array||typeof it=="array");
+};
+dojo.isFunction=function(it){
+return _1.call(it)==="[object Function]";
+};
+dojo.isObject=function(it){
+return it!==undefined&&(it===null||typeof it=="object"||d.isArray(it)||d.isFunction(it));
+};
+dojo.isArrayLike=function(it){
+return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));
+};
+dojo.isAlien=function(it){
+return it&&!d.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));
+};
+dojo.extend=function(_2,_3){
+for(var i=1,l=arguments.length;i<l;i++){
+d._mixin(_2.prototype,arguments[i]);
+}
+return _2;
+};
+dojo._hitchArgs=function(_4,_5){
+var _6=d._toArray(arguments,2);
+var _7=d.isString(_5);
+return function(){
+var _8=d._toArray(arguments);
+var f=_7?(_4||d.global)[_5]:_5;
+return f&&f.apply(_4||this,_6.concat(_8));
+};
+};
+dojo.hitch=function(_9,_a){
+if(arguments.length>2){
+return d._hitchArgs.apply(d,arguments);
+}
+if(!_a){
+_a=_9;
+_9=null;
+}
+if(d.isString(_a)){
+_9=_9||d.global;
+if(!_9[_a]){
+throw (["dojo.hitch: scope[\"",_a,"\"] is null (scope=\"",_9,"\")"].join(""));
+}
+return function(){
+return _9[_a].apply(_9,arguments||[]);
+};
+}
+return !_9?_a:function(){
+return _a.apply(_9,arguments||[]);
+};
+};
+dojo.delegate=dojo._delegate=(function(){
+function _b(){
+};
+return function(_c,_d){
+_b.prototype=_c;
+var _e=new _b();
+_b.prototype=null;
+if(_d){
+d._mixin(_e,_d);
+}
+return _e;
+};
+})();
+var _f=function(obj,_10,_11){
+return (_11||[]).concat(Array.prototype.slice.call(obj,_10||0));
+};
+var _12=function(obj,_13,_14){
+var arr=_14||[];
+for(var x=_13||0;x<obj.length;x++){
+arr.push(obj[x]);
+}
+return arr;
+};
+dojo._toArray=d.isIE?function(obj){
+return ((obj.item)?_12:_f).apply(this,arguments);
+}:_f;
+dojo.partial=function(_15){
+var arr=[null];
+return d.hitch.apply(d,arr.concat(d._toArray(arguments)));
+};
+var _16=d._extraNames,_17=_16.length,_18={};
+dojo.clone=function(o){
+if(!o||typeof o!="object"||d.isFunction(o)){
+return o;
+}
+if(o.nodeType&&"cloneNode" in o){
+return o.cloneNode(true);
+}
+if(o instanceof Date){
+return new Date(o.getTime());
+}
+var r,i,l,s,_19;
+if(d.isArray(o)){
+r=[];
+for(i=0,l=o.length;i<l;++i){
+if(i in o){
+r.push(d.clone(o[i]));
+}
+}
+}else{
+r=o.constructor?new o.constructor():{};
+}
+for(_19 in o){
+s=o[_19];
+if(!(_19 in r)||(r[_19]!==s&&(!(_19 in _18)||_18[_19]!==s))){
+r[_19]=d.clone(s);
+}
+}
+if(_17){
+for(i=0;i<_17;++i){
+_19=_16[i];
+s=o[_19];
+if(!(_19 in r)||(r[_19]!==s&&(!(_19 in _18)||_18[_19]!==s))){
+r[_19]=s;
+}
+}
+}
+return r;
+};
+dojo.trim=String.prototype.trim?function(str){
+return str.trim();
+}:function(str){
+return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");
+};
+var _1a=/\{([^\}]+)\}/g;
+dojo.replace=function(_1b,map,_1c){
+return _1b.replace(_1c||_1a,d.isFunction(map)?map:function(_1d,k){
+return d.getObject(k,false,map);
+});
+};
+})();
+}
diff --git a/lib/dojo/_base/query-sizzle.js b/lib/dojo/_base/query-sizzle.js
new file mode 100644 (file)
index 0000000..ac26c18
--- /dev/null
@@ -0,0 +1,628 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.query"]){
+dojo._hasResource["dojo._base.query"]=true;
+if(typeof dojo!="undefined"){
+dojo.provide("dojo._base.query");
+dojo.require("dojo._base.NodeList");
+dojo.query=function(_1,_2,_3){
+_3=_3||dojo.NodeList;
+if(!_1){
+return new _3();
+}
+if(_1.constructor==_3){
+return _1;
+}
+if(!dojo.isString(_1)){
+return new _3(_1);
+}
+if(dojo.isString(_2)){
+_2=dojo.byId(_2);
+if(!_2){
+return new _3();
+}
+}
+return dojo.Sizzle(_1,_2,new _3());
+};
+dojo._filterQueryResult=function(_4,_5){
+return dojo.Sizzle.filter(_5,_4);
+};
+}
+(function(ns){
+var _6=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|[^[\]]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,_7=0,_8=Object.prototype.toString;
+var _9=function(_a,_b,_c,_d){
+_c=_c||[];
+_b=_b||document;
+if(_b.nodeType!==1&&_b.nodeType!==9){
+return [];
+}
+if(!_a||typeof _a!=="string"){
+return _c;
+}
+var _e=[],m,_f,_10,_11,_12,_13,_14=true;
+_6.lastIndex=0;
+while((m=_6.exec(_a))!==null){
+_e.push(m[1]);
+if(m[2]){
+_13=RegExp.rightContext;
+break;
+}
+}
+if(_e.length>1&&_15.match.POS.exec(_a)){
+if(_e.length===2&&_15.relative[_e[0]]){
+var _16="",_17;
+while((_17=_15.match.POS.exec(_a))){
+_16+=_17[0];
+_a=_a.replace(_15.match.POS,"");
+}
+_f=_9.filter(_16,_9(_a,_b));
+}else{
+_f=_15.relative[_e[0]]?[_b]:_9(_e.shift(),_b);
+while(_e.length){
+var _18=[];
+_a=_e.shift();
+if(_15.relative[_a]){
+_a+=_e.shift();
+}
+for(var i=0,l=_f.length;i<l;i++){
+_9(_a,_f[i],_18);
+}
+_f=_18;
+}
+}
+}else{
+var ret=_d?{expr:_e.pop(),set:_19(_d)}:_9.find(_e.pop(),_e.length===1&&_b.parentNode?_b.parentNode:_b);
+_f=_9.filter(ret.expr,ret.set);
+if(_e.length>0){
+_10=_19(_f);
+}else{
+_14=false;
+}
+while(_e.length){
+var cur=_e.pop(),pop=cur;
+if(!_15.relative[cur]){
+cur="";
+}else{
+pop=_e.pop();
+}
+if(pop==null){
+pop=_b;
+}
+_15.relative[cur](_10,pop);
+}
+}
+if(!_10){
+_10=_f;
+}
+if(!_10){
+throw "Syntax error, unrecognized expression: "+(cur||_a);
+}
+if(_8.call(_10)==="[object Array]"){
+if(!_14){
+_c.push.apply(_c,_10);
+}else{
+if(_b.nodeType===1){
+for(var i=0;_10[i]!=null;i++){
+if(_10[i]&&(_10[i]===true||_10[i].nodeType===1&&_1a(_b,_10[i]))){
+_c.push(_f[i]);
+}
+}
+}else{
+for(var i=0;_10[i]!=null;i++){
+if(_10[i]&&_10[i].nodeType===1){
+_c.push(_f[i]);
+}
+}
+}
+}
+}else{
+_19(_10,_c);
+}
+if(_13){
+_9(_13,_b,_c,_d);
+}
+return _c;
+};
+_9.matches=function(_1b,set){
+return _9(_1b,null,null,set);
+};
+_9.find=function(_1c,_1d){
+var set,_1e;
+if(!_1c){
+return [];
+}
+for(var i=0,l=_15.order.length;i<l;i++){
+var _1f=_15.order[i],_1e;
+if((_1e=_15.match[_1f].exec(_1c))){
+var _20=RegExp.leftContext;
+if(_20.substr(_20.length-1)!=="\\"){
+_1e[1]=(_1e[1]||"").replace(/\\/g,"");
+set=_15.find[_1f](_1e,_1d);
+if(set!=null){
+_1c=_1c.replace(_15.match[_1f],"");
+break;
+}
+}
+}
+}
+if(!set){
+set=_1d.getElementsByTagName("*");
+}
+return {set:set,expr:_1c};
+};
+_9.filter=function(_21,set,_22,not){
+var old=_21,_23=[],_24=set,_25,_26;
+while(_21&&set.length){
+for(var _27 in _15.filter){
+if((_25=_15.match[_27].exec(_21))!=null){
+var _28=_15.filter[_27],_29=null,_2a=0,_2b,_2c;
+_26=false;
+if(_24==_23){
+_23=[];
+}
+if(_15.preFilter[_27]){
+_25=_15.preFilter[_27](_25,_24,_22,_23,not);
+if(!_25){
+_26=_2b=true;
+}else{
+if(_25[0]===true){
+_29=[];
+var _2d=null,_2e;
+for(var i=0;(_2e=_24[i])!==undefined;i++){
+if(_2e&&_2d!==_2e){
+_29.push(_2e);
+_2d=_2e;
+}
+}
+}
+}
+}
+if(_25){
+for(var i=0;(_2c=_24[i])!==undefined;i++){
+if(_2c){
+if(_29&&_2c!=_29[_2a]){
+_2a++;
+}
+_2b=_28(_2c,_25,_2a,_29);
+var _2f=not^!!_2b;
+if(_22&&_2b!=null){
+if(_2f){
+_26=true;
+}else{
+_24[i]=false;
+}
+}else{
+if(_2f){
+_23.push(_2c);
+_26=true;
+}
+}
+}
+}
+}
+if(_2b!==undefined){
+if(!_22){
+_24=_23;
+}
+_21=_21.replace(_15.match[_27],"");
+if(!_26){
+return [];
+}
+break;
+}
+}
+}
+_21=_21.replace(/\s*,\s*/,"");
+if(_21==old){
+if(_26==null){
+throw "Syntax error, unrecognized expression: "+_21;
+}else{
+break;
+}
+}
+old=_21;
+}
+return _24;
+};
+var _15=_9.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u0128-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u0128-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u0128-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[((?:[\w\u0128-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\]/,TAG:/^((?:[\w\u0128-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child\(?(even|odd|[\dn+-]*)\)?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)\(?(\d*)\)?(?:[^-]|$)/,PSEUDO:/:((?:[\w\u0128-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},relative:{"+":function(_30,_31){
+for(var i=0,l=_30.length;i<l;i++){
+var _32=_30[i];
+if(_32){
+var cur=_32.previousSibling;
+while(cur&&cur.nodeType!==1){
+cur=cur.previousSibling;
+}
+_30[i]=typeof _31==="string"?cur||false:cur===_31;
+}
+}
+if(typeof _31==="string"){
+_9.filter(_31,_30,true);
+}
+},">":function(_33,_34){
+if(typeof _34==="string"&&!/\W/.test(_34)){
+_34=_34.toUpperCase();
+for(var i=0,l=_33.length;i<l;i++){
+var _35=_33[i];
+if(_35){
+var _36=_35.parentNode;
+_33[i]=_36.nodeName===_34?_36:false;
+}
+}
+}else{
+for(var i=0,l=_33.length;i<l;i++){
+var _35=_33[i];
+if(_35){
+_33[i]=typeof _34==="string"?_35.parentNode:_35.parentNode===_34;
+}
+}
+if(typeof _34==="string"){
+_9.filter(_34,_33,true);
+}
+}
+},"":function(_37,_38){
+var _39="done"+(_7++),_3a=_3b;
+if(!_38.match(/\W/)){
+var _3c=_38=_38.toUpperCase();
+_3a=_3d;
+}
+_3a("parentNode",_38,_39,_37,_3c);
+},"~":function(_3e,_3f){
+var _40="done"+(_7++),_41=_3b;
+if(typeof _3f==="string"&&!_3f.match(/\W/)){
+var _42=_3f=_3f.toUpperCase();
+_41=_3d;
+}
+_41("previousSibling",_3f,_40,_3e,_42);
+}},find:{ID:function(_43,_44){
+if(_44.getElementById){
+var m=_44.getElementById(_43[1]);
+return m?[m]:[];
+}
+},NAME:function(_45,_46){
+return _46.getElementsByName?_46.getElementsByName(_45[1]):null;
+},TAG:function(_47,_48){
+return _48.getElementsByTagName(_47[1]);
+}},preFilter:{CLASS:function(_49,_4a,_4b,_4c,not){
+_49=" "+_49[1].replace(/\\/g,"")+" ";
+for(var i=0;_4a[i];i++){
+if(not^(" "+_4a[i].className+" ").indexOf(_49)>=0){
+if(!_4b){
+_4c.push(_4a[i]);
+}
+}else{
+if(_4b){
+_4a[i]=false;
+}
+}
+}
+return false;
+},ID:function(_4d){
+return _4d[1];
+},TAG:function(_4e){
+return _4e[1].toUpperCase();
+},CHILD:function(_4f){
+if(_4f[1]=="nth"){
+var _50=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(_4f[2]=="even"&&"2n"||_4f[2]=="odd"&&"2n+1"||!/\D/.test(_4f[2])&&"0n+"+_4f[2]||_4f[2]);
+_4f[2]=(_50[1]+(_50[2]||1))-0;
+_4f[3]=_50[3]-0;
+}
+_4f[0]="done"+(_7++);
+return _4f;
+},ATTR:function(_51){
+var _52=_51[1];
+if(_15.attrMap[_52]){
+_51[1]=_15.attrMap[_52];
+}
+if(_51[2]==="~="){
+_51[4]=" "+_51[4]+" ";
+}
+return _51;
+},PSEUDO:function(_53,_54,_55,_56,not){
+if(_53[1]==="not"){
+if(_53[3].match(_6).length>1){
+_53[3]=_9(_53[3],null,null,_54);
+}else{
+var ret=_9.filter(_53[3],_54,_55,true^not);
+if(!_55){
+_56.push.apply(_56,ret);
+}
+return false;
+}
+}
+return _53;
+},POS:function(_57){
+_57.unshift(true);
+return _57;
+}},filters:{enabled:function(_58){
+return _58.disabled===false&&_58.type!=="hidden";
+},disabled:function(_59){
+return _59.disabled===true;
+},checked:function(_5a){
+return _5a.checked===true;
+},selected:function(_5b){
+_5b.parentNode.selectedIndex;
+return _5b.selected===true;
+},parent:function(_5c){
+return !!_5c.firstChild;
+},empty:function(_5d){
+return !_5d.firstChild;
+},has:function(_5e,i,_5f){
+return !!_9(_5f[3],_5e).length;
+},header:function(_60){
+return /h\d/i.test(_60.nodeName);
+},text:function(_61){
+return "text"===_61.type;
+},radio:function(_62){
+return "radio"===_62.type;
+},checkbox:function(_63){
+return "checkbox"===_63.type;
+},file:function(_64){
+return "file"===_64.type;
+},password:function(_65){
+return "password"===_65.type;
+},submit:function(_66){
+return "submit"===_66.type;
+},image:function(_67){
+return "image"===_67.type;
+},reset:function(_68){
+return "reset"===_68.type;
+},button:function(_69){
+return "button"===_69.type||_69.nodeName.toUpperCase()==="BUTTON";
+},input:function(_6a){
+return /input|select|textarea|button/i.test(_6a.nodeName);
+}},setFilters:{first:function(_6b,i){
+return i===0;
+},last:function(_6c,i,_6d,_6e){
+return i===_6e.length-1;
+},even:function(_6f,i){
+return i%2===0;
+},odd:function(_70,i){
+return i%2===1;
+},lt:function(_71,i,_72){
+return i<_72[3]-0;
+},gt:function(_73,i,_74){
+return i>_74[3]-0;
+},nth:function(_75,i,_76){
+return _76[3]-0==i;
+},eq:function(_77,i,_78){
+return _78[3]-0==i;
+}},filter:{CHILD:function(_79,_7a){
+var _7b=_7a[1],_7c=_79.parentNode;
+var _7d=_7a[0];
+if(_7c&&!_7c[_7d]){
+var _7e=1;
+for(var _7f=_7c.firstChild;_7f;_7f=_7f.nextSibling){
+if(_7f.nodeType==1){
+_7f.nodeIndex=_7e++;
+}
+}
+_7c[_7d]=_7e-1;
+}
+if(_7b=="first"){
+return _79.nodeIndex==1;
+}else{
+if(_7b=="last"){
+return _79.nodeIndex==_7c[_7d];
+}else{
+if(_7b=="only"){
+return _7c[_7d]==1;
+}else{
+if(_7b=="nth"){
+var add=false,_80=_7a[2],_81=_7a[3];
+if(_80==1&&_81==0){
+return true;
+}
+if(_80==0){
+if(_79.nodeIndex==_81){
+add=true;
+}
+}else{
+if((_79.nodeIndex-_81)%_80==0&&(_79.nodeIndex-_81)/_80>=0){
+add=true;
+}
+}
+return add;
+}
+}
+}
+}
+},PSEUDO:function(_82,_83,i,_84){
+var _85=_83[1],_86=_15.filters[_85];
+if(_86){
+return _86(_82,i,_83,_84);
+}else{
+if(_85==="contains"){
+return (_82.textContent||_82.innerText||"").indexOf(_83[3])>=0;
+}else{
+if(_85==="not"){
+var not=_83[3];
+for(var i=0,l=not.length;i<l;i++){
+if(not[i]===_82){
+return false;
+}
+}
+return true;
+}
+}
+}
+},ID:function(_87,_88){
+return _87.nodeType===1&&_87.getAttribute("id")===_88;
+},TAG:function(_89,_8a){
+return (_8a==="*"&&_89.nodeType===1)||_89.nodeName===_8a;
+},CLASS:function(_8b,_8c){
+return _8c.test(_8b.className);
+},ATTR:function(_8d,_8e){
+var _8f=_8d[_8e[1]]||_8d.getAttribute(_8e[1]),_90=_8f+"",_91=_8e[2],_92=_8e[4];
+return _8f==null?false:_91==="="?_90===_92:_91==="*="?_90.indexOf(_92)>=0:_91==="~="?(" "+_90+" ").indexOf(_92)>=0:!_8e[4]?_8f:_91==="!="?_90!=_92:_91==="^="?_90.indexOf(_92)===0:_91==="$="?_90.substr(_90.length-_92.length)===_92:_91==="|="?_90===_92||_90.substr(0,_92.length+1)===_92+"-":false;
+},POS:function(_93,_94,i,_95){
+var _96=_94[2],_97=_15.setFilters[_96];
+if(_97){
+return _97(_93,i,_94,_95);
+}
+}}};
+for(var _98 in _15.match){
+_15.match[_98]=RegExp(_15.match[_98].source+/(?![^\[]*\])(?![^\(]*\))/.source);
+}
+var _19=function(_99,_9a){
+_99=Array.prototype.slice.call(_99);
+if(_9a){
+_9a.push.apply(_9a,_99);
+return _9a;
+}
+return _99;
+};
+try{
+Array.prototype.slice.call(document.documentElement.childNodes);
+}
+catch(e){
+_19=function(_9b,_9c){
+var ret=_9c||[];
+if(_8.call(_9b)==="[object Array]"){
+Array.prototype.push.apply(ret,_9b);
+}else{
+if(typeof _9b.length==="number"){
+for(var i=0,l=_9b.length;i<l;i++){
+ret.push(_9b[i]);
+}
+}else{
+for(var i=0;_9b[i];i++){
+ret.push(_9b[i]);
+}
+}
+}
+return ret;
+};
+}
+(function(){
+var _9d=document.createElement("form"),id="script"+(new Date).getTime();
+_9d.innerHTML="<input name='"+id+"'/>";
+var _9e=document.documentElement;
+_9e.insertBefore(_9d,_9e.firstChild);
+if(!!document.getElementById(id)){
+_15.find.ID=function(_9f,_a0){
+if(_a0.getElementById){
+var m=_a0.getElementById(_9f[1]);
+return m?m.id===_9f[1]||m.getAttributeNode&&m.getAttributeNode("id").nodeValue===_9f[1]?[m]:undefined:[];
+}
+};
+_15.filter.ID=function(_a1,_a2){
+var _a3=_a1.getAttributeNode&&_a1.getAttributeNode("id");
+return _a1.nodeType===1&&_a3&&_a3.nodeValue===_a2;
+};
+}
+_9e.removeChild(_9d);
+})();
+(function(){
+var div=document.createElement("div");
+div.appendChild(document.createComment(""));
+if(div.getElementsByTagName("*").length>0){
+_15.find.TAG=function(_a4,_a5){
+var _a6=_a5.getElementsByTagName(_a4[1]);
+if(_a4[1]==="*"){
+var tmp=[];
+for(var i=0;_a6[i];i++){
+if(_a6[i].nodeType===1){
+tmp.push(_a6[i]);
+}
+}
+_a6=tmp;
+}
+return _a6;
+};
+}
+})();
+if(document.querySelectorAll){
+(function(){
+var _a7=_9;
+_9=function(_a8,_a9,_aa,_ab){
+_a9=_a9||document;
+if(!_ab&&_a9.nodeType===9){
+try{
+return _19(_a9.querySelectorAll(_a8),_aa);
+}
+catch(e){
+}
+}
+return _a7(_a8,_a9,_aa,_ab);
+};
+_9.find=_a7.find;
+_9.filter=_a7.filter;
+_9.selectors=_a7.selectors;
+_9.matches=_a7.matches;
+})();
+}
+if(document.documentElement.getElementsByClassName){
+_15.order.splice(1,0,"CLASS");
+_15.find.CLASS=function(_ac,_ad){
+return _ad.getElementsByClassName(_ac[1]);
+};
+}
+function _3d(dir,cur,_ae,_af,_b0){
+for(var i=0,l=_af.length;i<l;i++){
+var _b1=_af[i];
+if(_b1){
+_b1=_b1[dir];
+var _b2=false;
+while(_b1&&_b1.nodeType){
+var _b3=_b1[_ae];
+if(_b3){
+_b2=_af[_b3];
+break;
+}
+if(_b1.nodeType===1){
+_b1[_ae]=i;
+}
+if(_b1.nodeName===cur){
+_b2=_b1;
+break;
+}
+_b1=_b1[dir];
+}
+_af[i]=_b2;
+}
+}
+};
+function _3b(dir,cur,_b4,_b5,_b6){
+for(var i=0,l=_b5.length;i<l;i++){
+var _b7=_b5[i];
+if(_b7){
+_b7=_b7[dir];
+var _b8=false;
+while(_b7&&_b7.nodeType){
+if(_b7[_b4]){
+_b8=_b5[_b7[_b4]];
+break;
+}
+if(_b7.nodeType===1){
+_b7[_b4]=i;
+if(typeof cur!=="string"){
+if(_b7===cur){
+_b8=true;
+break;
+}
+}else{
+if(_9.filter(cur,[_b7]).length>0){
+_b8=_b7;
+break;
+}
+}
+}
+_b7=_b7[dir];
+}
+_b5[i]=_b8;
+}
+}
+};
+var _1a=document.compareDocumentPosition?function(a,b){
+return a.compareDocumentPosition(b)&16;
+}:function(a,b){
+return a!==b&&(a.contains?a.contains(b):true);
+};
+(ns||window).Sizzle=_9;
+})(typeof dojo=="undefined"?null:dojo);
+}
diff --git a/lib/dojo/_base/query.js b/lib/dojo/_base/query.js
new file mode 100644 (file)
index 0000000..ecf8468
--- /dev/null
@@ -0,0 +1,797 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.query"]){
+dojo._hasResource["dojo._base.query"]=true;
+if(typeof dojo!="undefined"){
+dojo.provide("dojo._base.query");
+dojo.require("dojo._base.NodeList");
+dojo.require("dojo._base.lang");
+}
+(function(d){
+var _1=d.trim;
+var _2=d.forEach;
+var _3=d._NodeListCtor=d.NodeList;
+var _4=function(){
+return d.doc;
+};
+var _5=((d.isWebKit||d.isMozilla)&&((_4().compatMode)=="BackCompat"));
+var _6=!!_4().firstChild["children"]?"children":"childNodes";
+var _7=">~+";
+var _8=false;
+var _9=function(){
+return true;
+};
+var _a=function(_b){
+if(_7.indexOf(_b.slice(-1))>=0){
+_b+=" * ";
+}else{
+_b+=" ";
+}
+var ts=function(s,e){
+return _1(_b.slice(s,e));
+};
+var _c=[];
+var _d=-1,_e=-1,_f=-1,_10=-1,_11=-1,_12=-1,_13=-1,lc="",cc="",_14;
+var x=0,ql=_b.length,_15=null,_16=null;
+var _17=function(){
+if(_13>=0){
+var tv=(_13==x)?null:ts(_13,x);
+_15[(_7.indexOf(tv)<0)?"tag":"oper"]=tv;
+_13=-1;
+}
+};
+var _18=function(){
+if(_12>=0){
+_15.id=ts(_12,x).replace(/\\/g,"");
+_12=-1;
+}
+};
+var _19=function(){
+if(_11>=0){
+_15.classes.push(ts(_11+1,x).replace(/\\/g,""));
+_11=-1;
+}
+};
+var _1a=function(){
+_18();
+_17();
+_19();
+};
+var _1b=function(){
+_1a();
+if(_10>=0){
+_15.pseudos.push({name:ts(_10+1,x)});
+}
+_15.loops=(_15.pseudos.length||_15.attrs.length||_15.classes.length);
+_15.oquery=_15.query=ts(_14,x);
+_15.otag=_15.tag=(_15["oper"])?null:(_15.tag||"*");
+if(_15.tag){
+_15.tag=_15.tag.toUpperCase();
+}
+if(_c.length&&(_c[_c.length-1].oper)){
+_15.infixOper=_c.pop();
+_15.query=_15.infixOper.query+" "+_15.query;
+}
+_c.push(_15);
+_15=null;
+};
+for(;lc=cc,cc=_b.charAt(x),x<ql;x++){
+if(lc=="\\"){
+continue;
+}
+if(!_15){
+_14=x;
+_15={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){
+return (_8)?this.otag:this.tag;
+}};
+_13=x;
+}
+if(_d>=0){
+if(cc=="]"){
+if(!_16.attr){
+_16.attr=ts(_d+1,x);
+}else{
+_16.matchFor=ts((_f||_d+1),x);
+}
+var cmf=_16.matchFor;
+if(cmf){
+if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){
+_16.matchFor=cmf.slice(1,-1);
+}
+}
+_15.attrs.push(_16);
+_16=null;
+_d=_f=-1;
+}else{
+if(cc=="="){
+var _1c=("|~^$*".indexOf(lc)>=0)?lc:"";
+_16.type=_1c+cc;
+_16.attr=ts(_d+1,x-_1c.length);
+_f=x+1;
+}
+}
+}else{
+if(_e>=0){
+if(cc==")"){
+if(_10>=0){
+_16.value=ts(_e+1,x);
+}
+_10=_e=-1;
+}
+}else{
+if(cc=="#"){
+_1a();
+_12=x+1;
+}else{
+if(cc=="."){
+_1a();
+_11=x;
+}else{
+if(cc==":"){
+_1a();
+_10=x;
+}else{
+if(cc=="["){
+_1a();
+_d=x;
+_16={};
+}else{
+if(cc=="("){
+if(_10>=0){
+_16={name:ts(_10+1,x),value:null};
+_15.pseudos.push(_16);
+}
+_e=x;
+}else{
+if((cc==" ")&&(lc!=cc)){
+_1b();
+}
+}
+}
+}
+}
+}
+}
+}
+}
+return _c;
+};
+var _1d=function(_1e,_1f){
+if(!_1e){
+return _1f;
+}
+if(!_1f){
+return _1e;
+}
+return function(){
+return _1e.apply(window,arguments)&&_1f.apply(window,arguments);
+};
+};
+var _20=function(i,arr){
+var r=arr||[];
+if(i){
+r.push(i);
+}
+return r;
+};
+var _21=function(n){
+return (1==n.nodeType);
+};
+var _22="";
+var _23=function(_24,_25){
+if(!_24){
+return _22;
+}
+if(_25=="class"){
+return _24.className||_22;
+}
+if(_25=="for"){
+return _24.htmlFor||_22;
+}
+if(_25=="style"){
+return _24.style.cssText||_22;
+}
+return (_8?_24.getAttribute(_25):_24.getAttribute(_25,2))||_22;
+};
+var _26={"*=":function(_27,_28){
+return function(_29){
+return (_23(_29,_27).indexOf(_28)>=0);
+};
+},"^=":function(_2a,_2b){
+return function(_2c){
+return (_23(_2c,_2a).indexOf(_2b)==0);
+};
+},"$=":function(_2d,_2e){
+var _2f=" "+_2e;
+return function(_30){
+var ea=" "+_23(_30,_2d);
+return (ea.lastIndexOf(_2e)==(ea.length-_2e.length));
+};
+},"~=":function(_31,_32){
+var _33=" "+_32+" ";
+return function(_34){
+var ea=" "+_23(_34,_31)+" ";
+return (ea.indexOf(_33)>=0);
+};
+},"|=":function(_35,_36){
+var _37=" "+_36+"-";
+return function(_38){
+var ea=" "+_23(_38,_35);
+return ((ea==_36)||(ea.indexOf(_37)==0));
+};
+},"=":function(_39,_3a){
+return function(_3b){
+return (_23(_3b,_39)==_3a);
+};
+}};
+var _3c=(typeof _4().firstChild.nextElementSibling=="undefined");
+var _3d=!_3c?"nextElementSibling":"nextSibling";
+var _3e=!_3c?"previousElementSibling":"previousSibling";
+var _3f=(_3c?_21:_9);
+var _40=function(_41){
+while(_41=_41[_3e]){
+if(_3f(_41)){
+return false;
+}
+}
+return true;
+};
+var _42=function(_43){
+while(_43=_43[_3d]){
+if(_3f(_43)){
+return false;
+}
+}
+return true;
+};
+var _44=function(_45){
+var _46=_45.parentNode;
+var i=0,_47=_46[_6],ci=(_45["_i"]||-1),cl=(_46["_l"]||-1);
+if(!_47){
+return -1;
+}
+var l=_47.length;
+if(cl==l&&ci>=0&&cl>=0){
+return ci;
+}
+_46["_l"]=l;
+ci=-1;
+for(var te=_46["firstElementChild"]||_46["firstChild"];te;te=te[_3d]){
+if(_3f(te)){
+te["_i"]=++i;
+if(_45===te){
+ci=i;
+}
+}
+}
+return ci;
+};
+var _48=function(_49){
+return !((_44(_49))%2);
+};
+var _4a=function(_4b){
+return ((_44(_4b))%2);
+};
+var _4c={"checked":function(_4d,_4e){
+return function(_4f){
+return !!("checked" in _4f?_4f.checked:_4f.selected);
+};
+},"first-child":function(){
+return _40;
+},"last-child":function(){
+return _42;
+},"only-child":function(_50,_51){
+return function(_52){
+if(!_40(_52)){
+return false;
+}
+if(!_42(_52)){
+return false;
+}
+return true;
+};
+},"empty":function(_53,_54){
+return function(_55){
+var cn=_55.childNodes;
+var cnl=_55.childNodes.length;
+for(var x=cnl-1;x>=0;x--){
+var nt=cn[x].nodeType;
+if((nt===1)||(nt==3)){
+return false;
+}
+}
+return true;
+};
+},"contains":function(_56,_57){
+var cz=_57.charAt(0);
+if(cz=="\""||cz=="'"){
+_57=_57.slice(1,-1);
+}
+return function(_58){
+return (_58.innerHTML.indexOf(_57)>=0);
+};
+},"not":function(_59,_5a){
+var p=_a(_5a)[0];
+var _5b={el:1};
+if(p.tag!="*"){
+_5b.tag=1;
+}
+if(!p.classes.length){
+_5b.classes=1;
+}
+var ntf=_5c(p,_5b);
+return function(_5d){
+return (!ntf(_5d));
+};
+},"nth-child":function(_5e,_5f){
+var pi=parseInt;
+if(_5f=="odd"){
+return _4a;
+}else{
+if(_5f=="even"){
+return _48;
+}
+}
+if(_5f.indexOf("n")!=-1){
+var _60=_5f.split("n",2);
+var _61=_60[0]?((_60[0]=="-")?-1:pi(_60[0])):1;
+var idx=_60[1]?pi(_60[1]):0;
+var lb=0,ub=-1;
+if(_61>0){
+if(idx<0){
+idx=(idx%_61)&&(_61+(idx%_61));
+}else{
+if(idx>0){
+if(idx>=_61){
+lb=idx-idx%_61;
+}
+idx=idx%_61;
+}
+}
+}else{
+if(_61<0){
+_61*=-1;
+if(idx>0){
+ub=idx;
+idx=idx%_61;
+}
+}
+}
+if(_61>0){
+return function(_62){
+var i=_44(_62);
+return (i>=lb)&&(ub<0||i<=ub)&&((i%_61)==idx);
+};
+}else{
+_5f=idx;
+}
+}
+var _63=pi(_5f);
+return function(_64){
+return (_44(_64)==_63);
+};
+}};
+var _65=(d.isIE)?function(_66){
+var clc=_66.toLowerCase();
+if(clc=="class"){
+_66="className";
+}
+return function(_67){
+return (_8?_67.getAttribute(_66):_67[_66]||_67[clc]);
+};
+}:function(_68){
+return function(_69){
+return (_69&&_69.getAttribute&&_69.hasAttribute(_68));
+};
+};
+var _5c=function(_6a,_6b){
+if(!_6a){
+return _9;
+}
+_6b=_6b||{};
+var ff=null;
+if(!("el" in _6b)){
+ff=_1d(ff,_21);
+}
+if(!("tag" in _6b)){
+if(_6a.tag!="*"){
+ff=_1d(ff,function(_6c){
+return (_6c&&(_6c.tagName==_6a.getTag()));
+});
+}
+}
+if(!("classes" in _6b)){
+_2(_6a.classes,function(_6d,idx,arr){
+var re=new RegExp("(?:^|\\s)"+_6d+"(?:\\s|$)");
+ff=_1d(ff,function(_6e){
+return re.test(_6e.className);
+});
+ff.count=idx;
+});
+}
+if(!("pseudos" in _6b)){
+_2(_6a.pseudos,function(_6f){
+var pn=_6f.name;
+if(_4c[pn]){
+ff=_1d(ff,_4c[pn](pn,_6f.value));
+}
+});
+}
+if(!("attrs" in _6b)){
+_2(_6a.attrs,function(_70){
+var _71;
+var a=_70.attr;
+if(_70.type&&_26[_70.type]){
+_71=_26[_70.type](a,_70.matchFor);
+}else{
+if(a.length){
+_71=_65(a);
+}
+}
+if(_71){
+ff=_1d(ff,_71);
+}
+});
+}
+if(!("id" in _6b)){
+if(_6a.id){
+ff=_1d(ff,function(_72){
+return (!!_72&&(_72.id==_6a.id));
+});
+}
+}
+if(!ff){
+if(!("default" in _6b)){
+ff=_9;
+}
+}
+return ff;
+};
+var _73=function(_74){
+return function(_75,ret,bag){
+while(_75=_75[_3d]){
+if(_3c&&(!_21(_75))){
+continue;
+}
+if((!bag||_76(_75,bag))&&_74(_75)){
+ret.push(_75);
+}
+break;
+}
+return ret;
+};
+};
+var _77=function(_78){
+return function(_79,ret,bag){
+var te=_79[_3d];
+while(te){
+if(_3f(te)){
+if(bag&&!_76(te,bag)){
+break;
+}
+if(_78(te)){
+ret.push(te);
+}
+}
+te=te[_3d];
+}
+return ret;
+};
+};
+var _7a=function(_7b){
+_7b=_7b||_9;
+return function(_7c,ret,bag){
+var te,x=0,_7d=_7c[_6];
+while(te=_7d[x++]){
+if(_3f(te)&&(!bag||_76(te,bag))&&(_7b(te,x))){
+ret.push(te);
+}
+}
+return ret;
+};
+};
+var _7e=function(_7f,_80){
+var pn=_7f.parentNode;
+while(pn){
+if(pn==_80){
+break;
+}
+pn=pn.parentNode;
+}
+return !!pn;
+};
+var _81={};
+var _82=function(_83){
+var _84=_81[_83.query];
+if(_84){
+return _84;
+}
+var io=_83.infixOper;
+var _85=(io?io.oper:"");
+var _86=_5c(_83,{el:1});
+var qt=_83.tag;
+var _87=("*"==qt);
+var ecs=_4()["getElementsByClassName"];
+if(!_85){
+if(_83.id){
+_86=(!_83.loops&&_87)?_9:_5c(_83,{el:1,id:1});
+_84=function(_88,arr){
+var te=d.byId(_83.id,(_88.ownerDocument||_88));
+if(!te||!_86(te)){
+return;
+}
+if(9==_88.nodeType){
+return _20(te,arr);
+}else{
+if(_7e(te,_88)){
+return _20(te,arr);
+}
+}
+};
+}else{
+if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_83.classes.length&&!_5){
+_86=_5c(_83,{el:1,classes:1,id:1});
+var _89=_83.classes.join(" ");
+_84=function(_8a,arr,bag){
+var ret=_20(0,arr),te,x=0;
+var _8b=_8a.getElementsByClassName(_89);
+while((te=_8b[x++])){
+if(_86(te,_8a)&&_76(te,bag)){
+ret.push(te);
+}
+}
+return ret;
+};
+}else{
+if(!_87&&!_83.loops){
+_84=function(_8c,arr,bag){
+var ret=_20(0,arr),te,x=0;
+var _8d=_8c.getElementsByTagName(_83.getTag());
+while((te=_8d[x++])){
+if(_76(te,bag)){
+ret.push(te);
+}
+}
+return ret;
+};
+}else{
+_86=_5c(_83,{el:1,tag:1,id:1});
+_84=function(_8e,arr,bag){
+var ret=_20(0,arr),te,x=0;
+var _8f=_8e.getElementsByTagName(_83.getTag());
+while((te=_8f[x++])){
+if(_86(te,_8e)&&_76(te,bag)){
+ret.push(te);
+}
+}
+return ret;
+};
+}
+}
+}
+}else{
+var _90={el:1};
+if(_87){
+_90.tag=1;
+}
+_86=_5c(_83,_90);
+if("+"==_85){
+_84=_73(_86);
+}else{
+if("~"==_85){
+_84=_77(_86);
+}else{
+if(">"==_85){
+_84=_7a(_86);
+}
+}
+}
+}
+return _81[_83.query]=_84;
+};
+var _91=function(_92,_93){
+var _94=_20(_92),qp,x,te,qpl=_93.length,bag,ret;
+for(var i=0;i<qpl;i++){
+ret=[];
+qp=_93[i];
+x=_94.length-1;
+if(x>0){
+bag={};
+ret.nozip=true;
+}
+var gef=_82(qp);
+for(var j=0;(te=_94[j]);j++){
+gef(te,ret,bag);
+}
+if(!ret.length){
+break;
+}
+_94=ret;
+}
+return ret;
+};
+var _95={},_96={};
+var _97=function(_98){
+var _99=_a(_1(_98));
+if(_99.length==1){
+var tef=_82(_99[0]);
+return function(_9a){
+var r=tef(_9a,new _3());
+if(r){
+r.nozip=true;
+}
+return r;
+};
+}
+return function(_9b){
+return _91(_9b,_99);
+};
+};
+var nua=navigator.userAgent;
+var wk="WebKit/";
+var _9c=(d.isWebKit&&(nua.indexOf(wk)>0)&&(parseFloat(nua.split(wk)[1])>528));
+var _9d=d.isIE?"commentStrip":"nozip";
+var qsa="querySelectorAll";
+var _9e=(!!_4()[qsa]&&(!d.isSafari||(d.isSafari>3.1)||_9c));
+var _9f=/n\+\d|([^ ])?([>~+])([^ =])?/g;
+var _a0=function(_a1,pre,ch,_a2){
+return ch?(pre?pre+" ":"")+ch+(_a2?" "+_a2:""):_a1;
+};
+var _a3=function(_a4,_a5){
+_a4=_a4.replace(_9f,_a0);
+if(_9e){
+var _a6=_96[_a4];
+if(_a6&&!_a5){
+return _a6;
+}
+}
+var _a7=_95[_a4];
+if(_a7){
+return _a7;
+}
+var qcz=_a4.charAt(0);
+var _a8=(-1==_a4.indexOf(" "));
+if((_a4.indexOf("#")>=0)&&(_a8)){
+_a5=true;
+}
+var _a9=(_9e&&(!_a5)&&(_7.indexOf(qcz)==-1)&&(!d.isIE||(_a4.indexOf(":")==-1))&&(!(_5&&(_a4.indexOf(".")>=0)))&&(_a4.indexOf(":contains")==-1)&&(_a4.indexOf(":checked")==-1)&&(_a4.indexOf("|=")==-1));
+if(_a9){
+var tq=(_7.indexOf(_a4.charAt(_a4.length-1))>=0)?(_a4+" *"):_a4;
+return _96[_a4]=function(_aa){
+try{
+if(!((9==_aa.nodeType)||_a8)){
+throw "";
+}
+var r=_aa[qsa](tq);
+r[_9d]=true;
+return r;
+}
+catch(e){
+return _a3(_a4,true)(_aa);
+}
+};
+}else{
+var _ab=_a4.split(/\s*,\s*/);
+return _95[_a4]=((_ab.length<2)?_97(_a4):function(_ac){
+var _ad=0,ret=[],tp;
+while((tp=_ab[_ad++])){
+ret=ret.concat(_97(tp)(_ac));
+}
+return ret;
+});
+}
+};
+var _ae=0;
+var _af=d.isIE?function(_b0){
+if(_8){
+return (_b0.getAttribute("_uid")||_b0.setAttribute("_uid",++_ae)||_ae);
+}else{
+return _b0.uniqueID;
+}
+}:function(_b1){
+return (_b1._uid||(_b1._uid=++_ae));
+};
+var _76=function(_b2,bag){
+if(!bag){
+return 1;
+}
+var id=_af(_b2);
+if(!bag[id]){
+return bag[id]=1;
+}
+return 0;
+};
+var _b3="_zipIdx";
+var _b4=function(arr){
+if(arr&&arr.nozip){
+return (_3._wrap)?_3._wrap(arr):arr;
+}
+var ret=new _3();
+if(!arr||!arr.length){
+return ret;
+}
+if(arr[0]){
+ret.push(arr[0]);
+}
+if(arr.length<2){
+return ret;
+}
+_ae++;
+if(d.isIE&&_8){
+var _b5=_ae+"";
+arr[0].setAttribute(_b3,_b5);
+for(var x=1,te;te=arr[x];x++){
+if(arr[x].getAttribute(_b3)!=_b5){
+ret.push(te);
+}
+te.setAttribute(_b3,_b5);
+}
+}else{
+if(d.isIE&&arr.commentStrip){
+try{
+for(var x=1,te;te=arr[x];x++){
+if(_21(te)){
+ret.push(te);
+}
+}
+}
+catch(e){
+}
+}else{
+if(arr[0]){
+arr[0][_b3]=_ae;
+}
+for(var x=1,te;te=arr[x];x++){
+if(arr[x][_b3]!=_ae){
+ret.push(te);
+}
+te[_b3]=_ae;
+}
+}
+}
+return ret;
+};
+d.query=function(_b6,_b7){
+_3=d._NodeListCtor;
+if(!_b6){
+return new _3();
+}
+if(_b6.constructor==_3){
+return _b6;
+}
+if(typeof _b6!="string"){
+return new _3(_b6);
+}
+if(typeof _b7=="string"){
+_b7=d.byId(_b7);
+if(!_b7){
+return new _3();
+}
+}
+_b7=_b7||_4();
+var od=_b7.ownerDocument||_b7.documentElement;
+_8=(_b7.contentType&&_b7.contentType=="application/xml")||(d.isOpera&&(_b7.doctype||od.toString()=="[object XMLDocument]"))||(!!od)&&(d.isIE?od.xml:(_b7.xmlVersion||od.xmlVersion));
+var r=_a3(_b6)(_b7);
+if(r&&r.nozip&&!_3._wrap){
+return r;
+}
+return _b4(r);
+};
+d.query.pseudos=_4c;
+d._filterQueryResult=function(_b8,_b9){
+var _ba=new d._NodeListCtor();
+var _bb=_5c(_a(_b9)[0]);
+for(var x=0,te;te=_b8[x];x++){
+if(_bb(te)){
+_ba.push(te);
+}
+}
+return _ba;
+};
+})(this["queryPortability"]||this["acme"]||dojo);
+}
diff --git a/lib/dojo/_base/window.js b/lib/dojo/_base/window.js
new file mode 100644 (file)
index 0000000..44239d9
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.window"]){
+dojo._hasResource["dojo._base.window"]=true;
+dojo.provide("dojo._base.window");
+dojo.doc=window["document"]||null;
+dojo.body=function(){
+return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];
+};
+dojo.setContext=function(_1,_2){
+dojo.global=_1;
+dojo.doc=_2;
+};
+dojo.withGlobal=function(_3,_4,_5,_6){
+var _7=dojo.global;
+try{
+dojo.global=_3;
+return dojo.withDoc.call(null,_3.document,_4,_5,_6);
+}
+finally{
+dojo.global=_7;
+}
+};
+dojo.withDoc=function(_8,_9,_a,_b){
+var _c=dojo.doc,_d=dojo._bodyLtr,_e=dojo.isQuirks;
+try{
+dojo.doc=_8;
+delete dojo._bodyLtr;
+dojo.isQuirks=dojo.doc.compatMode=="BackCompat";
+if(_a&&typeof _9=="string"){
+_9=_a[_9];
+}
+return _9.apply(_a,_b||[]);
+}
+finally{
+dojo.doc=_c;
+delete dojo._bodyLtr;
+if(_d!==undefined){
+dojo._bodyLtr=_d;
+}
+dojo.isQuirks=_e;
+}
+};
+}
diff --git a/lib/dojo/_base/xhr.js b/lib/dojo/_base/xhr.js
new file mode 100644 (file)
index 0000000..5823371
--- /dev/null
@@ -0,0 +1,437 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._base.xhr"]){
+dojo._hasResource["dojo._base.xhr"]=true;
+dojo.provide("dojo._base.xhr");
+dojo.require("dojo._base.Deferred");
+dojo.require("dojo._base.json");
+dojo.require("dojo._base.lang");
+dojo.require("dojo._base.query");
+(function(){
+var _1=dojo,_2=_1.config;
+function _3(_4,_5,_6){
+if(_6===null){
+return;
+}
+var _7=_4[_5];
+if(typeof _7=="string"){
+_4[_5]=[_7,_6];
+}else{
+if(_1.isArray(_7)){
+_7.push(_6);
+}else{
+_4[_5]=_6;
+}
+}
+};
+dojo.fieldToObject=function(_8){
+var _9=null;
+var _a=_1.byId(_8);
+if(_a){
+var _b=_a.name;
+var _c=(_a.type||"").toLowerCase();
+if(_b&&_c&&!_a.disabled){
+if(_c=="radio"||_c=="checkbox"){
+if(_a.checked){
+_9=_a.value;
+}
+}else{
+if(_a.multiple){
+_9=[];
+_1.query("option",_a).forEach(function(_d){
+if(_d.selected){
+_9.push(_d.value);
+}
+});
+}else{
+_9=_a.value;
+}
+}
+}
+}
+return _9;
+};
+dojo.formToObject=function(_e){
+var _f={};
+var _10="file|submit|image|reset|button|";
+_1.forEach(dojo.byId(_e).elements,function(_11){
+var _12=_11.name;
+var _13=(_11.type||"").toLowerCase();
+if(_12&&_13&&_10.indexOf(_13)==-1&&!_11.disabled){
+_3(_f,_12,_1.fieldToObject(_11));
+if(_13=="image"){
+_f[_12+".x"]=_f[_12+".y"]=_f[_12].x=_f[_12].y=0;
+}
+}
+});
+return _f;
+};
+dojo.objectToQuery=function(map){
+var enc=encodeURIComponent;
+var _14=[];
+var _15={};
+for(var _16 in map){
+var _17=map[_16];
+if(_17!=_15[_16]){
+var _18=enc(_16)+"=";
+if(_1.isArray(_17)){
+for(var i=0;i<_17.length;i++){
+_14.push(_18+enc(_17[i]));
+}
+}else{
+_14.push(_18+enc(_17));
+}
+}
+}
+return _14.join("&");
+};
+dojo.formToQuery=function(_19){
+return _1.objectToQuery(_1.formToObject(_19));
+};
+dojo.formToJson=function(_1a,_1b){
+return _1.toJson(_1.formToObject(_1a),_1b);
+};
+dojo.queryToObject=function(str){
+var ret={};
+var qp=str.split("&");
+var dec=decodeURIComponent;
+_1.forEach(qp,function(_1c){
+if(_1c.length){
+var _1d=_1c.split("=");
+var _1e=dec(_1d.shift());
+var val=dec(_1d.join("="));
+if(typeof ret[_1e]=="string"){
+ret[_1e]=[ret[_1e]];
+}
+if(_1.isArray(ret[_1e])){
+ret[_1e].push(val);
+}else{
+ret[_1e]=val;
+}
+}
+});
+return ret;
+};
+dojo._blockAsync=false;
+var _1f=_1._contentHandlers=dojo.contentHandlers={text:function(xhr){
+return xhr.responseText;
+},json:function(xhr){
+return _1.fromJson(xhr.responseText||null);
+},"json-comment-filtered":function(xhr){
+if(!dojo.config.useCommentedJson){
+console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");
+}
+var _20=xhr.responseText;
+var _21=_20.indexOf("/*");
+var _22=_20.lastIndexOf("*/");
+if(_21==-1||_22==-1){
+throw new Error("JSON was not comment filtered");
+}
+return _1.fromJson(_20.substring(_21+2,_22));
+},javascript:function(xhr){
+return _1.eval(xhr.responseText);
+},xml:function(xhr){
+var _23=xhr.responseXML;
+if(_1.isIE&&(!_23||!_23.documentElement)){
+var ms=function(n){
+return "MSXML"+n+".DOMDocument";
+};
+var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];
+_1.some(dp,function(p){
+try{
+var dom=new ActiveXObject(p);
+dom.async=false;
+dom.loadXML(xhr.responseText);
+_23=dom;
+}
+catch(e){
+return false;
+}
+return true;
+});
+}
+return _23;
+},"json-comment-optional":function(xhr){
+if(xhr.responseText&&/^[^{\[]*\/\*/.test(xhr.responseText)){
+return _1f["json-comment-filtered"](xhr);
+}else{
+return _1f["json"](xhr);
+}
+}};
+dojo._ioSetArgs=function(_24,_25,_26,_27){
+var _28={args:_24,url:_24.url};
+var _29=null;
+if(_24.form){
+var _2a=_1.byId(_24.form);
+var _2b=_2a.getAttributeNode("action");
+_28.url=_28.url||(_2b?_2b.value:null);
+_29=_1.formToObject(_2a);
+}
+var _2c=[{}];
+if(_29){
+_2c.push(_29);
+}
+if(_24.content){
+_2c.push(_24.content);
+}
+if(_24.preventCache){
+_2c.push({"dojo.preventCache":new Date().valueOf()});
+}
+_28.query=_1.objectToQuery(_1.mixin.apply(null,_2c));
+_28.handleAs=_24.handleAs||"text";
+var d=new _1.Deferred(_25);
+d.addCallbacks(_26,function(_2d){
+return _27(_2d,d);
+});
+var ld=_24.load;
+if(ld&&_1.isFunction(ld)){
+d.addCallback(function(_2e){
+return ld.call(_24,_2e,_28);
+});
+}
+var err=_24.error;
+if(err&&_1.isFunction(err)){
+d.addErrback(function(_2f){
+return err.call(_24,_2f,_28);
+});
+}
+var _30=_24.handle;
+if(_30&&_1.isFunction(_30)){
+d.addBoth(function(_31){
+return _30.call(_24,_31,_28);
+});
+}
+if(_2.ioPublish&&_1.publish&&_28.args.ioPublish!==false){
+d.addCallbacks(function(res){
+_1.publish("/dojo/io/load",[d,res]);
+return res;
+},function(res){
+_1.publish("/dojo/io/error",[d,res]);
+return res;
+});
+d.addBoth(function(res){
+_1.publish("/dojo/io/done",[d,res]);
+return res;
+});
+}
+d.ioArgs=_28;
+return d;
+};
+var _32=function(dfd){
+dfd.canceled=true;
+var xhr=dfd.ioArgs.xhr;
+var _33=typeof xhr.abort;
+if(_33=="function"||_33=="object"||_33=="unknown"){
+xhr.abort();
+}
+var err=dfd.ioArgs.error;
+if(!err){
+err=new Error("xhr cancelled");
+err.dojoType="cancel";
+}
+return err;
+};
+var _34=function(dfd){
+var ret=_1f[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);
+return ret===undefined?null:ret;
+};
+var _35=function(_36,dfd){
+if(!dfd.ioArgs.args.failOk){
+console.error(_36);
+}
+return _36;
+};
+var _37=null;
+var _38=[];
+var _39=0;
+var _3a=function(dfd){
+if(_39<=0){
+_39=0;
+if(_2.ioPublish&&_1.publish&&(!dfd||dfd&&dfd.ioArgs.args.ioPublish!==false)){
+_1.publish("/dojo/io/stop");
+}
+}
+};
+var _3b=function(){
+var now=(new Date()).getTime();
+if(!_1._blockAsync){
+for(var i=0,tif;i<_38.length&&(tif=_38[i]);i++){
+var dfd=tif.dfd;
+var _3c=function(){
+if(!dfd||dfd.canceled||!tif.validCheck(dfd)){
+_38.splice(i--,1);
+_39-=1;
+}else{
+if(tif.ioCheck(dfd)){
+_38.splice(i--,1);
+tif.resHandle(dfd);
+_39-=1;
+}else{
+if(dfd.startTime){
+if(dfd.startTime+(dfd.ioArgs.args.timeout||0)<now){
+_38.splice(i--,1);
+var err=new Error("timeout exceeded");
+err.dojoType="timeout";
+dfd.errback(err);
+dfd.cancel();
+_39-=1;
+}
+}
+}
+}
+};
+if(dojo.config.debugAtAllCosts){
+_3c.call(this);
+}else{
+try{
+_3c.call(this);
+}
+catch(e){
+dfd.errback(e);
+}
+}
+}
+}
+_3a(dfd);
+if(!_38.length){
+clearInterval(_37);
+_37=null;
+return;
+}
+};
+dojo._ioCancelAll=function(){
+try{
+_1.forEach(_38,function(i){
+try{
+i.dfd.cancel();
+}
+catch(e){
+}
+});
+}
+catch(e){
+}
+};
+if(_1.isIE){
+_1.addOnWindowUnload(_1._ioCancelAll);
+}
+_1._ioNotifyStart=function(dfd){
+if(_2.ioPublish&&_1.publish&&dfd.ioArgs.args.ioPublish!==false){
+if(!_39){
+_1.publish("/dojo/io/start");
+}
+_39+=1;
+_1.publish("/dojo/io/send",[dfd]);
+}
+};
+_1._ioWatch=function(dfd,_3d,_3e,_3f){
+var _40=dfd.ioArgs.args;
+if(_40.timeout){
+dfd.startTime=(new Date()).getTime();
+}
+_38.push({dfd:dfd,validCheck:_3d,ioCheck:_3e,resHandle:_3f});
+if(!_37){
+_37=setInterval(_3b,50);
+}
+if(_40.sync){
+_3b();
+}
+};
+var _41="application/x-www-form-urlencoded";
+var _42=function(dfd){
+return dfd.ioArgs.xhr.readyState;
+};
+var _43=function(dfd){
+return 4==dfd.ioArgs.xhr.readyState;
+};
+var _44=function(dfd){
+var xhr=dfd.ioArgs.xhr;
+if(_1._isDocumentOk(xhr)){
+dfd.callback(dfd);
+}else{
+var err=new Error("Unable to load "+dfd.ioArgs.url+" status:"+xhr.status);
+err.status=xhr.status;
+err.responseText=xhr.responseText;
+dfd.errback(err);
+}
+};
+dojo._ioAddQueryToUrl=function(_45){
+if(_45.query.length){
+_45.url+=(_45.url.indexOf("?")==-1?"?":"&")+_45.query;
+_45.query=null;
+}
+};
+dojo.xhr=function(_46,_47,_48){
+var dfd=_1._ioSetArgs(_47,_32,_34,_35);
+var _49=dfd.ioArgs;
+var xhr=_49.xhr=_1._xhrObj(_49.args);
+if(!xhr){
+dfd.cancel();
+return dfd;
+}
+if("postData" in _47){
+_49.query=_47.postData;
+}else{
+if("putData" in _47){
+_49.query=_47.putData;
+}else{
+if("rawBody" in _47){
+_49.query=_47.rawBody;
+}else{
+if((arguments.length>2&&!_48)||"POST|PUT".indexOf(_46.toUpperCase())==-1){
+_1._ioAddQueryToUrl(_49);
+}
+}
+}
+}
+xhr.open(_46,_49.url,_47.sync!==true,_47.user||undefined,_47.password||undefined);
+if(_47.headers){
+for(var hdr in _47.headers){
+if(hdr.toLowerCase()==="content-type"&&!_47.contentType){
+_47.contentType=_47.headers[hdr];
+}else{
+if(_47.headers[hdr]){
+xhr.setRequestHeader(hdr,_47.headers[hdr]);
+}
+}
+}
+}
+xhr.setRequestHeader("Content-Type",_47.contentType||_41);
+if(!_47.headers||!("X-Requested-With" in _47.headers)){
+xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");
+}
+_1._ioNotifyStart(dfd);
+if(dojo.config.debugAtAllCosts){
+xhr.send(_49.query);
+}else{
+try{
+xhr.send(_49.query);
+}
+catch(e){
+_49.error=e;
+dfd.cancel();
+}
+}
+_1._ioWatch(dfd,_42,_43,_44);
+xhr=null;
+return dfd;
+};
+dojo.xhrGet=function(_4a){
+return _1.xhr("GET",_4a);
+};
+dojo.rawXhrPost=dojo.xhrPost=function(_4b){
+return _1.xhr("POST",_4b,true);
+};
+dojo.rawXhrPut=dojo.xhrPut=function(_4c){
+return _1.xhr("PUT",_4c,true);
+};
+dojo.xhrDelete=function(_4d){
+return _1.xhr("DELETE",_4d);
+};
+})();
+}
diff --git a/lib/dojo/_firebug/LICENSE b/lib/dojo/_firebug/LICENSE
new file mode 100644 (file)
index 0000000..8c777a2
--- /dev/null
@@ -0,0 +1,37 @@
+License Disclaimer:
+
+All contents of this directory are Copyright (c) the Dojo Foundation, with the
+following exceptions:
+-------------------------------------------------------------------------------
+
+firebug.html, firebug.js, errIcon.png, infoIcon.png, warningIcon.png:
+       * Copyright (c) 2006-2007, Joe Hewitt, All rights reserved.
+         Distributed under the terms of the BSD License (see below)
+
+-------------------------------------------------------------------------------
+
+Copyright (c) 2006-2007, Joe Hewitt
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+       list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright notice,
+       this list of conditions and the following disclaimer in the documentation
+       and/or other materials provided with the distribution.
+  * Neither the name of the Dojo Foundation nor the names of its contributors
+       may be used to endorse or promote products derived from this software
+       without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/lib/dojo/_firebug/errorIcon.png b/lib/dojo/_firebug/errorIcon.png
new file mode 100644 (file)
index 0000000..2d75261
Binary files /dev/null and b/lib/dojo/_firebug/errorIcon.png differ
diff --git a/lib/dojo/_firebug/firebug.css b/lib/dojo/_firebug/firebug.css
new file mode 100644 (file)
index 0000000..3b6f4f9
--- /dev/null
@@ -0,0 +1,208 @@
+.firebug {
+       margin: 0;
+       background:#fff;
+       font-family: Lucida Grande, Tahoma, sans-serif;
+       font-size: 11px;
+       overflow: hidden;
+       border: 1px solid black;
+       position: relative;
+}
+.firebug a {
+       text-decoration: none;
+}
+.firebug a:hover {
+       text-decoration: underline;
+}
+.firebug a:visited{
+       color:#0000FF;
+}
+.firebug #firebugToolbar {
+       height: 18px;
+       line-height:18px;
+       border-top: 1px solid ThreeDHighlight;
+       border-bottom: 1px solid ThreeDShadow;
+       padding: 2px 6px;
+       
+       background:#f0f0f0;
+}
+.firebug #firebugLog, .firebug #objectLog {
+       overflow: auto;
+       position: absolute;
+       left: 0;
+       width: 100%;
+}
+#objectLog{
+       overflow:scroll;
+       height:258px;
+}
+.firebug #firebugCommandLine {
+       position: absolute;
+       bottom: 0;
+       left: 0;
+       width: 100%;
+       height: 18px;
+       border: none;
+       border-top: 1px solid ThreeDShadow;
+}
+.firebug .logRow {
+       position: relative;
+       border-bottom: 1px solid #D7D7D7;
+       padding: 2px 4px 1px 6px;
+       background-color: #FFFFFF;
+}
+.firebug .logRow-command {
+       font-family: Monaco, monospace;
+       color: blue;
+}
+.firebug .objectBox-null {
+       padding: 0 2px;
+       border: 1px solid #666666;
+       background-color: #888888;
+       color: #FFFFFF;
+}
+.firebug .objectBox-string {
+       font-family: Monaco, monospace;
+       color: red;
+       white-space: pre;
+}
+.firebug .objectBox-number {
+       color: #000088;
+}
+.firebug .objectBox-function {
+       font-family: Monaco, monospace;
+       color: DarkGreen;
+}
+.firebug .objectBox-object {
+       color: DarkGreen;
+       font-weight: bold;
+}
+.firebug .logRow-info,
+.firebug .logRow-error,
+.firebug .logRow-warning
+ {
+       background: #00FFFF no-repeat 2px 2px;
+       padding-left: 20px;
+       padding-bottom: 3px;
+}
+.firebug .logRow-info {
+       background: #FFF url(infoIcon.png) no-repeat 2px 2px;
+       padding-left: 20px;
+       padding-bottom: 3px;
+}
+.firebug .logRow-warning {
+       
+       background: #00FFFF url(warningIcon.png) no-repeat 2px 2px;
+       padding-left: 20px;
+       padding-bottom: 3px;
+}
+.firebug .logRow-error {
+       background: LightYellow url(errorIcon.png) no-repeat 2px 2px;
+       padding-left: 20px;
+       padding-bottom: 3px;
+}
+.firebug .errorMessage {
+       vertical-align: top;
+       color: #FF0000;
+}
+.firebug .objectBox-sourceLink {
+       position: absolute;
+       right: 4px;
+       top: 2px;
+       padding-left: 8px;
+       font-family: Lucida Grande, sans-serif;
+       font-weight: bold;
+       color: #0000FF;
+}
+.firebug .logRow-group {
+       background: #EEEEEE;
+       border-bottom: none;
+}
+.firebug .logGroup {
+       background: #EEEEEE;
+}
+.firebug .logGroupBox {
+       margin-left: 24px;
+       border-top: 1px solid #D7D7D7;
+       border-left: 1px solid #D7D7D7;
+}
+.firebug .selectorTag,
+.firebug .selectorId,
+.firebug .selectorClass {
+       font-family: Monaco, monospace;
+       font-weight: normal;
+}
+.firebug .selectorTag {
+       color: #0000FF;
+}
+.firebug .selectorId {
+       color: DarkBlue;
+}
+.firebug .selectorClass {
+       color: red;
+}
+.firebug .objectBox-element {
+       font-family: Monaco, monospace;
+       color: #000088;
+}
+.firebug .nodeChildren {
+       margin-left: 16px;
+}
+.firebug .nodeTag {
+       color: blue;
+}
+.firebug .nodeValue {
+       color: #FF0000;
+       font-weight: normal;
+}
+.firebug .nodeText,
+.firebug .nodeComment {
+       margin: 0 2px;
+       vertical-align: top;
+}
+.firebug .nodeText {
+       color: #333333;
+}
+.firebug .nodeComment {
+       color: DarkGreen;
+}
+.firebug .propertyNameCell {
+       vertical-align: top;
+}
+.firebug .propertyName {
+       font-weight: bold;
+}
+#firebugToolbar ul.tabs{
+       margin:0 !important;
+       padding:0;
+}
+#firebugToolbar ul.tabs li{
+       list-style:none;
+       background:transparent url(tab_lft_norm.png) no-repeat left;
+       line-height:18px;
+       float:left;
+       margin-left:5px;
+}
+#firebugToolbar ul.tabs li.right{
+       float:right;
+       margin-right:5px;
+       margin-left:0;
+}
+#firebugToolbar ul.tabs li.gap{
+       margin-left:20px;
+}
+#firebugToolbar .tabs a{
+       text-decoration:none;
+       background:transparent url(tab_rgt_norm.png) no-repeat right;
+       line-height:18px;
+       padding:3px 9px 4px 0px;
+       margin-left:9px;
+       color:#333333;
+}
+#firebugToolbar .tabs li:hover{
+       background:transparent url(tab_lft_over.png) no-repeat left;
+}
+#firebugToolbar .tabs a:hover{
+       text-decoration:none;
+       background:transparent url(tab_rgt_over.png) no-repeat right;
+       color:#FFFFFF;
+}
diff --git a/lib/dojo/_firebug/firebug.js b/lib/dojo/_firebug/firebug.js
new file mode 100644 (file)
index 0000000..7736258
--- /dev/null
@@ -0,0 +1,914 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo._firebug.firebug"]){
+dojo._hasResource["dojo._firebug.firebug"]=true;
+dojo.provide("dojo._firebug.firebug");
+dojo.deprecated=function(_1,_2,_3){
+var _4="DEPRECATED: "+_1;
+if(_2){
+_4+=" "+_2;
+}
+if(_3){
+_4+=" -- will be removed in version: "+_3;
+}
+console.warn(_4);
+};
+dojo.experimental=function(_5,_6){
+var _7="EXPERIMENTAL: "+_5+" -- APIs subject to change without notice.";
+if(_6){
+_7+=" "+_6;
+}
+console.warn(_7);
+};
+(function(){
+var _8=(/Trident/.test(window.navigator.userAgent));
+if(_8){
+var _9=["log","info","debug","warn","error"];
+for(var i=0;i<_9.length;i++){
+var m=_9[i];
+var n="_"+_9[i];
+console[n]=console[m];
+console[m]=(function(){
+var _a=n;
+return function(){
+console[_a](Array.prototype.slice.call(arguments).join(" "));
+};
+})();
+}
+try{
+console.clear();
+}
+catch(e){
+}
+}
+if(!dojo.isFF&&(!dojo.isChrome||dojo.isChrome<3)&&(!dojo.isSafari||dojo.isSafari<4)&&!_8&&!window.firebug&&(typeof console!="undefined"&&!console.firebug)&&!dojo.config.useCustomLogger&&!dojo.isAIR){
+try{
+if(window!=window.parent){
+if(window.parent["console"]){
+window.console=window.parent.console;
+}
+return;
+}
+}
+catch(e){
+}
+var _b=document;
+var _c=window;
+var _d=0;
+var _e=null;
+var _f=null;
+var _10=null;
+var _11=null;
+var _12=null;
+var _13=null;
+var _14=false;
+var _15=[];
+var _16=[];
+var _17={};
+var _18={};
+var _19=null;
+var _1a;
+var _1b;
+var _1c=false;
+var _1d=null;
+var _1e=document.createElement("div");
+var _1f;
+var _20;
+window.console={_connects:[],log:function(){
+_21(arguments,"");
+},debug:function(){
+_21(arguments,"debug");
+},info:function(){
+_21(arguments,"info");
+},warn:function(){
+_21(arguments,"warning");
+},error:function(){
+_21(arguments,"error");
+},assert:function(_22,_23){
+if(!_22){
+var _24=[];
+for(var i=1;i<arguments.length;++i){
+_24.push(arguments[i]);
+}
+_21(_24.length?_24:["Assertion Failure"],"error");
+throw _23?_23:"Assertion Failure";
+}
+},dir:function(obj){
+var str=_25(obj);
+str=str.replace(/\n/g,"<br />");
+str=str.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");
+_26([str],"dir");
+},dirxml:function(_27){
+var _28=[];
+_29(_27,_28);
+_26(_28,"dirxml");
+},group:function(){
+_26(arguments,"group",_2a);
+},groupEnd:function(){
+_26(arguments,"",_2b);
+},time:function(_2c){
+_17[_2c]=new Date().getTime();
+},timeEnd:function(_2d){
+if(_2d in _17){
+var _2e=(new Date()).getTime()-_17[_2d];
+_21([_2d+":",_2e+"ms"]);
+delete _17[_2d];
+}
+},count:function(_2f){
+if(!_18[_2f]){
+_18[_2f]=0;
+}
+_18[_2f]++;
+_21([_2f+": "+_18[_2f]]);
+},trace:function(_30){
+var _31=_30||3;
+var f=console.trace.caller;
+for(var i=0;i<_31;i++){
+var _32=f.toString();
+var _33=[];
+for(var a=0;a<f.arguments.length;a++){
+_33.push(f.arguments[a]);
+}
+if(f.arguments.length){
+}else{
+}
+f=f.caller;
+}
+},profile:function(){
+this.warn(["profile() not supported."]);
+},profileEnd:function(){
+},clear:function(){
+if(_f){
+while(_f.childNodes.length){
+dojo.destroy(_f.firstChild);
+}
+}
+dojo.forEach(this._connects,dojo.disconnect);
+},open:function(){
+_34(true);
+},close:function(){
+if(_14){
+_34();
+}
+},_restoreBorder:function(){
+if(_1f){
+_1f.style.border=_20;
+}
+},openDomInspector:function(){
+_1c=true;
+_f.style.display="none";
+_19.style.display="block";
+_10.style.display="none";
+document.body.style.cursor="pointer";
+_1a=dojo.connect(document,"mousemove",function(evt){
+if(!_1c){
+return;
+}
+if(!_1d){
+_1d=setTimeout(function(){
+_1d=null;
+},50);
+}else{
+return;
+}
+var _35=evt.target;
+if(_35&&(_1f!==_35)){
+var _36=true;
+console._restoreBorder();
+var _37=[];
+_29(_35,_37);
+_19.innerHTML=_37.join("");
+_1f=_35;
+_20=_1f.style.border;
+_1f.style.border="#0000FF 1px solid";
+}
+});
+setTimeout(function(){
+_1b=dojo.connect(document,"click",function(evt){
+document.body.style.cursor="";
+_1c=!_1c;
+dojo.disconnect(_1b);
+});
+},30);
+},_closeDomInspector:function(){
+document.body.style.cursor="";
+dojo.disconnect(_1a);
+dojo.disconnect(_1b);
+_1c=false;
+console._restoreBorder();
+},openConsole:function(){
+_f.style.display="block";
+_19.style.display="none";
+_10.style.display="none";
+console._closeDomInspector();
+},openObjectInspector:function(){
+_f.style.display="none";
+_19.style.display="none";
+_10.style.display="block";
+console._closeDomInspector();
+},recss:function(){
+var i,a,s;
+a=document.getElementsByTagName("link");
+for(i=0;i<a.length;i++){
+s=a[i];
+if(s.rel.toLowerCase().indexOf("stylesheet")>=0&&s.href){
+var h=s.href.replace(/(&|%5C?)forceReload=\d+/,"");
+s.href=h+(h.indexOf("?")>=0?"&":"?")+"forceReload="+new Date().valueOf();
+}
+}
+}};
+function _34(_38){
+_14=_38||!_14;
+if(_e){
+_e.style.display=_14?"block":"none";
+}
+};
+function _39(){
+_34(true);
+if(_12){
+_12.focus();
+}
+};
+function _3a(x,y,w,h){
+var win=window.open("","_firebug","status=0,menubar=0,resizable=1,top="+y+",left="+x+",width="+w+",height="+h+",scrollbars=1,addressbar=0");
+if(!win){
+var msg="Firebug Lite could not open a pop-up window, most likely because of a blocker.\n"+"Either enable pop-ups for this domain, or change the djConfig to popup=false.";
+alert(msg);
+}
+_3b(win);
+var _3c=win.document;
+var _3d="<html style=\"height:100%;\"><head><title>Firebug Lite</title></head>\n"+"<body bgColor=\"#ccc\" style=\"height:97%;\" onresize=\"opener.onFirebugResize()\">\n"+"<div id=\"fb\"></div>"+"</body></html>";
+_3c.write(_3d);
+_3c.close();
+return win;
+};
+function _3b(wn){
+var d=new Date();
+d.setTime(d.getTime()+(60*24*60*60*1000));
+d=d.toUTCString();
+var dc=wn.document,_3e;
+if(wn.innerWidth){
+_3e=function(){
+return {w:wn.innerWidth,h:wn.innerHeight};
+};
+}else{
+if(dc.documentElement&&dc.documentElement.clientWidth){
+_3e=function(){
+return {w:dc.documentElement.clientWidth,h:dc.documentElement.clientHeight};
+};
+}else{
+if(dc.body){
+_3e=function(){
+return {w:dc.body.clientWidth,h:dc.body.clientHeight};
+};
+}
+}
+}
+window.onFirebugResize=function(){
+_4c(_3e().h);
+clearInterval(wn._firebugWin_resize);
+wn._firebugWin_resize=setTimeout(function(){
+var x=wn.screenLeft,y=wn.screenTop,w=wn.outerWidth||wn.document.body.offsetWidth,h=wn.outerHeight||wn.document.body.offsetHeight;
+document.cookie="_firebugPosition="+[x,y,w,h].join(",")+"; expires="+d+"; path=/";
+},5000);
+};
+};
+function _3f(){
+if(_e){
+return;
+}
+if(dojo.config.popup){
+var _40="100%";
+var _41=document.cookie.match(/(?:^|; )_firebugPosition=([^;]*)/);
+var p=_41?_41[1].split(","):[2,2,320,480];
+_c=_3a(p[0],p[1],p[2],p[3]);
+_b=_c.document;
+dojo.config.debugContainerId="fb";
+_c.console=window.console;
+_c.dojo=window.dojo;
+}else{
+_b=document;
+_40=(dojo.config.debugHeight||300)+"px";
+}
+var _42=_b.createElement("link");
+_42.href=dojo.moduleUrl("dojo._firebug","firebug.css");
+_42.rel="stylesheet";
+_42.type="text/css";
+var _43=_b.getElementsByTagName("head");
+if(_43){
+_43=_43[0];
+}
+if(!_43){
+_43=_b.getElementsByTagName("html")[0];
+}
+if(dojo.isIE){
+window.setTimeout(function(){
+_43.appendChild(_42);
+},0);
+}else{
+_43.appendChild(_42);
+}
+if(dojo.config.debugContainerId){
+_e=_b.getElementById(dojo.config.debugContainerId);
+}
+if(!_e){
+_e=_b.createElement("div");
+_b.body.appendChild(_e);
+}
+_e.className+=" firebug";
+_e.style.height=_40;
+_e.style.display=(_14?"block":"none");
+var _44=function(_45,_46,_47,_48){
+return "<li class=\""+_48+"\"><a href=\"javascript:void(0);\" onclick=\"console."+_47+"(); return false;\" title=\""+_46+"\">"+_45+"</a></li>";
+};
+_e.innerHTML="<div id=\"firebugToolbar\">"+"  <ul id=\"fireBugTabs\" class=\"tabs\">"+_44("Clear","Remove All Console Logs","clear","")+_44("ReCSS","Refresh CSS without reloading page","recss","")+_44("Console","Show Console Logs","openConsole","gap")+_44("DOM","Show DOM Inspector","openDomInspector","")+_44("Object","Show Object Inspector","openObjectInspector","")+((dojo.config.popup)?"":_44("Close","Close the console","close","gap"))+"\t</ul>"+"</div>"+"<input type=\"text\" id=\"firebugCommandLine\" />"+"<div id=\"firebugLog\"></div>"+"<div id=\"objectLog\" style=\"display:none;\">Click on an object in the Log display</div>"+"<div id=\"domInspect\" style=\"display:none;\">Hover over HTML elements in the main page. Click to hold selection.</div>";
+_13=_b.getElementById("firebugToolbar");
+_12=_b.getElementById("firebugCommandLine");
+_49(_12,"keydown",_4a);
+_49(_b,dojo.isIE||dojo.isSafari?"keydown":"keypress",_4b);
+_f=_b.getElementById("firebugLog");
+_10=_b.getElementById("objectLog");
+_19=_b.getElementById("domInspect");
+_11=_b.getElementById("fireBugTabs");
+_4c();
+_4d();
+};
+dojo.addOnLoad(_3f);
+function _4e(){
+_b=null;
+if(_c.console){
+_c.console.clear();
+}
+_c=null;
+_e=null;
+_f=null;
+_10=null;
+_19=null;
+_12=null;
+_15=[];
+_16=[];
+_17={};
+};
+function _4f(){
+var _50=_12.value;
+_12.value="";
+_26([">  ",_50],"command");
+var _51;
+try{
+_51=eval(_50);
+}
+catch(e){
+}
+};
+function _4c(h){
+var _52=25;
+var _53=h?h-(_52+_12.offsetHeight+25+(h*0.01))+"px":(_e.offsetHeight-_52-_12.offsetHeight)+"px";
+_f.style.top=_52+"px";
+_f.style.height=_53;
+_10.style.height=_53;
+_10.style.top=_52+"px";
+_19.style.height=_53;
+_19.style.top=_52+"px";
+_12.style.bottom=0;
+dojo.addOnWindowUnload(_4e);
+};
+function _26(_54,_55,_56){
+if(_f){
+_57(_54,_55,_56);
+}else{
+_15.push([_54,_55,_56]);
+}
+};
+function _4d(){
+var _58=_15;
+_15=[];
+for(var i=0;i<_58.length;++i){
+_57(_58[i][0],_58[i][1],_58[i][2]);
+}
+};
+function _57(_59,_5a,_5b){
+var _5c=_f.scrollTop+_f.offsetHeight>=_f.scrollHeight;
+_5b=_5b||_5d;
+_5b(_59,_5a);
+if(_5c){
+_f.scrollTop=_f.scrollHeight-_f.offsetHeight;
+}
+};
+function _5e(row){
+var _5f=_16.length?_16[_16.length-1]:_f;
+_5f.appendChild(row);
+};
+function _5d(_60,_61){
+var row=_f.ownerDocument.createElement("div");
+row.className="logRow"+(_61?" logRow-"+_61:"");
+row.innerHTML=_60.join("");
+_5e(row);
+};
+function _2a(_62,_63){
+_21(_62,_63);
+var _64=_f.ownerDocument.createElement("div");
+_64.className="logGroupBox";
+_5e(_64);
+_16.push(_64);
+};
+function _2b(){
+_16.pop();
+};
+function _21(_65,_66){
+var _67=[];
+var _68=_65[0];
+var _69=0;
+if(typeof (_68)!="string"){
+_68="";
+_69=-1;
+}
+var _6a=_6b(_68);
+for(var i=0;i<_6a.length;++i){
+var _6c=_6a[i];
+if(_6c&&typeof _6c=="object"){
+_6c.appender(_65[++_69],_67);
+}else{
+_6d(_6c,_67);
+}
+}
+var ids=[];
+var obs=[];
+for(i=_69+1;i<_65.length;++i){
+_6d(" ",_67);
+var _6e=_65[i];
+if(_6e===undefined||_6e===null){
+_6f(_6e,_67);
+}else{
+if(typeof (_6e)=="string"){
+_6d(_6e,_67);
+}else{
+if(_6e instanceof Date){
+_6d(_6e.toString(),_67);
+}else{
+if(_6e.nodeType==9){
+_6d("[ XmlDoc ]",_67);
+}else{
+var id="_a"+_d++;
+ids.push(id);
+obs.push(_6e);
+var str="<a id=\""+id+"\" href=\"javascript:void(0);\">"+_70(_6e)+"</a>";
+_71(str,_67);
+}
+}
+}
+}
+}
+_26(_67,_66);
+for(i=0;i<ids.length;i++){
+var btn=_b.getElementById(ids[i]);
+if(!btn){
+continue;
+}
+btn.obj=obs[i];
+_c.console._connects.push(dojo.connect(btn,"onclick",function(){
+console.openObjectInspector();
+try{
+_25(this.obj);
+}
+catch(e){
+this.obj=e;
+}
+_10.innerHTML="<pre>"+_25(this.obj)+"</pre>";
+}));
+}
+};
+function _6b(_72){
+var _73=[];
+var reg=/((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
+var _74={s:_6d,d:_75,i:_75,f:_76};
+for(var m=reg.exec(_72);m;m=reg.exec(_72)){
+var _77=m[8]?m[8]:m[5];
+var _78=_77 in _74?_74[_77]:_79;
+var _7a=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
+_73.push(_72.substr(0,m[0][0]=="%"?m.index:m.index+1));
+_73.push({appender:_78,precision:_7a});
+_72=_72.substr(m.index+m[0].length);
+}
+_73.push(_72);
+return _73;
+};
+function _7b(_7c){
+function _7d(ch){
+switch(ch){
+case "<":
+return "&lt;";
+case ">":
+return "&gt;";
+case "&":
+return "&amp;";
+case "'":
+return "&#39;";
+case "\"":
+return "&quot;";
+}
+return "?";
+};
+return String(_7c).replace(/[<>&"']/g,_7d);
+};
+function _7e(_7f){
+try{
+return _7f+"";
+}
+catch(e){
+return null;
+}
+};
+function _71(_80,_81){
+_81.push(_7e(_80));
+};
+function _6d(_82,_83){
+_83.push(_7b(_7e(_82)));
+};
+function _6f(_84,_85){
+_85.push("<span class=\"objectBox-null\">",_7b(_7e(_84)),"</span>");
+};
+function _86(_87,_88){
+_88.push("<span class=\"objectBox-string\">&quot;",_7b(_7e(_87)),"&quot;</span>");
+};
+function _75(_89,_8a){
+_8a.push("<span class=\"objectBox-number\">",_7b(_7e(_89)),"</span>");
+};
+function _76(_8b,_8c){
+_8c.push("<span class=\"objectBox-number\">",_7b(_7e(_8b)),"</span>");
+};
+function _8d(_8e,_8f){
+_8f.push("<span class=\"objectBox-function\">",_70(_8e),"</span>");
+};
+function _79(_90,_91){
+try{
+if(_90===undefined){
+_6f("undefined",_91);
+}else{
+if(_90===null){
+_6f("null",_91);
+}else{
+if(typeof _90=="string"){
+_86(_90,_91);
+}else{
+if(typeof _90=="number"){
+_75(_90,_91);
+}else{
+if(typeof _90=="function"){
+_8d(_90,_91);
+}else{
+if(_90.nodeType==1){
+_92(_90,_91);
+}else{
+if(typeof _90=="object"){
+_93(_90,_91);
+}else{
+_6d(_90,_91);
+}
+}
+}
+}
+}
+}
+}
+}
+catch(e){
+}
+};
+function _93(_94,_95){
+var _96=_7e(_94);
+var _97=/\[object (.*?)\]/;
+var m=_97.exec(_96);
+_95.push("<span class=\"objectBox-object\">",m?m[1]:_96,"</span>");
+};
+function _92(_98,_99){
+_99.push("<span class=\"objectBox-selector\">");
+_99.push("<span class=\"selectorTag\">",_7b(_98.nodeName.toLowerCase()),"</span>");
+if(_98.id){
+_99.push("<span class=\"selectorId\">#",_7b(_98.id),"</span>");
+}
+if(_98.className){
+_99.push("<span class=\"selectorClass\">.",_7b(_98.className),"</span>");
+}
+_99.push("</span>");
+};
+function _29(_9a,_9b){
+if(_9a.nodeType==1){
+_9b.push("<div class=\"objectBox-element\">","&lt;<span class=\"nodeTag\">",_9a.nodeName.toLowerCase(),"</span>");
+for(var i=0;i<_9a.attributes.length;++i){
+var _9c=_9a.attributes[i];
+if(!_9c.specified){
+continue;
+}
+_9b.push("&nbsp;<span class=\"nodeName\">",_9c.nodeName.toLowerCase(),"</span>=&quot;<span class=\"nodeValue\">",_7b(_9c.nodeValue),"</span>&quot;");
+}
+if(_9a.firstChild){
+_9b.push("&gt;</div><div class=\"nodeChildren\">");
+for(var _9d=_9a.firstChild;_9d;_9d=_9d.nextSibling){
+_29(_9d,_9b);
+}
+_9b.push("</div><div class=\"objectBox-element\">&lt;/<span class=\"nodeTag\">",_9a.nodeName.toLowerCase(),"&gt;</span></div>");
+}else{
+_9b.push("/&gt;</div>");
+}
+}else{
+if(_9a.nodeType==3){
+_9b.push("<div class=\"nodeText\">",_7b(_9a.nodeValue),"</div>");
+}
+}
+};
+function _49(_9e,_9f,_a0){
+if(document.all){
+_9e.attachEvent("on"+_9f,_a0);
+}else{
+_9e.addEventListener(_9f,_a0,false);
+}
+};
+function _a1(_a2,_a3,_a4){
+if(document.all){
+_a2.detachEvent("on"+_a3,_a4);
+}else{
+_a2.removeEventListener(_a3,_a4,false);
+}
+};
+function _a5(_a6){
+if(document.all){
+_a6.cancelBubble=true;
+}else{
+_a6.stopPropagation();
+}
+};
+function _a7(msg,_a8,_a9){
+var _aa=_a8.lastIndexOf("/");
+var _ab=_aa==-1?_a8:_a8.substr(_aa+1);
+var _ac=["<span class=\"errorMessage\">",msg,"</span>","<div class=\"objectBox-sourceLink\">",_ab," (line ",_a9,")</div>"];
+_26(_ac,"error");
+};
+var _ad=new Date().getTime();
+function _4b(_ae){
+var _af=(new Date()).getTime();
+if(_af>_ad+200){
+_ae=dojo.fixEvent(_ae);
+var _b0=dojo.keys;
+var ekc=_ae.keyCode;
+_ad=_af;
+if(ekc==_b0.F12){
+_34();
+}else{
+if((ekc==_b0.NUMPAD_ENTER||ekc==76)&&_ae.shiftKey&&(_ae.metaKey||_ae.ctrlKey)){
+_39();
+}else{
+return;
+}
+}
+_a5(_ae);
+}
+};
+function _4a(e){
+var dk=dojo.keys;
+if(e.keyCode==13&&_12.value){
+_b1(_12.value);
+_4f();
+}else{
+if(e.keyCode==27){
+_12.value="";
+}else{
+if(e.keyCode==dk.UP_ARROW||e.charCode==dk.UP_ARROW){
+_b2("older");
+}else{
+if(e.keyCode==dk.DOWN_ARROW||e.charCode==dk.DOWN_ARROW){
+_b2("newer");
+}else{
+if(e.keyCode==dk.HOME||e.charCode==dk.HOME){
+_b3=1;
+_b2("older");
+}else{
+if(e.keyCode==dk.END||e.charCode==dk.END){
+_b3=999999;
+_b2("newer");
+}
+}
+}
+}
+}
+}
+};
+var _b3=-1;
+var _b4=null;
+function _b1(_b5){
+var _b6=_b7("firebug_history");
+_b6=(_b6)?dojo.fromJson(_b6):[];
+var pos=dojo.indexOf(_b6,_b5);
+if(pos!=-1){
+_b6.splice(pos,1);
+}
+_b6.push(_b5);
+_b7("firebug_history",dojo.toJson(_b6),30);
+while(_b6.length&&!_b7("firebug_history")){
+_b6.shift();
+_b7("firebug_history",dojo.toJson(_b6),30);
+}
+_b4=null;
+_b3=-1;
+};
+function _b2(_b8){
+var _b9=_b7("firebug_history");
+_b9=(_b9)?dojo.fromJson(_b9):[];
+if(!_b9.length){
+return;
+}
+if(_b4===null){
+_b4=_12.value;
+}
+if(_b3==-1){
+_b3=_b9.length;
+}
+if(_b8=="older"){
+--_b3;
+if(_b3<0){
+_b3=0;
+}
+}else{
+if(_b8=="newer"){
+++_b3;
+if(_b3>_b9.length){
+_b3=_b9.length;
+}
+}
+}
+if(_b3==_b9.length){
+_12.value=_b4;
+_b4=null;
+}else{
+_12.value=_b9[_b3];
+}
+};
+function _b7(_ba,_bb){
+var c=document.cookie;
+if(arguments.length==1){
+var _bc=c.match(new RegExp("(?:^|; )"+_ba+"=([^;]*)"));
+return _bc?decodeURIComponent(_bc[1]):undefined;
+}else{
+var d=new Date();
+d.setMonth(d.getMonth()+1);
+document.cookie=_ba+"="+encodeURIComponent(_bb)+((d.toUtcString)?"; expires="+d.toUTCString():"");
+}
+};
+function _bd(it){
+return it&&it instanceof Array||typeof it=="array";
+};
+function _be(o){
+var cnt=0;
+for(var nm in o){
+cnt++;
+}
+return cnt;
+};
+function _25(o,i,txt,_bf){
+var ind=" \t";
+txt=txt||"";
+i=i||ind;
+_bf=_bf||[];
+var _c0;
+if(o&&o.nodeType==1){
+var _c1=[];
+_29(o,_c1);
+return _c1.join("");
+}
+var br=",\n",cnt=0,_c2=_be(o);
+if(o instanceof Date){
+return i+o.toString()+br;
+}
+looking:
+for(var nm in o){
+cnt++;
+if(cnt==_c2){
+br="\n";
+}
+if(o[nm]===window||o[nm]===document){
+continue;
+}else{
+if(o[nm]===null){
+txt+=i+nm+" : NULL"+br;
+}else{
+if(o[nm]&&o[nm].nodeType){
+if(o[nm].nodeType==1){
+}else{
+if(o[nm].nodeType==3){
+txt+=i+nm+" : [ TextNode "+o[nm].data+" ]"+br;
+}
+}
+}else{
+if(typeof o[nm]=="object"&&(o[nm] instanceof String||o[nm] instanceof Number||o[nm] instanceof Boolean)){
+txt+=i+nm+" : "+o[nm]+","+br;
+}else{
+if(o[nm] instanceof Date){
+txt+=i+nm+" : "+o[nm].toString()+br;
+}else{
+if(typeof (o[nm])=="object"&&o[nm]){
+for(var j=0,_c3;_c3=_bf[j];j++){
+if(o[nm]===_c3){
+txt+=i+nm+" : RECURSION"+br;
+continue looking;
+}
+}
+_bf.push(o[nm]);
+_c0=(_bd(o[nm]))?["[","]"]:["{","}"];
+txt+=i+nm+" : "+_c0[0]+"\n";
+txt+=_25(o[nm],i+ind,"",_bf);
+txt+=i+_c0[1]+br;
+}else{
+if(typeof o[nm]=="undefined"){
+txt+=i+nm+" : undefined"+br;
+}else{
+if(nm=="toString"&&typeof o[nm]=="function"){
+var _c4=o[nm]();
+if(typeof _c4=="string"&&_c4.match(/function ?(.*?)\(/)){
+_c4=_7b(_70(o[nm]));
+}
+txt+=i+nm+" : "+_c4+br;
+}else{
+txt+=i+nm+" : "+_7b(_70(o[nm]))+br;
+}
+}
+}
+}
+}
+}
+}
+}
+}
+return txt;
+};
+function _70(obj){
+var _c5=(obj instanceof Error);
+if(obj.nodeType==1){
+return _7b("< "+obj.tagName.toLowerCase()+" id=\""+obj.id+"\" />");
+}
+if(obj.nodeType==3){
+return _7b("[TextNode: \""+obj.nodeValue+"\"]");
+}
+var nm=(obj&&(obj.id||obj.name||obj.ObjectID||obj.widgetId));
+if(!_c5&&nm){
+return "{"+nm+"}";
+}
+var _c6=2;
+var _c7=4;
+var cnt=0;
+if(_c5){
+nm="[ Error: "+(obj.message||obj.description||obj)+" ]";
+}else{
+if(_bd(obj)){
+nm="["+obj.slice(0,_c7).join(",");
+if(obj.length>_c7){
+nm+=" ... ("+obj.length+" items)";
+}
+nm+="]";
+}else{
+if(typeof obj=="function"){
+nm=obj+"";
+var reg=/function\s*([^\(]*)(\([^\)]*\))[^\{]*\{/;
+var m=reg.exec(nm);
+if(m){
+if(!m[1]){
+m[1]="function";
+}
+nm=m[1]+m[2];
+}else{
+nm="function()";
+}
+}else{
+if(typeof obj!="object"||typeof obj=="string"){
+nm=obj+"";
+}else{
+nm="{";
+for(var i in obj){
+cnt++;
+if(cnt>_c6){
+break;
+}
+nm+=i+":"+_7b(obj[i])+"  ";
+}
+nm+="}";
+}
+}
+}
+}
+return nm;
+};
+_49(document,dojo.isIE||dojo.isSafari?"keydown":"keypress",_4b);
+if((document.documentElement.getAttribute("debug")=="true")||(dojo.config.isDebug)){
+_34(true);
+}
+dojo.addOnWindowUnload(function(){
+_a1(document,dojo.isIE||dojo.isSafari?"keydown":"keypress",_4b);
+window.onFirebugResize=null;
+window.console=null;
+});
+}
+})();
+}
diff --git a/lib/dojo/_firebug/infoIcon.png b/lib/dojo/_firebug/infoIcon.png
new file mode 100644 (file)
index 0000000..da1e533
Binary files /dev/null and b/lib/dojo/_firebug/infoIcon.png differ
diff --git a/lib/dojo/_firebug/tab_lft_norm.png b/lib/dojo/_firebug/tab_lft_norm.png
new file mode 100644 (file)
index 0000000..f0479a2
Binary files /dev/null and b/lib/dojo/_firebug/tab_lft_norm.png differ
diff --git a/lib/dojo/_firebug/tab_lft_over.png b/lib/dojo/_firebug/tab_lft_over.png
new file mode 100644 (file)
index 0000000..2f36cca
Binary files /dev/null and b/lib/dojo/_firebug/tab_lft_over.png differ
diff --git a/lib/dojo/_firebug/tab_rgt_norm.png b/lib/dojo/_firebug/tab_rgt_norm.png
new file mode 100644 (file)
index 0000000..464af3e
Binary files /dev/null and b/lib/dojo/_firebug/tab_rgt_norm.png differ
diff --git a/lib/dojo/_firebug/tab_rgt_over.png b/lib/dojo/_firebug/tab_rgt_over.png
new file mode 100644 (file)
index 0000000..2bc2cd0
Binary files /dev/null and b/lib/dojo/_firebug/tab_rgt_over.png differ
diff --git a/lib/dojo/_firebug/warningIcon.png b/lib/dojo/_firebug/warningIcon.png
new file mode 100644 (file)
index 0000000..de51084
Binary files /dev/null and b/lib/dojo/_firebug/warningIcon.png differ
diff --git a/lib/dojo/back.js b/lib/dojo/back.js
new file mode 100644 (file)
index 0000000..a265628
--- /dev/null
@@ -0,0 +1,258 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.back"]){
+dojo._hasResource["dojo.back"]=true;
+dojo.provide("dojo.back");
+(function(){
+var _1=dojo.back;
+function _2(){
+var h=window.location.hash;
+if(h.charAt(0)=="#"){
+h=h.substring(1);
+}
+return dojo.isMozilla?h:decodeURIComponent(h);
+};
+function _3(h){
+if(!h){
+h="";
+}
+window.location.hash=encodeURIComponent(h);
+_4=history.length;
+};
+if(dojo.exists("tests.back-hash")){
+_1.getHash=_2;
+_1.setHash=_3;
+}
+var _5=(typeof (window)!=="undefined")?window.location.href:"";
+var _6=(typeof (window)!=="undefined")?_2():"";
+var _7=null;
+var _8=null;
+var _9=null;
+var _a=null;
+var _b=[];
+var _c=[];
+var _d=false;
+var _e=false;
+var _4;
+function _f(){
+var _10=_c.pop();
+if(!_10){
+return;
+}
+var _11=_c[_c.length-1];
+if(!_11&&_c.length==0){
+_11=_7;
+}
+if(_11){
+if(_11.kwArgs["back"]){
+_11.kwArgs["back"]();
+}else{
+if(_11.kwArgs["backButton"]){
+_11.kwArgs["backButton"]();
+}else{
+if(_11.kwArgs["handle"]){
+_11.kwArgs.handle("back");
+}
+}
+}
+}
+_b.push(_10);
+};
+_1.goBack=_f;
+function _12(){
+var _13=_b.pop();
+if(!_13){
+return;
+}
+if(_13.kwArgs["forward"]){
+_13.kwArgs.forward();
+}else{
+if(_13.kwArgs["forwardButton"]){
+_13.kwArgs.forwardButton();
+}else{
+if(_13.kwArgs["handle"]){
+_13.kwArgs.handle("forward");
+}
+}
+}
+_c.push(_13);
+};
+_1.goForward=_12;
+function _14(url,_15,_16){
+return {"url":url,"kwArgs":_15,"urlHash":_16};
+};
+function _17(url){
+var _18=url.split("?");
+if(_18.length<2){
+return null;
+}else{
+return _18[1];
+}
+};
+function _19(){
+var url=(dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html"))+"?"+(new Date()).getTime();
+_d=true;
+if(_a){
+dojo.isWebKit?_a.location=url:window.frames[_a.name].location=url;
+}else{
+}
+return url;
+};
+function _1a(){
+if(!_e){
+var hsl=_c.length;
+var _1b=_2();
+if((_1b===_6||window.location.href==_5)&&(hsl==1)){
+_f();
+return;
+}
+if(_b.length>0){
+if(_b[_b.length-1].urlHash===_1b){
+_12();
+return;
+}
+}
+if((hsl>=2)&&(_c[hsl-2])){
+if(_c[hsl-2].urlHash===_1b){
+_f();
+return;
+}
+}
+if(dojo.isSafari&&dojo.isSafari<3){
+var _1c=history.length;
+if(_1c>_4){
+_12();
+}else{
+if(_1c<_4){
+_f();
+}
+}
+_4=_1c;
+}
+}
+};
+_1.init=function(){
+if(dojo.byId("dj_history")){
+return;
+}
+var src=dojo.config["dojoIframeHistoryUrl"]||dojo.moduleUrl("dojo","resources/iframe_history.html");
+if(dojo._postLoad){
+console.error("dojo.back.init() must be called before the DOM has loaded. "+"If using xdomain loading or djConfig.debugAtAllCosts, include dojo.back "+"in a build layer.");
+}else{
+document.write("<iframe style=\"border:0;width:1px;height:1px;position:absolute;visibility:hidden;bottom:0;right:0;\" name=\"dj_history\" id=\"dj_history\" src=\""+src+"\"></iframe>");
+}
+};
+_1.setInitialState=function(_1d){
+_7=_14(_5,_1d,_6);
+};
+_1.addToHistory=function(_1e){
+_b=[];
+var _1f=null;
+var url=null;
+if(!_a){
+if(dojo.config["useXDomain"]&&!dojo.config["dojoIframeHistoryUrl"]){
+console.warn("dojo.back: When using cross-domain Dojo builds,"+" please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"+" to the path on your domain to iframe_history.html");
+}
+_a=window.frames["dj_history"];
+}
+if(!_9){
+_9=dojo.create("a",{style:{display:"none"}},dojo.body());
+}
+if(_1e["changeUrl"]){
+_1f=""+((_1e["changeUrl"]!==true)?_1e["changeUrl"]:(new Date()).getTime());
+if(_c.length==0&&_7.urlHash==_1f){
+_7=_14(url,_1e,_1f);
+return;
+}else{
+if(_c.length>0&&_c[_c.length-1].urlHash==_1f){
+_c[_c.length-1]=_14(url,_1e,_1f);
+return;
+}
+}
+_e=true;
+setTimeout(function(){
+_3(_1f);
+_e=false;
+},1);
+_9.href=_1f;
+if(dojo.isIE){
+url=_19();
+var _20=_1e["back"]||_1e["backButton"]||_1e["handle"];
+var tcb=function(_21){
+if(_2()!=""){
+setTimeout(function(){
+_3(_1f);
+},1);
+}
+_20.apply(this,[_21]);
+};
+if(_1e["back"]){
+_1e.back=tcb;
+}else{
+if(_1e["backButton"]){
+_1e.backButton=tcb;
+}else{
+if(_1e["handle"]){
+_1e.handle=tcb;
+}
+}
+}
+var _22=_1e["forward"]||_1e["forwardButton"]||_1e["handle"];
+var tfw=function(_23){
+if(_2()!=""){
+_3(_1f);
+}
+if(_22){
+_22.apply(this,[_23]);
+}
+};
+if(_1e["forward"]){
+_1e.forward=tfw;
+}else{
+if(_1e["forwardButton"]){
+_1e.forwardButton=tfw;
+}else{
+if(_1e["handle"]){
+_1e.handle=tfw;
+}
+}
+}
+}else{
+if(!dojo.isIE){
+if(!_8){
+_8=setInterval(_1a,200);
+}
+}
+}
+}else{
+url=_19();
+}
+_c.push(_14(url,_1e,_1f));
+};
+_1._iframeLoaded=function(evt,_24){
+var _25=_17(_24.href);
+if(_25==null){
+if(_c.length==1){
+_f();
+}
+return;
+}
+if(_d){
+_d=false;
+return;
+}
+if(_c.length>=2&&_25==_17(_c[_c.length-2].url)){
+_f();
+}else{
+if(_b.length>0&&_25==_17(_b[_b.length-1].url)){
+_12();
+}
+}
+};
+})();
+}
diff --git a/lib/dojo/behavior.js b/lib/dojo/behavior.js
new file mode 100644 (file)
index 0000000..3420fec
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.behavior"]){
+dojo._hasResource["dojo.behavior"]=true;
+dojo.provide("dojo.behavior");
+dojo.behavior=new function(){
+function _1(_2,_3){
+if(!_2[_3]){
+_2[_3]=[];
+}
+return _2[_3];
+};
+var _4=0;
+function _5(_6,_7,_8){
+var _9={};
+for(var x in _6){
+if(typeof _9[x]=="undefined"){
+if(!_8){
+_7(_6[x],x);
+}else{
+_8.call(_7,_6[x],x);
+}
+}
+}
+};
+this._behaviors={};
+this.add=function(_a){
+var _b={};
+_5(_a,this,function(_c,_d){
+var _e=_1(this._behaviors,_d);
+if(typeof _e["id"]!="number"){
+_e.id=_4++;
+}
+var _f=[];
+_e.push(_f);
+if((dojo.isString(_c))||(dojo.isFunction(_c))){
+_c={found:_c};
+}
+_5(_c,function(_10,_11){
+_1(_f,_11).push(_10);
+});
+});
+};
+var _12=function(_13,_14,_15){
+if(dojo.isString(_14)){
+if(_15=="found"){
+dojo.publish(_14,[_13]);
+}else{
+dojo.connect(_13,_15,function(){
+dojo.publish(_14,arguments);
+});
+}
+}else{
+if(dojo.isFunction(_14)){
+if(_15=="found"){
+_14(_13);
+}else{
+dojo.connect(_13,_15,_14);
+}
+}
+}
+};
+this.apply=function(){
+_5(this._behaviors,function(_16,id){
+dojo.query(id).forEach(function(_17){
+var _18=0;
+var bid="_dj_behavior_"+_16.id;
+if(typeof _17[bid]=="number"){
+_18=_17[bid];
+if(_18==(_16.length)){
+return;
+}
+}
+for(var x=_18,_19;_19=_16[x];x++){
+_5(_19,function(_1a,_1b){
+if(dojo.isArray(_1a)){
+dojo.forEach(_1a,function(_1c){
+_12(_17,_1c,_1b);
+});
+}
+});
+}
+_17[bid]=_16.length;
+});
+});
+};
+};
+dojo.addOnLoad(dojo.behavior,"apply");
+}
diff --git a/lib/dojo/build.txt b/lib/dojo/build.txt
new file mode 100644 (file)
index 0000000..5db48dd
--- /dev/null
@@ -0,0 +1,328 @@
+Files baked into this build:
+
+dojo.js:
+./jslib/dojoGuardStart.jsfrag
+./../../dojo/_base/_loader/bootstrap.js
+./../../dojo/_base/_loader/loader.js
+./../../dojo/_base/_loader/hostenv_browser.js
+./../../release/dojo-release-1.5.0/dojo/_base/lang.js
+./../../release/dojo-release-1.5.0/dojo/_base/array.js
+./../../release/dojo-release-1.5.0/dojo/_base/declare.js
+./../../release/dojo-release-1.5.0/dojo/_base/connect.js
+./../../release/dojo-release-1.5.0/dojo/_base/Deferred.js
+./../../release/dojo-release-1.5.0/dojo/_base/json.js
+./../../release/dojo-release-1.5.0/dojo/_base/Color.js
+./../../release/dojo-release-1.5.0/dojo/_base.js
+./../../release/dojo-release-1.5.0/dojo/_base/window.js
+./../../release/dojo-release-1.5.0/dojo/_base/event.js
+./../../release/dojo-release-1.5.0/dojo/_base/html.js
+./../../release/dojo-release-1.5.0/dojo/_base/NodeList.js
+./../../release/dojo-release-1.5.0/dojo/_base/query.js
+./../../release/dojo-release-1.5.0/dojo/_base/xhr.js
+./../../release/dojo-release-1.5.0/dojo/_base/fx.js
+./../../release/dojo-release-1.5.0/dojo/_base/browser.js
+./jslib/dojoGuardEnd.jsfrag
+
+../dijit/dijit.js:
+./../../release/dojo-release-1.5.0/dojo/window.js
+./../../release/dojo-release-1.5.0/dijit/_base/manager.js
+./../../release/dojo-release-1.5.0/dijit/_base/focus.js
+./../../release/dojo-release-1.5.0/dojo/AdapterRegistry.js
+./../../release/dojo-release-1.5.0/dijit/_base/place.js
+./../../release/dojo-release-1.5.0/dijit/_base/window.js
+./../../release/dojo-release-1.5.0/dijit/_base/popup.js
+./../../release/dojo-release-1.5.0/dijit/_base/scroll.js
+./../../release/dojo-release-1.5.0/dojo/uacss.js
+./../../release/dojo-release-1.5.0/dijit/_base/sniff.js
+./../../release/dojo-release-1.5.0/dijit/_base/typematic.js
+./../../release/dojo-release-1.5.0/dijit/_base/wai.js
+./../../release/dojo-release-1.5.0/dijit/_base.js
+./../../release/dojo-release-1.5.0/dojo/date/stamp.js
+./../../release/dojo-release-1.5.0/dojo/parser.js
+./../../release/dojo-release-1.5.0/dijit/_Widget.js
+./../../release/dojo-release-1.5.0/dojo/string.js
+./../../release/dojo-release-1.5.0/dojo/cache.js
+./../../release/dojo-release-1.5.0/dijit/_Templated.js
+./../../release/dojo-release-1.5.0/dijit/_Container.js
+./../../release/dojo-release-1.5.0/dijit/_Contained.js
+./../../release/dojo-release-1.5.0/dijit/layout/_LayoutWidget.js
+./../../release/dojo-release-1.5.0/dijit/_CssStateMixin.js
+./../../release/dojo-release-1.5.0/dijit/form/_FormWidget.js
+./../../release/dojo-release-1.5.0/dijit/dijit.js
+
+../dijit/dijit-all.js:
+./../../release/dojo-release-1.5.0/dojo/colors.js
+./../../release/dojo-release-1.5.0/dojo/i18n.js
+./../../release/dojo-release-1.5.0/dijit/_PaletteMixin.js
+./../../release/dojo-release-1.5.0/dijit/ColorPalette.js
+./../../release/dojo-release-1.5.0/dijit/Declaration.js
+./../../release/dojo-release-1.5.0/dojo/dnd/common.js
+./../../release/dojo-release-1.5.0/dojo/dnd/autoscroll.js
+./../../release/dojo-release-1.5.0/dojo/dnd/Mover.js
+./../../release/dojo-release-1.5.0/dojo/dnd/Moveable.js
+./../../release/dojo-release-1.5.0/dojo/dnd/move.js
+./../../release/dojo-release-1.5.0/dojo/dnd/TimedMoveable.js
+./../../release/dojo-release-1.5.0/dojo/fx/Toggler.js
+./../../release/dojo-release-1.5.0/dojo/fx.js
+./../../release/dojo-release-1.5.0/dijit/form/_FormMixin.js
+./../../release/dojo-release-1.5.0/dijit/_DialogMixin.js
+./../../release/dojo-release-1.5.0/dijit/DialogUnderlay.js
+./../../release/dojo-release-1.5.0/dojo/html.js
+./../../release/dojo-release-1.5.0/dijit/layout/ContentPane.js
+./../../release/dojo-release-1.5.0/dijit/TooltipDialog.js
+./../../release/dojo-release-1.5.0/dijit/Dialog.js
+./../../release/dojo-release-1.5.0/dijit/_editor/selection.js
+./../../release/dojo-release-1.5.0/dijit/_editor/range.js
+./../../release/dojo-release-1.5.0/dijit/_editor/html.js
+./../../release/dojo-release-1.5.0/dijit/_editor/RichText.js
+./../../release/dojo-release-1.5.0/dijit/_KeyNavContainer.js
+./../../release/dojo-release-1.5.0/dijit/ToolbarSeparator.js
+./../../release/dojo-release-1.5.0/dijit/Toolbar.js
+./../../release/dojo-release-1.5.0/dijit/_HasDropDown.js
+./../../release/dojo-release-1.5.0/dijit/form/Button.js
+./../../release/dojo-release-1.5.0/dijit/_editor/_Plugin.js
+./../../release/dojo-release-1.5.0/dijit/_editor/plugins/EnterKeyHandling.js
+./../../release/dojo-release-1.5.0/dijit/Editor.js
+./../../release/dojo-release-1.5.0/dojo/regexp.js
+./../../release/dojo-release-1.5.0/dojo/data/util/sorter.js
+./../../release/dojo-release-1.5.0/dojo/data/util/simpleFetch.js
+./../../release/dojo-release-1.5.0/dojo/data/util/filter.js
+./../../release/dojo-release-1.5.0/dijit/form/TextBox.js
+./../../release/dojo-release-1.5.0/dijit/Tooltip.js
+./../../release/dojo-release-1.5.0/dijit/form/ValidationTextBox.js
+./../../release/dojo-release-1.5.0/dijit/form/ComboBox.js
+./../../release/dojo-release-1.5.0/dijit/form/FilteringSelect.js
+./../../release/dojo-release-1.5.0/dojo/data/ItemFileReadStore.js
+./../../release/dojo-release-1.5.0/dijit/_editor/plugins/FontChoice.js
+./../../release/dojo-release-1.5.0/dijit/form/_FormSelectWidget.js
+./../../release/dojo-release-1.5.0/dijit/MenuItem.js
+./../../release/dojo-release-1.5.0/dijit/PopupMenuItem.js
+./../../release/dojo-release-1.5.0/dijit/CheckedMenuItem.js
+./../../release/dojo-release-1.5.0/dijit/MenuSeparator.js
+./../../release/dojo-release-1.5.0/dijit/Menu.js
+./../../release/dojo-release-1.5.0/dijit/form/Select.js
+./../../release/dojo-release-1.5.0/dijit/_editor/plugins/LinkDialog.js
+./../../release/dojo-release-1.5.0/dijit/MenuBar.js
+./../../release/dojo-release-1.5.0/dijit/MenuBarItem.js
+./../../release/dojo-release-1.5.0/dijit/PopupMenuBarItem.js
+./../../release/dojo-release-1.5.0/dojo/number.js
+./../../release/dojo-release-1.5.0/dijit/ProgressBar.js
+./../../release/dojo-release-1.5.0/dijit/TitlePane.js
+./../../release/dojo-release-1.5.0/dojo/DeferredList.js
+./../../release/dojo-release-1.5.0/dojo/cookie.js
+./../../release/dojo-release-1.5.0/dijit/tree/TreeStoreModel.js
+./../../release/dojo-release-1.5.0/dijit/tree/ForestStoreModel.js
+./../../release/dojo-release-1.5.0/dijit/Tree.js
+./../../release/dojo-release-1.5.0/dijit/InlineEditBox.js
+./../../release/dojo-release-1.5.0/dijit/form/Form.js
+./../../release/dojo-release-1.5.0/dijit/form/DropDownButton.js
+./../../release/dojo-release-1.5.0/dijit/form/ComboButton.js
+./../../release/dojo-release-1.5.0/dijit/form/ToggleButton.js
+./../../release/dojo-release-1.5.0/dijit/form/CheckBox.js
+./../../release/dojo-release-1.5.0/dijit/form/RadioButton.js
+./../../release/dojo-release-1.5.0/dojo/cldr/monetary.js
+./../../release/dojo-release-1.5.0/dojo/currency.js
+./../../release/dojo-release-1.5.0/dijit/form/NumberTextBox.js
+./../../release/dojo-release-1.5.0/dijit/form/CurrencyTextBox.js
+./../../release/dojo-release-1.5.0/dojo/cldr/supplemental.js
+./../../release/dojo-release-1.5.0/dojo/date.js
+./../../release/dojo-release-1.5.0/dojo/date/locale.js
+./../../release/dojo-release-1.5.0/dijit/Calendar.js
+./../../release/dojo-release-1.5.0/dijit/form/_DateTimeTextBox.js
+./../../release/dojo-release-1.5.0/dijit/form/DateTextBox.js
+./../../release/dojo-release-1.5.0/dijit/form/_Spinner.js
+./../../release/dojo-release-1.5.0/dijit/form/NumberSpinner.js
+./../../release/dojo-release-1.5.0/dijit/form/MultiSelect.js
+./../../release/dojo-release-1.5.0/dijit/form/HorizontalSlider.js
+./../../release/dojo-release-1.5.0/dijit/form/VerticalSlider.js
+./../../release/dojo-release-1.5.0/dijit/form/HorizontalRule.js
+./../../release/dojo-release-1.5.0/dijit/form/VerticalRule.js
+./../../release/dojo-release-1.5.0/dijit/form/HorizontalRuleLabels.js
+./../../release/dojo-release-1.5.0/dijit/form/VerticalRuleLabels.js
+./../../release/dojo-release-1.5.0/dijit/form/SimpleTextarea.js
+./../../release/dojo-release-1.5.0/dijit/form/Textarea.js
+./../../release/dojo-release-1.5.0/dijit/layout/StackController.js
+./../../release/dojo-release-1.5.0/dijit/layout/StackContainer.js
+./../../release/dojo-release-1.5.0/dijit/layout/AccordionPane.js
+./../../release/dojo-release-1.5.0/dijit/layout/AccordionContainer.js
+./../../release/dojo-release-1.5.0/dijit/layout/BorderContainer.js
+./../../release/dojo-release-1.5.0/dijit/layout/LayoutContainer.js
+./../../release/dojo-release-1.5.0/dijit/layout/LinkPane.js
+./../../release/dojo-release-1.5.0/dijit/layout/SplitContainer.js
+./../../release/dojo-release-1.5.0/dijit/layout/_TabContainerBase.js
+./../../release/dojo-release-1.5.0/dijit/layout/TabController.js
+./../../release/dojo-release-1.5.0/dijit/layout/ScrollingTabController.js
+./../../release/dojo-release-1.5.0/dijit/layout/TabContainer.js
+./../../release/dojo-release-1.5.0/dijit/dijit-all.js
+
+../dojox/grid/DataGrid.js:
+./../../release/dojo-release-1.5.0/dojo/window.js
+./../../release/dojo-release-1.5.0/dijit/_base/manager.js
+./../../release/dojo-release-1.5.0/dijit/_base/focus.js
+./../../release/dojo-release-1.5.0/dojo/AdapterRegistry.js
+./../../release/dojo-release-1.5.0/dijit/_base/place.js
+./../../release/dojo-release-1.5.0/dijit/_base/window.js
+./../../release/dojo-release-1.5.0/dijit/_base/popup.js
+./../../release/dojo-release-1.5.0/dijit/_base/scroll.js
+./../../release/dojo-release-1.5.0/dojo/uacss.js
+./../../release/dojo-release-1.5.0/dijit/_base/sniff.js
+./../../release/dojo-release-1.5.0/dijit/_base/typematic.js
+./../../release/dojo-release-1.5.0/dijit/_base/wai.js
+./../../release/dojo-release-1.5.0/dijit/_base.js
+./../../release/dojo-release-1.5.0/dojo/date/stamp.js
+./../../release/dojo-release-1.5.0/dojo/parser.js
+./../../release/dojo-release-1.5.0/dijit/_Widget.js
+./../../release/dojo-release-1.5.0/dojo/string.js
+./../../release/dojo-release-1.5.0/dojo/cache.js
+./../../release/dojo-release-1.5.0/dijit/_Templated.js
+./../../release/dojo-release-1.5.0/dijit/_Container.js
+./../../release/dojo-release-1.5.0/dijit/_Contained.js
+./../../release/dojo-release-1.5.0/dijit/layout/_LayoutWidget.js
+./../../release/dojo-release-1.5.0/dijit/_CssStateMixin.js
+./../../release/dojo-release-1.5.0/dijit/form/_FormWidget.js
+./../../release/dojo-release-1.5.0/dijit/dijit.js
+./../../release/dojo-release-1.5.0/dijit/_KeyNavContainer.js
+./../../release/dojo-release-1.5.0/dijit/MenuItem.js
+./../../release/dojo-release-1.5.0/dijit/PopupMenuItem.js
+./../../release/dojo-release-1.5.0/dijit/CheckedMenuItem.js
+./../../release/dojo-release-1.5.0/dijit/MenuSeparator.js
+./../../release/dojo-release-1.5.0/dijit/Menu.js
+./../../release/dojo-release-1.5.0/dojox/html/metrics.js
+./../../release/dojo-release-1.5.0/dojox/grid/util.js
+./../../release/dojo-release-1.5.0/dojox/grid/_Scroller.js
+./../../release/dojo-release-1.5.0/dojox/grid/cells/_base.js
+./../../release/dojo-release-1.5.0/dojox/grid/cells.js
+./../../release/dojo-release-1.5.0/dojo/dnd/common.js
+./../../release/dojo-release-1.5.0/dojo/dnd/autoscroll.js
+./../../release/dojo-release-1.5.0/dojo/dnd/Mover.js
+./../../release/dojo-release-1.5.0/dojo/dnd/Moveable.js
+./../../release/dojo-release-1.5.0/dojox/grid/_Builder.js
+./../../release/dojo-release-1.5.0/dojo/dnd/Container.js
+./../../release/dojo-release-1.5.0/dojo/dnd/Selector.js
+./../../release/dojo-release-1.5.0/dojo/dnd/Avatar.js
+./../../release/dojo-release-1.5.0/dojo/dnd/Manager.js
+./../../release/dojo-release-1.5.0/dojo/dnd/Source.js
+./../../release/dojo-release-1.5.0/dojox/grid/_View.js
+./../../release/dojo-release-1.5.0/dojox/grid/_RowSelector.js
+./../../release/dojo-release-1.5.0/dojox/grid/_Layout.js
+./../../release/dojo-release-1.5.0/dojox/grid/_ViewManager.js
+./../../release/dojo-release-1.5.0/dojox/grid/_RowManager.js
+./../../release/dojo-release-1.5.0/dojox/grid/_FocusManager.js
+./../../release/dojo-release-1.5.0/dojox/grid/_EditManager.js
+./../../release/dojo-release-1.5.0/dojox/grid/Selection.js
+./../../release/dojo-release-1.5.0/dojox/grid/_Events.js
+./../../release/dojo-release-1.5.0/dojo/i18n.js
+./../../release/dojo-release-1.5.0/dojox/grid/_Grid.js
+./../../release/dojo-release-1.5.0/dojox/grid/DataSelection.js
+./../../release/dojo-release-1.5.0/dojox/grid/DataGrid.js
+
+../dojox/gfx.js:
+./../../release/dojo-release-1.5.0/dojox/gfx/matrix.js
+./../../release/dojo-release-1.5.0/dojox/gfx/_base.js
+./../../release/dojo-release-1.5.0/dojox/gfx.js
+
+../dojox/charting/widget/Chart2D.js:
+./../../release/dojo-release-1.5.0/dojo/window.js
+./../../release/dojo-release-1.5.0/dijit/_base/manager.js
+./../../release/dojo-release-1.5.0/dijit/_base/focus.js
+./../../release/dojo-release-1.5.0/dojo/AdapterRegistry.js
+./../../release/dojo-release-1.5.0/dijit/_base/place.js
+./../../release/dojo-release-1.5.0/dijit/_base/window.js
+./../../release/dojo-release-1.5.0/dijit/_base/popup.js
+./../../release/dojo-release-1.5.0/dijit/_base/scroll.js
+./../../release/dojo-release-1.5.0/dojo/uacss.js
+./../../release/dojo-release-1.5.0/dijit/_base/sniff.js
+./../../release/dojo-release-1.5.0/dijit/_base/typematic.js
+./../../release/dojo-release-1.5.0/dijit/_base/wai.js
+./../../release/dojo-release-1.5.0/dijit/_base.js
+./../../release/dojo-release-1.5.0/dijit/_Widget.js
+./../../release/dojo-release-1.5.0/dojox/gfx/matrix.js
+./../../release/dojo-release-1.5.0/dojox/gfx/_base.js
+./../../release/dojo-release-1.5.0/dojox/gfx.js
+./../../release/dojo-release-1.5.0/dojox/lang/functional/lambda.js
+./../../release/dojo-release-1.5.0/dojox/lang/functional/array.js
+./../../release/dojo-release-1.5.0/dojox/lang/functional/object.js
+./../../release/dojo-release-1.5.0/dojox/lang/functional.js
+./../../release/dojo-release-1.5.0/dojox/lang/functional/fold.js
+./../../release/dojo-release-1.5.0/dojox/lang/functional/reversed.js
+./../../release/dojo-release-1.5.0/dojo/colors.js
+./../../release/dojo-release-1.5.0/dojox/color/_base.js
+./../../release/dojo-release-1.5.0/dojox/color.js
+./../../release/dojo-release-1.5.0/dojox/color/Palette.js
+./../../release/dojo-release-1.5.0/dojox/lang/utils.js
+./../../release/dojo-release-1.5.0/dojox/gfx/gradutils.js
+./../../release/dojo-release-1.5.0/dojox/charting/Theme.js
+./../../release/dojo-release-1.5.0/dojox/charting/Element.js
+./../../release/dojo-release-1.5.0/dojox/charting/Series.js
+./../../release/dojo-release-1.5.0/dojox/charting/scaler/common.js
+./../../release/dojo-release-1.5.0/dojox/charting/scaler/linear.js
+./../../release/dojo-release-1.5.0/dojox/charting/axis2d/common.js
+./../../release/dojo-release-1.5.0/dojox/charting/axis2d/Base.js
+./../../release/dojo-release-1.5.0/dojo/string.js
+./../../release/dojo-release-1.5.0/dojox/charting/axis2d/Invisible.js
+./../../release/dojo-release-1.5.0/dojox/charting/axis2d/Default.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/common.js
+./../../release/dojo-release-1.5.0/dojox/charting/scaler/primitive.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/_PlotEvents.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Base.js
+./../../release/dojo-release-1.5.0/dojox/gfx/fx.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Default.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Lines.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Areas.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Markers.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/MarkersOnly.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Scatter.js
+./../../release/dojo-release-1.5.0/dojox/lang/functional/sequence.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Stacked.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/StackedLines.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/StackedAreas.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Columns.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/StackedColumns.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/ClusteredColumns.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Bars.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/StackedBars.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/ClusteredBars.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Grid.js
+./../../release/dojo-release-1.5.0/dojo/i18n.js
+./../../release/dojo-release-1.5.0/dojo/regexp.js
+./../../release/dojo-release-1.5.0/dojo/number.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Pie.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Bubble.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/Candlesticks.js
+./../../release/dojo-release-1.5.0/dojox/charting/plot2d/OHLC.js
+./../../release/dojo-release-1.5.0/dojox/charting/Chart2D.js
+./../../release/dojo-release-1.5.0/dojo/fx/easing.js
+./../../release/dojo-release-1.5.0/dojox/charting/action2d/Base.js
+./../../release/dojo-release-1.5.0/dojox/charting/action2d/Highlight.js
+./../../release/dojo-release-1.5.0/dojo/fx/Toggler.js
+./../../release/dojo-release-1.5.0/dojo/fx.js
+./../../release/dojo-release-1.5.0/dojox/charting/action2d/Magnify.js
+./../../release/dojo-release-1.5.0/dojox/lang/functional/scan.js
+./../../release/dojo-release-1.5.0/dojox/charting/action2d/MoveSlice.js
+./../../release/dojo-release-1.5.0/dojox/charting/action2d/Shake.js
+./../../release/dojo-release-1.5.0/dojo/date/stamp.js
+./../../release/dojo-release-1.5.0/dojo/parser.js
+./../../release/dojo-release-1.5.0/dojo/cache.js
+./../../release/dojo-release-1.5.0/dijit/_Templated.js
+./../../release/dojo-release-1.5.0/dijit/Tooltip.js
+./../../release/dojo-release-1.5.0/dojox/charting/action2d/Tooltip.js
+./../../release/dojo-release-1.5.0/dojox/charting/widget/Chart2D.js
+./../../release/dojo-release-1.5.0/dojox/charting/themes/ET/greys.js
+./../../release/dojo-release-1.5.0/dojox/charting/widget/Sparkline.js
+./../../release/dojo-release-1.5.0/dojox/charting/widget/Legend.js
+
+../dojox/dtl.js:
+./../../release/dojo-release-1.5.0/dojox/string/Builder.js
+./../../release/dojo-release-1.5.0/dojox/string/tokenize.js
+./../../release/dojo-release-1.5.0/dojox/dtl/_base.js
+./../../release/dojo-release-1.5.0/dojox/dtl.js
+./../../release/dojo-release-1.5.0/dojox/dtl/Context.js
+./../../release/dojo-release-1.5.0/dojox/dtl/tag/logic.js
+./../../release/dojo-release-1.5.0/dojox/dtl/tag/loop.js
+./../../release/dojo-release-1.5.0/dojo/date.js
+./../../release/dojo-release-1.5.0/dojox/date/php.js
+./../../release/dojo-release-1.5.0/dojox/dtl/utils/date.js
+./../../release/dojo-release-1.5.0/dojox/dtl/tag/date.js
+./../../release/dojo-release-1.5.0/dojox/dtl/tag/loader.js
+./../../release/dojo-release-1.5.0/dojox/dtl/tag/misc.js
+./../../release/dojo-release-1.5.0/dojox/dtl/ext-dojo/NodeList.js
diff --git a/lib/dojo/cache.js b/lib/dojo/cache.js
new file mode 100644 (file)
index 0000000..4c2d233
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.cache"]){
+dojo._hasResource["dojo.cache"]=true;
+dojo.provide("dojo.cache");
+(function(){
+var _1={};
+dojo.cache=function(_2,_3,_4){
+if(typeof _2=="string"){
+var _5=dojo.moduleUrl(_2,_3);
+}else{
+_5=_2;
+_4=_3;
+}
+var _6=_5.toString();
+var _7=_4;
+if(_4!=undefined&&!dojo.isString(_4)){
+_7=("value" in _4?_4.value:undefined);
+}
+var _8=_4&&_4.sanitize?true:false;
+if(typeof _7=="string"){
+_7=_1[_6]=_8?dojo.cache._sanitize(_7):_7;
+}else{
+if(_7===null){
+delete _1[_6];
+}else{
+if(!(_6 in _1)){
+_7=dojo._getText(_6);
+_1[_6]=_8?dojo.cache._sanitize(_7):_7;
+}
+_7=_1[_6];
+}
+}
+return _7;
+};
+dojo.cache._sanitize=function(_9){
+if(_9){
+_9=_9.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");
+var _a=_9.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+if(_a){
+_9=_a[1];
+}
+}else{
+_9="";
+}
+return _9;
+};
+})();
+}
diff --git a/lib/dojo/cldr/LICENSE b/lib/dojo/cldr/LICENSE
new file mode 100644 (file)
index 0000000..7aeb1dd
--- /dev/null
@@ -0,0 +1,29 @@
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, 
+and http://www.unicode.org/cldr/data/ . Unicode Software includes any source code published in the Unicode Standard or under
+the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/.
+NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR 
+OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU
+UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS
+AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+COPYRIGHT AND PERMISSION NOTICE
+Copyright © 1991-2007 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated
+documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data 
+Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell 
+copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided
+that (a) the above copyright notice(s) and this permission notice appear with all copies of the Data Files or Software, (b) both the
+above copyright notice(s) and this permission notice appear in associated documentation, and (c) there is clear notice in each modified Data File 
+or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified.
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE 
+AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
+INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, 
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other 
+dealings in these Data Files or Software without prior written authorization of the copyright holder.
\ No newline at end of file
diff --git a/lib/dojo/cldr/README b/lib/dojo/cldr/README
new file mode 100644 (file)
index 0000000..3687676
--- /dev/null
@@ -0,0 +1,18 @@
+All files within this directory were derived from the Common Locale
+Data Repository (see http://unicode.org/cldr)  The CLDR project is
+responsible for the accuracy and maintenance of this data.  A copy
+of this data is checked into the Dojo util project as a zip file.
+The XML data is transformed to the JSON-style Javascript you see
+under the nls/ directory.  These Javascript files include data
+necessary to do things like format and parse dates, numbers, and
+currencies in different locales to consider cultural differences.
+They are used by other modules in core Dojo such as dojo.date,
+dojo.number and dojo.currency.  It usually is not necessary to use
+dojo.cldr directly.
+
+An arbitrary subset of locales have been checked in to dojo/cldr
+under svn.  To support other locales, the full set may be generated
+by using xslt scripts in the util/buildscripts/cldr/ ant script.
+Hundreds of locales are supported by the CLDR project.
+
+See terms of use: http://www.unicode.org/copyright.html#Exhibit1
diff --git a/lib/dojo/cldr/monetary.js b/lib/dojo/cldr/monetary.js
new file mode 100644 (file)
index 0000000..b5b4c0a
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.cldr.monetary"]){
+dojo._hasResource["dojo.cldr.monetary"]=true;
+dojo.provide("dojo.cldr.monetary");
+dojo.cldr.monetary.getData=function(_1){
+var _2={ADP:0,AFN:0,ALL:0,AMD:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,COP:0,CRC:0,DJF:0,ESP:0,GNF:0,GYD:0,HUF:0,IDR:0,IQD:0,IRR:3,ISK:0,ITL:0,JOD:3,JPY:0,KMF:0,KPW:0,KRW:0,KWD:3,LAK:0,LBP:0,LUF:0,LYD:3,MGA:0,MGF:0,MMK:0,MNT:0,MRO:0,MUR:0,OMR:3,PKR:0,PYG:0,RSD:0,RWF:0,SLL:0,SOS:0,STD:0,SYP:0,TMM:0,TND:3,TRL:0,TZS:0,UGX:0,UZS:0,VND:0,VUV:0,XAF:0,XOF:0,XPF:0,YER:0,ZMK:0,ZWD:0};
+var _3={CHF:5};
+var _4=_2[_1],_5=_3[_1];
+if(typeof _4=="undefined"){
+_4=2;
+}
+if(typeof _5=="undefined"){
+_5=0;
+}
+return {places:_4,round:_5};
+};
+}
diff --git a/lib/dojo/cldr/nls/ar/currency.js b/lib/dojo/cldr/nls/ar/currency.js
new file mode 100644 (file)
index 0000000..64c4cad
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"دولار هونج كونج","CHF_displayName":"فرنك سويسري","CAD_displayName":"دولار كندي","CNY_displayName":"يوان صيني","AUD_displayName":"دولار أسترالي","JPY_displayName":"ين ياباني","USD_displayName":"دولار أمريكي","CNY_symbol":"ي.ص","GBP_displayName":"جنيه إسترليني","EUR_displayName":"يورو","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/gregorian.js b/lib/dojo/cldr/nls/ar/gregorian.js
new file mode 100644 (file)
index 0000000..c25f802
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yM":"M‏/yyyy","field-dayperiod":"ص/م","dateFormatItem-yQ":"yyyy Q","dayPeriods-format-wide-pm":"م","field-minute":"الدقائق","eraNames":["قبل الميلاد","ميلادي"],"dateFormatItem-MMMEd":"E d MMM","field-day-relative+-1":"أمس","field-weekday":"اليوم","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-MMdd":"dd‏/MM","days-standAlone-wide":["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-era":"العصر","field-hour":"الساعات","dayPeriods-format-wide-am":"ص","quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-y":"y","timeFormat-full":"zzzz h:mm:ss a","months-standAlone-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"اليوم","field-day-relative+1":"غدًا","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"eraAbbr":["ق.م","م"],"field-day-relative+2":"بعد الغد","dateFormatItem-yyyyMM":"MM‏/yyyy","dateFormatItem-yyyyMMMM":"MMMM، y","dateFormat-long":"d MMMM، y","timeFormat-medium":"h:mm:ss a","field-zone":"التوقيت","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"dd‏/MM‏/yyyy","quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-yMMMM":"MMMM y","dateFormatItem-ms":"mm:ss","field-year":"السنة","quarters-standAlone-narrow":["١","٢","٣","٤"],"field-week":"الأسبوع","months-standAlone-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["١","٢","٣","٤"],"dateFormatItem-yyQ":"Q yy","timeFormat-long":"z h:mm:ss a","months-format-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"timeFormat-short":"h:mm a","field-month":"الشهر","dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-abbr":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dateFormatItem-M":"L","days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-second":"الثواني","field-day":"يوم","months-format-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"days-standAlone-abbr":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dateFormat-short":"d‏/M‏/yyyy","dateFormatItem-yMMMEd":"EEE، d MMMM y","dateFormat-full":"EEEE، d MMMM، y","dateFormatItem-Md":"d/‏M","dateFormatItem-yMEd":"EEE، d/‏M/‏yyyy","months-format-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateFormatItem-d":"d","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-wide":["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"eraNarrow":["ق.م","م"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/hebrew.js b/lib/dojo/cldr/nls/ar/hebrew.js
new file mode 100644 (file)
index 0000000..ab7071a
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormat-medium":"dd‏/MM‏/yyyy","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yMEd":"EEE، d/‏M/‏yyyy","timeFormat-full":"zzzz h:mm:ss a","dateFormatItem-Md":"d/‏M","months-standAlone-wide":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"months-format-wide-leap":"آذار الثاني","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"dayPeriods-format-wide-pm":"م","months-standAlone-abbr":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"dayPeriods-format-wide-am":"ص","quarters-standAlone-narrow":["١","٢","٣","٤"],"timeFormat-medium":"h:mm:ss a","dateFormat-long":"d MMMM، y","dateFormat-short":"d‏/M‏/yyyy","dateFormatItem-yMMMEd":"EEE، d MMMM y","months-format-wide":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"dateFormatItem-yM":"M‏/yyyy","timeFormat-short":"h:mm a","months-format-abbr":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"timeFormat-long":"z h:mm:ss a","days-format-wide":["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yQ":"yyyy Q","dateFormatItem-yMMM":"MMM y","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormat-full":"EEEE، d MMMM، y","dateFormatItem-MMMd":"d MMM","days-format-abbr":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"months-format-narrow":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-yQQQ":"y QQQ","months-standAlone-narrow-leap":"Adar II","eraNarrow":["AM"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","months-format-abbr-leap":"Adar II","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"months-standAlone-wide-leap":"Adar II","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"months-format-narrow-leap":"Adar II","eraAbbr":["AM"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","months-standAlone-abbr-leap":"Adar II","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","eraNames":["AM"],"days-format-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/islamic-civil.js b/lib/dojo/cldr/nls/ar/islamic-civil.js
new file mode 100644 (file)
index 0000000..bfbc218
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yM":"M‏/yyyy","dateFormatItem-yQ":"yyyy Q","dayPeriods-format-wide-pm":"م","eraNames":["ه"],"dateFormatItem-MMMEd":"E d MMM","days-standAlone-wide":["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"patternChars":"GanjkHmsSEDFwWxhKzAeugXZvcL","months-standAlone-narrow":["م","ص","ر","ر","ج","ج","ر","ش","ر","ش","ذ","ذ"],"dayPeriods-format-wide-am":"ص","dayPeriods-am-format-wide":"ص","quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"timeFormat-full":"zzzz h:mm:ss a","dayPeriods-pm-format-wide":"م","dayPeriods-format-wide":["ص","م"],"months-standAlone-abbr":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"eraAbbr":["ه"],"dateFormat-long":"d MMMM، y","timeFormat-medium":"h:mm:ss a","dateFormat-medium":"dd‏/MM‏/yyyy","dayPeriods-format-narrow":["ص","م"],"quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-yMMMM":"MMMM y","quarters-standAlone-narrow":["١","٢","٣","٤"],"months-standAlone-wide":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-MMMd":"d MMM","quarters-format-narrow":["١","٢","٣","٤"],"timeFormat-long":"z h:mm:ss a","months-format-abbr":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"timeFormat-short":"h:mm a","dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-abbr":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"months-format-narrow":["م","ص","ر","ر","ج","ج","ر","ش","ر","ش","ذ","ذ"],"days-standAlone-abbr":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dateFormat-short":"d‏/M‏/yyyy","dateFormatItem-yMMMEd":"EEE، d MMMM y","dateFormat-full":"EEEE، d MMMM، y","dateFormatItem-Md":"d/‏M","dateFormatItem-yMEd":"EEE، d/‏M/‏yyyy","months-format-wide":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"dayPeriods-format-abbr":["ص","م"],"quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-wide":["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"eraNarrow":["ه"]})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/islamic.js b/lib/dojo/cldr/nls/ar/islamic.js
new file mode 100644 (file)
index 0000000..3bdbf9d
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormat-medium":"dd‏/MM‏/yyyy","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yMEd":"EEE، d/‏M/‏yyyy","eraNarrow":["هـ"],"months-format-narrow":["م","ص","ر","ر","ج","ج","ر","ش","ر","ش","ذ","ذ"],"timeFormat-full":"zzzz h:mm:ss a","dateFormatItem-Md":"d/‏M","months-standAlone-narrow":["م","ص","ر","ر","ج","ج","ر","ش","ر","ش","ذ","ذ"],"months-standAlone-wide":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"eraNames":["هـ"],"days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"dayPeriods-format-wide-pm":"م","months-standAlone-abbr":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"dayPeriods-format-wide-am":"ص","quarters-standAlone-narrow":["١","٢","٣","٤"],"timeFormat-medium":"h:mm:ss a","dateFormat-long":"d MMMM، y","dateFormat-short":"d‏/M‏/yyyy","dateFormatItem-yMMMEd":"EEE، d MMMM y","months-format-wide":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"dateFormatItem-yM":"M‏/yyyy","timeFormat-short":"h:mm a","months-format-abbr":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"eraAbbr":["هـ"],"timeFormat-long":"z h:mm:ss a","days-format-wide":["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yQ":"yyyy Q","dateFormatItem-yMMM":"MMM y","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormat-full":"EEEE، d MMMM، y","dateFormatItem-MMMd":"d MMM","days-format-abbr":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dateFormatItem-yQQQ":"y QQQ","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/number.js b/lib/dojo/cldr/nls/ar/number.js
new file mode 100644 (file)
index 0000000..543ccb3
--- /dev/null
@@ -0,0 +1 @@
+({"group":"٬","percentSign":"٪","exponential":"اس","list":"؛","infinity":"∞","patternDigit":"#","minusSign":"-","decimal":"٫","nan":"ليس رقم","nativeZeroDigit":"٠","perMille":"؉","decimalFormat":"#,##0.###;#,##0.###-","currencyFormat":"¤ #,##0.00;¤ #,##0.00-","plusSign":"+","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","percentFormat":"#,##0%","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/buddhist.js b/lib/dojo/cldr/nls/buddhist.js
new file mode 100644 (file)
index 0000000..6a70be9
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["BE"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"MMMM d, y G","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, MMMM d, y G","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yM":"y-M","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["BE"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","days-format-wide":["1","2","3","4","5","6","7"],"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"eraNames":["BE"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"M/d/yyyy","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormat-medium":"MMM d, y G","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/currency.js b/lib/dojo/cldr/nls/ca/currency.js
new file mode 100644 (file)
index 0000000..e236367
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"dòlar de Hong Kong","CHF_displayName":"franc suís","CAD_displayName":"dòlar canadenc","CNY_displayName":"iuan renmimbi xinès","AUD_displayName":"dòlar australià","JPY_displayName":"ien japonès","USD_displayName":"dòlar dels Estats Units","GBP_displayName":"lliura esterlina britànica","EUR_displayName":"euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/gregorian.js b/lib/dojo/cldr/nls/ca/gregorian.js
new file mode 100644 (file)
index 0000000..2d6a2e1
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["g","f","m","a","m","j","j","a","s","o","n","d"],"field-weekday":"dia de la setmana","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d/M/yyyy","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["aC","dC"],"dateFormat-long":"d MMMM 'de' y","months-format-wide":["de gener","de febrer","de març","d’abril","de maig","de juny","de juliol","d’agost","de setembre","d’octubre","de novembre","de desembre"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d MMMM 'de' y","dateFormatItem-Md":"d/M","field-era":"era","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],"timeFormat-short":"H:mm","quarters-format-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"timeFormat-long":"H:mm:ss z","field-year":"any","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"Q yyyy","field-hour":"hora","months-format-abbr":["de gen.","de febr.","de març","d’abr.","de maig","de juny","de jul.","d’ag.","de set.","d’oct.","de nov.","de des."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"avui","field-day-relative+1":"demà","field-day-relative+2":"demà passat","dateFormatItem-H":"H","field-day-relative+3":"d'aquí a tres dies","months-standAlone-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"quarters-format-abbr":["1T","2T","3T","4T"],"quarters-standAlone-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1T","2T","3T","4T"],"eraAbbr":["aC","dC"],"field-minute":"minut","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["dg","dl","dt","dc","dj","dv","ds"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ahir","field-day-relative+-2":"abans d'ahir","field-day-relative+-3":"fa tres dies","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateFormatItem-yMMMM":"LLLL 'del' y","field-day":"dia","days-format-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"field-zone":"zona","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["g","f","m","a","m","j","j","a","s","o","n","d"],"dateFormatItem-hm":"h:mm a","days-format-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"eraNames":["aC","dC"],"days-format-narrow":["g","l","t","c","j","v","s"],"field-month":"mes","days-standAlone-narrow":["g","l","t","c","j","v","s"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"a.m.","dateFormatItem-MMMMEd":"E d MMMM","dateFormat-short":"dd/MM/yy","field-second":"segon","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"setmana","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-mmss":"mm:ss","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/number.js b/lib/dojo/cldr/nls/ca/number.js
new file mode 100644 (file)
index 0000000..da4300c
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/currency.js b/lib/dojo/cldr/nls/cs/currency.js
new file mode 100644 (file)
index 0000000..b3b7859
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Dolar hongkongský","CHF_displayName":"Frank švýcarský","CAD_displayName":"Dolar kanadský","CNY_displayName":"Juan renminbi","AUD_displayName":"Dolar australský","JPY_displayName":"Jen","USD_displayName":"Dolar americký","GBP_displayName":"Libra šterlinků","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/gregorian.js b/lib/dojo/cldr/nls/cs/gregorian.js
new file mode 100644 (file)
index 0000000..3b9752c
--- /dev/null
@@ -0,0 +1 @@
+({"dayPeriods-format-wide-pm":"odp.","eraNames":["př.Kr.","po Kr."],"field-day-relative+-1":"Včera","field-day-relative+-2":"Předevčírem","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"months-standAlone-narrow":["l","ú","b","d","k","č","č","s","z","ř","l","p"],"dayPeriods-format-wide-am":"dop.","quarters-standAlone-abbr":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-day-relative+0":"Dnes","field-day-relative+1":"Zítra","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"eraAbbr":["př.Kr.","po Kr."],"field-day-relative+2":"Pozítří","dateFormat-long":"d. MMMM y","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","dateFormat-medium":"d.M.yyyy","dateFormatItem-Hms":"H:mm:ss","quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"months-standAlone-wide":["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],"timeFormat-long":"H:mm:ss z","months-format-abbr":["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],"timeFormat-short":"H:mm","dateFormatItem-H":"H","quarters-format-abbr":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"days-format-abbr":["ne","po","út","st","čt","pá","so"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"months-format-narrow":["l","ú","b","d","k","č","č","s","z","ř","l","p"],"days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateFormat-short":"d.M.yy","dateFormat-full":"EEEE, d. MMMM y","months-format-wide":["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],"quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"eraNarrow":["př.Kr.","po Kr."],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-era":"Era","dateFormatItem-yM":"y-M","field-year":"Year","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-M":"L","field-minute":"Minute","field-dayperiod":"Dayperiod","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","field-day":"Day","field-zone":"Zone","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateFormatItem-MMM":"LLL","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-second":"Second","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/number.js b/lib/dojo/cldr/nls/cs/number.js
new file mode 100644 (file)
index 0000000..f9a71ab
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/currency.js b/lib/dojo/cldr/nls/currency.js
new file mode 100644 (file)
index 0000000..e526c6c
--- /dev/null
@@ -0,0 +1 @@
+({"USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/currency.js b/lib/dojo/cldr/nls/da/currency.js
new file mode 100644 (file)
index 0000000..fe1b09f
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hongkong dollar","CHF_displayName":"Schweizisk franc","CAD_displayName":"Canadisk dollar","CNY_displayName":"Kinesisk yuan renminbi","USD_symbol":"$","AUD_displayName":"Australsk dollar","JPY_displayName":"Japansk yen","USD_displayName":"Amerikansk dollar","GBP_displayName":"Britisk pund","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/gregorian.js b/lib/dojo/cldr/nls/da/gregorian.js
new file mode 100644 (file)
index 0000000..08e4311
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"ugedag","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE. d/M/y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["f.Kr.","e.Kr."],"dateFormat-long":"d. MMM y","months-format-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"dayPeriods-format-wide-pm":"e.m.","dateFormat-full":"EEEE 'den' d. MMMM y","dateFormatItem-Md":"d/M","field-era":"æra","dateFormatItem-yM":"M/y","months-standAlone-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","field-year":"år","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","field-hour":"time","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dateFormatItem-yyQ":"Q. 'kvartal' yy","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","dateFormatItem-H":"HH","field-day-relative+3":"i overovermorgen","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-M":"M","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMM":"MMM y","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH.mm.ss","dateFormatItem-Hm":"HH.mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["f.Kr.","e.Kr."],"field-minute":"minut","field-dayperiod":"dagtid","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-day-relative+-3":"i forforgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E. d/M","field-day":"dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"zone","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h.mm a","days-format-abbr":["søn","man","tir","ons","tor","fre","lør"],"eraNames":["f.Kr.","e.Kr."],"days-format-narrow":["S","M","T","O","T","F","L"],"field-month":"måned","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"MMM","dayPeriods-format-wide-am":"f.m.","dateFormatItem-MMMMEd":"E, d. MMMM","dateFormat-short":"dd/MM/yy","field-second":"sekund","dateFormatItem-yMMMEd":"EEE. d. MMM y","field-week":"uge","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-yyyy":"y","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/number.js b/lib/dojo/cldr/nls/da/number.js
new file mode 100644 (file)
index 0000000..2f5fc8e
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/currency.js b/lib/dojo/cldr/nls/de/currency.js
new file mode 100644 (file)
index 0000000..1fda2ec
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hongkong-Dollar","CHF_displayName":"Schweizer Franken","JPY_symbol":"¥","CAD_displayName":"Kanadischer Dollar","CNY_displayName":"Renminbi Yuan","USD_symbol":"$","AUD_displayName":"Australischer Dollar","JPY_displayName":"Yen","USD_displayName":"US-Dollar","GBP_displayName":"Pfund Sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/gregorian.js b/lib/dojo/cldr/nls/de/gregorian.js
new file mode 100644 (file)
index 0000000..0a2720a
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"Wochentag","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE, d.M.y","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["v. Chr.","n. Chr."],"dayPeriods-format-wide-earlyMorning":"morgens","dayPeriods-format-wide-morning":"vormittags","dateFormat-long":"d. MMMM y","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"dayPeriods-format-wide-evening":"abends","dateFormatItem-EEEd":"d. EEE","dayPeriods-format-wide-pm":"nachm.","dateFormat-full":"EEEE, d. MMMM y","dateFormatItem-Md":"d.M.","dateFormatItem-yyMMdd":"dd.MM.yy","dayPeriods-format-wide-noon":"Mittag","field-era":"Epoche","dateFormatItem-yM":"M.y","months-standAlone-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"timeFormat-long":"HH:mm:ss z","field-year":"Jahr","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"Stunde","dateFormatItem-MMdd":"dd.MM.","months-format-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"heute","field-day-relative+1":"morgen","field-day-relative+2":"übermorgen","dateFormatItem-H":"HH","field-day-relative+3":"überübermorgen","months-standAlone-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-M":"L","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","eraAbbr":["v. Chr.","n. Chr."],"field-minute":"Minute","field-dayperiod":"Tageshälfte","days-standAlone-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dayPeriods-format-wide-night":"nachts","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-day-relative+-3":"vorvorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","field-day":"Tag","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-zone":"Zone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM.yy","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"eraNames":["v. Chr.","n. Chr."],"days-format-narrow":["S","M","D","M","D","F","S"],"field-month":"Monat","days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"vorm.","dateFormatItem-MMMMdd":"dd. MMMM","dateFormat-short":"dd.MM.yy","dateFormatItem-MMd":"d.MM.","dayPeriods-format-wide-afternoon":"nachmittags","field-second":"Sekunde","dateFormatItem-yMMMEd":"EEE, d. MMM y","dateFormatItem-Ed":"E d.","field-week":"Woche","dateFormat-medium":"dd.MM.yyyy","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yyyy":"y","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/number.js b/lib/dojo/cldr/nls/de/number.js
new file mode 100644 (file)
index 0000000..90861a0
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/currency.js b/lib/dojo/cldr/nls/el/currency.js
new file mode 100644 (file)
index 0000000..7f2e4e4
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Δολάριο Χονγκ Κονγκ","CHF_displayName":"Φράγκο Ελβετίας","CAD_displayName":"Δολάριο Καναδά","CNY_displayName":"Γιουάν Ρενμίμπι Κίνας","AUD_displayName":"Δολάριο Αυστραλίας","JPY_displayName":"Γιεν Ιαπωνίας","USD_displayName":"Δολάριο ΗΠΑ","GBP_displayName":"Λίρα Στερλίνα Βρετανίας","EUR_displayName":"Ευρώ","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/gregorian.js b/lib/dojo/cldr/nls/el/gregorian.js
new file mode 100644 (file)
index 0000000..047e5d5
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"field-weekday":"Ημέρα εβδομάδας","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, d/M/yyyy","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["π.Χ.","μ.Χ."],"dateFormat-long":"d MMMM y","months-format-wide":["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαΐου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"μ.μ.","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"d/M","field-era":"Περίοδος","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],"timeFormat-short":"h:mm a","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"timeFormat-long":"h:mm:ss a z","field-year":"Έτος","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"y Q","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"Ώρα","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"Σήμερα","field-day-relative+1":"Αύριο","field-day-relative+2":"Μεθαύριο","dateFormatItem-H":"HH","field-day-relative+3":"Σε τρεις ημέρες από τώρα","months-standAlone-abbr":["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],"quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"dateFormatItem-MMMMd":"d MMMM","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"h:mm:ss a","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"eraAbbr":["π.Χ.","μ.Χ."],"field-minute":"Λεπτό","field-dayperiod":"π.μ./μ.μ.","days-standAlone-abbr":["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"Χθες","field-day-relative+-2":"Προχθές","field-day-relative+-3":"Πριν από τρεις ημέρες","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateFormatItem-yMMMM":"LLLL y","field-day":"Ημέρα","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-zone":"Ζώνη","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"dateFormatItem-yyMM":"MM/yy","days-format-abbr":["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],"eraNames":["π.Χ.","μ.Χ."],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"field-month":"Μήνας","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dateFormatItem-MMM":"LLL","dateFormatItem-HHmm":"HH:mm","dayPeriods-format-wide-am":"π.μ.","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-MMMMdd":"dd MMMM","dateFormat-short":"d/M/yy","field-second":"Δευτερόλεπτο","dateFormatItem-yMMMEd":"EEE, d MMM y","dateFormatItem-Ed":"E d","field-week":"Εβδομάδα","dateFormat-medium":"d MMM y","dateFormatItem-mmss":"mm:ss","dateFormatItem-yyyy":"y","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/number.js b/lib/dojo/cldr/nls/el/number.js
new file mode 100644 (file)
index 0000000..ff419fb
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","decimalFormat":"#,##0.###","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/currency.js b/lib/dojo/cldr/nls/en-au/currency.js
new file mode 100644 (file)
index 0000000..9432494
--- /dev/null
@@ -0,0 +1 @@
+({"AUD_symbol":"$","USD_symbol":"US$","HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","JPY_symbol":"¥","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","USD_displayName":"US Dollar","GBP_displayName":"British Pound Sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/gregorian.js b/lib/dojo/cldr/nls/en-au/gregorian.js
new file mode 100644 (file)
index 0000000..7df433e
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yMEd":"EEE, d/M/y","dateFormatItem-yyyyMMMM":"MMMM y","dateFormatItem-MEd":"E, d/M","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-MMdd":"dd/MM","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-MMMMd":"d MMMM","dateFormat-short":"d/MM/yy","dateFormat-long":"d MMMM y","dateFormatItem-MMMEd":"E, d MMM","dateFormatItem-yM":"M/y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"PM","field-minute":"Minute","eraNames":["Before Christ","Anno Domini"],"dateTimeFormat-full":"{1} {0}","field-day-relative+-1":"Yesterday","field-weekday":"Day of the Week","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateTimeFormat-short":"{1} {0}","field-era":"Era","field-hour":"Hour","dayPeriods-format-wide-am":"AM","dateTimeFormat-medium":"{1} {0}","dateFormatItem-y":"y","timeFormat-full":"h:mm:ss a zzzz","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","days-standAlone-narrow":["S","M","T","W","T","F","S"],"eraAbbr":["BC","AD"],"timeFormat-medium":"h:mm:ss a","dateFormatItem-EEEd":"d EEE","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-ms":"mm:ss","field-year":"Year","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","field-week":"Week","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-MMMd":"MMM d","timeFormat-long":"h:mm:ss a z","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-format-wide-noon":"noon","timeFormat-short":"h:mm a","field-month":"Month","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","field-day":"Day","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yMMMEd":"EEE, MMM d, y","dateFormatItem-Md":"M/d","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-d":"d","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"eraNarrow":["B","A"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/number.js b/lib/dojo/cldr/nls/en-au/number.js
new file mode 100644 (file)
index 0000000..748ea80
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-ca/currency.js b/lib/dojo/cldr/nls/en-ca/currency.js
new file mode 100644 (file)
index 0000000..4e950ec
--- /dev/null
@@ -0,0 +1 @@
+({"CAD_symbol":"$","USD_symbol":"US$","HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","JPY_symbol":"¥","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","USD_displayName":"US Dollar","GBP_displayName":"British Pound Sterling","EUR_displayName":"Euro","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-ca/gregorian.js b/lib/dojo/cldr/nls/en-ca/gregorian.js
new file mode 100644 (file)
index 0000000..02b2829
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yMMMEd":"EEE, d MMM, y","dateFormatItem-yyMMM":"MMM-yy","dateFormatItem-Md":"M-d","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MEd":"E, M-d","dateFormatItem-MMMMEd":"E, d MMMM","dateFormat-medium":"yyyy-MM-dd","dateFormatItem-MMMd":"d MMM","dateFormatItem-MMdd":"MM-dd","dateFormat-full":"EEEE, d MMMM, y","dateFormat-short":"yy-MM-dd","dateFormatItem-MMMMd":"d MMMM","dateFormat-long":"d MMMM, y","dateFormatItem-MMMEd":"E, d MMM","dateFormatItem-yM":"M/y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"PM","field-minute":"Minute","eraNames":["Before Christ","Anno Domini"],"dateTimeFormat-full":"{1} {0}","field-day-relative+-1":"Yesterday","field-weekday":"Day of the Week","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateTimeFormat-short":"{1} {0}","field-era":"Era","field-hour":"Hour","dayPeriods-format-wide-am":"AM","dateTimeFormat-medium":"{1} {0}","dateFormatItem-y":"y","timeFormat-full":"h:mm:ss a zzzz","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","days-standAlone-narrow":["S","M","T","W","T","F","S"],"eraAbbr":["BC","AD"],"timeFormat-medium":"h:mm:ss a","dateFormatItem-EEEd":"d EEE","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-ms":"mm:ss","field-year":"Year","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","field-week":"Week","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"timeFormat-long":"h:mm:ss a z","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-format-wide-noon":"noon","timeFormat-short":"h:mm a","field-month":"Month","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","field-day":"Day","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-d":"d","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"eraNarrow":["B","A"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-gb/gregorian.js b/lib/dojo/cldr/nls/en-gb/gregorian.js
new file mode 100644 (file)
index 0000000..1333aa0
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yyMMM":"MMM yy","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"EEE, d/M/yyyy","dateFormatItem-yyyyMMMM":"MMMM y","timeFormat-full":"HH:mm:ss zzzz","timeFormat-medium":"HH:mm:ss","dateFormatItem-MEd":"E, d/M","dateFormat-medium":"d MMM y","dateFormatItem-MMdd":"dd/MM","dateFormatItem-yyyyMM":"MM/yyyy","dateFormat-full":"EEEE, d MMMM y","timeFormat-long":"HH:mm:ss z","timeFormat-short":"HH:mm","dateFormat-short":"dd/MM/yyyy","dateFormatItem-MMMMd":"d MMMM","dateFormat-long":"d MMMM y","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-yM":"M/y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"PM","field-minute":"Minute","eraNames":["Before Christ","Anno Domini"],"dateTimeFormat-full":"{1} {0}","field-day-relative+-1":"Yesterday","field-weekday":"Day of the Week","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateTimeFormat-short":"{1} {0}","field-era":"Era","field-hour":"Hour","dayPeriods-format-wide-am":"AM","dateTimeFormat-medium":"{1} {0}","dateFormatItem-y":"y","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","days-standAlone-narrow":["S","M","T","W","T","F","S"],"eraAbbr":["BC","AD"],"dateFormatItem-EEEd":"d EEE","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-ms":"mm:ss","field-year":"Year","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","field-week":"Week","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-MMMd":"MMM d","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-format-wide-noon":"noon","field-month":"Month","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","field-day":"Day","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yMMMEd":"EEE, MMM d, y","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-d":"d","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"eraNarrow":["B","A"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-gb/number.js b/lib/dojo/cldr/nls/en-gb/number.js
new file mode 100644 (file)
index 0000000..748ea80
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/currency.js b/lib/dojo/cldr/nls/en/currency.js
new file mode 100644 (file)
index 0000000..e9729d9
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hong Kong Dollar","CHF_displayName":"Swiss Franc","JPY_symbol":"¥","CAD_displayName":"Canadian Dollar","CNY_displayName":"Chinese Yuan Renminbi","USD_symbol":"$","AUD_displayName":"Australian Dollar","JPY_displayName":"Japanese Yen","USD_displayName":"US Dollar","GBP_displayName":"British Pound Sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/gregorian.js b/lib/dojo/cldr/nls/en/gregorian.js
new file mode 100644 (file)
index 0000000..79fc818
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yM":"M/y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q y","dayPeriods-format-wide-pm":"PM","field-minute":"Minute","eraNames":["Before Christ","Anno Domini"],"dateFormatItem-MMMEd":"E, MMM d","dateTimeFormat-full":"{1} {0}","field-day-relative+-1":"Yesterday","field-weekday":"Day of the Week","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yQQQ":"QQQ y","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateTimeFormat-short":"{1} {0}","field-era":"Era","field-hour":"Hour","dayPeriods-format-wide-am":"AM","dateTimeFormat-medium":"{1} {0}","dateFormatItem-y":"y","timeFormat-full":"h:mm:ss a zzzz","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","days-standAlone-narrow":["S","M","T","W","T","F","S"],"eraAbbr":["BC","AD"],"dateFormat-long":"MMMM d, y","timeFormat-medium":"h:mm:ss a","dateFormatItem-EEEd":"d EEE","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"MMM d, y","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-ms":"mm:ss","field-year":"Year","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","field-week":"Week","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-MMMd":"MMM d","timeFormat-long":"h:mm:ss a z","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-format-wide-noon":"noon","timeFormat-short":"h:mm a","field-month":"Month","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-M":"L","days-format-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","field-day":"Day","dateFormatItem-MEd":"E, M/d","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-hm":"h:mm a","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormat-short":"M/d/yy","dateFormatItem-yMMMEd":"EEE, MMM d, y","dateFormat-full":"EEEE, MMMM d, y","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"EEE, M/d/y","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-d":"d","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"eraNarrow":["B","A"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/number.js b/lib/dojo/cldr/nls/en/number.js
new file mode 100644 (file)
index 0000000..92b2e32
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/currency.js b/lib/dojo/cldr/nls/es/currency.js
new file mode 100644 (file)
index 0000000..ce5b213
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"dólar de Hong Kong","CHF_displayName":"franco suizo","CAD_displayName":"dólar canadiense","CNY_displayName":"yuan renminbi chino","AUD_displayName":"dólar australiano","JPY_displayName":"yen japonés","USD_displayName":"dólar estadounidense","GBP_displayName":"libra esterlina británica","EUR_displayName":"euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/gregorian.js b/lib/dojo/cldr/nls/es/gregorian.js
new file mode 100644 (file)
index 0000000..811e15e
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"día de la semana","dateFormatItem-yyQQQQ":"QQQQ 'de' yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d/M/y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["a.C.","d.C."],"dateFormatItem-MMMdd":"dd-MMM","dateFormat-long":"d 'de' MMMM 'de' y","months-format-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","field-era":"era","dateFormatItem-yM":"M/y","months-standAlone-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"año","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q y","field-hour":"hora","months-format-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"hoy","field-day-relative+1":"mañana","field-day-relative+2":"pasado mañana","field-day-relative+3":"Dentro de tres días","months-standAlone-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2º trimestre","3er trimestre","4º trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-MMMMd":"d 'de' MMMM","dateFormatItem-yyMMM":"MMM-yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a.C.","d.C."],"field-minute":"minuto","field-dayperiod":"periodo del día","days-standAlone-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ayer","dateFormatItem-h":"hh a","field-day-relative+-2":"antes de ayer","field-day-relative+-3":"Hace tres días","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateFormatItem-yMMMM":"MMMM 'de' y","field-day":"día","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-zone":"zona","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"eraNames":["antes de Cristo","anno Dómini"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-month":"mes","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"a.m.","dateFormat-short":"dd/MM/yy","dateFormatItem-MMd":"d/MM","field-second":"segundo","dateFormatItem-yMMMEd":"EEE, d MMM y","field-week":"semana","dateFormat-medium":"dd/MM/yyyy","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/number.js b/lib/dojo/cldr/nls/es/number.js
new file mode 100644 (file)
index 0000000..be433d8
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/currency.js b/lib/dojo/cldr/nls/fi/currency.js
new file mode 100644 (file)
index 0000000..a52b1b0
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hongkongin dollari","CHF_displayName":"Sveitsin frangi","CHF_symbol":"CHF","JPY_symbol":"¥","HKD_symbol":"HKD","CAD_displayName":"Kanadan dollari","CNY_displayName":"Kiinan yuan","USD_symbol":"$","AUD_displayName":"Australian dollari","JPY_displayName":"Japanin jeni","CAD_symbol":"CAD","USD_displayName":"Yhdysvaltain dollari","CNY_symbol":"CNY","GBP_displayName":"Englannin punta","AUD_symbol":"AUD","EUR_displayName":"euro","GBP_symbol":"£","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/gregorian.js b/lib/dojo/cldr/nls/fi/gregorian.js
new file mode 100644 (file)
index 0000000..db2ffc7
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-weekday":"viikonpäivä","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d.M.yyyy","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["eKr.","jKr."],"dateFormat-long":"d. MMMM y","months-format-wide":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormatItem-EEEd":"EEE d.","dayPeriods-format-wide-pm":"ip.","dateFormat-full":"EEEE d. MMMM y","dateFormatItem-Md":"d.M.","dayPeriods-standAlone-wide-pm":"ip.","dayPeriods-format-abbr-am":"ap.","field-era":"aikakausi","dateFormatItem-yM":"L.yyyy","months-standAlone-wide":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"timeFormat-short":"H.mm","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"timeFormat-long":"H.mm.ss z","field-year":"vuosi","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQ":"Q/yyyy","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"tunti","months-format-abbr":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormatItem-yyQ":"Q/yy","timeFormat-full":"H.mm.ss zzzz","dateFormatItem-yyyyMEEEd":"EEE d.M.yyyy","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","field-day-relative+2":"ylihuomenna","dateFormatItem-H":"H","months-standAlone-abbr":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],"quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-M":"L","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyMMM":"LLLL yy","timeFormat-medium":"H.mm.ss","dateFormatItem-Hm":"H.mm","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"eraAbbr":["eKr.","jKr."],"field-minute":"minuutti","field-dayperiod":"ap./ip.","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"eilen","field-day-relative+-2":"toissapäivänä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M.","field-day":"päivä","dateFormatItem-yMMMMccccd":"cccc, d. MMMM y","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-zone":"aikavyöhyke","dateFormatItem-y":"y","months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"dateFormatItem-yyMM":"M/yy","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"ip.","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"eraNames":["ennen Kristuksen syntymää","jälkeen Kristuksen syntymän"],"days-format-narrow":["S","M","T","K","T","P","L"],"field-month":"kuukausi","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"ap.","dayPeriods-standAlone-wide-am":"ap.","dateFormat-short":"d.M.yyyy","field-second":"sekunti","dateFormatItem-yMMMEd":"EEE d. MMM y","field-week":"viikko","dateFormat-medium":"d.M.yyyy","dateFormatItem-yyyyM":"M/yyyy","dateFormatItem-yyyyQQQQ":"QQQQ y","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/number.js b/lib/dojo/cldr/nls/fi/number.js
new file mode 100644 (file)
index 0000000..aa0fee6
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/currency.js b/lib/dojo/cldr/nls/fr/currency.js
new file mode 100644 (file)
index 0000000..3d3eabe
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"dollar de Hong Kong","CHF_displayName":"franc suisse","CHF_symbol":"CHF","JPY_symbol":"¥JP","HKD_symbol":"$HK","CAD_displayName":"dollar canadien","CNY_displayName":"yuan renminbi chinois","USD_symbol":"$US","AUD_displayName":"dollar australien","JPY_displayName":"yen japonais","CAD_symbol":"$CA","USD_displayName":"dollar des États-Unis","CNY_symbol":"Ұ","GBP_displayName":"livre sterling","GBP_symbol":"£UK","AUD_symbol":"$AU","EUR_displayName":"euro","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/gregorian.js b/lib/dojo/cldr/nls/fr/gregorian.js
new file mode 100644 (file)
index 0000000..052b033
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"jour de la semaine","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d/M/yyyy","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["av. J.-C.","ap. J.-C."],"dayPeriods-format-wide-morning":"matin","dateFormatItem-MMMdd":"dd MMM","dateFormat-long":"d MMMM y","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"midi","field-era":"ère","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"année","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"'T'Q y","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"heure","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"dateFormatItem-yyQ":"'T'Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-day-relative+2":"après-demain","field-day-relative+3":"après-après-demain","months-standAlone-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-yyMMMEEEd":"EEE d MMM yy","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["av. J.-C.","ap. J.-C."],"field-minute":"minute","field-dayperiod":"cadran","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dayPeriods-format-wide-night":"soir","dateFormatItem-yyMMMd":"d MMM yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["T1","T2","T3","T4"],"field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-day-relative+-3":"avant-avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"EEE d/M","field-day":"jour","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-zone":"fuseau horaire","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"eraNames":["avant Jésus-Christ","après Jésus-Christ"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-month":"mois","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"EEE d MMMM","dateFormat-short":"dd/MM/yy","dateFormatItem-MMd":"d/MM","dayPeriods-format-wide-afternoon":"après-midi","field-second":"seconde","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"semaine","dateFormat-medium":"d MMM y","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/number.js b/lib/dojo/cldr/nls/fr/number.js
new file mode 100644 (file)
index 0000000..f9a71ab
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/gregorian.js b/lib/dojo/cldr/nls/gregorian.js
new file mode 100644 (file)
index 0000000..5dced42
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["BCE","CE"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"y MMMM d","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, y MMMM dd","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-era":"Era","dateFormatItem-yM":"y-M","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","field-year":"Year","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","dateFormatItem-H":"HH","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["BCE","CE"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"Yesterday","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","field-day":"Day","days-format-wide":["1","2","3","4","5","6","7"],"field-zone":"Zone","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"eraNames":["BCE","CE"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","field-month":"Month","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"yyyy-MM-dd","field-second":"Second","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Week","dateFormat-medium":"y MMM d","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/currency.js b/lib/dojo/cldr/nls/he/currency.js
new file mode 100644 (file)
index 0000000..a133a57
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"דולר הונג קונגי","CHF_displayName":"פרנק שוויצרי","CAD_displayName":"דולר קנדי","CNY_displayName":"יואן רנמינבי סיני","AUD_displayName":"דולר אוסטרלי","JPY_displayName":"ין יפני","USD_displayName":"דולר אמריקאי","GBP_displayName":"לירה שטרלינג","EUR_displayName":"אירו","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/gregorian.js b/lib/dojo/cldr/nls/he/gregorian.js
new file mode 100644 (file)
index 0000000..235d886
--- /dev/null
@@ -0,0 +1 @@
+({"field-weekday":"יום בשבוע","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, d.M.yyyy","dateFormatItem-MMMEd":"E, d בMMM","eraNarrow":["לפנה״ס","לסה״נ"],"dateFormat-long":"d בMMMM y","months-format-wide":["ינואר","פברואר","מרס","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"dateFormatItem-EEEd":"EEE ה-d","dayPeriods-format-wide-pm":"אחה״צ","dateFormat-full":"EEEE, d בMMMM y","dateFormatItem-Md":"d/M","field-era":"תקופה","dateFormatItem-yM":"M.yyyy","months-standAlone-wide":["ינואר","פברואר","מרס","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"timeFormat-short":"HH:mm","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"timeFormat-long":"HH:mm:ss z","field-year":"שנה","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"yyyy Q","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"שעה","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["ינו","פבר","מרס","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"היום","field-day-relative+1":"מחר","field-day-relative+2":"מחרתיים","dateFormatItem-H":"HH","field-day-relative+3":"בעוד שלושה ימים","months-standAlone-abbr":["ינו׳","פבר׳","מרס","אפר׳","מאי","יונ׳","יול׳","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],"quarters-format-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-M":"L","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-MMMMd":"d בMMMM","dateFormatItem-yyMMM":"MMM yyyy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"eraAbbr":["לפנה״ס","לסה״נ"],"field-minute":"דקה","field-dayperiod":"לפה״צ/אחה״צ","days-standAlone-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-day-relative+-3":"לפני שלושה ימים","dateFormatItem-MMMd":"d בMMM","dateFormatItem-MEd":"E, M-d","dateFormatItem-yMMMM":"MMMM y","field-day":"יום","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-zone":"אזור","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"eraNames":["לפני הספירה","לספירה"],"days-format-narrow":["א","ב","ג","ד","ה","ו","ש"],"field-month":"חודש","days-standAlone-narrow":["א","ב","ג","ד","ה","ו","ש"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"לפנה״צ","dateFormatItem-MMMMEd":"E, d בMMMM","dateFormat-short":"dd/MM/yy","field-second":"שנייה","dateFormatItem-yMMMEd":"EEE, d בMMM y","dateFormatItem-Ed":"E ה-d","field-week":"שבוע","dateFormat-medium":"d בMMM yyyy","dateFormatItem-mmss":"mm:ss","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/hebrew.js b/lib/dojo/cldr/nls/he/hebrew.js
new file mode 100644 (file)
index 0000000..6bbfaf9
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormat-medium":"dd/MM/yyyy","dateFormatItem-MMMEd":"E, d בMMM","dateFormatItem-yMEd":"EEE, d.M.yyyy","eraNarrow":["לבה״ע"],"dateFormatItem-Md":"d/M","months-standAlone-wide":["תשרי","חשון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"months-format-wide-leap":"אדר ב׳","dateFormatItem-EEEd":"EEE ה-d","eraNames":["לבה״ע"],"days-standAlone-narrow":["א","ב","ג","ד","ה","ו","ש"],"dateFormatItem-MMMMEd":"E, d בMMMM","dayPeriods-format-wide-pm":"אחה״צ","months-standAlone-abbr":["תשרי","חשון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"dayPeriods-format-wide-am":"לפנה״צ","dateFormat-long":"d בMMMM y","dateFormat-short":"dd/MM/yy","dateFormatItem-yMMMEd":"EEE, d בMMM y","months-format-wide":["תשרי","חשון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"dateFormatItem-yM":"M.yyyy","months-format-abbr":["תשרי","חשון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"eraAbbr":["לבה״ע"],"days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-yQ":"yyyy Q","dateFormatItem-yMMM":"MMM y","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormat-full":"EEEE, d בMMMM y","dateFormatItem-MMMd":"d בMMM","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"months-format-narrow":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","months-standAlone-narrow-leap":"Adar II","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","timeFormat-short":"HH:mm","timeFormat-long":"HH:mm:ss z","dateTimeFormats-appendItem-Era":"{0} {1}","months-format-abbr-leap":"Adar II","timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"months-standAlone-wide-leap":"Adar II","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"months-format-narrow-leap":"Adar II","days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","months-standAlone-abbr-leap":"Adar II","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/islamic.js b/lib/dojo/cldr/nls/he/islamic.js
new file mode 100644 (file)
index 0000000..f427eb0
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormat-medium":"d בMMM yyyy","dateFormatItem-MMMEd":"E, d בMMM","dateFormatItem-yMEd":"EEE, d.M.yyyy","eraNarrow":["שנת היג׳רה"],"dateFormatItem-Md":"d/M","months-standAlone-wide":["מוחרם","ספר","רביע אל-אוואל","רביע אל-תני","ג׳ומדה אל-אוואל","ג׳ומדה אל-תני","רג׳אב","שעבאן","ראמדן","שוואל","זו אל-QI'DAH","זו אל-חיג׳ה"],"dateFormatItem-EEEd":"EEE ה-d","eraNames":["שנת היג׳רה"],"days-standAlone-narrow":["א","ב","ג","ד","ה","ו","ש"],"dayPeriods-format-wide-pm":"אחה״צ","months-standAlone-abbr":["מוחרם","ספר","רביע אל-אוואל","רביע אל-תני","ג׳ומדה אל-אוואל","ג׳ומדה אל-תני","רג׳אב","שעבאן","ראמדן","שוואל","זו אל-QI'DAH","זו אל-חיג׳ה"],"dayPeriods-format-wide-am":"לפנה״צ","dateFormat-long":"d בMMMM y","dateFormat-short":"dd/MM/yy","dateFormatItem-yMMMEd":"EEE, d בMMM y","months-format-wide":["מוחרם","ספר","רביע אל-אוואל","רביע אל-תני","ג׳ומדה אל-אוואל","ג׳ומדה אל-תני","רג׳אב","שעבאן","ראמדן","שוואל","זו אל-QI'DAH","זו אל-חיג׳ה"],"dateFormatItem-yM":"M.yyyy","months-format-abbr":["מוחרם","ספר","רביע אל-אוואל","רביע אל-תני","ג׳ומדה אל-אוואל","ג׳ומדה אל-תני","רג׳אב","שעבאן","ראמדן","שוואל","זו אל-QI'DAH","זו אל-חיג׳ה"],"eraAbbr":["שנת היג׳רה"],"days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-yQ":"yyyy Q","dateFormatItem-yMMM":"MMM y","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormat-full":"EEEE, d בMMMM y","dateFormatItem-MMMd":"d בMMM","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","timeFormat-short":"HH:mm","timeFormat-long":"HH:mm:ss z","dateTimeFormats-appendItem-Era":"{0} {1}","timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/number.js b/lib/dojo/cldr/nls/he/number.js
new file mode 100644 (file)
index 0000000..23e6fa4
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hebrew.js b/lib/dojo/cldr/nls/hebrew.js
new file mode 100644 (file)
index 0000000..f4062b7
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","months-standAlone-narrow-leap":"Adar II","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["AM"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"y MMMM d","months-format-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, y MMMM dd","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yM":"y-M","months-standAlone-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","months-format-abbr-leap":"Adar II","months-format-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","months-standAlone-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"months-standAlone-wide-leap":"Adar II","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"months-format-narrow-leap":"Adar II","eraAbbr":["AM"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","days-format-wide":["1","2","3","4","5","6","7"],"months-standAlone-abbr-leap":"Adar II","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"eraNames":["AM"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"yyyy-MM-dd","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormat-medium":"y MMM d","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","months-format-wide-leap":"Adar II"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/currency.js b/lib/dojo/cldr/nls/hu/currency.js
new file mode 100644 (file)
index 0000000..6db8b84
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hongkongi dollár","CHF_displayName":"Svájci frank","JPY_symbol":"¥","CAD_displayName":"Kanadai dollár","CNY_displayName":"Kínai jüan renminbi","USD_symbol":"$","AUD_displayName":"Ausztrál dollár","JPY_displayName":"Japán jen","USD_displayName":"USA dollár","GBP_displayName":"Brit font sterling","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/gregorian.js b/lib/dojo/cldr/nls/hu/gregorian.js
new file mode 100644 (file)
index 0000000..0418bd7
--- /dev/null
@@ -0,0 +1 @@
+({"field-dayperiod":"napszak","dayPeriods-format-wide-pm":"du.","field-minute":"perc","eraNames":["időszámításunk előtt","időszámításunk szerint"],"field-day-relative+-1":"tegnap","field-weekday":"hét napja","field-day-relative+-2":"tegnapelőtt","dateFormatItem-MMdd":"MM.dd.","field-day-relative+-3":"három nappal ezelőtt","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-era":"éra","field-hour":"óra","dayPeriods-format-wide-am":"de.","quarters-standAlone-abbr":["N1","N2","N3","N4"],"timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"field-day-relative+0":"ma","field-day-relative+1":"holnap","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"eraAbbr":["i. e.","i. sz."],"field-day-relative+2":"holnapután","field-day-relative+3":"három nap múlva","dateFormatItem-yyyyMM":"yyyy.MM","dateFormatItem-yyyyMMMM":"y. MMMM","dateFormat-long":"y. MMMM d.","timeFormat-medium":"H:mm:ss","field-zone":"zóna","dateFormatItem-Hm":"H:mm","dateFormat-medium":"yyyy.MM.dd.","dateFormatItem-Hms":"H:mm:ss","quarters-standAlone-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"field-year":"év","field-week":"hét","months-standAlone-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dateFormatItem-MMMd":"MMM d.","dateFormatItem-yyQ":"yy/Q","timeFormat-long":"H:mm:ss z","months-format-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"timeFormat-short":"H:mm","dateFormatItem-H":"H","field-month":"hónap","dateFormatItem-MMMMd":"MMMM d.","quarters-format-abbr":["N1","N2","N3","N4"],"days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-mmss":"mm:ss","dateFormatItem-M":"L","days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-second":"másodperc","field-day":"nap","dateFormatItem-MEd":"M. d., E","months-format-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-short":"yyyy.MM.dd.","dateFormat-full":"y. MMMM d., EEEE","dateFormatItem-Md":"M. d.","months-format-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dateFormatItem-d":"d","quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"eraNarrow":["i. e.","i. sz."],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yM":"y-M","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/number.js b/lib/dojo/cldr/nls/hu/number.js
new file mode 100644 (file)
index 0000000..472a2c8
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","percentFormat":"#,##0%","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/islamic.js b/lib/dojo/cldr/nls/islamic.js
new file mode 100644 (file)
index 0000000..a35c02b
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","eraNarrow":["AH"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"y MMMM d","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, y MMMM dd","dateFormatItem-Md":"M-d","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yM":"y-M","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["AH"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","days-format-wide":["1","2","3","4","5","6","7"],"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["1","2","3","4","5","6","7"],"eraNames":["AH"],"days-format-narrow":["1","2","3","4","5","6","7"],"days-standAlone-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormat-short":"yyyy-MM-dd","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormat-medium":"y MMM d","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/currency.js b/lib/dojo/cldr/nls/it/currency.js
new file mode 100644 (file)
index 0000000..58b5b81
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Dollaro di Hong Kong","CHF_displayName":"Franco Svizzero","CAD_displayName":"Dollaro Canadese","CNY_displayName":"Renmimbi Cinese","AUD_displayName":"Dollaro Australiano","JPY_displayName":"Yen Giapponese","USD_displayName":"Dollaro Statunitense","GBP_displayName":"Sterlina Inglese","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/gregorian.js b/lib/dojo/cldr/nls/it/gregorian.js
new file mode 100644 (file)
index 0000000..dbd7207
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-weekday":"giorno della settimana","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE, d/M/y","dateFormatItem-MMMEd":"EEE d MMM","eraNarrow":["aC","dC"],"dateFormat-long":"dd MMMM y","months-format-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"dayPeriods-format-wide-pm":"p.","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d/M","field-era":"era","dateFormatItem-yM":"M/y","months-standAlone-wide":["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"timeFormat-long":"HH:mm:ss z","field-year":"anno","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q-yyyy","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"ora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-day-relative+2":"dopodomani","field-day-relative+3":"tra tre giorni","months-standAlone-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1o trimestre","2o trimestre","3o trimestre","4o trimestre"],"dateFormatItem-M":"L","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["aC","dC"],"field-minute":"minuto","field-dayperiod":"periodo del giorno","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ieri","dateFormatItem-h":"hh a","field-day-relative+-2":"l'altro ieri","field-day-relative+-3":"tre giorni fa","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"EEE d/M","field-day":"giorno","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-zone":"zona","dateFormatItem-y":"y","months-standAlone-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"eraNames":["a.C.","d.C"],"days-format-narrow":["D","L","M","M","G","V","S"],"field-month":"mese","days-standAlone-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"m.","dateFormatItem-MMMMdd":"dd MMMM","dateFormat-short":"dd/MM/yy","field-second":"secondo","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"settimana","dateFormat-medium":"dd/MMM/y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/number.js b/lib/dojo/cldr/nls/it/number.js
new file mode 100644 (file)
index 0000000..d878fb3
--- /dev/null
@@ -0,0 +1 @@
+({"decimalFormat":"#,##0.###","group":".","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤ #,##0.00","decimal":",","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/currency.js b/lib/dojo/cldr/nls/ja/currency.js
new file mode 100644 (file)
index 0000000..076cd8d
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"香港ドル","CHF_displayName":"スイス フラン","JPY_symbol":"¥","CAD_displayName":"カナダ ドル","CNY_displayName":"中国人民元","USD_symbol":"$","AUD_displayName":"オーストラリア ドル","JPY_displayName":"日本円","USD_displayName":"米ドル","CNY_symbol":"元","GBP_displayName":"英国ポンド","EUR_displayName":"ユーロ","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/gregorian.js b/lib/dojo/cldr/nls/ja/gregorian.js
new file mode 100644 (file)
index 0000000..4126131
--- /dev/null
@@ -0,0 +1 @@
+({"field-weekday":"曜日","dateFormatItem-yQQQ":"yQQQ","dateFormatItem-yMEd":"y/M/d(EEE)","dateFormatItem-MMMEd":"M月d日(E)","eraNarrow":["BC","AD"],"dateFormat-long":"y年M月d日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"午後","dateFormat-full":"y年M月d日EEEE","dateFormatItem-Md":"M/d","dateFormatItem-yMd":"y/M/d","field-era":"時代","dateFormatItem-yM":"y/M","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"H:mm","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"timeFormat-long":"H:mm:ss z","field-year":"年","dateFormatItem-yMMM":"y年M月","dateFormatItem-yQ":"y/Q","field-hour":"時","dateFormatItem-MMdd":"MM/dd","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy/Q","timeFormat-full":"H時mm分ss秒 zzzz","field-day-relative+0":"今日","field-day-relative+1":"明日","field-day-relative+2":"明後日","dateFormatItem-H":"H時","field-day-relative+3":"3日後","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-M":"L","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyMMM":"y年M月","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","eraAbbr":["BC","AD"],"field-minute":"分","field-dayperiod":"午前/午後","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨日","dateFormatItem-h":"ah","dateTimeFormat-long":"{1}{0}","field-day-relative+-2":"一昨日","field-day-relative+-3":"3日前","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1}{0}","field-day":"日","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-zone":"タイムゾーン","dateFormatItem-yyyyMM":"yyyy/MM","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-hm":"ah:mm","dateFormatItem-GGGGyMd":"GGGGy年M月d日","days-format-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-yMMMd":"y年M月d日","eraNames":["紀元前","西暦"],"days-format-narrow":["日","月","火","水","木","金","土"],"field-month":"月","days-standAlone-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"午前","dateFormat-short":"yy/MM/dd","field-second":"秒","dateFormatItem-yMMMEd":"y年M月d日(EEE)","dateFormatItem-Ed":"d日(EEE)","field-week":"週","dateFormat-medium":"yyyy/MM/dd","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"y年","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/number.js b/lib/dojo/cldr/nls/ja/number.js
new file mode 100644 (file)
index 0000000..90d87b9
--- /dev/null
@@ -0,0 +1 @@
+({"decimalFormat":"#,##0.###","group":",","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤#,##0.00","decimal":".","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/currency.js b/lib/dojo/cldr/nls/ko/currency.js
new file mode 100644 (file)
index 0000000..5185f3e
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"홍콩 달러","CHF_displayName":"스위스 프랑","CAD_displayName":"캐나다 달러","CNY_displayName":"중국 위안 인민폐","AUD_displayName":"호주 달러","JPY_displayName":"일본 엔화","USD_displayName":"미국 달러","GBP_displayName":"영국령 파운드 스털링","EUR_displayName":"유로화","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/gregorian.js b/lib/dojo/cldr/nls/ko/gregorian.js
new file mode 100644 (file)
index 0000000..b10bdbf
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-weekday":"요일","dateFormatItem-yQQQ":"y년 QQQ","dateFormatItem-yMEd":"yyyy. M. d. EEE","dateFormatItem-MMMEd":"MMM d일 (E)","eraNarrow":["기원전","서기"],"dateFormat-long":"y년 M월 d일","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d일 EEE","dayPeriods-format-wide-pm":"오후","dateFormat-full":"y년 M월 d일 EEEE","dateFormatItem-Md":"M. d.","field-era":"연호","dateFormatItem-yM":"yyyy. M.","months-standAlone-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"timeFormat-short":"a h:mm","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"timeFormat-long":"a h시 m분 s초 z","field-year":"년","dateFormatItem-yMMM":"y년 MMM","dateFormatItem-yQ":"y년 Q분기","field-hour":"시","dateFormatItem-MMdd":"MM. dd","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormatItem-yyQ":"yy년 Q분기","timeFormat-full":"a h시 m분 s초 zzzz","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-day-relative+3":"3일후","months-standAlone-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"quarters-format-abbr":["1분기","2분기","3분기","4분기"],"quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"dateFormatItem-yyMMM":"yy년 MMM","timeFormat-medium":"a h:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"eraAbbr":["기원전","서기"],"field-minute":"분","field-dayperiod":"오전/오후","days-standAlone-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"어제","dateFormatItem-h":"a h","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"그저께","field-day-relative+-3":"그끄제","dateFormatItem-MMMd":"MMM d일","dateFormatItem-MEd":"M. d. (E)","dateTimeFormat-full":"{1} {0}","field-day":"일","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-zone":"시간대","dateFormatItem-yyyyMM":"yyyy. MM","dateFormatItem-y":"y","months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormatItem-yyMM":"YY. M.","dateFormatItem-hm":"a h:mm","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-yMMMd":"y년 MMM d일","eraNames":["서력기원전","서력기원"],"days-format-narrow":["일","월","화","수","목","금","토"],"field-month":"월","days-standAlone-narrow":["일","월","화","수","목","금","토"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"오전","dateFormat-short":"yy. M. d.","field-second":"초","dateFormatItem-yMMMEd":"y년 MMM d일 EEE","dateFormatItem-Ed":"d일 (E)","field-week":"주","dateFormat-medium":"yyyy. M. d.","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H시 m분 s초","dateFormatItem-hms":"a h:mm:ss","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/number.js b/lib/dojo/cldr/nls/ko/number.js
new file mode 100644 (file)
index 0000000..b155b91
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/currency.js b/lib/dojo/cldr/nls/nb/currency.js
new file mode 100644 (file)
index 0000000..88fcff8
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hongkong-dollar","CHF_displayName":"sveitsiske franc","CHF_symbol":"CHF","JPY_symbol":"JPY","CAD_displayName":"kanadiske dollar","CNY_displayName":"kinesiske yuan renminbi","USD_symbol":"USD","AUD_displayName":"australske dollar","JPY_displayName":"japanske yen","CAD_symbol":"CAD","USD_displayName":"amerikanske dollar","EUR_symbol":"EUR","CNY_symbol":"CNY","GBP_displayName":"britiske pund sterling","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euro","HKD_symbol":"HK$"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/gregorian.js b/lib/dojo/cldr/nls/nb/gregorian.js
new file mode 100644 (file)
index 0000000..008dd84
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"ukedag","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d.M.yyyy","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["f.Kr.","e.Kr."],"dateFormat-long":"d. MMMM y","months-format-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d. MMMM y","dateFormatItem-Md":"d.M.","field-era":"tidsalder","dateFormatItem-yM":"M y","months-standAlone-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH:mm:ss z","field-year":"år","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"time","dateFormatItem-MMdd":"dd.MM","months-format-abbr":["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","field-day-relative+3":"i overovermorgen","months-standAlone-abbr":["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-M":"L","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["f.Kr.","e.Kr."],"field-minute":"minutt","field-dayperiod":"AM/PM","days-standAlone-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-day-relative+-3":"i forforgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M","field-day":"dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"sone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM.yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"eraNames":["f.Kr.","e.Kr."],"days-format-narrow":["S","M","T","O","T","F","L"],"field-month":"måned","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormat-short":"dd.MM.yy","field-second":"sekund","dateFormatItem-yMMMEd":"EEE d. MMM y","field-week":"uke","dateFormat-medium":"d. MMM y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/number.js b/lib/dojo/cldr/nls/nb/number.js
new file mode 100644 (file)
index 0000000..2904b4b
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/currency.js b/lib/dojo/cldr/nls/nl/currency.js
new file mode 100644 (file)
index 0000000..fb04881
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hongkongse dollar","CHF_displayName":"Zwitserse franc","CAD_displayName":"Canadese dollar","CNY_displayName":"Chinese yuan renminbi","AUD_displayName":"Australische dollar","JPY_displayName":"Japanse yen","USD_displayName":"Amerikaanse dollar","GBP_displayName":"Brits pond sterling","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/gregorian.js b/lib/dojo/cldr/nls/nl/gregorian.js
new file mode 100644 (file)
index 0000000..32eb4aa
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yM":"M-y","field-dayperiod":"AM/PM","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"PM","field-minute":"Minuut","eraNames":["Voor Christus","na Christus"],"dateFormatItem-MMMEd":"E d MMM","field-day-relative+-1":"gisteren","field-weekday":"Dag van de week","dateFormatItem-yQQQ":"QQQ y","field-day-relative+-2":"eergisteren","dateFormatItem-MMdd":"dd-MM","field-day-relative+-3":"eereergisteren","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-era":"Tijdperk","field-hour":"Uur","dayPeriods-format-wide-am":"AM","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-y":"y","timeFormat-full":"HH:mm:ss zzzz","months-standAlone-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dateFormatItem-yMMM":"MMM y","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"eraAbbr":["v. Chr.","n. Chr."],"field-day-relative+2":"overmorgen","field-day-relative+3":"overovermorgen","dateFormatItem-yyyyMMMM":"MMMM y","dateFormat-long":"d MMMM y","timeFormat-medium":"HH:mm:ss","field-zone":"Zone","dateFormatItem-Hm":"HH:mm","dateFormatItem-MMd":"d-MM","dateFormat-medium":"d MMM y","dateFormatItem-yyMM":"MM-yy","dateFormatItem-yyMMM":"MMM yy","dateFormatItem-yyQQQQ":"QQQQ yy","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-ms":"mm:ss","field-year":"Jaar","field-week":"Week","months-standAlone-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateFormatItem-MMMd":"d-MMM","dateFormatItem-yyQ":"Q yy","timeFormat-long":"HH:mm:ss z","months-format-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"timeFormat-short":"HH:mm","field-month":"Maand","dateFormatItem-MMMMd":"d MMMM","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormatItem-M":"L","days-format-narrow":["Z","M","D","W","D","V","Z"],"field-second":"Seconde","field-day":"Dag","dateFormatItem-MEd":"E d-M","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateFormat-short":"dd-MM-yy","dateFormatItem-yMMMEd":"EEE d MMM y","dateFormat-full":"EEEE d MMMM y","dateFormatItem-Md":"d-M","dateFormatItem-yMEd":"EEE d-M-y","months-format-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateFormatItem-d":"d","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"eraNarrow":["v. Chr.","n. Chr."],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/number.js b/lib/dojo/cldr/nls/nl/number.js
new file mode 100644 (file)
index 0000000..6e47a0a
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/number.js b/lib/dojo/cldr/nls/number.js
new file mode 100644 (file)
index 0000000..8f76216
--- /dev/null
@@ -0,0 +1 @@
+({"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","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"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/currency.js b/lib/dojo/cldr/nls/pl/currency.js
new file mode 100644 (file)
index 0000000..d1849ec
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"dolar hongkoński","CHF_displayName":"frank szwajcarski","CAD_displayName":"dolar kanadyjski","CNY_displayName":"juan renminbi","AUD_displayName":"dolar australijski","JPY_displayName":"jen japoński","USD_displayName":"dolar amerykański ","GBP_displayName":"funt szterling","EUR_displayName":"euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/gregorian.js b/lib/dojo/cldr/nls/pl/gregorian.js
new file mode 100644 (file)
index 0000000..661278f
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-weekday":"Dzień tygodnia","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, d-M-y","dateFormatItem-MMMEd":"d MMM E","eraNarrow":["p.n.e.","n.e."],"dayPeriods-format-wide-earlyMorning":"nad ranem","dayPeriods-format-wide-morning":"rano","dateFormat-long":"d MMMM y","months-format-wide":["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"],"dayPeriods-format-wide-evening":"wieczorem","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"d-M","dayPeriods-format-wide-noon":"w południe","field-era":"Era","dateFormatItem-yM":"M-y","months-standAlone-wide":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"timeFormat-short":"HH:mm","quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"timeFormat-long":"HH:mm:ss z","field-year":"Rok","dateFormatItem-yQ":"yyyy Q","dateFormatItem-yyyyMMMM":"LLLL y","field-hour":"Godzina","dateFormatItem-MMdd":"dd-MM","months-format-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Dzisiaj","field-day-relative+1":"Jutro","field-day-relative+2":"Pojutrze","field-day-relative+3":"Za trzy dni","months-standAlone-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-M":"L","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-MMMMd":"d MMMM","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"eraAbbr":["p.n.e.","n.e."],"field-minute":"Minuta","field-dayperiod":"Dayperiod","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dayPeriods-format-wide-night":"w nocy","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"Wczoraj","dateFormatItem-h":"hh a","field-day-relative+-2":"Przedwczoraj","field-day-relative+-3":"Trzy dni temu","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d-M","dayPeriods-format-wide-lateMorning":"przed południem","dateFormatItem-yMMMM":"LLLL y","field-day":"Dzień","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-zone":"Strefa","dateFormatItem-yyyyMM":"yyyy-MM","dateFormatItem-y":"y","months-standAlone-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"hh:mm a","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"eraNames":["p.n.e.","n.e."],"days-format-narrow":["N","P","W","Ś","C","P","S"],"field-month":"Miesiąc","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormat-short":"dd-MM-yyyy","dayPeriods-format-wide-afternoon":"po południu","field-second":"Sekunda","dateFormatItem-yMMMEd":"EEE, d MMM y","field-week":"Tydzień","dateFormat-medium":"dd-MM-yyyy","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yMMM":"y MMM","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/number.js b/lib/dojo/cldr/nls/pl/number.js
new file mode 100644 (file)
index 0000000..ad7c869
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/gregorian.js b/lib/dojo/cldr/nls/pt-pt/gregorian.js
new file mode 100644 (file)
index 0000000..0108200
--- /dev/null
@@ -0,0 +1 @@
+({"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"quarters-format-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dayPeriods-standAlone-wide-am":"a.m.","dateFormat-medium":"d 'de' MMM 'de' yyyy","quarters-standAlone-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-hm":"h:mm","months-standAlone-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"dayPeriods-standAlone-abbr-am":"a.m.","dayPeriods-format-wide-pm":"Depois do meio-dia","months-standAlone-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"dateFormatItem-yQQQ":"QQQ 'de' y","dayPeriods-format-wide-am":"Antes do meio-dia","dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyQ":"QQQ 'de' yy","dayPeriods-format-abbr-am":"a.m.","months-format-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"days-standAlone-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"months-format-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"days-standAlone-abbr":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"days-format-wide":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"dateFormatItem-yQ":"QQQ 'de' yyyy","dateFormatItem-hms":"h:mm:ss","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dayPeriods-standAlone-wide-pm":"p.m.","days-format-abbr":["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"Dia da semana","dateFormatItem-yMEd":"EEE, dd/MM/yyyy","dateFormatItem-MMMEd":"EEE, d 'de' MMM","eraNarrow":["a.C.","d.C."],"dayPeriods-format-wide-morning":"manhã","dateFormat-long":"d 'de' MMMM 'de' y","dateFormatItem-EEEd":"EEE, d","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","dateFormatItem-yM":"MM/yyyy","timeFormat-short":"HH:mm","timeFormat-long":"HH'h'mm'min'ss's' z","field-year":"Ano","dateFormatItem-yMMM":"MMM 'de' y","field-hour":"Hora","dateFormatItem-MMdd":"dd/MM","timeFormat-full":"HH'h'mm'min'ss's' zzzz","field-day-relative+0":"Hoje","field-day-relative+1":"Amanhã","field-day-relative+2":"Depois de amanhã","field-day-relative+3":"Daqui a três dias","dateFormatItem-HHmmss":"HH'h'mm'min'ss's'","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM 'de' y","dateFormatItem-yyMMMEEEd":"EEE, d 'de' MMM 'de' yy","dateFormatItem-yyMMM":"MMM 'de' yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH'h'mm","eraAbbr":["a.C.","d.C."],"field-minute":"Minuto","field-dayperiod":"Período do dia","dayPeriods-format-wide-night":"noite","dateFormatItem-yyMMMd":"d 'de' MMM 'de' yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm'min'ss's'","field-day-relative+-1":"Ontem","field-day-relative+-2":"Anteontem","field-day-relative+-3":"Há três dias","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"EEE, dd/MM","field-day":"Dia","field-zone":"Fuso","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","eraNames":["Antes de Cristo","Ano do Senhor"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-MMM":"LLL","dateFormatItem-HHmm":"HH'h'mm","dateFormat-short":"dd/MM/yy","dayPeriods-format-wide-afternoon":"tarde","field-second":"Segundo","dateFormatItem-yMMMEd":"EEE, d 'de' MMM 'de' y","field-week":"Semana","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/number.js b/lib/dojo/cldr/nls/pt-pt/number.js
new file mode 100644 (file)
index 0000000..e06fd94
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/currency.js b/lib/dojo/cldr/nls/pt/currency.js
new file mode 100644 (file)
index 0000000..2e05569
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Dólar de Hong Kong","CHF_displayName":"Franco suíço","CAD_displayName":"Dólar canadense","CNY_displayName":"Yuan Renminbi chinês","AUD_displayName":"Dólar australiano","JPY_displayName":"Iene japonês","USD_displayName":"Dólar norte-americano","GBP_displayName":"Libra esterlina britânica","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/gregorian.js b/lib/dojo/cldr/nls/pt/gregorian.js
new file mode 100644 (file)
index 0000000..296fb10
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"Dia da semana","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, dd/MM/yyyy","dateFormatItem-MMMEd":"EEE, d 'de' MMM","eraNarrow":["a.C.","d.C."],"dayPeriods-format-wide-morning":"manhã","dateFormat-long":"d 'de' MMMM 'de' y","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateFormatItem-EEEd":"EEE, d","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","dateFormatItem-yM":"MM/yyyy","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"timeFormat-short":"HH:mm","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"timeFormat-long":"HH'h'mm'min'ss's' z","field-year":"Ano","dateFormatItem-yMMM":"MMM 'de' y","dateFormatItem-yQ":"yyyy Q","field-hour":"Hora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH'h'mm'min'ss's' zzzz","field-day-relative+0":"Hoje","field-day-relative+1":"Amanhã","field-day-relative+2":"Depois de amanhã","field-day-relative+3":"Daqui a três dias","months-standAlone-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-HHmmss":"HH'h'mm'min'ss's'","dateFormatItem-M":"L","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MMM 'de' y","dateFormatItem-yyMMMEEEd":"EEE, d 'de' MMM 'de' yy","dateFormatItem-yyMMM":"MMM 'de' yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH'h'mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a.C.","d.C."],"field-minute":"Minuto","field-dayperiod":"Período do dia","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dayPeriods-format-wide-night":"noite","dateFormatItem-yyMMMd":"d 'de' MMM 'de' yy","dateFormatItem-d":"d","dateFormatItem-ms":"mm'min'ss's'","field-day-relative+-1":"Ontem","field-day-relative+-2":"Anteontem","field-day-relative+-3":"Há três dias","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"EEE, dd/MM","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso","dateFormatItem-yyyyMM":"MM/yyyy","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"MM/yy","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"eraNames":["Antes de Cristo","Ano do Senhor"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-MMM":"LLL","dateFormatItem-HHmm":"HH'h'mm","dateFormat-short":"dd/MM/yy","dayPeriods-format-wide-afternoon":"tarde","field-second":"Segundo","dateFormatItem-yMMMEd":"EEE, d 'de' MMM 'de' y","field-week":"Semana","dateFormat-medium":"dd/MM/yyyy","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/number.js b/lib/dojo/cldr/nls/pt/number.js
new file mode 100644 (file)
index 0000000..f10fcfa
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/currency.js b/lib/dojo/cldr/nls/ru/currency.js
new file mode 100644 (file)
index 0000000..fb05c6d
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Гонконгский доллар","CHF_displayName":"Швейцарский франк","CAD_displayName":"Канадский доллар","CNY_displayName":"Юань Ренминби","USD_symbol":"$","AUD_displayName":"Австралийский доллар","JPY_displayName":"Японская иена","USD_displayName":"Доллар США","GBP_displayName":"Английский фунт стерлингов","EUR_displayName":"Евро","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/gregorian.js b/lib/dojo/cldr/nls/ru/gregorian.js
new file mode 100644 (file)
index 0000000..8eadf9d
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yM":"M.y","field-dayperiod":"AM/PM","field-minute":"Минута","eraNames":["до н.э.","н.э."],"dateFormatItem-MMMEd":"E d MMM","field-day-relative+-1":"Вчера","field-weekday":"День недели","dateFormatItem-yQQQ":"y QQQ","field-day-relative+-2":"Позавчера","dateFormatItem-MMdd":"dd.MM","days-standAlone-wide":["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"field-era":"Эра","field-hour":"Час","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"dateFormatItem-yyMMMEEEd":"EEE, d MMM yy","dateFormatItem-y":"y","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-yyyy":"y","months-standAlone-abbr":["янв.","февр.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],"dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"LLL y","field-day-relative+0":"Сегодня","dateFormatItem-yyyyLLLL":"LLLL y","field-day-relative+1":"Завтра","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"eraAbbr":["до н.э.","н.э."],"field-day-relative+2":"Послезавтра","dateFormatItem-yyyyMM":"MM.yyyy","dateFormatItem-yyyyMMMM":"LLLL y","dateFormat-long":"d MMMM y 'г'.","timeFormat-medium":"H:mm:ss","field-zone":"Часовой пояс","dateFormatItem-Hm":"H:mm","dateFormat-medium":"dd.MM.yyyy","dateFormatItem-yyMM":"MM.yy","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-yyMMM":"LLL yy","quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-ms":"mm:ss","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'.","field-year":"Год","months-standAlone-wide":["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],"field-week":"Неделя","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyQ":"Q yy","timeFormat-long":"H:mm:ss z","months-format-abbr":["янв.","февр.","марта","апр.","мая","июня","июля","авг.","сент.","окт.","нояб.","дек."],"timeFormat-short":"H:mm","dateFormatItem-H":"H","field-month":"Месяц","quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"days-format-abbr":["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"dateFormatItem-M":"L","days-format-narrow":["В","П","В","С","Ч","П","С"],"field-second":"Секунда","field-day":"День","dateFormatItem-MEd":"E, d.M","months-format-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"days-standAlone-abbr":["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"dateFormat-short":"dd.MM.yy","dateFormatItem-yMMMEd":"E, d MMM y","dateFormat-full":"EEEE, d MMMM y 'г'.","dateFormatItem-Md":"d.M","dateFormatItem-yMEd":"EEE, d.M.y","months-format-wide":["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"],"dateFormatItem-d":"d","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"eraNarrow":["до н.э.","н.э."],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/number.js b/lib/dojo/cldr/nls/ru/number.js
new file mode 100644 (file)
index 0000000..55fbdf8
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/currency.js b/lib/dojo/cldr/nls/sk/currency.js
new file mode 100644 (file)
index 0000000..f1b7966
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hong Kongský dolár","CHF_displayName":"Švajčiarský frank","CAD_displayName":"Kanadský dolár","CNY_displayName":"Čínsky Yuan Renminbi","AUD_displayName":"Austrálsky dolár","JPY_displayName":"Japonský yen","USD_displayName":"US dolár","GBP_displayName":"Britská libra","EUR_displayName":"Euro","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/gregorian.js b/lib/dojo/cldr/nls/sk/gregorian.js
new file mode 100644 (file)
index 0000000..513ec55
--- /dev/null
@@ -0,0 +1 @@
+({"field-dayperiod":"Časť dňa","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"popoludní","field-minute":"Minúta","eraNames":["pred n.l.","n.l."],"dateFormatItem-MMMEd":"E, d. MMM","field-day-relative+-1":"Včera","field-weekday":"Deň v týždni","dateFormatItem-yQQQ":"QQQ y","field-day-relative+-2":"Predvčerom","field-day-relative+-3":"Pred tromi dňami","days-standAlone-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-era":"Éra","field-hour":"Hodina","dayPeriods-format-wide-am":"dopoludnia","timeFormat-full":"H:mm:ss zzzz","months-standAlone-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"dateFormatItem-yMMM":"LLL y","field-day-relative+0":"Dnes","field-day-relative+1":"Zajtra","days-standAlone-narrow":["N","P","U","S","Š","P","S"],"eraAbbr":["pred n.l.","n.l."],"field-day-relative+2":"Pozajtra","field-day-relative+3":"O tri dni","dateFormatItem-yyyyMMMM":"LLLL y","dateFormat-long":"d. MMMM y","timeFormat-medium":"H:mm:ss","dateFormatItem-EEEd":"EEE, d.","field-zone":"Pásmo","dateFormatItem-Hm":"H:mm","dateFormat-medium":"d.M.yyyy","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-yyQQQQ":"QQQQ yy","quarters-standAlone-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"dateFormatItem-yMMMM":"LLLL y","dateFormatItem-ms":"mm:ss","field-year":"Rok","months-standAlone-wide":["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],"field-week":"Týždeň","dateFormatItem-MMMMEd":"E, d. MMMM","dateFormatItem-MMMd":"d. MMM","dateFormatItem-yyQ":"Q yy","timeFormat-long":"H:mm:ss z","months-format-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"timeFormat-short":"H:mm","dateFormatItem-H":"H","field-month":"Mesiac","dateFormatItem-MMMMd":"d. MMMM","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["ne","po","ut","st","št","pi","so"],"dateFormatItem-mmss":"mm:ss","days-format-narrow":["N","P","U","S","Š","P","S"],"field-second":"Sekunda","field-day":"Deň","dateFormatItem-MEd":"E, d.M.","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"days-standAlone-abbr":["ne","po","ut","st","št","pi","so"],"dateFormat-short":"d.M.yyyy","dateFormatItem-yyyyM":"M.yyyy","dateFormatItem-yMMMEd":"EEE, d. MMM y","dateFormat-full":"EEEE, d. MMMM y","dateFormatItem-Md":"d.M.","dateFormatItem-yMEd":"EEE, d.M.yyyy","months-format-wide":["januára","februára","marca","apríla","mája","júna","júla","augusta","septembra","októbra","novembra","decembra"],"dateFormatItem-d":"d.","quarters-format-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"days-format-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"eraNarrow":["pred n.l.","n.l."],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yM":"y-M","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-M":"L","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/number.js b/lib/dojo/cldr/nls/sk/number.js
new file mode 100644 (file)
index 0000000..f4095fd
--- /dev/null
@@ -0,0 +1 @@
+({"currencyFormat":"#,##0.00 ¤","group":" ","decimal":",","scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","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"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sl/currency.js b/lib/dojo/cldr/nls/sl/currency.js
new file mode 100644 (file)
index 0000000..f071a98
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"hongkonški dolar","CHF_displayName":"švicarski frank","JPY_symbol":"¥","CAD_displayName":"kanadski dolar","CNY_displayName":"kitajski juan renminbi","USD_symbol":"$","AUD_displayName":"avstralski dolar","JPY_displayName":"japonski jen","USD_displayName":"ameriški dolar","GBP_displayName":"britanski funt","EUR_displayName":"evro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sl/gregorian.js b/lib/dojo/cldr/nls/sl/gregorian.js
new file mode 100644 (file)
index 0000000..15bc184
--- /dev/null
@@ -0,0 +1 @@
+({"field-dayperiod":"Čas dneva","dayPeriods-format-wide-pm":"pop.","field-minute":"Minuta","eraNames":["pred našim štetjem","naše štetje"],"field-day-relative+-1":"Včeraj","field-weekday":"Dan v tednu","field-day-relative+-2":"Predvčerajšnjim","field-day-relative+-3":"Pred tremi dnevi","days-standAlone-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-era":"Doba","field-hour":"Ura","dayPeriods-format-wide-am":"dop.","dateFormatItem-y":"y","timeFormat-full":"HH:mm:ss zzzz","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],"field-day-relative+0":"Danes","field-day-relative+1":"Jutri","days-standAlone-narrow":["n","p","t","s","č","p","s"],"eraAbbr":["pr. n. št.","po Kr."],"field-day-relative+2":"Pojutrišnjem","field-day-relative+3":"Čez tri dni","dateFormatItem-yyyyMMMM":"MMMM y","dateFormat-long":"dd. MMMM y","timeFormat-medium":"HH:mm:ss","field-zone":"Območje","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"d. MMM. yyyy","dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"dateFormatItem-ms":"mm:ss","field-year":"Leto","months-standAlone-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"field-week":"Teden","dateFormatItem-yyQ":"Q/yy","timeFormat-long":"HH:mm:ss z","months-format-abbr":["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],"timeFormat-short":"HH:mm","field-month":"Mesec","dateFormatItem-MMMMd":"d. MMMM","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr":["ned","pon","tor","sre","čet","pet","sob"],"dateFormatItem-MMMMdd":"dd. MMMM","dateFormatItem-mmss":"mm:ss","days-format-narrow":["n","p","t","s","č","p","s"],"field-second":"Sekunda","field-day":"Dan","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"days-standAlone-abbr":["ned","pon","tor","sre","čet","pet","sob"],"dateFormat-short":"d. MM. yy","dateFormatItem-yyyyM":"M/yyyy","dateFormat-full":"EEEE, dd. MMMM y","dateFormatItem-Md":"d. M.","months-format-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"quarters-format-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"days-format-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"eraNarrow":["pr. n. št.","po Kr."],"quarters-standAlone-narrow":["1","2","3","4"],"dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, y-M-d","dateFormatItem-MMMEd":"E MMM d","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yM":"y-M","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"y Q","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","dateFormatItem-M":"L","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dateFormatItem-d":"d","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-yMMMEd":"EEE, y MMM d","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sl/number.js b/lib/dojo/cldr/nls/sl/number.js
new file mode 100644 (file)
index 0000000..cc62788
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/currency.js b/lib/dojo/cldr/nls/sv/currency.js
new file mode 100644 (file)
index 0000000..76a878a
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hongkong-dollar","CHF_displayName":"schweizisk franc","CHF_symbol":"CHF","CAD_displayName":"kanadensisk dollar","CNY_displayName":"kinesisk yuan renminbi","AUD_displayName":"australisk dollar","JPY_displayName":"japansk yen","CAD_symbol":"CAD","USD_displayName":"US-dollar","CNY_symbol":"CNY","GBP_displayName":"brittiskt pund sterling","EUR_displayName":"euro","USD_symbol":"US$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/gregorian.js b/lib/dojo/cldr/nls/sv/gregorian.js
new file mode 100644 (file)
index 0000000..b92d4fe
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"veckodag","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"EEE, yyyy-MM-dd","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["f.Kr.","e.Kr."],"dateFormat-long":"d MMMM y","months-format-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"em","dateFormat-full":"EEEE'en' 'den' d:'e' MMMM y","dateFormatItem-Md":"d/M","dateFormatItem-MMMMEEEd":"EEE d MMMM","field-era":"era","dateFormatItem-yM":"yyyy-MM","months-standAlone-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"timeFormat-short":"HH:mm","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"timeFormat-long":"HH:mm:ss z","field-year":"år","dateFormatItem-yMMM":"y MMM","dateFormatItem-yQ":"yyyy Q","field-hour":"timme","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","field-day-relative+2":"i övermorgon","field-day-relative+3":"i överövermorgon","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-M":"L","days-standAlone-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-yyyyMMM":"MMM y","dateFormatItem-MMMMd":"d:'e' MMMM","dateFormatItem-yyMMM":"MMM -yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["f.Kr.","e.Kr."],"field-minute":"minut","field-dayperiod":"fm/em","days-standAlone-abbr":["sön","mån","tis","ons","tors","fre","lör"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-day-relative+-3":"i förrförrgår","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-day":"dag","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-zone":"tidszon","dateFormatItem-yyyyMM":"yyyy-MM","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-yyMM":"yy-MM","dateFormatItem-hm":"h:mm a","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"eraNames":["före Kristus","efter Kristus"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-month":"månad","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"fm","dateFormatItem-MMMMEd":"E d:'e' MMMM","dateFormat-short":"yyyy-MM-dd","dateFormatItem-MMd":"d/M","field-second":"sekund","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"vecka","dateFormat-medium":"d MMM y","dateFormatItem-yyyyQQQQ":"QQQQ y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dateFormatItem-H":"HH","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/number.js b/lib/dojo/cldr/nls/sv/number.js
new file mode 100644 (file)
index 0000000..de83eac
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/buddhist.js b/lib/dojo/cldr/nls/th/buddhist.js
new file mode 100644 (file)
index 0000000..d1876f7
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yM":"M/yyyy","dateFormatItem-yQ":"Q yyyy","dayPeriods-format-wide-pm":"หลังเที่ยง","eraNames":["พุทธศักราช"],"dateFormatItem-MMMEd":"E d MMM","dateTimeFormat-full":"{1}, {0}","dateFormatItem-yQQQ":"QQQ y","months-standAlone-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"dateTimeFormat-short":"{1}, {0}","dayPeriods-format-wide-am":"ก่อนเที่ยง","dateTimeFormat-medium":"{1}, {0}","timeFormat-full":"H นาฬิกา m นาที ss วินาที zzzz","dateFormatItem-yMMM":"MMM y","days-standAlone-narrow":["อ","จ","อ","พ","พ","ศ","ส"],"eraAbbr":["พ.ศ."],"dateFormat-long":"d MMMM y","timeFormat-medium":"H:mm:ss","dateFormatItem-EEEd":"EEE d","dateFormatItem-Hm":"H:mm","dateFormat-medium":"d MMM y","dateFormatItem-Hms":"H:mm:ss","dateTimeFormat-long":"{1}, {0}","dateFormatItem-MMMd":"d MMM","timeFormat-long":"H นาฬิกา m นาที ss วินาที z","months-format-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"timeFormat-short":"H:mm","dateFormatItem-H":"H","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-MEd":"E, d/M","dateFormat-short":"d/M/yyyy","dateFormatItem-yMMMEd":"EEE d MMM y","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"EEE d/M/yyyy","months-format-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"eraNarrow":["พ.ศ."],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-M":"L","days-standAlone-wide":["1","2","3","4","5","6","7"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"days-standAlone-abbr":["1","2","3","4","5","6","7"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-narrow":["1","2","3","4","5","6","7"],"dateFormatItem-MMM":"LLL","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/currency.js b/lib/dojo/cldr/nls/th/currency.js
new file mode 100644 (file)
index 0000000..e2f76cc
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"ดอลลาร์ฮ่องกง","CHF_displayName":"ฟรังก์สวิส","JPY_symbol":"¥","CAD_displayName":"ดอลลาร์แคนาดา","CNY_displayName":"หยวนเหรินหมินปี้ (สาธารณรัฐประชาชนจีน)","AUD_displayName":"ดอลลาร์ออสเตรเลีย","JPY_displayName":"เยนญี่ปุ่น","USD_displayName":"ดอลลาร์สหรัฐ","GBP_displayName":"ปอนด์สเตอร์ลิง (สหราชอาณาจักร)","EUR_displayName":"ยูโร","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/gregorian.js b/lib/dojo/cldr/nls/th/gregorian.js
new file mode 100644 (file)
index 0000000..ee17118
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-weekday":"วันในสัปดาห์","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE d/M/yyyy","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["ก่อน ค.ศ.","ค.ศ."],"dateFormat-long":"d MMMM y","months-format-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"dateTimeFormat-medium":"{1}, {0}","dateFormatItem-EEEd":"EEE d","dayPeriods-format-wide-pm":"หลังเที่ยง","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-Md":"d/M","field-era":"สมัย","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"timeFormat-short":"H:mm","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"timeFormat-long":"H นาฬิกา m นาที ss วินาที z","field-year":"ปี","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"ชั่วโมง","months-format-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"H นาฬิกา m นาที ss วินาที zzzz","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","field-day-relative+2":"มะรืนนี้","dateFormatItem-H":"H","field-day-relative+3":"สามวันต่อจากนี้","months-standAlone-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-M":"L","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"H:mm:ss","dateFormatItem-Hm":"H:mm","eraAbbr":["ปีก่อน ค.ศ.","ค.ศ."],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"เมื่อวาน","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"เมื่อวานซืน","field-day-relative+-3":"สามวันก่อน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1}, {0}","dateFormatItem-yMMMM":"MMMM y","field-day":"วัน","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-zone":"เขต","dateFormatItem-y":"y","months-standAlone-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"eraNames":["ปีก่อนคริสต์ศักราช","คริสต์ศักราช"],"days-format-narrow":["อ","จ","อ","พ","พ","ศ","ส"],"field-month":"เดือน","days-standAlone-narrow":["อ","จ","อ","พ","พ","ศ","ส"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"ก่อนเที่ยง","dateFormatItem-MMMMEd":"E d MMMM","dateFormat-short":"d/M/yyyy","field-second":"วินาที","dateFormatItem-yMMMEd":"EEE d MMM y","field-week":"สัปดาห์","dateFormat-medium":"d MMM y","dateFormatItem-yyyyM":"M/yyyy","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateFormatItem-hms":"h:mm:ss a"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/number.js b/lib/dojo/cldr/nls/th/number.js
new file mode 100644 (file)
index 0000000..9d4a250
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/currency.js b/lib/dojo/cldr/nls/tr/currency.js
new file mode 100644 (file)
index 0000000..4e8104e
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"Hong Kong Doları","CHF_displayName":"İsviçre Frangı","JPY_symbol":"¥","CAD_displayName":"Kanada Doları","CNY_displayName":"Çin Yuanı Renminbi","USD_symbol":"$","AUD_displayName":"Avustralya Doları","JPY_displayName":"Japon Yeni","USD_displayName":"ABD Doları","GBP_displayName":"İngiliz Sterlini","EUR_displayName":"Euro","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/gregorian.js b/lib/dojo/cldr/nls/tr/gregorian.js
new file mode 100644 (file)
index 0000000..16c39aa
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-weekday":"Haftanın Günü","dateFormatItem-yyQQQQ":"QQQQ yy","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"dd.MM.yyyy EEE","dateFormatItem-MMMEd":"dd MMM E","eraNarrow":["MÖ","MS"],"dateFormat-long":"dd MMMM y","months-format-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"dateFormatItem-EEEd":"d EEE","dayPeriods-format-wide-pm":"PM","dateFormat-full":"dd MMMM y EEEE","dateFormatItem-Md":"dd/MM","field-era":"Miladi Dönem","dateFormatItem-yM":"M/yyyy","months-standAlone-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"timeFormat-long":"HH:mm:ss z","field-year":"Yıl","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQ":"Q yyyy","field-hour":"Saat","months-format-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"dateFormatItem-yyQ":"Q yy","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"Bugün","field-day-relative+1":"Yarın","field-day-relative+2":"Yarından sonraki gün","dateFormatItem-H":"HH","field-day-relative+3":"Üç gün sonra","months-standAlone-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-M":"L","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-MMMMd":"dd MMMM","dateFormatItem-yyMMM":"MMM yy","timeFormat-medium":"HH:mm:ss","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"eraAbbr":["MÖ","MS"],"field-minute":"Dakika","field-dayperiod":"AM/PM","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"Dün","field-day-relative+-2":"Evvelsi gün","field-day-relative+-3":"Üç gün önce","dateFormatItem-MMMd":"dd MMM","dateFormatItem-MEd":"dd/MM E","dateFormatItem-yMMMM":"MMMM y","field-day":"Gün","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-zone":"Saat Dilimi","dateFormatItem-y":"y","months-standAlone-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"dateFormatItem-yyMM":"MM/yy","dateFormatItem-hm":"h:mm a","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"eraNames":["Milattan Önce","Milattan Sonra"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"field-month":"Ay","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"dd MMMM E","dateFormat-short":"dd.MM.yyyy","field-second":"Saniye","dateFormatItem-yMMMEd":"dd MMM y EEE","dateFormatItem-Ed":"d E","field-week":"Hafta","dateFormat-medium":"dd MMM y","dateFormatItem-mmss":"mm:ss","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-yyyy":"y","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","dateTimeFormat-full":"{1} {0}","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/number.js b/lib/dojo/cldr/nls/tr/number.js
new file mode 100644 (file)
index 0000000..0be4606
--- /dev/null
@@ -0,0 +1 @@
+({"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:]","currencySpacing-afterCurrency-insertBetween":" ","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","currencySpacing-beforeCurrency-insertBetween":" "})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-tw/currency.js b/lib/dojo/cldr/nls/zh-tw/currency.js
new file mode 100644 (file)
index 0000000..a57f458
--- /dev/null
@@ -0,0 +1 @@
+({"BRE_displayName":"巴西克魯賽羅 (1990-1993)","DEM_displayName":"德國馬克","KGS_symbol":"som","CUP_displayName":"古巴披索","HUF_symbol":"Ft","BDT_symbol":"Tk","LSL_symbol":"M","VEF_symbol":"BsF","MDL_displayName":"摩杜雲列伊","DOP_displayName":"多明尼加披索","MTL_symbol":"Lm","NGN_displayName":"奈及利亞奈拉","KZT_displayName":"卡扎克斯坦坦吉","BGL_symbol":"lev","LTT_displayName":"立陶宛特羅","LAK_displayName":"寮國基普","LKR_displayName":"斯里蘭卡盧布","AOR_displayName":"安哥拉新寬扎 Reajustado (1995-1999)","XEU_displayName":"歐洲貨幣單位 XEU","SYP_symbol":"LS","USS_displayName":"美元 (同一天)","MNT_displayName":"蒙古圖格里克","AMD_symbol":"dram","MOP_displayName":"澳門元","TJR_displayName":"塔吉克斯坦盧布","LUC_displayName":"盧森堡可兌換法郎","LUL_displayName":"盧森堡金融法郎","MRO_symbol":"UM","AON_displayName":"安哥拉新寬扎 (1990-2000)","BEF_displayName":"比利時法郎","IEP_displayName":"愛爾蘭鎊","SBD_displayName":"索羅門群島元","GRD_displayName":"希臘德拉克馬","AZM_displayName":"阿塞拜彊馬特納","MTP_displayName":"馬爾他鎊","UGX_symbol":"U Sh","ARS_symbol":"Arg$","LVR_displayName":"拉脫維亞盧布","GNF_displayName":"幾內亞法郎","GIP_displayName":"直布羅陀鎊","SRG_displayName":"蘇里南盾","BAD_displayName":"波士尼亞-黑塞哥維那第納爾","FJD_displayName":"斐濟元","BAM_displayName":"波士尼亞-黑塞哥維那可轉換馬克","XBB_displayName":"歐洲貨幣單位 XBB","CDF_displayName":"剛果法郎","HRD_displayName":"克羅地亞第納爾","EQE_displayName":"埃奎維勒","BZD_displayName":"伯利茲元","MLF_displayName":"馬里法郎","VEB_symbol":"Be","EGP_displayName":"埃及鎊","MVR_displayName":"馬爾地夫海島盧非亞","KWD_symbol":"KD","TRL_symbol":"TL","ALL_symbol":"lek","SDP_displayName":"蘇丹鎊","NPR_displayName":"尼泊爾盧布","PHP_displayName":"菲律賓披索","DJF_symbol":"DF","WST_displayName":"西薩摩亞塔拉","JPY_displayName":"日圓","TMM_displayName":"土庫曼馬納特","STD_symbol":"Db","BGN_displayName":"保加利亞新列弗","KYD_displayName":"開曼群島美元","VUV_displayName":"萬那杜萬杜","IRR_displayName":"伊朗里亞爾","DJF_displayName":"吉布地法郎","BTN_symbol":"Nu","XDR_displayName":"特殊提款權","ECS_displayName":"厄瓜多蘇克雷","LSM_displayName":"馬洛蒂","MNT_symbol":"Tug","NLG_displayName":"荷蘭盾","MWK_displayName":"馬拉維克瓦查","IRR_symbol":"RI","OMR_symbol":"RO","JMD_symbol":"J$","PES_displayName":"秘魯太陽幣","SRG_symbol":"Sf","LYD_displayName":"利比亞第納爾","BRR_displayName":"巴西克魯賽羅","ETB_symbol":"Br","KMF_symbol":"CF","DKK_symbol":"DKr","XXX_displayName":"XXX","IDR_displayName":"印尼 - 盧布","DZD_symbol":"DA","TZS_symbol":"T Sh","SGD_symbol":"SGD","KGS_displayName":"吉爾吉斯索馬","BRN_displayName":"巴西克如爾達農瓦","AFN_symbol":"Af","ISK_displayName":"冰島克朗","LUF_displayName":"盧森堡法郎","MXN_symbol":"MEX$","GYD_symbol":"G$","TOP_symbol":"T$","SVC_displayName":"薩爾瓦多科郎","ZMK_displayName":"尚比亞克瓦查","TOP_displayName":"東加潘加","ITL_displayName":"義大利里拉","USN_displayName":"美元 (第二天)","KWD_displayName":"科威特第納爾","GEL_symbol":"lari","KMF_displayName":"科摩羅法郎","COP_symbol":"Col$","MYR_displayName":"馬來西亞 - 林吉特","XFU_displayName":"法國 UIC 法郎","GMD_displayName":"甘比亞達拉西","LVL_displayName":"拉脫維亞拉特銀幣","AUD_displayName":"澳幣","XPF_displayName":"CFP 法郎","LBP_displayName":"黎巴嫩鎊","SKK_symbol":"Sk","BYB_displayName":"白俄羅斯新盧布 (1994-1999)","MKD_displayName":"馬其頓第納爾","GWP_displayName":"幾內亞披索披索","CNY_displayName":"人民幣","HNL_symbol":"L","BOB_symbol":"Bs","JOD_displayName":"約旦第納爾","OMR_displayName":"阿曼里奧","BOV_displayName":"玻利維亞幕多","XPT_displayName":"白金","AUD_symbol":"AU$","NOK_displayName":"挪威克羅納","SCR_displayName":"塞舌爾群島盧布","XBA_displayName":"歐洲綜合單位","CSK_displayName":"捷克斯洛伐克硬克朗","PLZ_displayName":"波蘭茲羅提 (1950-1995)","UAK_displayName":"烏克蘭卡本瓦那茲","MGF_displayName":"馬達加斯加法郎","GNS_displayName":"幾內亞西里","YUN_displayName":"南斯拉夫 可轉換第納爾","UYU_symbol":"Ur$","GYD_displayName":"圭亞那元","QAR_displayName":"卡達爾里亞爾","BZD_symbol":"BZ$","JOD_symbol":"JD","ALL_displayName":"阿爾巴尼亞列克","BBD_displayName":"巴貝多元","RON_displayName":"羅馬尼亞列伊","XCD_symbol":"EC$","AMD_displayName":"亞美尼亞德拉姆","CYP_displayName":"賽浦路斯鎊","GBP_symbol":"£","SEK_displayName":"瑞典克羅納","MZN_symbol":"MTn","MMK_displayName":"緬甸元","ZAR_displayName":"南非蘭特","ECV_displayName":"厄瓜多爾由里達瓦康斯坦 (UVC)","LYD_symbol":"LD","VUV_symbol":"VT","AWG_displayName":"阿魯巴盾","CVE_symbol":"CVEsc","STD_displayName":"聖多美島和普林西比島多布拉","CAD_displayName":"加幣","ADP_displayName":"安道爾陪士特","MRO_displayName":"茅利塔尼亞烏吉亞","LSL_displayName":"賴索托羅蒂","TND_displayName":"突尼西亞第納爾","USD_symbol":"$","BMD_symbol":"Ber$","BAM_symbol":"KM","BRC_displayName":"巴西克魯賽羅 (1986-1989)","BMD_displayName":"百慕達幣","BRL_displayName":"巴西里拉","JMD_displayName":"牙買加元","SOS_displayName":"索馬利亞先令","SAR_displayName":"沙烏地里雅","PEI_displayName":"祕魯因蒂","ESP_displayName":"西班牙陪士特","HKD_displayName":"港幣","ESP_symbol":"₧","BWP_displayName":"波札那 - 普拉","TTD_displayName":"千里達及托巴哥元","BSD_displayName":"巴哈馬元","BIF_displayName":"蒲隆地法郎","FRF_displayName":"法國法郎","DKK_displayName":"丹麥克羅納","AED_displayName":"阿拉伯聯合大公國迪爾汗","GHS_symbol":"GH¢","AOK_displayName":"安哥拉寬扎(1977-1990)","ATS_displayName":"奧地利先令","PEN_displayName":"秘魯新太陽幣","CRC_displayName":"哥斯大黎加科郎","PAB_displayName":"巴拿馬巴波亞","CHE_displayName":"WIR 歐元","GQE_displayName":"赤道幾內亞埃奎勒","DZD_displayName":"阿爾及利亞第納爾","EEK_displayName":"愛沙尼亞克朗","YDD_displayName":"葉門第納爾","GHC_displayName":"迦納仙蔕","YER_symbol":"YRl","PLN_symbol":"Zl","NPR_symbol":"Nrs","MXP_displayName":"墨西哥銀披索 (1861-1992)","XAG_displayName":"XAG","XFO_displayName":"法國金法郎","GWE_displayName":"葡屬幾內亞埃斯庫多","BOB_displayName":"玻利維亞貨幣單位","CAD_symbol":"CA$","ZWD_displayName":"辛巴威元","SRD_displayName":"蘇利南元","ZRN_displayName":"薩伊新扎伊爾","XAU_displayName":"黃金","GTQ_symbol":"Q","KRW_symbol":"KRW","BOP_displayName":"玻利維亞披索","LBP_symbol":"LL","XBD_displayName":"歐洲會計單位(XBD)","TZS_displayName":"坦尚尼亞先令","XPF_symbol":"CFPF","TTD_symbol":"TT$","LRD_displayName":"賴比瑞亞元","KRW_displayName":"韓國圜","SHP_displayName":"聖赫勒拿鎊","NAD_symbol":"N$","MZE_displayName":"莫桑比克埃斯庫多","SDD_displayName":"蘇丹第納爾","HRK_displayName":"克羅地亞庫納","FKP_displayName":"福克蘭群島鎊","COP_displayName":"哥倫比亞披索","YUD_displayName":"南斯拉夫第納爾硬幣","YUM_displayName":"南斯拉夫挪威亞第納爾","BYR_symbol":"Rbl","THB_displayName":"泰銖","MGA_displayName":"馬達加斯加艾瑞爾","TWD_displayName":"新臺幣","UGS_displayName":"烏干達先令 (1966-1987)","SBD_symbol":"SI$","ZAL_displayName":"南非 - 蘭特 (金融)","GEL_displayName":"喬治拉里","ILP_displayName":"以色列鎊","MKD_symbol":"MDen","KES_displayName":"肯尼亞先令","CZK_displayName":"捷克克朗","UGX_displayName":"烏干達先令","KZT_symbol":"T","BGL_displayName":"保加利亞硬列弗","ARP_displayName":"阿根廷披索(1983-1985)","BBD_symbol":"BDS$","MYR_symbol":"RM","RUR_displayName":"俄羅斯盧布 (1991-1998)","ERN_displayName":"厄立特里亞納克法","BEF_symbol":"BF","CLF_displayName":"卡林油達佛曼跎","BRB_displayName":"巴西克魯薩多農瓦(1967-1986)","IDR_symbol":"Rp","IEP_symbol":"IR£","BHD_displayName":"巴林第納爾","SYP_displayName":"敘利亞鎊","BIF_symbol":"Fbu","SZL_displayName":"史瓦濟蘭里朗吉尼","INR_displayName":"印度盧布","PTE_displayName":"葡萄牙埃斯庫多","KPW_displayName":"北朝鮮幣","XOF_displayName":"西非法郎 BCEAO","DOP_symbol":"RD$","MXN_displayName":"墨西哥 - 披索","RWF_displayName":"盧安達法郎","ETB_displayName":"衣索比亞比爾","LTL_displayName":"立陶宛里塔","SZL_symbol":"E","QAR_symbol":"QR","SOS_symbol":"Sh.","BND_displayName":"汶萊元","SUR_displayName":"蘇聯盧布","AOA_displayName":"安哥拉寬扎","FJD_symbol":"F$","CVE_displayName":"維德角埃斯庫多","XTS_displayName":"XTS","CLP_displayName":"智利披索","HUF_displayName":"匈牙利 - 福林","LKR_symbol":"SL Re","SCR_symbol":"SR","TJS_displayName":"塔吉克索莫尼","MWK_symbol":"MK","GBP_displayName":"英鎊","TPE_displayName":"帝汶埃斯庫多","GNF_symbol":"GF","SGD_displayName":"新加坡幣","SLL_displayName":"獅子山利昂","MZM_symbol":"Mt","PHP_symbol":"Php","CYP_symbol":"£C","XAF_displayName":"西非法郎 BEAC","MTL_displayName":"馬爾他里拉","KHR_displayName":"柬埔寨瑞爾","ZRZ_displayName":"扎伊爾扎伊爾","KES_symbol":"K Sh","PKR_symbol":"Pra","IQD_symbol":"ID","BEC_displayName":"比利時法郎 (可轉換)","BEL_displayName":"比利時法郎 (金融)","AZN_displayName":"亞塞拜然蒙納特","FIM_displayName":"芬蘭馬克","PKR_displayName":"巴基斯坦盧布","UYP_displayName":"烏拉圭披索 (1975-1993)","ANG_symbol":"NA f.","CHW_displayName":"WIR 法郎","PLN_displayName":"波蘭茲羅提","RON_symbol":"0≤lei|1≤leu|1","BTN_displayName":"不丹那特倫","UAH_displayName":"烏克蘭格里夫那","YER_displayName":"也門里亞爾","UYU_displayName":"烏拉圭披索","CRC_symbol":"C","PGK_displayName":"巴布亞紐幾內亞基那","XBC_displayName":"歐洲會計單位(XBC)","EUR_displayName":"歐元","MUR_displayName":"模里西斯盧布","BYR_displayName":"白俄羅斯盧布","SEK_symbol":"SKr","BHD_symbol":"BD","IQD_displayName":"伊拉克第納爾","VEB_displayName":"委內瑞拉博利瓦","CLP_symbol":"Ch$","MZM_displayName":"莫三比克梅蒂卡爾","NZD_symbol":"$NZ","CHF_symbol":"Fr.","SIT_displayName":"斯洛維尼亞托勒","NOK_symbol":"NKr","XCD_displayName":"格瑞那達元","RUB_displayName":"俄羅斯盧布","BUK_displayName":"緬甸元 BUK","ILS_displayName":"以色列新謝克爾","KHR_symbol":"CR","NAD_displayName":"納米比亞元","HNL_displayName":"洪都拉斯倫皮拉","GTQ_displayName":"瓜地馬拉格查爾","EUR_symbol":"€","NZD_displayName":"紐西蘭幣","ARA_displayName":"阿根廷奧斯特納爾","ARS_displayName":"阿根廷披索","ANG_displayName":"荷屬安地列斯盾","MOP_symbol":"MOP","ZWD_symbol":"Z$","ITL_symbol":"₤","ZAR_symbol":"R","CHF_displayName":"瑞士法郎","USD_displayName":"美元","CNY_symbol":"¥","HKD_symbol":"HK$","JPY_symbol":"JP¥"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-tw/gregorian.js b/lib/dojo/cldr/nls/zh-tw/gregorian.js
new file mode 100644 (file)
index 0000000..78165cb
--- /dev/null
@@ -0,0 +1 @@
+({"dateFormatItem-yM":"yyyy/M","field-minute":"分鐘","eraNames":["西元前","西元"],"field-weekday":"週天","dateFormatItem-MMdd":"MM/dd","field-day-relative+-3":"大前天","field-relative-day":"大後天","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"年代","field-hour":"小時","quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"timeFormat-full":"zzzzah時mm分ss秒","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-Ed":"d日(E)","dateFormatItem-yMMM":"y年M月","eraAbbr":["西元前","西元"],"field-day-relative+2":"後天","field-day-relative+3":"大後天","timeFormat-medium":"ah:mm:ss","field-zone":"區域","dateFormatItem-yyMM":"yy-MM","dateFormat-medium":"yyyy/M/d","quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-yMMMM":"y年M月","dateFormatItem-HHmmss":"H:mm:ss","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-week":"週","dateFormatItem-HHmm":"H:mm","timeFormat-long":"zah時mm分ss秒","dateFormatItem-H":"H時","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"field-second":"秒","dateFormatItem-MEd":"M/d(E)","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormat-short":"yy/M/d","dateFormatItem-yMMMEd":"y年M月d日EEE","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"yyyy/M/d(EEE)","dateTimeAvailableFormats":["d日(E)","H:mm","H:mm:ss","M-d(E)","MM/dd","M/d","yyyy/M","yyyy/M/d(EEE)","yyyy年M月","yyyy年M月","yyyy/MM","MMMMdd日","MMMd日","MM-dd","M-d","d日","mm:ss","mm:ss","yyyy年","yyyy-M","yyyy年M月d日,E","yyyy年MMM","yyyy年MMMd日EEE","yyyy年MMMM","yyyy年QQQ","y年QQQ","yy-MM","yy年MMM","yy年第Q季度","yyyy年","yyyy年M月","yyyy年MMMM"],"quarters-format-wide":["第1季","第2季","第3季","第4季"],"eraNarrow":["西元前","西元"],"dateFormatItem-yQQQ":"y年QQQ","dateFormatItem-MMMEd":"MMMd日E","dayPeriods-format-wide-earlyMorning":"清晨","dayPeriods-format-wide-morning":"上午","dateFormat-long":"y年M月d日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"下午","dateFormat-full":"y年M月d日EEEE","timeFormat-short":"ah:mm","field-year":"年","dateFormatItem-yQ":"y年QQQ","dateFormatItem-yyyyMMMM":"y年MMMM","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy年第Q季度","field-day-relative+0":"今天","field-day-relative+1":"明天","dateFormatItem-M":"L","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyMMM":"yy年MMM","dateFormatItem-Hm":"H:mm","field-dayperiod":"上午/下午","dayPeriods-format-wide-night":"晚上","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨天","dateFormatItem-h":"ah","dateTimeFormat-long":"{1}{0}","field-day-relative+-2":"前天","dateFormatItem-MMMd":"MMMd日","dayPeriods-format-wide-midDay":"中午","dateTimeFormat-full":"{1}{0}","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-y":"y年","dateFormatItem-hm":"ah:mm","dateFormatItem-yMMMd":"y年MMMd日","days-format-narrow":["日","一","二","三","四","五","六"],"field-month":"月","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"上午","dateFormatItem-MMMMdd":"MMMMdd日","dayPeriods-format-wide-weeHours":"凌晨","dayPeriods-format-wide-afternoon":"下午","dateFormatItem-yyyyM":"y年M月","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"y年","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/currency.js b/lib/dojo/cldr/nls/zh/currency.js
new file mode 100644 (file)
index 0000000..960d5e5
--- /dev/null
@@ -0,0 +1 @@
+({"HKD_displayName":"港元","CHF_displayName":"瑞士法郎","CAD_displayName":"加拿大元","CNY_displayName":"人民币","AUD_displayName":"澳大利亚元","JPY_displayName":"日元","USD_displayName":"美元","CNY_symbol":"¥","GBP_displayName":"英镑","EUR_displayName":"欧元","USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"AU$","EUR_symbol":"€"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/gregorian.js b/lib/dojo/cldr/nls/zh/gregorian.js
new file mode 100644 (file)
index 0000000..4c5993f
--- /dev/null
@@ -0,0 +1 @@
+({"months-format-narrow":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-weekday":"周天","dateFormatItem-yQQQ":"y年QQQ","dateFormatItem-yMEd":"y年M月d日,E","dateFormatItem-MMMEd":"MMMd日E","eraNarrow":["公元前","公元"],"dayPeriods-format-wide-earlyMorning":"清晨","dayPeriods-format-wide-morning":"上午","dateFormat-long":"y年M月d日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"下午","dateFormat-full":"y年M月d日EEEE","dateFormatItem-Md":"M-d","field-era":"时期","dateFormatItem-yM":"yyyy-M","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第1季度","第2季度","第3季度","第4季度"],"timeFormat-long":"zah时mm分ss秒","field-year":"年","dateFormatItem-yMMM":"y年MMM","dateFormatItem-yQ":"y年QQQ","dateFormatItem-yyyyMMMM":"y年MMMM","field-hour":"小时","dateFormatItem-MMdd":"MM-dd","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyQ":"yy年第Q季度","timeFormat-full":"zzzzah时mm分ss秒","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"后天","dateFormatItem-H":"H时","months-standAlone-abbr":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"quarters-format-abbr":["1季","2季","3季","4季"],"quarters-standAlone-wide":["第1季度","第2季度","第3季度","第4季度"],"dateFormatItem-M":"L","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyMMM":"yy年MMM","timeFormat-medium":"ah:mm:ss","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1季","2季","3季","4季"],"eraAbbr":["公元前","公元"],"field-minute":"分钟","field-dayperiod":"上午/下午","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dayPeriods-format-wide-night":"晚上","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨天","dateFormatItem-h":"ah","dateTimeFormat-long":"{1}{0}","field-day-relative+-2":"前天","dateFormatItem-MMMd":"MMMd日","dayPeriods-format-wide-midDay":"中午","dateFormatItem-MEd":"M-dE","dateTimeFormat-full":"{1}{0}","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"区域","dateFormatItem-y":"y年","months-standAlone-narrow":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyMM":"yy-MM","dateFormatItem-hm":"ah:mm","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-yMMMd":"y年MMMd日","eraNames":["公元前","公元"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-month":"月","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-MMM":"LLL","dayPeriods-format-wide-am":"上午","dateFormatItem-MMMMdd":"MMMMdd日","dayPeriods-format-wide-weeHours":"凌晨","dateFormat-short":"yy-M-d","dayPeriods-format-wide-afternoon":"下午","field-second":"秒钟","dateFormatItem-yMMMEd":"y年MMMd日EEE","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"yyyy-M-d","dateFormatItem-yyyyM":"y年M月","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-yyyy":"y年","quarters-standAlone-narrow":["1","2","3","4"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormatItem-EEEd":"d EEE","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateTimeFormats-appendItem-Era":"{0} {1}","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-narrow-am":"AM","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateTimeFormats-appendItem-Timezone":"{0} {1}","dayPeriods-format-narrow-pm":"PM"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/number.js b/lib/dojo/cldr/nls/zh/number.js
new file mode 100644 (file)
index 0000000..90d87b9
--- /dev/null
@@ -0,0 +1 @@
+({"decimalFormat":"#,##0.###","group":",","scientificFormat":"#E0","percentFormat":"#,##0%","currencyFormat":"¤#,##0.00","decimal":".","currencySpacing-afterCurrency-currencyMatch":"[:letter:]","infinity":"∞","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","nativeZeroDigit":"0","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:letter:]","perMille":"‰","patternDigit":"#","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"})
\ No newline at end of file
diff --git a/lib/dojo/cldr/supplemental.js b/lib/dojo/cldr/supplemental.js
new file mode 100644 (file)
index 0000000..011af7e
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.cldr.supplemental"]){
+dojo._hasResource["dojo.cldr.supplemental"]=true;
+dojo.provide("dojo.cldr.supplemental");
+dojo.require("dojo.i18n");
+dojo.cldr.supplemental.getFirstDayOfWeek=function(_1){
+var _2={mv:5,af:6,bh:6,dj:6,dz:6,eg:6,er:6,et:6,iq:6,ir:6,jo:6,ke:6,kw:6,ly:6,ma:6,om:6,qa:6,sa:6,sd:6,so:6,tn:6,ye:6,ar:0,as:0,az:0,bw:0,ca:0,cn:0,fo:0,ge:0,gl:0,gu:0,hk:0,ie:0,il:0,"in":0,is:0,jm:0,jp:0,kg:0,kr:0,la:0,mh:0,mn:0,mo:0,mp:0,mt:0,nz:0,ph:0,pk:0,sg:0,sy:0,th:0,tt:0,tw:0,um:0,us:0,uz:0,vi:0,zw:0};
+var _3=dojo.cldr.supplemental._region(_1);
+var _4=_2[_3];
+return (_4===undefined)?1:_4;
+};
+dojo.cldr.supplemental._region=function(_5){
+_5=dojo.i18n.normalizeLocale(_5);
+var _6=_5.split("-");
+var _7=_6[1];
+if(!_7){
+_7={de:"de",en:"us",es:"es",fi:"fi",fr:"fr",he:"il",hu:"hu",it:"it",ja:"jp",ko:"kr",nl:"nl",pt:"br",sv:"se",zh:"cn"}[_6[0]];
+}else{
+if(_7.length==4){
+_7=_6[2];
+}
+}
+return _7;
+};
+dojo.cldr.supplemental.getWeekend=function(_8){
+var _9={"in":0,af:4,dz:4,ir:4,om:4,sa:4,ye:4,ae:5,bh:5,eg:5,il:5,iq:5,jo:5,kw:5,ly:5,ma:5,qa:5,sd:5,sy:5,tn:5};
+var _a={af:5,dz:5,ir:5,om:5,sa:5,ye:5,ae:6,bh:5,eg:6,il:6,iq:6,jo:6,kw:6,ly:6,ma:6,qa:6,sd:6,sy:6,tn:6};
+var _b=dojo.cldr.supplemental._region(_8);
+var _c=_9[_b];
+var _d=_a[_b];
+if(_c===undefined){
+_c=6;
+}
+if(_d===undefined){
+_d=0;
+}
+return {start:_c,end:_d};
+};
+}
diff --git a/lib/dojo/colors.js b/lib/dojo/colors.js
new file mode 100644 (file)
index 0000000..a5b0da7
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.colors"]){
+dojo._hasResource["dojo.colors"]=true;
+dojo.provide("dojo.colors");
+(function(){
+var _1=function(m1,m2,h){
+if(h<0){
+++h;
+}
+if(h>1){
+--h;
+}
+var h6=6*h;
+if(h6<1){
+return m1+(m2-m1)*h6;
+}
+if(2*h<1){
+return m2;
+}
+if(3*h<2){
+return m1+(m2-m1)*(2/3-h)*6;
+}
+return m1;
+};
+dojo.colorFromRgb=function(_2,_3){
+var m=_2.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);
+if(m){
+var c=m[2].split(/\s*,\s*/),l=c.length,t=m[1],a;
+if((t=="rgb"&&l==3)||(t=="rgba"&&l==4)){
+var r=c[0];
+if(r.charAt(r.length-1)=="%"){
+a=dojo.map(c,function(x){
+return parseFloat(x)*2.56;
+});
+if(l==4){
+a[3]=c[3];
+}
+return dojo.colorFromArray(a,_3);
+}
+return dojo.colorFromArray(c,_3);
+}
+if((t=="hsl"&&l==3)||(t=="hsla"&&l==4)){
+var H=((parseFloat(c[0])%360)+360)%360/360,S=parseFloat(c[1])/100,L=parseFloat(c[2])/100,m2=L<=0.5?L*(S+1):L+S-L*S,m1=2*L-m2;
+a=[_1(m1,m2,H+1/3)*256,_1(m1,m2,H)*256,_1(m1,m2,H-1/3)*256,1];
+if(l==4){
+a[3]=c[3];
+}
+return dojo.colorFromArray(a,_3);
+}
+}
+return null;
+};
+var _4=function(c,_5,_6){
+c=Number(c);
+return isNaN(c)?_6:c<_5?_5:c>_6?_6:c;
+};
+dojo.Color.prototype.sanitize=function(){
+var t=this;
+t.r=Math.round(_4(t.r,0,255));
+t.g=Math.round(_4(t.g,0,255));
+t.b=Math.round(_4(t.b,0,255));
+t.a=_4(t.a,0,1);
+return this;
+};
+})();
+dojo.colors.makeGrey=function(g,a){
+return dojo.colorFromArray([g,g,g,a]);
+};
+dojo.mixin(dojo.Color.named,{aliceblue:[240,248,255],antiquewhite:[250,235,215],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],blanchedalmond:[255,235,205],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],oldlace:[253,245,230],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],thistle:[216,191,216],tomato:[255,99,71],transparent:[0,0,0,0],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],whitesmoke:[245,245,245],yellowgreen:[154,205,50]});
+}
diff --git a/lib/dojo/cookie.js b/lib/dojo/cookie.js
new file mode 100644 (file)
index 0000000..0d3b6ea
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.cookie"]){
+dojo._hasResource["dojo.cookie"]=true;
+dojo.provide("dojo.cookie");
+dojo.require("dojo.regexp");
+dojo.cookie=function(_1,_2,_3){
+var c=document.cookie;
+if(arguments.length==1){
+var _4=c.match(new RegExp("(?:^|; )"+dojo.regexp.escapeString(_1)+"=([^;]*)"));
+return _4?decodeURIComponent(_4[1]):undefined;
+}else{
+_3=_3||{};
+var _5=_3.expires;
+if(typeof _5=="number"){
+var d=new Date();
+d.setTime(d.getTime()+_5*24*60*60*1000);
+_5=_3.expires=d;
+}
+if(_5&&_5.toUTCString){
+_3.expires=_5.toUTCString();
+}
+_2=encodeURIComponent(_2);
+var _6=_1+"="+_2,_7;
+for(_7 in _3){
+_6+="; "+_7;
+var _8=_3[_7];
+if(_8!==true){
+_6+="="+_8;
+}
+}
+document.cookie=_6;
+}
+};
+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;
+};
+}
diff --git a/lib/dojo/currency.js b/lib/dojo/currency.js
new file mode 100644 (file)
index 0000000..1071266
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.currency"]){
+dojo._hasResource["dojo.currency"]=true;
+dojo.provide("dojo.currency");
+dojo.require("dojo.number");
+dojo.require("dojo.i18n");
+dojo.requireLocalization("dojo.cldr","currency",null,"ROOT,ar,ca,cs,da,de,el,en,en-au,en-ca,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
+dojo.require("dojo.cldr.monetary");
+dojo.currency._mixInDefaults=function(_1){
+_1=_1||{};
+_1.type="currency";
+var _2=dojo.i18n.getLocalization("dojo.cldr","currency",_1.locale)||{};
+var _3=_1.currency;
+var _4=dojo.cldr.monetary.getData(_3);
+dojo.forEach(["displayName","symbol","group","decimal"],function(_5){
+_4[_5]=_2[_3+"_"+_5];
+});
+_4.fractional=[true,false];
+return dojo.mixin(_4,_1);
+};
+dojo.currency.format=function(_6,_7){
+return dojo.number.format(_6,dojo.currency._mixInDefaults(_7));
+};
+dojo.currency.regexp=function(_8){
+return dojo.number.regexp(dojo.currency._mixInDefaults(_8));
+};
+dojo.currency.parse=function(_9,_a){
+return dojo.number.parse(_9,dojo.currency._mixInDefaults(_a));
+};
+}
diff --git a/lib/dojo/data/ItemFileReadStore.js b/lib/dojo/data/ItemFileReadStore.js
new file mode 100644 (file)
index 0000000..01c15ee
--- /dev/null
@@ -0,0 +1,562 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.ItemFileReadStore"]){
+dojo._hasResource["dojo.data.ItemFileReadStore"]=true;
+dojo.provide("dojo.data.ItemFileReadStore");
+dojo.require("dojo.data.util.filter");
+dojo.require("dojo.data.util.simpleFetch");
+dojo.require("dojo.date.stamp");
+dojo.declare("dojo.data.ItemFileReadStore",null,{constructor:function(_1){
+this._arrayOfAllItems=[];
+this._arrayOfTopLevelItems=[];
+this._loadFinished=false;
+this._jsonFileUrl=_1.url;
+this._ccUrl=_1.url;
+this.url=_1.url;
+this._jsonData=_1.data;
+this.data=null;
+this._datatypeMap=_1.typeMap||{};
+if(!this._datatypeMap["Date"]){
+this._datatypeMap["Date"]={type:Date,deserialize:function(_2){
+return dojo.date.stamp.fromISOString(_2);
+}};
+}
+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(_1.urlPreventCache!==undefined){
+this.urlPreventCache=_1.urlPreventCache?true:false;
+}
+if(_1.hierarchical!==undefined){
+this.hierarchical=_1.hierarchical?true:false;
+}
+if(_1.clearOnClose){
+this.clearOnClose=true;
+}
+if("failOk" in _1){
+this.failOk=_1.failOk?true:false;
+}
+},url:"",_ccUrl:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,failOk:false,hierarchical:true,_assertIsItem:function(_3){
+if(!this.isItem(_3)){
+throw new Error("dojo.data.ItemFileReadStore: Invalid item argument.");
+}
+},_assertIsAttribute:function(_4){
+if(typeof _4!=="string"){
+throw new Error("dojo.data.ItemFileReadStore: Invalid attribute argument.");
+}
+},getValue:function(_5,_6,_7){
+var _8=this.getValues(_5,_6);
+return (_8.length>0)?_8[0]:_7;
+},getValues:function(_9,_a){
+this._assertIsItem(_9);
+this._assertIsAttribute(_a);
+return (_9[_a]||[]).slice(0);
+},getAttributes:function(_b){
+this._assertIsItem(_b);
+var _c=[];
+for(var _d in _b){
+if((_d!==this._storeRefPropName)&&(_d!==this._itemNumPropName)&&(_d!==this._rootItemPropName)&&(_d!==this._reverseRefMap)){
+_c.push(_d);
+}
+}
+return _c;
+},hasAttribute:function(_e,_f){
+this._assertIsItem(_e);
+this._assertIsAttribute(_f);
+return (_f in _e);
+},containsValue:function(_10,_11,_12){
+var _13=undefined;
+if(typeof _12==="string"){
+_13=dojo.data.util.filter.patternToRegExp(_12,false);
+}
+return this._containsValue(_10,_11,_12,_13);
+},_containsValue:function(_14,_15,_16,_17){
+return dojo.some(this.getValues(_14,_15),function(_18){
+if(_18!==null&&!dojo.isObject(_18)&&_17){
+if(_18.toString().match(_17)){
+return true;
+}
+}else{
+if(_16===_18){
+return true;
+}
+}
+});
+},isItem:function(_19){
+if(_19&&_19[this._storeRefPropName]===this){
+if(this._arrayOfAllItems[_19[this._itemNumPropName]]===_19){
+return true;
+}
+}
+return false;
+},isItemLoaded:function(_1a){
+return this.isItem(_1a);
+},loadItem:function(_1b){
+this._assertIsItem(_1b.item);
+},getFeatures:function(){
+return this._features;
+},getLabel:function(_1c){
+if(this._labelAttr&&this.isItem(_1c)){
+return this.getValue(_1c,this._labelAttr);
+}
+return undefined;
+},getLabelAttributes:function(_1d){
+if(this._labelAttr){
+return [this._labelAttr];
+}
+return null;
+},_fetchItems:function(_1e,_1f,_20){
+var _21=this,_22=function(_23,_24){
+var _25=[],i,key;
+if(_23.query){
+var _26,_27=_23.queryOptions?_23.queryOptions.ignoreCase:false;
+var _28={};
+for(key in _23.query){
+_26=_23.query[key];
+if(typeof _26==="string"){
+_28[key]=dojo.data.util.filter.patternToRegExp(_26,_27);
+}else{
+if(_26 instanceof RegExp){
+_28[key]=_26;
+}
+}
+}
+for(i=0;i<_24.length;++i){
+var _29=true;
+var _2a=_24[i];
+if(_2a===null){
+_29=false;
+}else{
+for(key in _23.query){
+_26=_23.query[key];
+if(!_21._containsValue(_2a,key,_26,_28[key])){
+_29=false;
+}
+}
+}
+if(_29){
+_25.push(_2a);
+}
+}
+_1f(_25,_23);
+}else{
+for(i=0;i<_24.length;++i){
+var _2b=_24[i];
+if(_2b!==null){
+_25.push(_2b);
+}
+}
+_1f(_25,_23);
+}
+};
+if(this._loadFinished){
+_22(_1e,this._getItemsArray(_1e.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==null){
+this._jsonData=this.data;
+this.data=null;
+}
+if(this._jsonFileUrl){
+if(this._loadInProgress){
+this._queuedFetches.push({args:_1e,filter:_22});
+}else{
+this._loadInProgress=true;
+var _2c={url:_21._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};
+var _2d=dojo.xhrGet(_2c);
+_2d.addCallback(function(_2e){
+try{
+_21._getItemsFromLoadedData(_2e);
+_21._loadFinished=true;
+_21._loadInProgress=false;
+_22(_1e,_21._getItemsArray(_1e.queryOptions));
+_21._handleQueuedFetches();
+}
+catch(e){
+_21._loadFinished=true;
+_21._loadInProgress=false;
+_20(e,_1e);
+}
+});
+_2d.addErrback(function(_2f){
+_21._loadInProgress=false;
+_20(_2f,_1e);
+});
+var _30=null;
+if(_1e.abort){
+_30=_1e.abort;
+}
+_1e.abort=function(){
+var df=_2d;
+if(df&&df.fired===-1){
+df.cancel();
+df=null;
+}
+if(_30){
+_30.call(_1e);
+}
+};
+}
+}else{
+if(this._jsonData){
+try{
+this._loadFinished=true;
+this._getItemsFromLoadedData(this._jsonData);
+this._jsonData=null;
+_22(_1e,this._getItemsArray(_1e.queryOptions));
+}
+catch(e){
+_20(e,_1e);
+}
+}else{
+_20(new Error("dojo.data.ItemFileReadStore: No JSON source data was provided as either URL or a nested Javascript object."),_1e);
+}
+}
+}
+},_handleQueuedFetches:function(){
+if(this._queuedFetches.length>0){
+for(var i=0;i<this._queuedFetches.length;i++){
+var _31=this._queuedFetches[i],_32=_31.args,_33=_31.filter;
+if(_33){
+_33(_32,this._getItemsArray(_32.queryOptions));
+}else{
+this.fetchItemByIdentity(_32);
+}
+}
+this._queuedFetches=[];
+}
+},_getItemsArray:function(_34){
+if(_34&&_34.deep){
+return this._arrayOfAllItems;
+}
+return this._arrayOfTopLevelItems;
+},close:function(_35){
+if(this.clearOnClose&&this._loadFinished&&!this._loadInProgress){
+if(((this._jsonFileUrl==""||this._jsonFileUrl==null)&&(this.url==""||this.url==null))&&this.data==null){
+}
+this._arrayOfAllItems=[];
+this._arrayOfTopLevelItems=[];
+this._loadFinished=false;
+this._itemsByIdentity=null;
+this._loadInProgress=false;
+this._queuedFetches=[];
+}
+},_getItemsFromLoadedData:function(_36){
+var _37=false,_38=this;
+function _39(_3a){
+var _3b=((_3a!==null)&&(typeof _3a==="object")&&(!dojo.isArray(_3a)||_37)&&(!dojo.isFunction(_3a))&&(_3a.constructor==Object||dojo.isArray(_3a))&&(typeof _3a._reference==="undefined")&&(typeof _3a._type==="undefined")&&(typeof _3a._value==="undefined")&&_38.hierarchical);
+return _3b;
+};
+function _3c(_3d){
+_38._arrayOfAllItems.push(_3d);
+for(var _3e in _3d){
+var _3f=_3d[_3e];
+if(_3f){
+if(dojo.isArray(_3f)){
+var _40=_3f;
+for(var k=0;k<_40.length;++k){
+var _41=_40[k];
+if(_39(_41)){
+_3c(_41);
+}
+}
+}else{
+if(_39(_3f)){
+_3c(_3f);
+}
+}
+}
+}
+};
+this._labelAttr=_36.label;
+var i,_42;
+this._arrayOfAllItems=[];
+this._arrayOfTopLevelItems=_36.items;
+for(i=0;i<this._arrayOfTopLevelItems.length;++i){
+_42=this._arrayOfTopLevelItems[i];
+if(dojo.isArray(_42)){
+_37=true;
+}
+_3c(_42);
+_42[this._rootItemPropName]=true;
+}
+var _43={},key;
+for(i=0;i<this._arrayOfAllItems.length;++i){
+_42=this._arrayOfAllItems[i];
+for(key in _42){
+if(key!==this._rootItemPropName){
+var _44=_42[key];
+if(_44!==null){
+if(!dojo.isArray(_44)){
+_42[key]=[_44];
+}
+}else{
+_42[key]=[null];
+}
+}
+_43[key]=key;
+}
+}
+while(_43[this._storeRefPropName]){
+this._storeRefPropName+="_";
+}
+while(_43[this._itemNumPropName]){
+this._itemNumPropName+="_";
+}
+while(_43[this._reverseRefMap]){
+this._reverseRefMap+="_";
+}
+var _45;
+var _46=_36.identifier;
+if(_46){
+this._itemsByIdentity={};
+this._features["dojo.data.api.Identity"]=_46;
+for(i=0;i<this._arrayOfAllItems.length;++i){
+_42=this._arrayOfAllItems[i];
+_45=_42[_46];
+var _47=_45[0];
+if(!this._itemsByIdentity[_47]){
+this._itemsByIdentity[_47]=_42;
+}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: ["+_46+"].  Value collided: ["+_47+"]");
+}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: ["+_46+"].  Value collided: ["+_47+"]");
+}
+}
+}
+}
+}else{
+this._features["dojo.data.api.Identity"]=Number;
+}
+for(i=0;i<this._arrayOfAllItems.length;++i){
+_42=this._arrayOfAllItems[i];
+_42[this._storeRefPropName]=this;
+_42[this._itemNumPropName]=i;
+}
+for(i=0;i<this._arrayOfAllItems.length;++i){
+_42=this._arrayOfAllItems[i];
+for(key in _42){
+_45=_42[key];
+for(var j=0;j<_45.length;++j){
+_44=_45[j];
+if(_44!==null&&typeof _44=="object"){
+if(("_type" in _44)&&("_value" in _44)){
+var _48=_44._type;
+var _49=this._datatypeMap[_48];
+if(!_49){
+throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '"+_48+"'");
+}else{
+if(dojo.isFunction(_49)){
+_45[j]=new _49(_44._value);
+}else{
+if(dojo.isFunction(_49.deserialize)){
+_45[j]=_49.deserialize(_44._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(_44._reference){
+var _4a=_44._reference;
+if(!dojo.isObject(_4a)){
+_45[j]=this._getItemByIdentity(_4a);
+}else{
+for(var k=0;k<this._arrayOfAllItems.length;++k){
+var _4b=this._arrayOfAllItems[k],_4c=true;
+for(var _4d in _4a){
+if(_4b[_4d]!=_4a[_4d]){
+_4c=false;
+}
+}
+if(_4c){
+_45[j]=_4b;
+}
+}
+}
+if(this.referenceIntegrity){
+var _4e=_45[j];
+if(this.isItem(_4e)){
+this._addReferenceToMap(_4e,_42,key);
+}
+}
+}else{
+if(this.isItem(_44)){
+if(this.referenceIntegrity){
+this._addReferenceToMap(_44,_42,key);
+}
+}
+}
+}
+}
+}
+}
+},_addReferenceToMap:function(_4f,_50,_51){
+},getIdentity:function(_52){
+var _53=this._features["dojo.data.api.Identity"];
+if(_53===Number){
+return _52[this._itemNumPropName];
+}else{
+var _54=_52[_53];
+if(_54){
+return _54[0];
+}
+}
+return null;
+},fetchItemByIdentity:function(_55){
+var _56,_57;
+if(!this._loadFinished){
+var _58=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:_55});
+}else{
+this._loadInProgress=true;
+var _59={url:_58._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};
+var _5a=dojo.xhrGet(_59);
+_5a.addCallback(function(_5b){
+var _5c=_55.scope?_55.scope:dojo.global;
+try{
+_58._getItemsFromLoadedData(_5b);
+_58._loadFinished=true;
+_58._loadInProgress=false;
+_56=_58._getItemByIdentity(_55.identity);
+if(_55.onItem){
+_55.onItem.call(_5c,_56);
+}
+_58._handleQueuedFetches();
+}
+catch(error){
+_58._loadInProgress=false;
+if(_55.onError){
+_55.onError.call(_5c,error);
+}
+}
+});
+_5a.addErrback(function(_5d){
+_58._loadInProgress=false;
+if(_55.onError){
+var _5e=_55.scope?_55.scope:dojo.global;
+_55.onError.call(_5e,_5d);
+}
+});
+}
+}else{
+if(this._jsonData){
+_58._getItemsFromLoadedData(_58._jsonData);
+_58._jsonData=null;
+_58._loadFinished=true;
+_56=_58._getItemByIdentity(_55.identity);
+if(_55.onItem){
+_57=_55.scope?_55.scope:dojo.global;
+_55.onItem.call(_57,_56);
+}
+}
+}
+}else{
+_56=this._getItemByIdentity(_55.identity);
+if(_55.onItem){
+_57=_55.scope?_55.scope:dojo.global;
+_55.onItem.call(_57,_56);
+}
+}
+},_getItemByIdentity:function(_5f){
+var _60=null;
+if(this._itemsByIdentity){
+_60=this._itemsByIdentity[_5f];
+}else{
+_60=this._arrayOfAllItems[_5f];
+}
+if(_60===undefined){
+_60=null;
+}
+return _60;
+},getIdentityAttributes:function(_61){
+var _62=this._features["dojo.data.api.Identity"];
+if(_62===Number){
+return null;
+}else{
+return [_62];
+}
+},_forceLoad:function(){
+var _63=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){
+var _64={url:this._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk,sync:true};
+var _65=dojo.xhrGet(_64);
+_65.addCallback(function(_66){
+try{
+if(_63._loadInProgress!==true&&!_63._loadFinished){
+_63._getItemsFromLoadedData(_66);
+_63._loadFinished=true;
+}else{
+if(_63._loadInProgress){
+throw new Error("dojo.data.ItemFileReadStore:  Unable to perform a synchronous load, an async load is in progress.");
+}
+}
+}
+catch(e){
+throw e;
+}
+});
+_65.addErrback(function(_67){
+throw _67;
+});
+}else{
+if(this._jsonData){
+_63._getItemsFromLoadedData(_63._jsonData);
+_63._jsonData=null;
+_63._loadFinished=true;
+}
+}
+}});
+dojo.extend(dojo.data.ItemFileReadStore,dojo.data.util.simpleFetch);
+}
diff --git a/lib/dojo/data/ItemFileWriteStore.js b/lib/dojo/data/ItemFileWriteStore.js
new file mode 100644 (file)
index 0000000..c891c14
--- /dev/null
@@ -0,0 +1,511 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.ItemFileWriteStore"]){
+dojo._hasResource["dojo.data.ItemFileWriteStore"]=true;
+dojo.provide("dojo.data.ItemFileWriteStore");
+dojo.require("dojo.data.ItemFileReadStore");
+dojo.declare("dojo.data.ItemFileWriteStore",dojo.data.ItemFileReadStore,{constructor:function(_1){
+this._features["dojo.data.api.Write"]=true;
+this._features["dojo.data.api.Notification"]=true;
+this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};
+if(!this._datatypeMap["Date"].serialize){
+this._datatypeMap["Date"].serialize=function(_2){
+return dojo.date.stamp.toISOString(_2,{zulu:true});
+};
+}
+if(_1&&(_1.referenceIntegrity===false)){
+this.referenceIntegrity=false;
+}
+this._saveInProgress=false;
+},referenceIntegrity:true,_assert:function(_3){
+if(!_3){
+throw new Error("assertion failed in ItemFileWriteStore");
+}
+},_getIdentifierAttribute:function(){
+var _4=this.getFeatures()["dojo.data.api.Identity"];
+return _4;
+},newItem:function(_5,_6){
+this._assert(!this._saveInProgress);
+if(!this._loadFinished){
+this._forceLoad();
+}
+if(typeof _5!="object"&&typeof _5!="undefined"){
+throw new Error("newItem() was passed something other than an object");
+}
+var _7=null;
+var _8=this._getIdentifierAttribute();
+if(_8===Number){
+_7=this._arrayOfAllItems.length;
+}else{
+_7=_5[_8];
+if(typeof _7==="undefined"){
+throw new Error("newItem() was not passed an identity for the new item");
+}
+if(dojo.isArray(_7)){
+throw new Error("newItem() was not passed an single-valued identity");
+}
+}
+if(this._itemsByIdentity){
+this._assert(typeof this._itemsByIdentity[_7]==="undefined");
+}
+this._assert(typeof this._pending._newItems[_7]==="undefined");
+this._assert(typeof this._pending._deletedItems[_7]==="undefined");
+var _9={};
+_9[this._storeRefPropName]=this;
+_9[this._itemNumPropName]=this._arrayOfAllItems.length;
+if(this._itemsByIdentity){
+this._itemsByIdentity[_7]=_9;
+_9[_8]=[_7];
+}
+this._arrayOfAllItems.push(_9);
+var _a=null;
+if(_6&&_6.parent&&_6.attribute){
+_a={item:_6.parent,attribute:_6.attribute,oldValue:undefined};
+var _b=this.getValues(_6.parent,_6.attribute);
+if(_b&&_b.length>0){
+var _c=_b.slice(0,_b.length);
+if(_b.length===1){
+_a.oldValue=_b[0];
+}else{
+_a.oldValue=_b.slice(0,_b.length);
+}
+_c.push(_9);
+this._setValueOrValues(_6.parent,_6.attribute,_c,false);
+_a.newValue=this.getValues(_6.parent,_6.attribute);
+}else{
+this._setValueOrValues(_6.parent,_6.attribute,_9,false);
+_a.newValue=_9;
+}
+}else{
+_9[this._rootItemPropName]=true;
+this._arrayOfTopLevelItems.push(_9);
+}
+this._pending._newItems[_7]=_9;
+for(var _d in _5){
+if(_d===this._storeRefPropName||_d===this._itemNumPropName){
+throw new Error("encountered bug in ItemFileWriteStore.newItem");
+}
+var _e=_5[_d];
+if(!dojo.isArray(_e)){
+_e=[_e];
+}
+_9[_d]=_e;
+if(this.referenceIntegrity){
+for(var i=0;i<_e.length;i++){
+var _f=_e[i];
+if(this.isItem(_f)){
+this._addReferenceToMap(_f,_9,_d);
+}
+}
+}
+}
+this.onNew(_9,_a);
+return _9;
+},_removeArrayElement:function(_10,_11){
+var _12=dojo.indexOf(_10,_11);
+if(_12!=-1){
+_10.splice(_12,1);
+return true;
+}
+return false;
+},deleteItem:function(_13){
+this._assert(!this._saveInProgress);
+this._assertIsItem(_13);
+var _14=_13[this._itemNumPropName];
+var _15=this.getIdentity(_13);
+if(this.referenceIntegrity){
+var _16=this.getAttributes(_13);
+if(_13[this._reverseRefMap]){
+_13["backup_"+this._reverseRefMap]=dojo.clone(_13[this._reverseRefMap]);
+}
+dojo.forEach(_16,function(_17){
+dojo.forEach(this.getValues(_13,_17),function(_18){
+if(this.isItem(_18)){
+if(!_13["backupRefs_"+this._reverseRefMap]){
+_13["backupRefs_"+this._reverseRefMap]=[];
+}
+_13["backupRefs_"+this._reverseRefMap].push({id:this.getIdentity(_18),attr:_17});
+this._removeReferenceFromMap(_18,_13,_17);
+}
+},this);
+},this);
+var _19=_13[this._reverseRefMap];
+if(_19){
+for(var _1a in _19){
+var _1b=null;
+if(this._itemsByIdentity){
+_1b=this._itemsByIdentity[_1a];
+}else{
+_1b=this._arrayOfAllItems[_1a];
+}
+if(_1b){
+for(var _1c in _19[_1a]){
+var _1d=this.getValues(_1b,_1c)||[];
+var _1e=dojo.filter(_1d,function(_1f){
+return !(this.isItem(_1f)&&this.getIdentity(_1f)==_15);
+},this);
+this._removeReferenceFromMap(_13,_1b,_1c);
+if(_1e.length<_1d.length){
+this._setValueOrValues(_1b,_1c,_1e,true);
+}
+}
+}
+}
+}
+}
+this._arrayOfAllItems[_14]=null;
+_13[this._storeRefPropName]=null;
+if(this._itemsByIdentity){
+delete this._itemsByIdentity[_15];
+}
+this._pending._deletedItems[_15]=_13;
+if(_13[this._rootItemPropName]){
+this._removeArrayElement(this._arrayOfTopLevelItems,_13);
+}
+this.onDelete(_13);
+return true;
+},setValue:function(_20,_21,_22){
+return this._setValueOrValues(_20,_21,_22,true);
+},setValues:function(_23,_24,_25){
+return this._setValueOrValues(_23,_24,_25,true);
+},unsetAttribute:function(_26,_27){
+return this._setValueOrValues(_26,_27,[],true);
+},_setValueOrValues:function(_28,_29,_2a,_2b){
+this._assert(!this._saveInProgress);
+this._assertIsItem(_28);
+this._assert(dojo.isString(_29));
+this._assert(typeof _2a!=="undefined");
+var _2c=this._getIdentifierAttribute();
+if(_29==_2c){
+throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier.");
+}
+var _2d=this._getValueOrValues(_28,_29);
+var _2e=this.getIdentity(_28);
+if(!this._pending._modifiedItems[_2e]){
+var _2f={};
+for(var key in _28){
+if((key===this._storeRefPropName)||(key===this._itemNumPropName)||(key===this._rootItemPropName)){
+_2f[key]=_28[key];
+}else{
+if(key===this._reverseRefMap){
+_2f[key]=dojo.clone(_28[key]);
+}else{
+_2f[key]=_28[key].slice(0,_28[key].length);
+}
+}
+}
+this._pending._modifiedItems[_2e]=_2f;
+}
+var _30=false;
+if(dojo.isArray(_2a)&&_2a.length===0){
+_30=delete _28[_29];
+_2a=undefined;
+if(this.referenceIntegrity&&_2d){
+var _31=_2d;
+if(!dojo.isArray(_31)){
+_31=[_31];
+}
+for(var i=0;i<_31.length;i++){
+var _32=_31[i];
+if(this.isItem(_32)){
+this._removeReferenceFromMap(_32,_28,_29);
+}
+}
+}
+}else{
+var _33;
+if(dojo.isArray(_2a)){
+var _34=_2a;
+_33=_2a.slice(0,_2a.length);
+}else{
+_33=[_2a];
+}
+if(this.referenceIntegrity){
+if(_2d){
+var _31=_2d;
+if(!dojo.isArray(_31)){
+_31=[_31];
+}
+var map={};
+dojo.forEach(_31,function(_35){
+if(this.isItem(_35)){
+var id=this.getIdentity(_35);
+map[id.toString()]=true;
+}
+},this);
+dojo.forEach(_33,function(_36){
+if(this.isItem(_36)){
+var id=this.getIdentity(_36);
+if(map[id.toString()]){
+delete map[id.toString()];
+}else{
+this._addReferenceToMap(_36,_28,_29);
+}
+}
+},this);
+for(var rId in map){
+var _37;
+if(this._itemsByIdentity){
+_37=this._itemsByIdentity[rId];
+}else{
+_37=this._arrayOfAllItems[rId];
+}
+this._removeReferenceFromMap(_37,_28,_29);
+}
+}else{
+for(var i=0;i<_33.length;i++){
+var _32=_33[i];
+if(this.isItem(_32)){
+this._addReferenceToMap(_32,_28,_29);
+}
+}
+}
+}
+_28[_29]=_33;
+_30=true;
+}
+if(_2b){
+this.onSet(_28,_29,_2d,_2a);
+}
+return _30;
+},_addReferenceToMap:function(_38,_39,_3a){
+var _3b=this.getIdentity(_39);
+var _3c=_38[this._reverseRefMap];
+if(!_3c){
+_3c=_38[this._reverseRefMap]={};
+}
+var _3d=_3c[_3b];
+if(!_3d){
+_3d=_3c[_3b]={};
+}
+_3d[_3a]=true;
+},_removeReferenceFromMap:function(_3e,_3f,_40){
+var _41=this.getIdentity(_3f);
+var _42=_3e[this._reverseRefMap];
+var _43;
+if(_42){
+for(_43 in _42){
+if(_43==_41){
+delete _42[_43][_40];
+if(this._isEmpty(_42[_43])){
+delete _42[_43];
+}
+}
+}
+if(this._isEmpty(_42)){
+delete _3e[this._reverseRefMap];
+}
+}
+},_dumpReferenceMap:function(){
+var i;
+for(i=0;i<this._arrayOfAllItems.length;i++){
+var _44=this._arrayOfAllItems[i];
+if(_44&&_44[this._reverseRefMap]){
+}
+}
+},_getValueOrValues:function(_45,_46){
+var _47=undefined;
+if(this.hasAttribute(_45,_46)){
+var _48=this.getValues(_45,_46);
+if(_48.length==1){
+_47=_48[0];
+}else{
+_47=_48;
+}
+}
+return _47;
+},_flatten:function(_49){
+if(this.isItem(_49)){
+var _4a=_49;
+var _4b=this.getIdentity(_4a);
+var _4c={_reference:_4b};
+return _4c;
+}else{
+if(typeof _49==="object"){
+for(var _4d in this._datatypeMap){
+var _4e=this._datatypeMap[_4d];
+if(dojo.isObject(_4e)&&!dojo.isFunction(_4e)){
+if(_49 instanceof _4e.type){
+if(!_4e.serialize){
+throw new Error("ItemFileWriteStore:  No serializer defined for type mapping: ["+_4d+"]");
+}
+return {_type:_4d,_value:_4e.serialize(_49)};
+}
+}else{
+if(_49 instanceof _4e){
+return {_type:_4d,_value:_49.toString()};
+}
+}
+}
+}
+return _49;
+}
+},_getNewFileContentString:function(){
+var _4f={};
+var _50=this._getIdentifierAttribute();
+if(_50!==Number){
+_4f.identifier=_50;
+}
+if(this._labelAttr){
+_4f.label=this._labelAttr;
+}
+_4f.items=[];
+for(var i=0;i<this._arrayOfAllItems.length;++i){
+var _51=this._arrayOfAllItems[i];
+if(_51!==null){
+var _52={};
+for(var key in _51){
+if(key!==this._storeRefPropName&&key!==this._itemNumPropName&&key!==this._reverseRefMap&&key!==this._rootItemPropName){
+var _53=key;
+var _54=this.getValues(_51,_53);
+if(_54.length==1){
+_52[_53]=this._flatten(_54[0]);
+}else{
+var _55=[];
+for(var j=0;j<_54.length;++j){
+_55.push(this._flatten(_54[j]));
+_52[_53]=_55;
+}
+}
+}
+}
+_4f.items.push(_52);
+}
+}
+var _56=true;
+return dojo.toJson(_4f,_56);
+},_isEmpty:function(_57){
+var _58=true;
+if(dojo.isObject(_57)){
+var i;
+for(i in _57){
+_58=false;
+break;
+}
+}else{
+if(dojo.isArray(_57)){
+if(_57.length>0){
+_58=false;
+}
+}
+}
+return _58;
+},save:function(_59){
+this._assert(!this._saveInProgress);
+this._saveInProgress=true;
+var _5a=this;
+var _5b=function(){
+_5a._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};
+_5a._saveInProgress=false;
+if(_59&&_59.onComplete){
+var _5c=_59.scope||dojo.global;
+_59.onComplete.call(_5c);
+}
+};
+var _5d=function(err){
+_5a._saveInProgress=false;
+if(_59&&_59.onError){
+var _5e=_59.scope||dojo.global;
+_59.onError.call(_5e,err);
+}
+};
+if(this._saveEverything){
+var _5f=this._getNewFileContentString();
+this._saveEverything(_5b,_5d,_5f);
+}
+if(this._saveCustom){
+this._saveCustom(_5b,_5d);
+}
+if(!this._saveEverything&&!this._saveCustom){
+_5b();
+}
+},revert:function(){
+this._assert(!this._saveInProgress);
+var _60;
+for(_60 in this._pending._modifiedItems){
+var _61=this._pending._modifiedItems[_60];
+var _62=null;
+if(this._itemsByIdentity){
+_62=this._itemsByIdentity[_60];
+}else{
+_62=this._arrayOfAllItems[_60];
+}
+_61[this._storeRefPropName]=this;
+for(key in _62){
+delete _62[key];
+}
+dojo.mixin(_62,_61);
+}
+var _63;
+for(_60 in this._pending._deletedItems){
+_63=this._pending._deletedItems[_60];
+_63[this._storeRefPropName]=this;
+var _64=_63[this._itemNumPropName];
+if(_63["backup_"+this._reverseRefMap]){
+_63[this._reverseRefMap]=_63["backup_"+this._reverseRefMap];
+delete _63["backup_"+this._reverseRefMap];
+}
+this._arrayOfAllItems[_64]=_63;
+if(this._itemsByIdentity){
+this._itemsByIdentity[_60]=_63;
+}
+if(_63[this._rootItemPropName]){
+this._arrayOfTopLevelItems.push(_63);
+}
+}
+for(_60 in this._pending._deletedItems){
+_63=this._pending._deletedItems[_60];
+if(_63["backupRefs_"+this._reverseRefMap]){
+dojo.forEach(_63["backupRefs_"+this._reverseRefMap],function(_65){
+var _66;
+if(this._itemsByIdentity){
+_66=this._itemsByIdentity[_65.id];
+}else{
+_66=this._arrayOfAllItems[_65.id];
+}
+this._addReferenceToMap(_66,_63,_65.attr);
+},this);
+delete _63["backupRefs_"+this._reverseRefMap];
+}
+}
+for(_60 in this._pending._newItems){
+var _67=this._pending._newItems[_60];
+_67[this._storeRefPropName]=null;
+this._arrayOfAllItems[_67[this._itemNumPropName]]=null;
+if(_67[this._rootItemPropName]){
+this._removeArrayElement(this._arrayOfTopLevelItems,_67);
+}
+if(this._itemsByIdentity){
+delete this._itemsByIdentity[_60];
+}
+}
+this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};
+return true;
+},isDirty:function(_68){
+if(_68){
+var _69=this.getIdentity(_68);
+return new Boolean(this._pending._newItems[_69]||this._pending._modifiedItems[_69]||this._pending._deletedItems[_69]).valueOf();
+}else{
+if(!this._isEmpty(this._pending._newItems)||!this._isEmpty(this._pending._modifiedItems)||!this._isEmpty(this._pending._deletedItems)){
+return true;
+}
+return false;
+}
+},onSet:function(_6a,_6b,_6c,_6d){
+},onNew:function(_6e,_6f){
+},onDelete:function(_70){
+},close:function(_71){
+if(this.clearOnClose){
+if(!this.isDirty()){
+this.inherited(arguments);
+}else{
+throw new Error("dojo.data.ItemFileWriteStore: There are unsaved changes present in the store.  Please save or revert the changes before invoking close.");
+}
+}
+}});
+}
diff --git a/lib/dojo/data/api/Identity.js b/lib/dojo/data/api/Identity.js
new file mode 100644 (file)
index 0000000..a76dd48
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.api.Identity"]){
+dojo._hasResource["dojo.data.api.Identity"]=true;
+dojo.provide("dojo.data.api.Identity");
+dojo.require("dojo.data.api.Read");
+dojo.declare("dojo.data.api.Identity",dojo.data.api.Read,{getFeatures:function(){
+return {"dojo.data.api.Read":true,"dojo.data.api.Identity":true};
+},getIdentity:function(_1){
+throw new Error("Unimplemented API: dojo.data.api.Identity.getIdentity");
+var _2=null;
+return _2;
+},getIdentityAttributes:function(_3){
+throw new Error("Unimplemented API: dojo.data.api.Identity.getIdentityAttributes");
+return null;
+},fetchItemByIdentity:function(_4){
+if(!this.isItemLoaded(_4.item)){
+throw new Error("Unimplemented API: dojo.data.api.Identity.fetchItemByIdentity");
+}
+}});
+}
diff --git a/lib/dojo/data/api/Notification.js b/lib/dojo/data/api/Notification.js
new file mode 100644 (file)
index 0000000..d1afacd
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.api.Notification"]){
+dojo._hasResource["dojo.data.api.Notification"]=true;
+dojo.provide("dojo.data.api.Notification");
+dojo.require("dojo.data.api.Read");
+dojo.declare("dojo.data.api.Notification",dojo.data.api.Read,{getFeatures:function(){
+return {"dojo.data.api.Read":true,"dojo.data.api.Notification":true};
+},onSet:function(_1,_2,_3,_4){
+throw new Error("Unimplemented API: dojo.data.api.Notification.onSet");
+},onNew:function(_5,_6){
+throw new Error("Unimplemented API: dojo.data.api.Notification.onNew");
+},onDelete:function(_7){
+throw new Error("Unimplemented API: dojo.data.api.Notification.onDelete");
+}});
+}
diff --git a/lib/dojo/data/api/Read.js b/lib/dojo/data/api/Read.js
new file mode 100644 (file)
index 0000000..e5e543e
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.api.Read"]){
+dojo._hasResource["dojo.data.api.Read"]=true;
+dojo.provide("dojo.data.api.Read");
+dojo.require("dojo.data.api.Request");
+dojo.declare("dojo.data.api.Read",null,{getValue:function(_1,_2,_3){
+var _4=null;
+throw new Error("Unimplemented API: dojo.data.api.Read.getValue");
+return _4;
+},getValues:function(_5,_6){
+var _7=[];
+throw new Error("Unimplemented API: dojo.data.api.Read.getValues");
+return _7;
+},getAttributes:function(_8){
+var _9=[];
+throw new Error("Unimplemented API: dojo.data.api.Read.getAttributes");
+return _9;
+},hasAttribute:function(_a,_b){
+throw new Error("Unimplemented API: dojo.data.api.Read.hasAttribute");
+return false;
+},containsValue:function(_c,_d,_e){
+throw new Error("Unimplemented API: dojo.data.api.Read.containsValue");
+return false;
+},isItem:function(_f){
+throw new Error("Unimplemented API: dojo.data.api.Read.isItem");
+return false;
+},isItemLoaded:function(_10){
+throw new Error("Unimplemented API: dojo.data.api.Read.isItemLoaded");
+return false;
+},loadItem:function(_11){
+if(!this.isItemLoaded(_11.item)){
+throw new Error("Unimplemented API: dojo.data.api.Read.loadItem");
+}
+},fetch:function(_12){
+var _13=null;
+throw new Error("Unimplemented API: dojo.data.api.Read.fetch");
+return _13;
+},getFeatures:function(){
+return {"dojo.data.api.Read":true};
+},close:function(_14){
+throw new Error("Unimplemented API: dojo.data.api.Read.close");
+},getLabel:function(_15){
+throw new Error("Unimplemented API: dojo.data.api.Read.getLabel");
+return undefined;
+},getLabelAttributes:function(_16){
+throw new Error("Unimplemented API: dojo.data.api.Read.getLabelAttributes");
+return null;
+}});
+}
diff --git a/lib/dojo/data/api/Request.js b/lib/dojo/data/api/Request.js
new file mode 100644 (file)
index 0000000..2d8e0e0
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.api.Request"]){
+dojo._hasResource["dojo.data.api.Request"]=true;
+dojo.provide("dojo.data.api.Request");
+dojo.declare("dojo.data.api.Request",null,{abort:function(){
+throw new Error("Unimplemented API: dojo.data.api.Request.abort");
+}});
+}
diff --git a/lib/dojo/data/api/Write.js b/lib/dojo/data/api/Write.js
new file mode 100644 (file)
index 0000000..cc9c3e4
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.api.Write"]){
+dojo._hasResource["dojo.data.api.Write"]=true;
+dojo.provide("dojo.data.api.Write");
+dojo.require("dojo.data.api.Read");
+dojo.declare("dojo.data.api.Write",dojo.data.api.Read,{getFeatures:function(){
+return {"dojo.data.api.Read":true,"dojo.data.api.Write":true};
+},newItem:function(_1,_2){
+var _3;
+throw new Error("Unimplemented API: dojo.data.api.Write.newItem");
+return _3;
+},deleteItem:function(_4){
+throw new Error("Unimplemented API: dojo.data.api.Write.deleteItem");
+return false;
+},setValue:function(_5,_6,_7){
+throw new Error("Unimplemented API: dojo.data.api.Write.setValue");
+return false;
+},setValues:function(_8,_9,_a){
+throw new Error("Unimplemented API: dojo.data.api.Write.setValues");
+return false;
+},unsetAttribute:function(_b,_c){
+throw new Error("Unimplemented API: dojo.data.api.Write.clear");
+return false;
+},save:function(_d){
+throw new Error("Unimplemented API: dojo.data.api.Write.save");
+},revert:function(){
+throw new Error("Unimplemented API: dojo.data.api.Write.revert");
+return false;
+},isDirty:function(_e){
+throw new Error("Unimplemented API: dojo.data.api.Write.isDirty");
+return false;
+}});
+}
diff --git a/lib/dojo/data/util/filter.js b/lib/dojo/data/util/filter.js
new file mode 100644 (file)
index 0000000..dcdc050
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.util.filter"]){
+dojo._hasResource["dojo.data.util.filter"]=true;
+dojo.provide("dojo.data.util.filter");
+dojo.data.util.filter.patternToRegExp=function(_1,_2){
+var _3="^";
+var c=null;
+for(var i=0;i<_1.length;i++){
+c=_1.charAt(i);
+switch(c){
+case "\\":
+_3+=c;
+i++;
+_3+=_1.charAt(i);
+break;
+case "*":
+_3+=".*";
+break;
+case "?":
+_3+=".";
+break;
+case "$":
+case "^":
+case "/":
+case "+":
+case ".":
+case "|":
+case "(":
+case ")":
+case "{":
+case "}":
+case "[":
+case "]":
+_3+="\\";
+default:
+_3+=c;
+}
+}
+_3+="$";
+if(_2){
+return new RegExp(_3,"mi");
+}else{
+return new RegExp(_3,"m");
+}
+};
+}
diff --git a/lib/dojo/data/util/simpleFetch.js b/lib/dojo/data/util/simpleFetch.js
new file mode 100644 (file)
index 0000000..b3cc365
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.util.simpleFetch"]){
+dojo._hasResource["dojo.data.util.simpleFetch"]=true;
+dojo.provide("dojo.data.util.simpleFetch");
+dojo.require("dojo.data.util.sorter");
+dojo.data.util.simpleFetch.fetch=function(_1){
+_1=_1||{};
+if(!_1.store){
+_1.store=this;
+}
+var _2=this;
+var _3=function(_4,_5){
+if(_5.onError){
+var _6=_5.scope||dojo.global;
+_5.onError.call(_6,_4,_5);
+}
+};
+var _7=function(_8,_9){
+var _a=_9.abort||null;
+var _b=false;
+var _c=_9.start?_9.start:0;
+var _d=(_9.count&&(_9.count!==Infinity))?(_c+_9.count):_8.length;
+_9.abort=function(){
+_b=true;
+if(_a){
+_a.call(_9);
+}
+};
+var _e=_9.scope||dojo.global;
+if(!_9.store){
+_9.store=_2;
+}
+if(_9.onBegin){
+_9.onBegin.call(_e,_8.length,_9);
+}
+if(_9.sort){
+_8.sort(dojo.data.util.sorter.createSortFunction(_9.sort,_2));
+}
+if(_9.onItem){
+for(var i=_c;(i<_8.length)&&(i<_d);++i){
+var _f=_8[i];
+if(!_b){
+_9.onItem.call(_e,_f,_9);
+}
+}
+}
+if(_9.onComplete&&!_b){
+var _10=null;
+if(!_9.onItem){
+_10=_8.slice(_c,_d);
+}
+_9.onComplete.call(_e,_10,_9);
+}
+};
+this._fetchItems(_1,_7,_3);
+return _1;
+};
+}
diff --git a/lib/dojo/data/util/sorter.js b/lib/dojo/data/util/sorter.js
new file mode 100644 (file)
index 0000000..ace7812
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.data.util.sorter"]){
+dojo._hasResource["dojo.data.util.sorter"]=true;
+dojo.provide("dojo.data.util.sorter");
+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(_1,_2){
+var _3=[];
+function _4(_5,_6,_7,s){
+return function(_8,_9){
+var a=s.getValue(_8,_5);
+var b=s.getValue(_9,_5);
+return _6*_7(a,b);
+};
+};
+var _a;
+var _b=_2.comparatorMap;
+var bc=dojo.data.util.sorter.basicComparator;
+for(var i=0;i<_1.length;i++){
+_a=_1[i];
+var _c=_a.attribute;
+if(_c){
+var _d=(_a.descending)?-1:1;
+var _e=bc;
+if(_b){
+if(typeof _c!=="string"&&("toString" in _c)){
+_c=_c.toString();
+}
+_e=_b[_c]||bc;
+}
+_3.push(_4(_c,_d,_e,_2));
+}
+}
+return function(_f,_10){
+var i=0;
+while(i<_3.length){
+var ret=_3[i++](_f,_10);
+if(ret!==0){
+return ret;
+}
+}
+return 0;
+};
+};
+}
diff --git a/lib/dojo/date.js b/lib/dojo/date.js
new file mode 100644 (file)
index 0000000..dc51853
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.date"]){
+dojo._hasResource["dojo.date"]=true;
+dojo.provide("dojo.date");
+dojo.date.getDaysInMonth=function(_1){
+var _2=_1.getMonth();
+var _3=[31,28,31,30,31,30,31,31,30,31,30,31];
+if(_2==1&&dojo.date.isLeapYear(_1)){
+return 29;
+}
+return _3[_2];
+};
+dojo.date.isLeapYear=function(_4){
+var _5=_4.getFullYear();
+return !(_5%400)||(!(_5%4)&&!!(_5%100));
+};
+dojo.date.getTimezoneName=function(_6){
+var _7=_6.toString();
+var tz="";
+var _8;
+var _9=_7.indexOf("(");
+if(_9>-1){
+tz=_7.substring(++_9,_7.indexOf(")"));
+}else{
+var _a=/([A-Z\/]+) \d{4}$/;
+if((_8=_7.match(_a))){
+tz=_8[1];
+}else{
+_7=_6.toLocaleString();
+_a=/ ([A-Z\/]+)$/;
+if((_8=_7.match(_a))){
+tz=_8[1];
+}
+}
+}
+return (tz=="AM"||tz=="PM")?"":tz;
+};
+dojo.date.compare=function(_b,_c,_d){
+_b=new Date(+_b);
+_c=new Date(+(_c||new Date()));
+if(_d=="date"){
+_b.setHours(0,0,0,0);
+_c.setHours(0,0,0,0);
+}else{
+if(_d=="time"){
+_b.setFullYear(0,0,0);
+_c.setFullYear(0,0,0);
+}
+}
+if(_b>_c){
+return 1;
+}
+if(_b<_c){
+return -1;
+}
+return 0;
+};
+dojo.date.add=function(_e,_f,_10){
+var sum=new Date(+_e);
+var _11=false;
+var _12="Date";
+switch(_f){
+case "day":
+break;
+case "weekday":
+var _13,_14;
+var mod=_10%5;
+if(!mod){
+_13=(_10>0)?5:-5;
+_14=(_10>0)?((_10-5)/5):((_10+5)/5);
+}else{
+_13=mod;
+_14=parseInt(_10/5);
+}
+var _15=_e.getDay();
+var adj=0;
+if(_15==6&&_10>0){
+adj=1;
+}else{
+if(_15==0&&_10<0){
+adj=-1;
+}
+}
+var _16=_15+_13;
+if(_16==0||_16==6){
+adj=(_10>0)?2:-2;
+}
+_10=(7*_14)+_13+adj;
+break;
+case "year":
+_12="FullYear";
+_11=true;
+break;
+case "week":
+_10*=7;
+break;
+case "quarter":
+_10*=3;
+case "month":
+_11=true;
+_12="Month";
+break;
+default:
+_12="UTC"+_f.charAt(0).toUpperCase()+_f.substring(1)+"s";
+}
+if(_12){
+sum["set"+_12](sum["get"+_12]()+_10);
+}
+if(_11&&(sum.getDate()<_e.getDate())){
+sum.setDate(0);
+}
+return sum;
+};
+dojo.date.difference=function(_17,_18,_19){
+_18=_18||new Date();
+_19=_19||"day";
+var _1a=_18.getFullYear()-_17.getFullYear();
+var _1b=1;
+switch(_19){
+case "quarter":
+var m1=_17.getMonth();
+var m2=_18.getMonth();
+var q1=Math.floor(m1/3)+1;
+var q2=Math.floor(m2/3)+1;
+q2+=(_1a*4);
+_1b=q2-q1;
+break;
+case "weekday":
+var _1c=Math.round(dojo.date.difference(_17,_18,"day"));
+var _1d=parseInt(dojo.date.difference(_17,_18,"week"));
+var mod=_1c%7;
+if(mod==0){
+_1c=_1d*5;
+}else{
+var adj=0;
+var _1e=_17.getDay();
+var _1f=_18.getDay();
+_1d=parseInt(_1c/7);
+mod=_1c%7;
+var _20=new Date(_17);
+_20.setDate(_20.getDate()+(_1d*7));
+var _21=_20.getDay();
+if(_1c>0){
+switch(true){
+case _1e==6:
+adj=-1;
+break;
+case _1e==0:
+adj=0;
+break;
+case _1f==6:
+adj=-1;
+break;
+case _1f==0:
+adj=-2;
+break;
+case (_21+mod)>5:
+adj=-2;
+}
+}else{
+if(_1c<0){
+switch(true){
+case _1e==6:
+adj=0;
+break;
+case _1e==0:
+adj=1;
+break;
+case _1f==6:
+adj=2;
+break;
+case _1f==0:
+adj=1;
+break;
+case (_21+mod)<0:
+adj=2;
+}
+}
+}
+_1c+=adj;
+_1c-=(_1d*2);
+}
+_1b=_1c;
+break;
+case "year":
+_1b=_1a;
+break;
+case "month":
+_1b=(_18.getMonth()-_17.getMonth())+(_1a*12);
+break;
+case "week":
+_1b=parseInt(dojo.date.difference(_17,_18,"day")/7);
+break;
+case "day":
+_1b/=24;
+case "hour":
+_1b/=60;
+case "minute":
+_1b/=60;
+case "second":
+_1b/=1000;
+case "millisecond":
+_1b*=_18.getTime()-_17.getTime();
+}
+return Math.round(_1b);
+};
+}
diff --git a/lib/dojo/date/locale.js b/lib/dojo/date/locale.js
new file mode 100644 (file)
index 0000000..6664686
--- /dev/null
@@ -0,0 +1,464 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.date.locale"]){
+dojo._hasResource["dojo.date.locale"]=true;
+dojo.provide("dojo.date.locale");
+dojo.require("dojo.date");
+dojo.require("dojo.cldr.supplemental");
+dojo.require("dojo.regexp");
+dojo.require("dojo.string");
+dojo.require("dojo.i18n");
+dojo.requireLocalization("dojo.cldr","gregorian",null,"ROOT,ar,ca,cs,da,de,el,en,en-au,en-ca,en-gb,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");
+(function(){
+function _1(_2,_3,_4,_5){
+return _5.replace(/([a-z])\1*/ig,function(_6){
+var s,_7,c=_6.charAt(0),l=_6.length,_8=["abbr","wide","narrow"];
+switch(c){
+case "G":
+s=_3[(l<4)?"eraAbbr":"eraNames"][_2.getFullYear()<0?0:1];
+break;
+case "y":
+s=_2.getFullYear();
+switch(l){
+case 1:
+break;
+case 2:
+if(!_4.fullYear){
+s=String(s);
+s=s.substr(s.length-2);
+break;
+}
+default:
+_7=true;
+}
+break;
+case "Q":
+case "q":
+s=Math.ceil((_2.getMonth()+1)/3);
+_7=true;
+break;
+case "M":
+var m=_2.getMonth();
+if(l<3){
+s=m+1;
+_7=true;
+}else{
+var _9=["months","format",_8[l-3]].join("-");
+s=_3[_9][m];
+}
+break;
+case "w":
+var _a=0;
+s=dojo.date.locale._getWeekOfYear(_2,_a);
+_7=true;
+break;
+case "d":
+s=_2.getDate();
+_7=true;
+break;
+case "D":
+s=dojo.date.locale._getDayOfYear(_2);
+_7=true;
+break;
+case "E":
+var d=_2.getDay();
+if(l<3){
+s=d+1;
+_7=true;
+}else{
+var _b=["days","format",_8[l-3]].join("-");
+s=_3[_b][d];
+}
+break;
+case "a":
+var _c=(_2.getHours()<12)?"am":"pm";
+s=_3["dayPeriods-format-wide-"+_c];
+break;
+case "h":
+case "H":
+case "K":
+case "k":
+var h=_2.getHours();
+switch(c){
+case "h":
+s=(h%12)||12;
+break;
+case "H":
+s=h;
+break;
+case "K":
+s=(h%12);
+break;
+case "k":
+s=h||24;
+break;
+}
+_7=true;
+break;
+case "m":
+s=_2.getMinutes();
+_7=true;
+break;
+case "s":
+s=_2.getSeconds();
+_7=true;
+break;
+case "S":
+s=Math.round(_2.getMilliseconds()*Math.pow(10,l-3));
+_7=true;
+break;
+case "v":
+case "z":
+s=dojo.date.locale._getZone(_2,true,_4);
+if(s){
+break;
+}
+l=4;
+case "Z":
+var _d=dojo.date.locale._getZone(_2,false,_4);
+var tz=[(_d<=0?"+":"-"),dojo.string.pad(Math.floor(Math.abs(_d)/60),2),dojo.string.pad(Math.abs(_d)%60,2)];
+if(l==4){
+tz.splice(0,0,"GMT");
+tz.splice(3,0,":");
+}
+s=tz.join("");
+break;
+default:
+throw new Error("dojo.date.locale.format: invalid pattern char: "+_5);
+}
+if(_7){
+s=dojo.string.pad(s,l);
+}
+return s;
+});
+};
+dojo.date.locale._getZone=function(_e,_f,_10){
+if(_f){
+return dojo.date.getTimezoneName(_e);
+}else{
+return _e.getTimezoneOffset();
+}
+};
+dojo.date.locale.format=function(_11,_12){
+_12=_12||{};
+var _13=dojo.i18n.normalizeLocale(_12.locale),_14=_12.formatLength||"short",_15=dojo.date.locale._getGregorianBundle(_13),str=[],_16=dojo.hitch(this,_1,_11,_15,_12);
+if(_12.selector=="year"){
+return _17(_15["dateFormatItem-yyyy"]||"yyyy",_16);
+}
+var _18;
+if(_12.selector!="date"){
+_18=_12.timePattern||_15["timeFormat-"+_14];
+if(_18){
+str.push(_17(_18,_16));
+}
+}
+if(_12.selector!="time"){
+_18=_12.datePattern||_15["dateFormat-"+_14];
+if(_18){
+str.push(_17(_18,_16));
+}
+}
+return str.length==1?str[0]:_15["dateTimeFormat-"+_14].replace(/\{(\d+)\}/g,function(_19,key){
+return str[key];
+});
+};
+dojo.date.locale.regexp=function(_1a){
+return dojo.date.locale._parseInfo(_1a).regexp;
+};
+dojo.date.locale._parseInfo=function(_1b){
+_1b=_1b||{};
+var _1c=dojo.i18n.normalizeLocale(_1b.locale),_1d=dojo.date.locale._getGregorianBundle(_1c),_1e=_1b.formatLength||"short",_1f=_1b.datePattern||_1d["dateFormat-"+_1e],_20=_1b.timePattern||_1d["timeFormat-"+_1e],_21;
+if(_1b.selector=="date"){
+_21=_1f;
+}else{
+if(_1b.selector=="time"){
+_21=_20;
+}else{
+_21=_1d["dateTimeFormat-"+_1e].replace(/\{(\d+)\}/g,function(_22,key){
+return [_20,_1f][key];
+});
+}
+}
+var _23=[],re=_17(_21,dojo.hitch(this,_24,_23,_1d,_1b));
+return {regexp:re,tokens:_23,bundle:_1d};
+};
+dojo.date.locale.parse=function(_25,_26){
+var _27=dojo.date.locale._parseInfo(_26),_28=_27.tokens,_29=_27.bundle,re=new RegExp("^"+_27.regexp+"$",_27.strict?"":"i"),_2a=re.exec(_25);
+if(!_2a){
+return null;
+}
+var _2b=["abbr","wide","narrow"],_2c=[1970,0,1,0,0,0,0],_2d="",_2e=dojo.every(_2a,function(v,i){
+if(!i){
+return true;
+}
+var _2f=_28[i-1];
+var l=_2f.length;
+switch(_2f.charAt(0)){
+case "y":
+if(l!=2&&_26.strict){
+_2c[0]=v;
+}else{
+if(v<100){
+v=Number(v);
+var _30=""+new Date().getFullYear(),_31=_30.substring(0,2)*100,_32=Math.min(Number(_30.substring(2,4))+20,99),num=(v<_32)?_31+v:_31-100+v;
+_2c[0]=num;
+}else{
+if(_26.strict){
+return false;
+}
+_2c[0]=v;
+}
+}
+break;
+case "M":
+if(l>2){
+var _33=_29["months-format-"+_2b[l-3]].concat();
+if(!_26.strict){
+v=v.replace(".","").toLowerCase();
+_33=dojo.map(_33,function(s){
+return s.replace(".","").toLowerCase();
+});
+}
+v=dojo.indexOf(_33,v);
+if(v==-1){
+return false;
+}
+}else{
+v--;
+}
+_2c[1]=v;
+break;
+case "E":
+case "e":
+var _34=_29["days-format-"+_2b[l-3]].concat();
+if(!_26.strict){
+v=v.toLowerCase();
+_34=dojo.map(_34,function(d){
+return d.toLowerCase();
+});
+}
+v=dojo.indexOf(_34,v);
+if(v==-1){
+return false;
+}
+break;
+case "D":
+_2c[1]=0;
+case "d":
+_2c[2]=v;
+break;
+case "a":
+var am=_26.am||_29["dayPeriods-format-wide-am"],pm=_26.pm||_29["dayPeriods-format-wide-pm"];
+if(!_26.strict){
+var _35=/\./g;
+v=v.replace(_35,"").toLowerCase();
+am=am.replace(_35,"").toLowerCase();
+pm=pm.replace(_35,"").toLowerCase();
+}
+if(_26.strict&&v!=am&&v!=pm){
+return false;
+}
+_2d=(v==pm)?"p":(v==am)?"a":"";
+break;
+case "K":
+if(v==24){
+v=0;
+}
+case "h":
+case "H":
+case "k":
+if(v>23){
+return false;
+}
+_2c[3]=v;
+break;
+case "m":
+_2c[4]=v;
+break;
+case "s":
+_2c[5]=v;
+break;
+case "S":
+_2c[6]=v;
+}
+return true;
+});
+var _36=+_2c[3];
+if(_2d==="p"&&_36<12){
+_2c[3]=_36+12;
+}else{
+if(_2d==="a"&&_36==12){
+_2c[3]=0;
+}
+}
+var _37=new Date(_2c[0],_2c[1],_2c[2],_2c[3],_2c[4],_2c[5],_2c[6]);
+if(_26.strict){
+_37.setFullYear(_2c[0]);
+}
+var _38=_28.join(""),_39=_38.indexOf("d")!=-1,_3a=_38.indexOf("M")!=-1;
+if(!_2e||(_3a&&_37.getMonth()>_2c[1])||(_39&&_37.getDate()>_2c[2])){
+return null;
+}
+if((_3a&&_37.getMonth()<_2c[1])||(_39&&_37.getDate()<_2c[2])){
+_37=dojo.date.add(_37,"hour",1);
+}
+return _37;
+};
+function _17(_3b,_3c,_3d,_3e){
+var _3f=function(x){
+return x;
+};
+_3c=_3c||_3f;
+_3d=_3d||_3f;
+_3e=_3e||_3f;
+var _40=_3b.match(/(''|[^'])+/g),_41=_3b.charAt(0)=="'";
+dojo.forEach(_40,function(_42,i){
+if(!_42){
+_40[i]="";
+}else{
+_40[i]=(_41?_3d:_3c)(_42.replace(/''/g,"'"));
+_41=!_41;
+}
+});
+return _3e(_40.join(""));
+};
+function _24(_43,_44,_45,_46){
+_46=dojo.regexp.escapeString(_46);
+if(!_45.strict){
+_46=_46.replace(" a"," ?a");
+}
+return _46.replace(/([a-z])\1*/ig,function(_47){
+var s,c=_47.charAt(0),l=_47.length,p2="",p3="";
+if(_45.strict){
+if(l>1){
+p2="0"+"{"+(l-1)+"}";
+}
+if(l>2){
+p3="0"+"{"+(l-2)+"}";
+}
+}else{
+p2="0?";
+p3="0{0,2}";
+}
+switch(c){
+case "y":
+s="\\d{2,4}";
+break;
+case "M":
+s=(l>2)?"\\S+?":p2+"[1-9]|1[0-2]";
+break;
+case "D":
+s=p2+"[1-9]|"+p3+"[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6]";
+break;
+case "d":
+s="3[01]|[12]\\d|"+p2+"[1-9]";
+break;
+case "w":
+s=p2+"[1-9]|[1-4][0-9]|5[0-3]";
+break;
+case "E":
+s="\\S+";
+break;
+case "h":
+s=p2+"[1-9]|1[0-2]";
+break;
+case "k":
+s=p2+"\\d|1[01]";
+break;
+case "H":
+s=p2+"\\d|1\\d|2[0-3]";
+break;
+case "K":
+s=p2+"[1-9]|1\\d|2[0-4]";
+break;
+case "m":
+case "s":
+s="[0-5]\\d";
+break;
+case "S":
+s="\\d{"+l+"}";
+break;
+case "a":
+var am=_45.am||_44["dayPeriods-format-wide-am"],pm=_45.pm||_44["dayPeriods-format-wide-pm"];
+if(_45.strict){
+s=am+"|"+pm;
+}else{
+s=am+"|"+pm;
+if(am!=am.toLowerCase()){
+s+="|"+am.toLowerCase();
+}
+if(pm!=pm.toLowerCase()){
+s+="|"+pm.toLowerCase();
+}
+if(s.indexOf(".")!=-1){
+s+="|"+s.replace(/\./g,"");
+}
+}
+s=s.replace(/\./g,"\\.");
+break;
+default:
+s=".*";
+}
+if(_43){
+_43.push(_47);
+}
+return "("+s+")";
+}).replace(/[\xa0 ]/g,"[\\s\\xa0]");
+};
+})();
+(function(){
+var _48=[];
+dojo.date.locale.addCustomFormats=function(_49,_4a){
+_48.push({pkg:_49,name:_4a});
+};
+dojo.date.locale._getGregorianBundle=function(_4b){
+var _4c={};
+dojo.forEach(_48,function(_4d){
+var _4e=dojo.i18n.getLocalization(_4d.pkg,_4d.name,_4b);
+_4c=dojo.mixin(_4c,_4e);
+},this);
+return _4c;
+};
+})();
+dojo.date.locale.addCustomFormats("dojo.cldr","gregorian");
+dojo.date.locale.getNames=function(_4f,_50,_51,_52){
+var _53,_54=dojo.date.locale._getGregorianBundle(_52),_55=[_4f,_51,_50];
+if(_51=="standAlone"){
+var key=_55.join("-");
+_53=_54[key];
+if(_53[0]==1){
+_53=undefined;
+}
+}
+_55[1]="format";
+return (_53||_54[_55.join("-")]).concat();
+};
+dojo.date.locale.isWeekend=function(_56,_57){
+var _58=dojo.cldr.supplemental.getWeekend(_57),day=(_56||new Date()).getDay();
+if(_58.end<_58.start){
+_58.end+=7;
+if(day<_58.start){
+day+=7;
+}
+}
+return day>=_58.start&&day<=_58.end;
+};
+dojo.date.locale._getDayOfYear=function(_59){
+return dojo.date.difference(new Date(_59.getFullYear(),0,1,_59.getHours()),_59)+1;
+};
+dojo.date.locale._getWeekOfYear=function(_5a,_5b){
+if(arguments.length==1){
+_5b=0;
+}
+var _5c=new Date(_5a.getFullYear(),0,1).getDay(),adj=(_5c-_5b+7)%7,_5d=Math.floor((dojo.date.locale._getDayOfYear(_5a)+adj-1)/7);
+if(_5c==_5b){
+_5d++;
+}
+return _5d;
+};
+}
diff --git a/lib/dojo/date/stamp.js b/lib/dojo/date/stamp.js
new file mode 100644 (file)
index 0000000..17c5308
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.date.stamp"]){
+dojo._hasResource["dojo.date.stamp"]=true;
+dojo.provide("dojo.date.stamp");
+dojo.date.stamp.fromISOString=function(_1,_2){
+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 _3=dojo.date.stamp._isoRegExp.exec(_1),_4=null;
+if(_3){
+_3.shift();
+if(_3[1]){
+_3[1]--;
+}
+if(_3[6]){
+_3[6]*=1000;
+}
+if(_2){
+_2=new Date(_2);
+dojo.forEach(dojo.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(_5){
+return _2["get"+_5]();
+}),function(_6,_7){
+_3[_7]=_3[_7]||_6;
+});
+}
+_4=new Date(_3[0]||1970,_3[1]||0,_3[2]||1,_3[3]||0,_3[4]||0,_3[5]||0,_3[6]||0);
+if(_3[0]<100){
+_4.setFullYear(_3[0]||1970);
+}
+var _8=0,_9=_3[7]&&_3[7].charAt(0);
+if(_9!="Z"){
+_8=((_3[8]||0)*60)+(Number(_3[9])||0);
+if(_9!="-"){
+_8*=-1;
+}
+}
+if(_9){
+_8-=_4.getTimezoneOffset();
+}
+if(_8){
+_4.setTime(_4.getTime()+_8*60000);
+}
+}
+return _4;
+};
+dojo.date.stamp.toISOString=function(_a,_b){
+var _c=function(n){
+return (n<10)?"0"+n:n;
+};
+_b=_b||{};
+var _d=[],_e=_b.zulu?"getUTC":"get",_f="";
+if(_b.selector!="time"){
+var _10=_a[_e+"FullYear"]();
+_f=["0000".substr((_10+"").length)+_10,_c(_a[_e+"Month"]()+1),_c(_a[_e+"Date"]())].join("-");
+}
+_d.push(_f);
+if(_b.selector!="date"){
+var _11=[_c(_a[_e+"Hours"]()),_c(_a[_e+"Minutes"]()),_c(_a[_e+"Seconds"]())].join(":");
+var _12=_a[_e+"Milliseconds"]();
+if(_b.milliseconds){
+_11+="."+(_12<100?"0":"")+_c(_12);
+}
+if(_b.zulu){
+_11+="Z";
+}else{
+if(_b.selector!="time"){
+var _13=_a.getTimezoneOffset();
+var _14=Math.abs(_13);
+_11+=(_13>0?"-":"+")+_c(Math.floor(_14/60))+":"+_c(_14%60);
+}
+}
+_d.push(_11);
+}
+return _d.join("T");
+};
+}
diff --git a/lib/dojo/dnd/Avatar.js b/lib/dojo/dnd/Avatar.js
new file mode 100644 (file)
index 0000000..0576680
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.Avatar"]){
+dojo._hasResource["dojo.dnd.Avatar"]=true;
+dojo.provide("dojo.dnd.Avatar");
+dojo.require("dojo.dnd.common");
+dojo.declare("dojo.dnd.Avatar",null,{constructor:function(_1){
+this.manager=_1;
+this.construct();
+},construct:function(){
+this.isA11y=dojo.hasClass(dojo.body(),"dijit_a11y");
+var a=dojo.create("table",{"class":"dojoDndAvatar",style:{position:"absolute",zIndex:"1999",margin:"0px"}}),_2=this.manager.source,_3,b=dojo.create("tbody",null,a),tr=dojo.create("tr",null,b),td=dojo.create("td",null,tr),_4=this.isA11y?dojo.create("span",{id:"a11yIcon",innerHTML:this.manager.copy?"+":"<"},td):null,_5=dojo.create("span",{innerHTML:_2.generateText?this._generateText():""},td),k=Math.min(5,this.manager.nodes.length),i=0;
+dojo.attr(tr,{"class":"dojoDndAvatarHeader",style:{opacity:0.9}});
+for(;i<k;++i){
+if(_2.creator){
+_3=_2._normalizedCreator(_2.getItem(this.manager.nodes[i].id).data,"avatar").node;
+}else{
+_3=this.manager.nodes[i].cloneNode(true);
+if(_3.tagName.toLowerCase()=="tr"){
+var _6=dojo.create("table"),_7=dojo.create("tbody",null,_6);
+_7.appendChild(_3);
+_3=_6;
+}
+}
+_3.id="";
+tr=dojo.create("tr",null,b);
+td=dojo.create("td",null,tr);
+td.appendChild(_3);
+dojo.attr(tr,{"class":"dojoDndAvatarItem",style:{opacity:(9-i)/10}});
+}
+this.node=a;
+},destroy:function(){
+dojo.destroy(this.node);
+this.node=false;
+},update:function(){
+dojo[(this.manager.canDropFlag?"add":"remove")+"Class"](this.node,"dojoDndAvatarCanDrop");
+if(this.isA11y){
+var _8=dojo.byId("a11yIcon");
+var _9="+";
+if(this.manager.canDropFlag&&!this.manager.copy){
+_9="< ";
+}else{
+if(!this.manager.canDropFlag&&!this.manager.copy){
+_9="o";
+}else{
+if(!this.manager.canDropFlag){
+_9="x";
+}
+}
+}
+_8.innerHTML=_9;
+}
+dojo.query(("tr.dojoDndAvatarHeader td span"+(this.isA11y?" span":"")),this.node).forEach(function(_a){
+_a.innerHTML=this._generateText();
+},this);
+},_generateText:function(){
+return this.manager.nodes.length.toString();
+}});
+}
diff --git a/lib/dojo/dnd/Container.js b/lib/dojo/dnd/Container.js
new file mode 100644 (file)
index 0000000..01e4ce2
--- /dev/null
@@ -0,0 +1,235 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.Container"]){
+dojo._hasResource["dojo.dnd.Container"]=true;
+dojo.provide("dojo.dnd.Container");
+dojo.require("dojo.dnd.common");
+dojo.require("dojo.parser");
+dojo.declare("dojo.dnd.Container",null,{skipForm:false,constructor:function(_1,_2){
+this.node=dojo.byId(_1);
+if(!_2){
+_2={};
+}
+this.creator=_2.creator||null;
+this.skipForm=_2.skipForm;
+this.parent=_2.dropParent&&dojo.byId(_2.dropParent);
+this.map={};
+this.current=null;
+this.containerState="";
+dojo.addClass(this.node,"dojoDndContainer");
+if(!(_2&&_2._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(_3){
+return this.map[_3];
+},setItem:function(_4,_5){
+this.map[_4]=_5;
+},delItem:function(_6){
+delete this.map[_6];
+},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 _7={};
+this.getAllNodes().forEach(function(_8){
+if(_8.id){
+var _9=this.getItem(_8.id);
+if(_9){
+_7[_8.id]=_9;
+return;
+}
+}else{
+_8.id=dojo.dnd.getUniqueId();
+}
+var _a=_8.getAttribute("dndType"),_b=_8.getAttribute("dndData");
+_7[_8.id]={data:_b||_8.innerHTML,type:_a?_a.split(/\s*,\s*/):["text"]};
+},this);
+this.map=_7;
+return this;
+},insertNodes:function(_c,_d,_e){
+if(!this.parent.firstChild){
+_e=null;
+}else{
+if(_d){
+if(!_e){
+_e=this.parent.firstChild;
+}
+}else{
+if(_e){
+_e=_e.nextSibling;
+}
+}
+}
+if(_e){
+for(var i=0;i<_c.length;++i){
+var t=this._normalizedCreator(_c[i]);
+this.setItem(t.node.id,{data:t.data,type:t.type});
+this.parent.insertBefore(t.node,_e);
+}
+}else{
+for(var i=0;i<_c.length;++i){
+var t=this._normalizedCreator(_c[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(_f,_10){
+_f._skipStartup=true;
+return new dojo.dnd.Container(_10,_f);
+},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(_11,_12){
+var _13="dojoDnd"+_11;
+var _14=_11.toLowerCase()+"State";
+dojo.removeClass(this.node,_13+this[_14]);
+dojo.addClass(this.node,_13+_12);
+this[_14]=_12;
+},_addItemClass:function(_15,_16){
+dojo.addClass(_15,"dojoDndItem"+_16);
+},_removeItemClass:function(_17,_18){
+dojo.removeClass(_17,"dojoDndItem"+_18);
+},_getChildByEvent:function(e){
+var _19=e.target;
+if(_19){
+for(var _1a=_19.parentNode;_1a;_19=_1a,_1a=_19.parentNode){
+if(_1a==this.parent&&dojo.hasClass(_19,"dojoDndItem")){
+return _19;
+}
+}
+}
+return null;
+},_normalizedCreator:function(_1b,_1c){
+var t=(this.creator||this.defaultCreator).call(this,_1b,_1c);
+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(_1d){
+return dojo.create(tag,{innerHTML:_1d});
+};
+};
+dojo.dnd._createTrTd=function(_1e){
+var tr=dojo.create("tr");
+dojo.create("td",{innerHTML:_1e},tr);
+return tr;
+};
+dojo.dnd._createSpan=function(_1f){
+return dojo.create("span",{innerHTML:_1f});
+};
+dojo.dnd._defaultCreatorNodes={ul:"li",ol:"li",div:"div",p:"div"};
+dojo.dnd._defaultCreator=function(_20){
+var tag=_20.tagName.toLowerCase();
+var c=tag=="tbody"||tag=="thead"?dojo.dnd._createTrTd:dojo.dnd._createNode(dojo.dnd._defaultCreatorNodes[tag]);
+return function(_21,_22){
+var _23=_21&&dojo.isObject(_21),_24,_25,n;
+if(_23&&_21.tagName&&_21.nodeType&&_21.getAttribute){
+_24=_21.getAttribute("dndData")||_21.innerHTML;
+_25=_21.getAttribute("dndType");
+_25=_25?_25.split(/\s*,\s*/):["text"];
+n=_21;
+}else{
+_24=(_23&&_21.data)?_21.data:_21;
+_25=(_23&&_21.type)?_21.type:["text"];
+n=(_22=="avatar"?dojo.dnd._createSpan:c)(String(_24));
+}
+if(!n.id){
+n.id=dojo.dnd.getUniqueId();
+}
+return {node:n,data:_24,type:_25};
+};
+};
+}
diff --git a/lib/dojo/dnd/Manager.js b/lib/dojo/dnd/Manager.js
new file mode 100644 (file)
index 0000000..c6f91aa
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.Manager"]){
+dojo._hasResource["dojo.dnd.Manager"]=true;
+dojo.provide("dojo.dnd.Manager");
+dojo.require("dojo.dnd.common");
+dojo.require("dojo.dnd.autoscroll");
+dojo.require("dojo.dnd.Avatar");
+dojo.declare("dojo.dnd.Manager",null,{constructor:function(){
+this.avatar=null;
+this.source=null;
+this.nodes=[];
+this.copy=true;
+this.target=null;
+this.canDropFlag=false;
+this.events=[];
+},OFFSET_X:16,OFFSET_Y:16,overSource:function(_1){
+if(this.avatar){
+this.target=(_1&&_1.targetState!="Disabled")?_1:null;
+this.canDropFlag=Boolean(this.target);
+this.avatar.update();
+}
+dojo.publish("/dnd/source/over",[_1]);
+},outSource:function(_2){
+if(this.avatar){
+if(this.target==_2){
+this.target=null;
+this.canDropFlag=false;
+this.avatar.update();
+dojo.publish("/dnd/source/over",[null]);
+}
+}else{
+dojo.publish("/dnd/source/over",[null]);
+}
+},startDrag:function(_3,_4,_5){
+this.source=_3;
+this.nodes=_4;
+this.copy=Boolean(_5);
+this.avatar=this.makeAvatar();
+dojo.body().appendChild(this.avatar.node);
+dojo.publish("/dnd/start",[_3,_4,this.copy]);
+this.events=[dojo.connect(dojo.doc,"onmousemove",this,"onMouseMove"),dojo.connect(dojo.doc,"onmouseup",this,"onMouseUp"),dojo.connect(dojo.doc,"onkeydown",this,"onKeyDown"),dojo.connect(dojo.doc,"onkeyup",this,"onKeyUp"),dojo.connect(dojo.doc,"ondragstart",dojo.stopEvent),dojo.connect(dojo.body(),"onselectstart",dojo.stopEvent)];
+var c="dojoDnd"+(_5?"Copy":"Move");
+dojo.addClass(dojo.body(),c);
+},canDrop:function(_6){
+var _7=Boolean(this.target&&_6);
+if(this.canDropFlag!=_7){
+this.canDropFlag=_7;
+this.avatar.update();
+}
+},stopDrag:function(){
+dojo.removeClass(dojo.body(),"dojoDndCopy");
+dojo.removeClass(dojo.body(),"dojoDndMove");
+dojo.forEach(this.events,dojo.disconnect);
+this.events=[];
+this.avatar.destroy();
+this.avatar=null;
+this.source=this.target=null;
+this.nodes=[];
+},makeAvatar:function(){
+return new dojo.dnd.Avatar(this);
+},updateAvatar:function(){
+this.avatar.update();
+},onMouseMove:function(e){
+var a=this.avatar;
+if(a){
+dojo.dnd.autoScrollNodes(e);
+var s=a.node.style;
+s.left=(e.pageX+this.OFFSET_X)+"px";
+s.top=(e.pageY+this.OFFSET_Y)+"px";
+var _8=Boolean(this.source.copyState(dojo.isCopyKey(e)));
+if(this.copy!=_8){
+this._setCopyStatus(_8);
+}
+}
+},onMouseUp:function(e){
+if(this.avatar){
+if(this.target&&this.canDropFlag){
+var _9=Boolean(this.source.copyState(dojo.isCopyKey(e))),_a=[this.source,this.nodes,_9,this.target,e];
+dojo.publish("/dnd/drop/before",_a);
+dojo.publish("/dnd/drop",_a);
+}else{
+dojo.publish("/dnd/cancel");
+}
+this.stopDrag();
+}
+},onKeyDown:function(e){
+if(this.avatar){
+switch(e.keyCode){
+case dojo.keys.CTRL:
+var _b=Boolean(this.source.copyState(true));
+if(this.copy!=_b){
+this._setCopyStatus(_b);
+}
+break;
+case dojo.keys.ESCAPE:
+dojo.publish("/dnd/cancel");
+this.stopDrag();
+break;
+}
+}
+},onKeyUp:function(e){
+if(this.avatar&&e.keyCode==dojo.keys.CTRL){
+var _c=Boolean(this.source.copyState(false));
+if(this.copy!=_c){
+this._setCopyStatus(_c);
+}
+}
+},_setCopyStatus:function(_d){
+this.copy=_d;
+this.source._markDndStatus(this.copy);
+this.updateAvatar();
+dojo.removeClass(dojo.body(),"dojoDnd"+(this.copy?"Move":"Copy"));
+dojo.addClass(dojo.body(),"dojoDnd"+(this.copy?"Copy":"Move"));
+}});
+dojo.dnd._manager=null;
+dojo.dnd.manager=function(){
+if(!dojo.dnd._manager){
+dojo.dnd._manager=new dojo.dnd.Manager();
+}
+return dojo.dnd._manager;
+};
+}
diff --git a/lib/dojo/dnd/Moveable.js b/lib/dojo/dnd/Moveable.js
new file mode 100644 (file)
index 0000000..17d8d92
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.Moveable"]){
+dojo._hasResource["dojo.dnd.Moveable"]=true;
+dojo.provide("dojo.dnd.Moveable");
+dojo.require("dojo.dnd.Mover");
+dojo.declare("dojo.dnd.Moveable",null,{handle:"",delay:0,skip:false,constructor:function(_1,_2){
+this.node=dojo.byId(_1);
+if(!_2){
+_2={};
+}
+this.handle=_2.handle?dojo.byId(_2.handle):null;
+if(!this.handle){
+this.handle=this.node;
+}
+this.delay=_2.delay>0?_2.delay:0;
+this.skip=_2.skip;
+this.mover=_2.mover?_2.mover:dojo.dnd.Mover;
+this.events=[dojo.connect(this.handle,"onmousedown",this,"onMouseDown"),dojo.connect(this.handle,"ondragstart",this,"onSelectStart"),dojo.connect(this.handle,"onselectstart",this,"onSelectStart")];
+},markupFactory:function(_3,_4){
+return new dojo.dnd.Moveable(_4,_3);
+},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,"onmouseup",this,"onMouseUp"));
+this._lastX=e.pageX;
+this._lastY=e.pageY;
+}else{
+this.onDragDetected(e);
+}
+dojo.stopEvent(e);
+},onMouseMove:function(e){
+if(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.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(_5){
+dojo.publish("/dnd/move/start",[_5]);
+dojo.addClass(dojo.body(),"dojoMove");
+dojo.addClass(this.node,"dojoMoveItem");
+},onMoveStop:function(_6){
+dojo.publish("/dnd/move/stop",[_6]);
+dojo.removeClass(dojo.body(),"dojoMove");
+dojo.removeClass(this.node,"dojoMoveItem");
+},onFirstMove:function(_7,e){
+},onMove:function(_8,_9,e){
+this.onMoving(_8,_9);
+var s=_8.node.style;
+s.left=_9.l+"px";
+s.top=_9.t+"px";
+this.onMoved(_8,_9);
+},onMoving:function(_a,_b){
+},onMoved:function(_c,_d){
+}});
+}
diff --git a/lib/dojo/dnd/Mover.js b/lib/dojo/dnd/Mover.js
new file mode 100644 (file)
index 0000000..6ea793e
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.Mover"]){
+dojo._hasResource["dojo.dnd.Mover"]=true;
+dojo.provide("dojo.dnd.Mover");
+dojo.require("dojo.dnd.common");
+dojo.require("dojo.dnd.autoscroll");
+dojo.declare("dojo.dnd.Mover",null,{constructor:function(_1,e,_2){
+this.node=dojo.byId(_1);
+this.marginBox={l:e.pageX,t:e.pageY};
+this.mouseButton=e.button;
+var h=this.host=_2,d=_1.ownerDocument,_3=dojo.connect(d,"onmousemove",this,"onFirstMove");
+this.events=[dojo.connect(d,"onmousemove",this,"onMouseMove"),dojo.connect(d,"onmouseup",this,"onMouseUp"),dojo.connect(d,"ondragstart",dojo.stopEvent),dojo.connect(d.body,"onselectstart",dojo.stopEvent),_3];
+if(h&&h.onMoveStart){
+h.onMoveStart(this);
+}
+},onMouseMove:function(e){
+dojo.dnd.autoScroll(e);
+var m=this.marginBox;
+this.host.onMove(this,{l:m.l+e.pageX,t:m.t+e.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.pop());
+},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;
+}});
+}
diff --git a/lib/dojo/dnd/Selector.js b/lib/dojo/dnd/Selector.js
new file mode 100644 (file)
index 0000000..95c1bff
--- /dev/null
@@ -0,0 +1,239 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.Selector"]){
+dojo._hasResource["dojo.dnd.Selector"]=true;
+dojo.provide("dojo.dnd.Selector");
+dojo.require("dojo.dnd.common");
+dojo.require("dojo.dnd.Container");
+dojo.declare("dojo.dnd.Selector",dojo.dnd.Container,{constructor:function(_1,_2){
+if(!_2){
+_2={};
+}
+this.singular=_2.singular;
+this.autoSync=_2.autoSync;
+this.selection={};
+this.anchor=null;
+this.simpleSelection=false;
+this.events.push(dojo.connect(this.node,"onmousedown",this,"onMouseDown"),dojo.connect(this.node,"onmouseup",this,"onMouseUp"));
+},singular:false,getSelectedNodes:function(){
+var t=new dojo.NodeList();
+var e=dojo.dnd._empty;
+for(var i in this.selection){
+if(i in e){
+continue;
+}
+t.push(dojo.byId(i));
+}
+return t;
+},selectNone:function(){
+return this._removeSelection()._removeAnchor();
+},selectAll:function(){
+this.forInItems(function(_3,id){
+this._addItemClass(dojo.byId(id),"Selected");
+this.selection[id]=1;
+},this);
+return this._removeAnchor();
+},deleteSelectedNodes:function(){
+var e=dojo.dnd._empty;
+for(var i in this.selection){
+if(i in e){
+continue;
+}
+var n=dojo.byId(i);
+this.delItem(i);
+dojo.destroy(n);
+}
+this.anchor=null;
+this.selection={};
+return this;
+},forInSelectedItems:function(f,o){
+o=o||dojo.global;
+var s=this.selection,e=dojo.dnd._empty;
+for(var i in s){
+if(i in e){
+continue;
+}
+f.call(o,this.getItem(i),i,this);
+}
+},sync:function(){
+dojo.dnd.Selector.superclass.sync.call(this);
+if(this.anchor){
+if(!this.getItem(this.anchor.id)){
+this.anchor=null;
+}
+}
+var t=[],e=dojo.dnd._empty;
+for(var i in this.selection){
+if(i in e){
+continue;
+}
+if(!this.getItem(i)){
+t.push(i);
+}
+}
+dojo.forEach(t,function(i){
+delete this.selection[i];
+},this);
+return this;
+},insertNodes:function(_4,_5,_6,_7){
+var _8=this._normalizedCreator;
+this._normalizedCreator=function(_9,_a){
+var t=_8.call(this,_9,_a);
+if(_4){
+if(!this.anchor){
+this.anchor=t.node;
+this._removeItemClass(t.node,"Selected");
+this._addItemClass(this.anchor,"Anchor");
+}else{
+if(this.anchor!=t.node){
+this._removeItemClass(t.node,"Anchor");
+this._addItemClass(t.node,"Selected");
+}
+}
+this.selection[t.node.id]=1;
+}else{
+this._removeItemClass(t.node,"Selected");
+this._removeItemClass(t.node,"Anchor");
+}
+return t;
+};
+dojo.dnd.Selector.superclass.insertNodes.call(this,_5,_6,_7);
+this._normalizedCreator=_8;
+return this;
+},destroy:function(){
+dojo.dnd.Selector.superclass.destroy.call(this);
+this.selection=this.anchor=null;
+},markupFactory:function(_b,_c){
+_b._skipStartup=true;
+return new dojo.dnd.Selector(_c,_b);
+},onMouseDown:function(e){
+if(this.autoSync){
+this.sync();
+}
+if(!this.current){
+return;
+}
+if(!this.singular&&!dojo.isCopyKey(e)&&!e.shiftKey&&(this.current.id in this.selection)){
+this.simpleSelection=true;
+if(e.button===dojo.mouseButtons.LEFT){
+dojo.stopEvent(e);
+}
+return;
+}
+if(!this.singular&&e.shiftKey){
+if(!dojo.isCopyKey(e)){
+this._removeSelection();
+}
+var c=this.getAllNodes();
+if(c.length){
+if(!this.anchor){
+this.anchor=c[0];
+this._addItemClass(this.anchor,"Anchor");
+}
+this.selection[this.anchor.id]=1;
+if(this.anchor!=this.current){
+var i=0;
+for(;i<c.length;++i){
+var _d=c[i];
+if(_d==this.anchor||_d==this.current){
+break;
+}
+}
+for(++i;i<c.length;++i){
+var _d=c[i];
+if(_d==this.anchor||_d==this.current){
+break;
+}
+this._addItemClass(_d,"Selected");
+this.selection[_d.id]=1;
+}
+this._addItemClass(this.current,"Selected");
+this.selection[this.current.id]=1;
+}
+}
+}else{
+if(this.singular){
+if(this.anchor==this.current){
+if(dojo.isCopyKey(e)){
+this.selectNone();
+}
+}else{
+this.selectNone();
+this.anchor=this.current;
+this._addItemClass(this.anchor,"Anchor");
+this.selection[this.current.id]=1;
+}
+}else{
+if(dojo.isCopyKey(e)){
+if(this.anchor==this.current){
+delete this.selection[this.anchor.id];
+this._removeAnchor();
+}else{
+if(this.current.id in this.selection){
+this._removeItemClass(this.current,"Selected");
+delete this.selection[this.current.id];
+}else{
+if(this.anchor){
+this._removeItemClass(this.anchor,"Anchor");
+this._addItemClass(this.anchor,"Selected");
+}
+this.anchor=this.current;
+this._addItemClass(this.current,"Anchor");
+this.selection[this.current.id]=1;
+}
+}
+}else{
+if(!(this.current.id in this.selection)){
+this.selectNone();
+this.anchor=this.current;
+this._addItemClass(this.current,"Anchor");
+this.selection[this.current.id]=1;
+}
+}
+}
+}
+dojo.stopEvent(e);
+},onMouseUp:function(e){
+if(!this.simpleSelection){
+return;
+}
+this.simpleSelection=false;
+this.selectNone();
+if(this.current){
+this.anchor=this.current;
+this._addItemClass(this.anchor,"Anchor");
+this.selection[this.current.id]=1;
+}
+},onMouseMove:function(e){
+this.simpleSelection=false;
+},onOverEvent:function(){
+this.onmousemoveEvent=dojo.connect(this.node,"onmousemove",this,"onMouseMove");
+},onOutEvent:function(){
+dojo.disconnect(this.onmousemoveEvent);
+delete this.onmousemoveEvent;
+},_removeSelection:function(){
+var e=dojo.dnd._empty;
+for(var i in this.selection){
+if(i in e){
+continue;
+}
+var _e=dojo.byId(i);
+if(_e){
+this._removeItemClass(_e,"Selected");
+}
+}
+this.selection={};
+return this;
+},_removeAnchor:function(){
+if(this.anchor){
+this._removeItemClass(this.anchor,"Anchor");
+this.anchor=null;
+}
+return this;
+}});
+}
diff --git a/lib/dojo/dnd/Source.js b/lib/dojo/dnd/Source.js
new file mode 100644 (file)
index 0000000..fb05eb0
--- /dev/null
@@ -0,0 +1,298 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.Source"]){
+dojo._hasResource["dojo.dnd.Source"]=true;
+dojo.provide("dojo.dnd.Source");
+dojo.require("dojo.dnd.Selector");
+dojo.require("dojo.dnd.Manager");
+dojo.declare("dojo.dnd.Source",dojo.dnd.Selector,{isSource:true,horizontal:false,copyOnly:false,selfCopy:false,selfAccept:true,skipForm:false,withHandles:false,autoSync:false,delay:0,accept:["text"],generateText:true,constructor:function(_1,_2){
+dojo.mixin(this,dojo.mixin({},_2));
+var _3=this.accept;
+if(_3.length){
+this.accept={};
+for(var i=0;i<_3.length;++i){
+this.accept[_3[i]]=1;
+}
+}
+this.isDragging=false;
+this.mouseDown=false;
+this.targetAnchor=null;
+this.targetBox=null;
+this.before=true;
+this._lastX=0;
+this._lastY=0;
+this.sourceState="";
+if(this.isSource){
+dojo.addClass(this.node,"dojoDndSource");
+}
+this.targetState="";
+if(this.accept){
+dojo.addClass(this.node,"dojoDndTarget");
+}
+if(this.horizontal){
+dojo.addClass(this.node,"dojoDndHorizontal");
+}
+this.topics=[dojo.subscribe("/dnd/source/over",this,"onDndSourceOver"),dojo.subscribe("/dnd/start",this,"onDndStart"),dojo.subscribe("/dnd/drop",this,"onDndDrop"),dojo.subscribe("/dnd/cancel",this,"onDndCancel")];
+},checkAcceptance:function(_4,_5){
+if(this==_4){
+return !this.copyOnly||this.selfAccept;
+}
+for(var i=0;i<_5.length;++i){
+var _6=_4.getItem(_5[i].id).type;
+var _7=false;
+for(var j=0;j<_6.length;++j){
+if(_6[j] in this.accept){
+_7=true;
+break;
+}
+}
+if(!_7){
+return false;
+}
+}
+return true;
+},copyState:function(_8,_9){
+if(_8){
+return true;
+}
+if(arguments.length<2){
+_9=this==dojo.dnd.manager().target;
+}
+if(_9){
+if(this.copyOnly){
+return this.selfCopy;
+}
+}else{
+return this.copyOnly;
+}
+return false;
+},destroy:function(){
+dojo.dnd.Source.superclass.destroy.call(this);
+dojo.forEach(this.topics,dojo.unsubscribe);
+this.targetAnchor=null;
+},markupFactory:function(_a,_b){
+_a._skipStartup=true;
+return new dojo.dnd.Source(_b,_a);
+},onMouseMove:function(e){
+if(this.isDragging&&this.targetState=="Disabled"){
+return;
+}
+dojo.dnd.Source.superclass.onMouseMove.call(this,e);
+var m=dojo.dnd.manager();
+if(!this.isDragging){
+if(this.mouseDown&&this.isSource&&(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.pageY-this._lastY)>this.delay)){
+var _c=this.getSelectedNodes();
+if(_c.length){
+m.startDrag(this,_c,this.copyState(dojo.isCopyKey(e),true));
+}
+}
+}
+if(this.isDragging){
+var _d=false;
+if(this.current){
+if(!this.targetBox||this.targetAnchor!=this.current){
+this.targetBox=dojo.position(this.current,true);
+}
+if(this.horizontal){
+_d=(e.pageX-this.targetBox.x)<(this.targetBox.w/2);
+}else{
+_d=(e.pageY-this.targetBox.y)<(this.targetBox.h/2);
+}
+}
+if(this.current!=this.targetAnchor||_d!=this.before){
+this._markTargetAnchor(_d);
+m.canDrop(!this.current||m.source!=this||!(this.current.id in this.selection));
+}
+}
+},onMouseDown:function(e){
+if(!this.mouseDown&&this._legalMouseDown(e)&&(!this.skipForm||!dojo.dnd.isFormElement(e))){
+this.mouseDown=true;
+this._lastX=e.pageX;
+this._lastY=e.pageY;
+dojo.dnd.Source.superclass.onMouseDown.call(this,e);
+}
+},onMouseUp:function(e){
+if(this.mouseDown){
+this.mouseDown=false;
+dojo.dnd.Source.superclass.onMouseUp.call(this,e);
+}
+},onDndSourceOver:function(_e){
+if(this!=_e){
+this.mouseDown=false;
+if(this.targetAnchor){
+this._unmarkTargetAnchor();
+}
+}else{
+if(this.isDragging){
+var m=dojo.dnd.manager();
+m.canDrop(this.targetState!="Disabled"&&(!this.current||m.source!=this||!(this.current.id in this.selection)));
+}
+}
+},onDndStart:function(_f,_10,_11){
+if(this.autoSync){
+this.sync();
+}
+if(this.isSource){
+this._changeState("Source",this==_f?(_11?"Copied":"Moved"):"");
+}
+var _12=this.accept&&this.checkAcceptance(_f,_10);
+this._changeState("Target",_12?"":"Disabled");
+if(this==_f){
+dojo.dnd.manager().overSource(this);
+}
+this.isDragging=true;
+},onDndDrop:function(_13,_14,_15,_16){
+if(this==_16){
+this.onDrop(_13,_14,_15);
+}
+this.onDndCancel();
+},onDndCancel:function(){
+if(this.targetAnchor){
+this._unmarkTargetAnchor();
+this.targetAnchor=null;
+}
+this.before=true;
+this.isDragging=false;
+this.mouseDown=false;
+this._changeState("Source","");
+this._changeState("Target","");
+},onDrop:function(_17,_18,_19){
+if(this!=_17){
+this.onDropExternal(_17,_18,_19);
+}else{
+this.onDropInternal(_18,_19);
+}
+},onDropExternal:function(_1a,_1b,_1c){
+var _1d=this._normalizedCreator;
+if(this.creator){
+this._normalizedCreator=function(_1e,_1f){
+return _1d.call(this,_1a.getItem(_1e.id).data,_1f);
+};
+}else{
+if(_1c){
+this._normalizedCreator=function(_20,_21){
+var t=_1a.getItem(_20.id);
+var n=_20.cloneNode(true);
+n.id=dojo.dnd.getUniqueId();
+return {node:n,data:t.data,type:t.type};
+};
+}else{
+this._normalizedCreator=function(_22,_23){
+var t=_1a.getItem(_22.id);
+_1a.delItem(_22.id);
+return {node:_22,data:t.data,type:t.type};
+};
+}
+}
+this.selectNone();
+if(!_1c&&!this.creator){
+_1a.selectNone();
+}
+this.insertNodes(true,_1b,this.before,this.current);
+if(!_1c&&this.creator){
+_1a.deleteSelectedNodes();
+}
+this._normalizedCreator=_1d;
+},onDropInternal:function(_24,_25){
+var _26=this._normalizedCreator;
+if(this.current&&this.current.id in this.selection){
+return;
+}
+if(_25){
+if(this.creator){
+this._normalizedCreator=function(_27,_28){
+return _26.call(this,this.getItem(_27.id).data,_28);
+};
+}else{
+this._normalizedCreator=function(_29,_2a){
+var t=this.getItem(_29.id);
+var n=_29.cloneNode(true);
+n.id=dojo.dnd.getUniqueId();
+return {node:n,data:t.data,type:t.type};
+};
+}
+}else{
+if(!this.current){
+return;
+}
+this._normalizedCreator=function(_2b,_2c){
+var t=this.getItem(_2b.id);
+return {node:_2b,data:t.data,type:t.type};
+};
+}
+this._removeSelection();
+this.insertNodes(true,_24,this.before,this.current);
+this._normalizedCreator=_26;
+},onDraggingOver:function(){
+},onDraggingOut:function(){
+},onOverEvent:function(){
+dojo.dnd.Source.superclass.onOverEvent.call(this);
+dojo.dnd.manager().overSource(this);
+if(this.isDragging&&this.targetState!="Disabled"){
+this.onDraggingOver();
+}
+},onOutEvent:function(){
+dojo.dnd.Source.superclass.onOutEvent.call(this);
+dojo.dnd.manager().outSource(this);
+if(this.isDragging&&this.targetState!="Disabled"){
+this.onDraggingOut();
+}
+},_markTargetAnchor:function(_2d){
+if(this.current==this.targetAnchor&&this.before==_2d){
+return;
+}
+if(this.targetAnchor){
+this._removeItemClass(this.targetAnchor,this.before?"Before":"After");
+}
+this.targetAnchor=this.current;
+this.targetBox=null;
+this.before=_2d;
+if(this.targetAnchor){
+this._addItemClass(this.targetAnchor,this.before?"Before":"After");
+}
+},_unmarkTargetAnchor:function(){
+if(!this.targetAnchor){
+return;
+}
+this._removeItemClass(this.targetAnchor,this.before?"Before":"After");
+this.targetAnchor=null;
+this.targetBox=null;
+this.before=true;
+},_markDndStatus:function(_2e){
+this._changeState("Source",_2e?"Copied":"Moved");
+},_legalMouseDown:function(e){
+if(!dojo.mouseButtons.isLeft(e)){
+return false;
+}
+if(!this.withHandles){
+return true;
+}
+for(var _2f=e.target;_2f&&_2f!==this.node;_2f=_2f.parentNode){
+if(dojo.hasClass(_2f,"dojoDndHandle")){
+return true;
+}
+if(dojo.hasClass(_2f,"dojoDndItem")||dojo.hasClass(_2f,"dojoDndIgnore")){
+break;
+}
+}
+return false;
+}});
+dojo.declare("dojo.dnd.Target",dojo.dnd.Source,{constructor:function(_30,_31){
+this.isSource=false;
+dojo.removeClass(this.node,"dojoDndSource");
+},markupFactory:function(_32,_33){
+_32._skipStartup=true;
+return new dojo.dnd.Target(_33,_32);
+}});
+dojo.declare("dojo.dnd.AutoSource",dojo.dnd.Source,{constructor:function(_34,_35){
+this.autoSync=true;
+},markupFactory:function(_36,_37){
+_36._skipStartup=true;
+return new dojo.dnd.AutoSource(_37,_36);
+}});
+}
diff --git a/lib/dojo/dnd/TimedMoveable.js b/lib/dojo/dnd/TimedMoveable.js
new file mode 100644 (file)
index 0000000..05609a3
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.TimedMoveable"]){
+dojo._hasResource["dojo.dnd.TimedMoveable"]=true;
+dojo.provide("dojo.dnd.TimedMoveable");
+dojo.require("dojo.dnd.Moveable");
+(function(){
+var _1=dojo.dnd.Moveable.prototype.onMove;
+dojo.declare("dojo.dnd.TimedMoveable",dojo.dnd.Moveable,{timeout:40,constructor:function(_2,_3){
+if(!_3){
+_3={};
+}
+if(_3.timeout&&typeof _3.timeout=="number"&&_3.timeout>=0){
+this.timeout=_3.timeout;
+}
+},markupFactory:function(_4,_5){
+return new dojo.dnd.TimedMoveable(_5,_4);
+},onMoveStop:function(_6){
+if(_6._timer){
+clearTimeout(_6._timer);
+_1.call(this,_6,_6._leftTop);
+}
+dojo.dnd.Moveable.prototype.onMoveStop.apply(this,arguments);
+},onMove:function(_7,_8){
+_7._leftTop=_8;
+if(!_7._timer){
+var _9=this;
+_7._timer=setTimeout(function(){
+_7._timer=null;
+_1.call(_9,_7,_7._leftTop);
+},this.timeout);
+}
+}});
+})();
+}
diff --git a/lib/dojo/dnd/autoscroll.js b/lib/dojo/dnd/autoscroll.js
new file mode 100644 (file)
index 0000000..27496c6
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.autoscroll"]){
+dojo._hasResource["dojo.dnd.autoscroll"]=true;
+dojo.provide("dojo.dnd.autoscroll");
+dojo.dnd.getViewport=function(){
+var d=dojo.doc,dd=d.documentElement,w=window,b=dojo.body();
+if(dojo.isMozilla){
+return {w:dd.clientWidth,h:w.innerHeight};
+}else{
+if(!dojo.isOpera&&w.innerWidth){
+return {w:w.innerWidth,h:w.innerHeight};
+}else{
+if(!dojo.isOpera&&dd&&dd.clientWidth){
+return {w:dd.clientWidth,h:dd.clientHeight};
+}else{
+if(b.clientWidth){
+return {w:b.clientWidth,h:b.clientHeight};
+}
+}
+}
+}
+return null;
+};
+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.dnd.getViewport(),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 _1=n.scrollLeft,_2=n.scrollTop;
+n.scrollLeft=n.scrollLeft+dx;
+n.scrollTop=n.scrollTop+dy;
+if(_1!=n.scrollLeft||_2!=n.scrollTop){
+return;
+}
+}
+}
+try{
+n=n.parentNode;
+}
+catch(x){
+n=null;
+}
+}
+dojo.dnd.autoScroll(e);
+};
+}
diff --git a/lib/dojo/dnd/common.js b/lib/dojo/dnd/common.js
new file mode 100644 (file)
index 0000000..d2d18f7
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.common"]){
+dojo._hasResource["dojo.dnd.common"]=true;
+dojo.provide("dojo.dnd.common");
+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;
+};
+}
diff --git a/lib/dojo/dnd/move.js b/lib/dojo/dnd/move.js
new file mode 100644 (file)
index 0000000..af7cd98
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.dnd.move"]){
+dojo._hasResource["dojo.dnd.move"]=true;
+dojo.provide("dojo.dnd.move");
+dojo.require("dojo.dnd.Mover");
+dojo.require("dojo.dnd.Moveable");
+dojo.declare("dojo.dnd.move.constrainedMoveable",dojo.dnd.Moveable,{constraints:function(){
+},within:false,markupFactory:function(_1,_2){
+return new dojo.dnd.move.constrainedMoveable(_2,_1);
+},constructor:function(_3,_4){
+if(!_4){
+_4={};
+}
+this.constraints=_4.constraints;
+this.within=_4.within;
+},onFirstMove:function(_5){
+var c=this.constraintBox=this.constraints.call(this,_5);
+c.r=c.l+c.w;
+c.b=c.t+c.h;
+if(this.within){
+var mb=dojo.marginBox(_5.node);
+c.r-=mb.w;
+c.b-=mb.h;
+}
+},onMove:function(_6,_7){
+var c=this.constraintBox,s=_6.node.style;
+s.left=(_7.l<c.l?c.l:c.r<_7.l?c.r:_7.l)+"px";
+s.top=(_7.t<c.t?c.t:c.b<_7.t?c.b:_7.t)+"px";
+}});
+dojo.declare("dojo.dnd.move.boxConstrainedMoveable",dojo.dnd.move.constrainedMoveable,{box:{},markupFactory:function(_8,_9){
+return new dojo.dnd.move.boxConstrainedMoveable(_9,_8);
+},constructor:function(_a,_b){
+var _c=_b&&_b.box;
+this.constraints=function(){
+return _c;
+};
+}});
+dojo.declare("dojo.dnd.move.parentConstrainedMoveable",dojo.dnd.move.constrainedMoveable,{area:"content",markupFactory:function(_d,_e){
+return new dojo.dnd.move.parentConstrainedMoveable(_e,_d);
+},constructor:function(_f,_10){
+var _11=_10&&_10.area;
+this.constraints=function(){
+var n=this.node.parentNode,s=dojo.getComputedStyle(n),mb=dojo._getMarginBox(n,s);
+if(_11=="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(_11=="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(_11=="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.move.constrainedMover=function(fun,_12){
+dojo.deprecated("dojo.dnd.move.constrainedMover, use dojo.dnd.move.constrainedMoveable instead");
+var _13=function(_14,e,_15){
+dojo.dnd.Mover.call(this,_14,e,_15);
+};
+dojo.extend(_13,dojo.dnd.Mover.prototype);
+dojo.extend(_13,{onMouseMove:function(e){
+dojo.dnd.autoScroll(e);
+var m=this.marginBox,c=this.constraintBox,l=m.l+e.pageX,t=m.t+e.pageY;
+l=l<c.l?c.l:c.r<l?c.r:l;
+t=t<c.t?c.t:c.b<t?c.b:t;
+this.host.onMove(this,{l:l,t:t});
+},onFirstMove:function(){
+dojo.dnd.Mover.prototype.onFirstMove.call(this);
+var c=this.constraintBox=fun.call(this);
+c.r=c.l+c.w;
+c.b=c.t+c.h;
+if(_12){
+var mb=dojo.marginBox(this.node);
+c.r-=mb.w;
+c.b-=mb.h;
+}
+}});
+return _13;
+};
+dojo.dnd.move.boxConstrainedMover=function(box,_16){
+dojo.deprecated("dojo.dnd.move.boxConstrainedMover, use dojo.dnd.move.boxConstrainedMoveable instead");
+return dojo.dnd.move.constrainedMover(function(){
+return box;
+},_16);
+};
+dojo.dnd.move.parentConstrainedMover=function(_17,_18){
+dojo.deprecated("dojo.dnd.move.parentConstrainedMover, use dojo.dnd.move.parentConstrainedMoveable instead");
+var fun=function(){
+var n=this.node.parentNode,s=dojo.getComputedStyle(n),mb=dojo._getMarginBox(n,s);
+if(_17=="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(_17=="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(_17=="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;
+};
+return dojo.dnd.move.constrainedMover(fun,_18);
+};
+dojo.dnd.constrainedMover=dojo.dnd.move.constrainedMover;
+dojo.dnd.boxConstrainedMover=dojo.dnd.move.boxConstrainedMover;
+dojo.dnd.parentConstrainedMover=dojo.dnd.move.parentConstrainedMover;
+}
diff --git a/lib/dojo/dojo.js b/lib/dojo/dojo.js
new file mode 100644 (file)
index 0000000..665870c
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+(function(){var _1=null;if((_1||(typeof djConfig!="undefined"&&djConfig.scopeMap))&&(typeof window!="undefined")){var _2="",_3="",_4="",_5={},_6={};_1=_1||djConfig.scopeMap;for(var i=0;i<_1.length;i++){var _7=_1[i];_2+="var "+_7[0]+" = {}; "+_7[1]+" = "+_7[0]+";"+_7[1]+"._scopeName = '"+_7[1]+"';";_3+=(i==0?"":",")+_7[0];_4+=(i==0?"":",")+_7[1];_5[_7[0]]=_7[1];_6[_7[1]]=_7[0];}eval(_2+"dojo._scopeArgs = ["+_4+"];");dojo._scopePrefixArgs=_3;dojo._scopePrefix="(function("+_3+"){";dojo._scopeSuffix="})("+_4+")";dojo._scopeMap=_5;dojo._scopeMapRev=_6;}(function(){if(typeof this["loadFirebugConsole"]=="function"){this["loadFirebugConsole"]();}else{this.console=this.console||{};var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var i=0,tn;while((tn=cn[i++])){if(!console[tn]){(function(){var _8=tn+"";console[_8]=("log" in console)?function(){var a=Array.apply({},arguments);a.unshift(_8+":");console["log"](a.join(" "));}:function(){};console[_8]._fake=true;})();}}}if(typeof dojo=="undefined"){dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};}var d=dojo;if(typeof dijit=="undefined"){dijit={_scopeName:"dijit"};}if(typeof dojox=="undefined"){dojox={_scopeName:"dojox"};}if(!d._scopeArgs){d._scopeArgs=[dojo,dijit,dojox];}d.global=this;d.config={isDebug:false,debugAtAllCosts:false};if(typeof djConfig!="undefined"){for(var _9 in djConfig){d.config[_9]=djConfig[_9];}}dojo.locale=d.config.locale;var _a="$Rev: 22487 $".match(/\d+/);dojo.version={major:1,minor:5,patch:0,flag:"",revision:_a?+_a[0]:NaN,toString:function(){with(d.version){return major+"."+minor+"."+patch+flag+" ("+revision+")";}}};if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());}var _b,_c,_d={};for(var i in {toString:1}){_b=[];break;}dojo._extraNames=_b=_b||["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];_c=_b.length;dojo._mixin=function(_e,_f){var _10,s,i;for(_10 in _f){s=_f[_10];if(!(_10 in _e)||(_e[_10]!==s&&(!(_10 in _d)||_d[_10]!==s))){_e[_10]=s;}}if(_c&&_f){for(i=0;i<_c;++i){_10=_b[i];s=_f[_10];if(!(_10 in _e)||(_e[_10]!==s&&(!(_10 in _d)||_d[_10]!==s))){_e[_10]=s;}}}return _e;};dojo.mixin=function(obj,_11){if(!obj){obj={};}for(var i=1,l=arguments.length;i<l;i++){d._mixin(obj,arguments[i]);}return obj;};dojo._getProp=function(_12,_13,_14){var obj=_14||d.global;for(var i=0,p;obj&&(p=_12[i]);i++){if(i==0&&d._scopeMap[p]){p=d._scopeMap[p];}obj=(p in obj?obj[p]:(_13?obj[p]={}:undefined));}return obj;};dojo.setObject=function(_15,_16,_17){var _18=_15.split("."),p=_18.pop(),obj=d._getProp(_18,true,_17);return obj&&p?(obj[p]=_16):undefined;};dojo.getObject=function(_19,_1a,_1b){return d._getProp(_19.split("."),_1a,_1b);};dojo.exists=function(_1c,obj){return !!d.getObject(_1c,false,obj);};dojo["eval"]=function(_1d){return d.global.eval?d.global.eval(_1d):eval(_1d);};d.deprecated=d.experimental=function(){};})();(function(){var d=dojo;d.mixin(d,{_loadedModules:{},_inFlightCount:0,_hasResource:{},_modulePrefixes:{dojo:{name:"dojo",value:"."},doh:{name:"doh",value:"../util/doh"},tests:{name:"tests",value:"tests"}},_moduleHasPrefix:function(_1e){var mp=d._modulePrefixes;return !!(mp[_1e]&&mp[_1e].value);},_getModulePrefix:function(_1f){var mp=d._modulePrefixes;if(d._moduleHasPrefix(_1f)){return mp[_1f].value;}return _1f;},_loadedUrls:[],_postLoad:false,_loaders:[],_unloaders:[],_loadNotifying:false});dojo._loadPath=function(_20,_21,cb){var uri=((_20.charAt(0)=="/"||_20.match(/^\w+:/))?"":d.baseUrl)+_20;try{return !_21?d._loadUri(uri,cb):d._loadUriAndCheck(uri,_21,cb);}catch(e){console.error(e);return false;}};dojo._loadUri=function(uri,cb){if(d._loadedUrls[uri]){return true;}d._inFlightCount++;var _22=d._getText(uri,true);if(_22){d._loadedUrls[uri]=true;d._loadedUrls.push(uri);if(cb){_22="("+_22+")";}else{_22=d._scopePrefix+_22+d._scopeSuffix;}if(!d.isIE){_22+="\r\n//@ sourceURL="+uri;}var _23=d["eval"](_22);if(cb){cb(_23);}}if(--d._inFlightCount==0&&d._postLoad&&d._loaders.length){setTimeout(function(){if(d._inFlightCount==0){d._callLoaded();}},0);}return !!_22;};dojo._loadUriAndCheck=function(uri,_24,cb){var ok=false;try{ok=d._loadUri(uri,cb);}catch(e){console.error("failed loading "+uri+" with error: "+e);}return !!(ok&&d._loadedModules[_24]);};dojo.loaded=function(){d._loadNotifying=true;d._postLoad=true;var mll=d._loaders;d._loaders=[];for(var x=0;x<mll.length;x++){mll[x]();}d._loadNotifying=false;if(d._postLoad&&d._inFlightCount==0&&mll.length){d._callLoaded();}};dojo.unloaded=function(){var mll=d._unloaders;while(mll.length){(mll.pop())();}};d._onto=function(arr,obj,fn){if(!fn){arr.push(obj);}else{if(fn){var _25=(typeof fn=="string")?obj[fn]:fn;arr.push(function(){_25.call(obj);});}}};dojo.ready=dojo.addOnLoad=function(obj,_26){d._onto(d._loaders,obj,_26);if(d._postLoad&&d._inFlightCount==0&&!d._loadNotifying){d._callLoaded();}};var dca=d.config.addOnLoad;if(dca){d.addOnLoad[(dca instanceof Array?"apply":"call")](d,dca);}dojo._modulesLoaded=function(){if(d._postLoad){return;}if(d._inFlightCount>0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(d.config.useXDomain&&d.isOpera)){setTimeout(d.isAIR?function(){d.loaded();}:d._scopeName+".loaded();",0);}else{d.loaded();}};dojo._getModuleSymbols=function(_27){var _28=_27.split(".");for(var i=_28.length;i>0;i--){var _29=_28.slice(0,i).join(".");if(i==1&&!d._moduleHasPrefix(_29)){_28[0]="../"+_28[0];}else{var _2a=d._getModulePrefix(_29);if(_2a!=_29){_28.splice(0,i,_2a);break;}}}return _28;};dojo._global_omit_module_check=false;dojo.loadInit=function(_2b){_2b();};dojo._loadModule=dojo.require=function(_2c,_2d){_2d=d._global_omit_module_check||_2d;var _2e=d._loadedModules[_2c];if(_2e){return _2e;}var _2f=d._getModuleSymbols(_2c).join("/")+".js";var _30=!_2d?_2c:null;var ok=d._loadPath(_2f,_30);if(!ok&&!_2d){throw new Error("Could not load '"+_2c+"'; last tried '"+_2f+"'");}if(!_2d&&!d._isXDomain){_2e=d._loadedModules[_2c];if(!_2e){throw new Error("symbol '"+_2c+"' is not defined after loading '"+_2f+"'");}}return _2e;};dojo.provide=function(_31){_31=_31+"";return (d._loadedModules[_31]=d.getObject(_31,true));};dojo.platformRequire=function(_32){var _33=_32.common||[];var _34=_33.concat(_32[d._name]||_32["default"]||[]);for(var x=0;x<_34.length;x++){var _35=_34[x];if(_35.constructor==Array){d._loadModule.apply(d,_35);}else{d._loadModule(_35);}}};dojo.requireIf=function(_36,_37){if(_36===true){var _38=[];for(var i=1;i<arguments.length;i++){_38.push(arguments[i]);}d.require.apply(d,_38);}};dojo.requireAfterIf=d.requireIf;dojo.registerModulePath=function(_39,_3a){d._modulePrefixes[_39]={name:_39,value:_3a};};dojo.requireLocalization=function(_3b,_3c,_3d,_3e){d.require("dojo.i18n");d.i18n._requireLocalization.apply(d.hostenv,arguments);};var ore=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),ire=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");dojo._Url=function(){var n=null,_3f=arguments,uri=[_3f[0]];for(var i=1;i<_3f.length;i++){if(!_3f[i]){continue;}var _40=new d._Url(_3f[i]+""),_41=new d._Url(uri[0]+"");if(_40.path==""&&!_40.scheme&&!_40.authority&&!_40.query){if(_40.fragment!=n){_41.fragment=_40.fragment;}_40=_41;}else{if(!_40.scheme){_40.scheme=_41.scheme;if(!_40.authority){_40.authority=_41.authority;if(_40.path.charAt(0)!="/"){var _42=_41.path.substring(0,_41.path.lastIndexOf("/")+1)+_40.path;var _43=_42.split("/");for(var j=0;j<_43.length;j++){if(_43[j]=="."){if(j==_43.length-1){_43[j]="";}else{_43.splice(j,1);j--;}}else{if(j>0&&!(j==1&&_43[0]=="")&&_43[j]==".."&&_43[j-1]!=".."){if(j==(_43.length-1)){_43.splice(j,1);_43[j-1]="";}else{_43.splice(j-1,2);j-=2;}}}}_40.path=_43.join("/");}}}}uri=[];if(_40.scheme){uri.push(_40.scheme,":");}if(_40.authority){uri.push("//",_40.authority);}uri.push(_40.path);if(_40.query){uri.push("?",_40.query);}if(_40.fragment){uri.push("#",_40.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_44,url){var loc=d._getModuleSymbols(_44).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _45=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_45==-1||_45>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();if(typeof window!="undefined"){dojo.isBrowser=true;dojo._name="browser";(function(){var d=dojo;if(document&&document.getElementsByTagName){var _46=document.getElementsByTagName("script");var _47=/dojo(\.xd)?\.js(\W|$)/i;for(var i=0;i<_46.length;i++){var src=_46[i].getAttribute("src");if(!src){continue;}var m=src.match(_47);if(m){if(!d.config.baseUrl){d.config.baseUrl=src.substring(0,m.index);}var cfg=_46[i].getAttribute("djConfig");if(cfg){var _48=eval("({ "+cfg+" })");for(var x in _48){dojo.config[x]=_48[x];}}break;}}}d.baseUrl=d.config.baseUrl;var n=navigator;var dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);if(dua.indexOf("Opera")>=0){d.isOpera=tv;}if(dua.indexOf("AdobeAIR")>=0){d.isAIR=1;}d.isKhtml=(dav.indexOf("Konqueror")>=0)?tv:0;d.isWebKit=parseFloat(dua.split("WebKit/")[1])||undefined;d.isChrome=parseFloat(dua.split("Chrome/")[1])||undefined;d.isMac=dav.indexOf("Macintosh")>=0;var _49=Math.max(dav.indexOf("WebKit"),dav.indexOf("Safari"),0);if(_49&&!dojo.isChrome){d.isSafari=parseFloat(dav.split("Version/")[1]);if(!d.isSafari||parseFloat(dav.substr(_49+7))<=419.3){d.isSafari=2;}}if(dua.indexOf("Gecko")>=0&&!d.isKhtml&&!d.isWebKit){d.isMozilla=d.isMoz=tv;}if(d.isMoz){d.isFF=parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1])||undefined;}if(document.all&&!d.isOpera){d.isIE=parseFloat(dav.split("MSIE ")[1])||undefined;var _4a=document.documentMode;if(_4a&&_4a!=5&&Math.floor(d.isIE)!=_4a){d.isIE=_4a;}}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}d.isQuirks=document.compatMode=="BackCompat";d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _4b,_4c;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_4b=new XMLHttpRequest();}catch(e){}}if(!_4b){for(var i=0;i<3;++i){var _4d=d._XMLHTTP_PROGIDS[i];try{_4b=new ActiveXObject(_4d);}catch(e){_4c=e;}if(_4b){d._XMLHTTP_PROGIDS=[_4d];break;}}}if(!_4b){throw new Error("XMLHTTP not available: "+_4c);}return _4b;};d._isDocumentOk=function(_4e){var _4f=_4e.status||0,lp=location.protocol;return (_4f>=200&&_4f<300)||_4f==304||_4f==1223||(!_4f&&(lp=="file:"||lp=="chrome:"||lp=="chrome-extension:"||lp=="app:"));};var _50=window.location+"";var _51=document.getElementsByTagName("base");var _52=(_51&&_51.length>0);d._getText=function(uri,_53){var _54=d._xhrObj();if(!_52&&dojo._Url){uri=(new dojo._Url(_50,uri)).toString();}if(d.config.cacheBust){uri+="";uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_54.open("GET",uri,false);try{_54.send(null);if(!d._isDocumentOk(_54)){var err=Error("Unable to load "+uri+" status:"+_54.status);err.status=_54.status;err.responseText=_54.responseText;throw err;}}catch(e){if(_53){return null;}throw e;}return _54.responseText;};var _55=window;var _56=function(_57,fp){var _58=_55.attachEvent||_55.addEventListener;_57=_55.attachEvent?_57:_57.substring(2);_58(_57,function(){fp.apply(_55,arguments);},false);};d._windowUnloaders=[];d.windowUnloaded=function(){var mll=d._windowUnloaders;while(mll.length){(mll.pop())();}d=null;};var _59=0;d.addOnWindowUnload=function(obj,_5a){d._onto(d._windowUnloaders,obj,_5a);if(!_59){_59=1;_56("onunload",d.windowUnloaded);}};var _5b=0;d.addOnUnload=function(obj,_5c){d._onto(d._unloaders,obj,_5c);if(!_5b){_5b=1;_56("onbeforeunload",dojo.unloaded);}};})();dojo._initFired=false;dojo._loadInit=function(e){if(dojo._scrollIntervalId){clearInterval(dojo._scrollIntervalId);dojo._scrollIntervalId=0;}if(!dojo._initFired){dojo._initFired=true;if(!dojo.config.afterOnLoad&&window.detachEvent){window.detachEvent("onload",dojo._loadInit);}if(dojo._inFlightCount==0){dojo._modulesLoaded();}}};if(!dojo.config.afterOnLoad){if(document.addEventListener){document.addEventListener("DOMContentLoaded",dojo._loadInit,false);window.addEventListener("load",dojo._loadInit,false);}else{if(window.attachEvent){window.attachEvent("onload",dojo._loadInit);if(!dojo.config.skipIeDomLoaded&&self===self.top){dojo._scrollIntervalId=setInterval(function(){try{if(document.body){document.documentElement.doScroll("left");dojo._loadInit();}}catch(e){}},30);}}}}if(dojo.isIE){try{(function(){document.namespaces.add("v","urn:schemas-microsoft-com:vml");var _5d=["*","group","roundrect","oval","shape","rect","imagedata","path","textpath","text"],i=0,l=1,s=document.createStyleSheet();if(dojo.isIE>=8){i=1;l=_5d.length;}for(;i<l;++i){s.addRule("v\\:"+_5d[i],"behavior:url(#default#VML); display:inline-block");}})();}catch(e){}}}(function(){var mp=dojo.config["modulePaths"];if(mp){for(var _5e in mp){dojo.registerModulePath(_5e,mp[_5e]);}}})();if(dojo.config.isDebug){dojo.require("dojo._firebug.firebug");}if(dojo.config.debugAtAllCosts){dojo.config.useXDomain=true;dojo.require("dojo._base._loader.loader_xd");dojo.require("dojo._base._loader.loader_debug");dojo.require("dojo.i18n");}if(!dojo._hasResource["dojo._base.lang"]){dojo._hasResource["dojo._base.lang"]=true;dojo.provide("dojo._base.lang");(function(){var d=dojo,_5f=Object.prototype.toString;dojo.isString=function(it){return (typeof it=="string"||it instanceof String);};dojo.isArray=function(it){return it&&(it instanceof Array||typeof it=="array");};dojo.isFunction=function(it){return _5f.call(it)==="[object Function]";};dojo.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||d.isArray(it)||d.isFunction(it));};dojo.isArrayLike=function(it){return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));};dojo.isAlien=function(it){return it&&!d.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));};dojo.extend=function(_60,_61){for(var i=1,l=arguments.length;i<l;i++){d._mixin(_60.prototype,arguments[i]);}return _60;};dojo._hitchArgs=function(_62,_63){var pre=d._toArray(arguments,2);var _64=d.isString(_63);return function(){var _65=d._toArray(arguments);var f=_64?(_62||d.global)[_63]:_63;return f&&f.apply(_62||this,pre.concat(_65));};};dojo.hitch=function(_66,_67){if(arguments.length>2){return d._hitchArgs.apply(d,arguments);}if(!_67){_67=_66;_66=null;}if(d.isString(_67)){_66=_66||d.global;if(!_66[_67]){throw (["dojo.hitch: scope[\"",_67,"\"] is null (scope=\"",_66,"\")"].join(""));}return function(){return _66[_67].apply(_66,arguments||[]);};}return !_66?_67:function(){return _67.apply(_66,arguments||[]);};};dojo.delegate=dojo._delegate=(function(){function TMP(){};return function(obj,_68){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_68){d._mixin(tmp,_68);}return tmp;};})();var _69=function(obj,_6a,_6b){return (_6b||[]).concat(Array.prototype.slice.call(obj,_6a||0));};var _6c=function(obj,_6d,_6e){var arr=_6e||[];for(var x=_6d||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};dojo._toArray=d.isIE?function(obj){return ((obj.item)?_6c:_69).apply(this,arguments);}:_69;dojo.partial=function(_6f){var arr=[null];return d.hitch.apply(d,arr.concat(d._toArray(arguments)));};var _70=d._extraNames,_71=_70.length,_72={};dojo.clone=function(o){if(!o||typeof o!="object"||d.isFunction(o)){return o;}if(o.nodeType&&"cloneNode" in o){return o.cloneNode(true);}if(o instanceof Date){return new Date(o.getTime());}var r,i,l,s,_73;if(d.isArray(o)){r=[];for(i=0,l=o.length;i<l;++i){if(i in o){r.push(d.clone(o[i]));}}}else{r=o.constructor?new o.constructor():{};}for(_73 in o){s=o[_73];if(!(_73 in r)||(r[_73]!==s&&(!(_73 in _72)||_72[_73]!==s))){r[_73]=d.clone(s);}}if(_71){for(i=0;i<_71;++i){_73=_70[i];s=o[_73];if(!(_73 in r)||(r[_73]!==s&&(!(_73 in _72)||_72[_73]!==s))){r[_73]=s;}}}return r;};dojo.trim=String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");};var _74=/\{([^\}]+)\}/g;dojo.replace=function(_75,map,_76){return _75.replace(_76||_74,d.isFunction(map)?map:function(_77,k){return d.getObject(k,false,map);});};})();}if(!dojo._hasResource["dojo._base.array"]){dojo._hasResource["dojo._base.array"]=true;dojo.provide("dojo._base.array");(function(){var _78=function(arr,obj,cb){return [(typeof arr=="string")?arr.split(""):arr,obj||dojo.global,(typeof cb=="string")?new Function("item","index","array",cb):cb];};var _79=function(_7a,arr,_7b,_7c){var _7d=_78(arr,_7c,_7b);arr=_7d[0];for(var i=0,l=arr.length;i<l;++i){var _7e=!!_7d[2].call(_7d[1],arr[i],i,arr);if(_7a^_7e){return _7e;}}return _7a;};dojo.mixin(dojo,{indexOf:function(_7f,_80,_81,_82){var _83=1,end=_7f.length||0,i=0;if(_82){i=end-1;_83=end=-1;}if(_81!=undefined){i=_81;}if((_82&&i>end)||i<end){for(;i!=end;i+=_83){if(_7f[i]==_80){return i;}}}return -1;},lastIndexOf:function(_84,_85,_86){return dojo.indexOf(_84,_85,_86,true);},forEach:function(arr,_87,_88){if(!arr||!arr.length){return;}var _89=_78(arr,_88,_87);arr=_89[0];for(var i=0,l=arr.length;i<l;++i){_89[2].call(_89[1],arr[i],i,arr);}},every:function(arr,_8a,_8b){return _79(true,arr,_8a,_8b);},some:function(arr,_8c,_8d){return _79(false,arr,_8c,_8d);},map:function(arr,_8e,_8f){var _90=_78(arr,_8f,_8e);arr=_90[0];var _91=(arguments[3]?(new arguments[3]()):[]);for(var i=0,l=arr.length;i<l;++i){_91.push(_90[2].call(_90[1],arr[i],i,arr));}return _91;},filter:function(arr,_92,_93){var _94=_78(arr,_93,_92);arr=_94[0];var _95=[];for(var i=0,l=arr.length;i<l;++i){if(_94[2].call(_94[1],arr[i],i,arr)){_95.push(arr[i]);}}return _95;}});})();}if(!dojo._hasResource["dojo._base.declare"]){dojo._hasResource["dojo._base.declare"]=true;dojo.provide("dojo._base.declare");(function(){var d=dojo,mix=d._mixin,op=Object.prototype,_96=op.toString,_97=new Function,_98=0,_99="constructor";function err(msg){throw new Error("declare: "+msg);};function _9a(_9b){var _9c=[],_9d=[{cls:0,refs:[]}],_9e={},_9f=1,l=_9b.length,i=0,j,lin,_a0,top,_a1,rec,_a2,_a3;for(;i<l;++i){_a0=_9b[i];if(!_a0){err("mixin #"+i+" is unknown. Did you use dojo.require to pull it in?");}else{if(_96.call(_a0)!="[object Function]"){err("mixin #"+i+" is not a callable constructor.");}}lin=_a0._meta?_a0._meta.bases:[_a0];top=0;for(j=lin.length-1;j>=0;--j){_a1=lin[j].prototype;if(!_a1.hasOwnProperty("declaredClass")){_a1.declaredClass="uniqName_"+(_98++);}_a2=_a1.declaredClass;if(!_9e.hasOwnProperty(_a2)){_9e[_a2]={count:0,refs:[],cls:lin[j]};++_9f;}rec=_9e[_a2];if(top&&top!==rec){rec.refs.push(top);++top.count;}top=rec;}++top.count;_9d[0].refs.push(top);}while(_9d.length){top=_9d.pop();_9c.push(top.cls);--_9f;while(_a3=top.refs,_a3.length==1){top=_a3[0];if(!top||--top.count){top=0;break;}_9c.push(top.cls);--_9f;}if(top){for(i=0,l=_a3.length;i<l;++i){top=_a3[i];if(!--top.count){_9d.push(top);}}}}if(_9f){err("can't build consistent linearization");}_a0=_9b[0];_9c[0]=_a0?_a0._meta&&_a0===_9c[_9c.length-_a0._meta.bases.length]?_a0._meta.bases.length:1:0;return _9c;};function _a4(_a5,a,f){var _a6,_a7,_a8,_a9,_aa,_ab,_ac,opf,pos,_ad=this._inherited=this._inherited||{};if(typeof _a5=="string"){_a6=_a5;_a5=a;a=f;}f=0;_a9=_a5.callee;_a6=_a6||_a9.nom;if(!_a6){err("can't deduce a name to call inherited()");}_aa=this.constructor._meta;_a8=_aa.bases;pos=_ad.p;if(_a6!=_99){if(_ad.c!==_a9){pos=0;_ab=_a8[0];_aa=_ab._meta;if(_aa.hidden[_a6]!==_a9){_a7=_aa.chains;if(_a7&&typeof _a7[_a6]=="string"){err("calling chained method with inherited: "+_a6);}do{_aa=_ab._meta;_ac=_ab.prototype;if(_aa&&(_ac[_a6]===_a9&&_ac.hasOwnProperty(_a6)||_aa.hidden[_a6]===_a9)){break;}}while(_ab=_a8[++pos]);pos=_ab?pos:-1;}}_ab=_a8[++pos];if(_ab){_ac=_ab.prototype;if(_ab._meta&&_ac.hasOwnProperty(_a6)){f=_ac[_a6];}else{opf=op[_a6];do{_ac=_ab.prototype;f=_ac[_a6];if(f&&(_ab._meta?_ac.hasOwnProperty(_a6):f!==opf)){break;}}while(_ab=_a8[++pos]);}}f=_ab&&f||op[_a6];}else{if(_ad.c!==_a9){pos=0;_aa=_a8[0]._meta;if(_aa&&_aa.ctor!==_a9){_a7=_aa.chains;if(!_a7||_a7.constructor!=="manual"){err("calling chained constructor with inherited");}while(_ab=_a8[++pos]){_aa=_ab._meta;if(_aa&&_aa.ctor===_a9){break;}}pos=_ab?pos:-1;}}while(_ab=_a8[++pos]){_aa=_ab._meta;f=_aa?_aa.ctor:_ab;if(f){break;}}f=_ab&&f;}_ad.c=f;_ad.p=pos;if(f){return a===true?f:f.apply(this,a||_a5);}};function _ae(_af,_b0){if(typeof _af=="string"){return this.inherited(_af,_b0,true);}return this.inherited(_af,true);};function _b1(cls){var _b2=this.constructor._meta.bases;for(var i=0,l=_b2.length;i<l;++i){if(_b2[i]===cls){return true;}}return this instanceof cls;};function _b3(_b4,_b5){var _b6,i=0,l=d._extraNames.length;for(_b6 in _b5){if(_b6!=_99&&_b5.hasOwnProperty(_b6)){_b4[_b6]=_b5[_b6];}}for(;i<l;++i){_b6=d._extraNames[i];if(_b6!=_99&&_b5.hasOwnProperty(_b6)){_b4[_b6]=_b5[_b6];}}};function _b7(_b8,_b9){var _ba,t,i=0,l=d._extraNames.length;for(_ba in _b9){t=_b9[_ba];if((t!==op[_ba]||!(_ba in op))&&_ba!=_99){if(_96.call(t)=="[object Function]"){t.nom=_ba;}_b8[_ba]=t;}}for(;i<l;++i){_ba=d._extraNames[i];t=_b9[_ba];if((t!==op[_ba]||!(_ba in op))&&_ba!=_99){if(_96.call(t)=="[object Function]"){t.nom=_ba;}_b8[_ba]=t;}}return _b8;};function _bb(_bc){_b7(this.prototype,_bc);return this;};function _bd(_be,_bf){return function(){var a=arguments,_c0=a,a0=a[0],f,i,m,l=_be.length,_c1;if(!(this instanceof a.callee)){return _c2(a);}if(_bf&&(a0&&a0.preamble||this.preamble)){_c1=new Array(_be.length);_c1[0]=a;for(i=0;;){a0=a[0];if(a0){f=a0.preamble;if(f){a=f.apply(this,a)||a;}}f=_be[i].prototype;f=f.hasOwnProperty("preamble")&&f.preamble;if(f){a=f.apply(this,a)||a;}if(++i==l){break;}_c1[i]=a;}}for(i=l-1;i>=0;--i){f=_be[i];m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,_c1?_c1[i]:a);}}f=this.postscript;if(f){f.apply(this,_c0);}};};function _c3(_c4,_c5){return function(){var a=arguments,t=a,a0=a[0],f;if(!(this instanceof a.callee)){return _c2(a);}if(_c5){if(a0){f=a0.preamble;if(f){t=f.apply(this,t)||t;}}f=this.preamble;if(f){f.apply(this,t);}}if(_c4){_c4.apply(this,a);}f=this.postscript;if(f){f.apply(this,a);}};};function _c6(_c7){return function(){var a=arguments,i=0,f,m;if(!(this instanceof a.callee)){return _c2(a);}for(;f=_c7[i];++i){m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,a);break;}}f=this.postscript;if(f){f.apply(this,a);}};};function _c8(_c9,_ca,_cb){return function(){var b,m,f,i=0,_cc=1;if(_cb){i=_ca.length-1;_cc=-1;}for(;b=_ca[i];i+=_cc){m=b._meta;f=(m?m.hidden:b.prototype)[_c9];if(f){f.apply(this,arguments);}}};};function _cd(_ce){_97.prototype=_ce.prototype;var t=new _97;_97.prototype=null;return t;};function _c2(_cf){var _d0=_cf.callee,t=_cd(_d0);_d0.apply(t,_cf);return t;};d.declare=function(_d1,_d2,_d3){if(typeof _d1!="string"){_d3=_d2;_d2=_d1;_d1="";}_d3=_d3||{};var _d4,i,t,_d5,_d6,_d7,_d8,_d9=1,_da=_d2;if(_96.call(_d2)=="[object Array]"){_d7=_9a(_d2);t=_d7[0];_d9=_d7.length-t;_d2=_d7[_d9];}else{_d7=[0];if(_d2){if(_96.call(_d2)=="[object Function]"){t=_d2._meta;_d7=_d7.concat(t?t.bases:_d2);}else{err("base class is not a callable constructor.");}}else{if(_d2!==null){err("unknown base class. Did you use dojo.require to pull it in?");}}}if(_d2){for(i=_d9-1;;--i){_d4=_cd(_d2);if(!i){break;}t=_d7[i];(t._meta?_b3:mix)(_d4,t.prototype);_d5=new Function;_d5.superclass=_d2;_d5.prototype=_d4;_d2=_d4.constructor=_d5;}}else{_d4={};}_b7(_d4,_d3);t=_d3.constructor;if(t!==op.constructor){t.nom=_99;_d4.constructor=t;}for(i=_d9-1;i;--i){t=_d7[i]._meta;if(t&&t.chains){_d8=mix(_d8||{},t.chains);}}if(_d4["-chains-"]){_d8=mix(_d8||{},_d4["-chains-"]);}t=!_d8||!_d8.hasOwnProperty(_99);_d7[0]=_d5=(_d8&&_d8.constructor==="manual")?_c6(_d7):(_d7.length==1?_c3(_d3.constructor,t):_bd(_d7,t));_d5._meta={bases:_d7,hidden:_d3,chains:_d8,parents:_da,ctor:_d3.constructor};_d5.superclass=_d2&&_d2.prototype;_d5.extend=_bb;_d5.prototype=_d4;_d4.constructor=_d5;_d4.getInherited=_ae;_d4.inherited=_a4;_d4.isInstanceOf=_b1;if(_d1){_d4.declaredClass=_d1;d.setObject(_d1,_d5);}if(_d8){for(_d6 in _d8){if(_d4[_d6]&&typeof _d8[_d6]=="string"&&_d6!=_99){t=_d4[_d6]=_c8(_d6,_d7,_d8[_d6]==="after");t.nom=_d6;}}}return _d5;};d.safeMixin=_b7;})();}if(!dojo._hasResource["dojo._base.connect"]){dojo._hasResource["dojo._base.connect"]=true;dojo.provide("dojo._base.connect");dojo._listener={getDispatcher:function(){return function(){var ap=Array.prototype,c=arguments.callee,ls=c._listeners,t=c.target;var r=t&&t.apply(this,arguments);var i,lls;lls=[].concat(ls);for(i in lls){if(!(i in ap)){lls[i].apply(this,arguments);}}return r;};},add:function(_db,_dc,_dd){_db=_db||dojo.global;var f=_db[_dc];if(!f||!f._listeners){var d=dojo._listener.getDispatcher();d.target=f;d._listeners=[];f=_db[_dc]=d;}return f._listeners.push(_dd);},remove:function(_de,_df,_e0){var f=(_de||dojo.global)[_df];if(f&&f._listeners&&_e0--){delete f._listeners[_e0];}}};dojo.connect=function(obj,_e1,_e2,_e3,_e4){var a=arguments,_e5=[],i=0;_e5.push(dojo.isString(a[0])?null:a[i++],a[i++]);var a1=a[i+1];_e5.push(dojo.isString(a1)||dojo.isFunction(a1)?a[i++]:null,a[i++]);for(var l=a.length;i<l;i++){_e5.push(a[i]);}return dojo._connect.apply(this,_e5);};dojo._connect=function(obj,_e6,_e7,_e8){var l=dojo._listener,h=l.add(obj,_e6,dojo.hitch(_e7,_e8));return [obj,_e6,h,l];};dojo.disconnect=function(_e9){if(_e9&&_e9[0]!==undefined){dojo._disconnect.apply(this,_e9);delete _e9[0];}};dojo._disconnect=function(obj,_ea,_eb,_ec){_ec.remove(obj,_ea,_eb);};dojo._topics={};dojo.subscribe=function(_ed,_ee,_ef){return [_ed,dojo._listener.add(dojo._topics,_ed,dojo.hitch(_ee,_ef))];};dojo.unsubscribe=function(_f0){if(_f0){dojo._listener.remove(dojo._topics,_f0[0],_f0[1]);}};dojo.publish=function(_f1,_f2){var f=dojo._topics[_f1];if(f){f.apply(this,_f2||[]);}};dojo.connectPublisher=function(_f3,obj,_f4){var pf=function(){dojo.publish(_f3,arguments);};return _f4?dojo.connect(obj,_f4,pf):dojo.connect(obj,pf);};}if(!dojo._hasResource["dojo._base.Deferred"]){dojo._hasResource["dojo._base.Deferred"]=true;dojo.provide("dojo._base.Deferred");(function(){var _f5=function(){};var _f6=Object.freeze||function(){};dojo.Deferred=function(_f7){var _f8,_f9,_fa,_fb,_fc;var _fd=this.promise={};function _fe(_ff){if(_f9){throw new Error("This deferred has already been resolved");}_f8=_ff;_f9=true;_100();};function _100(){var _101;while(!_101&&_fc){var _102=_fc;_fc=_fc.next;if(_101=(_102.progress==_f5)){_f9=false;}var func=(_fa?_102.error:_102.resolved);if(func){try{var _103=func(_f8);if(_103&&typeof _103.then==="function"){_103.then(dojo.hitch(_102.deferred,"resolve"),dojo.hitch(_102.deferred,"reject"));continue;}var _104=_101&&_103===undefined;_102.deferred[_104&&_fa?"reject":"resolve"](_104?_f8:_103);}catch(e){_102.deferred.reject(e);}}else{if(_fa){_102.deferred.reject(_f8);}else{_102.deferred.resolve(_f8);}}}};this.resolve=this.callback=function(_105){this.fired=0;this.results=[_105,null];_fe(_105);};this.reject=this.errback=function(_106){_fa=true;this.fired=1;_fe(_106);this.results=[null,_106];if(!_106||_106.log!==false){(dojo.config.deferredOnError||function(x){console.error(x);})(_106);}};this.progress=function(_107){var _108=_fc;while(_108){var _109=_108.progress;_109&&_109(_107);_108=_108.next;}};this.addCallbacks=function(_10a,_10b){this.then(_10a,_10b,_f5);return this;};this.then=_fd.then=function(_10c,_10d,_10e){var _10f=_10e==_f5?this:new dojo.Deferred(_fd.cancel);var _110={resolved:_10c,error:_10d,progress:_10e,deferred:_10f};if(_fc){_fb=_fb.next=_110;}else{_fc=_fb=_110;}if(_f9){_100();}return _10f.promise;};var _111=this;this.cancel=_fd.cancel=function(){if(!_f9){var _112=_f7&&_f7(_111);if(!_f9){if(!(_112 instanceof Error)){_112=new Error(_112);}_112.log=false;_111.reject(_112);}}};_f6(_fd);};dojo.extend(dojo.Deferred,{addCallback:function(_113){return this.addCallbacks(dojo.hitch.apply(dojo,arguments));},addErrback:function(_114){return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments));},addBoth:function(_115){var _116=dojo.hitch.apply(dojo,arguments);return this.addCallbacks(_116,_116);},fired:-1});})();dojo.when=function(_117,_118,_119,_11a){if(_117&&typeof _117.then==="function"){return _117.then(_118,_119,_11a);}return _118(_117);};}if(!dojo._hasResource["dojo._base.json"]){dojo._hasResource["dojo._base.json"]=true;dojo.provide("dojo._base.json");dojo.fromJson=function(json){return eval("("+json+")");};dojo._escapeString=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_11b,_11c){if(it===undefined){return "undefined";}var _11d=typeof it;if(_11d=="number"||_11d=="boolean"){return it+"";}if(it===null){return "null";}if(dojo.isString(it)){return dojo._escapeString(it);}var _11e=arguments.callee;var _11f;_11c=_11c||"";var _120=_11b?_11c+dojo.toJsonIndentStr:"";var tf=it.__json__||it.json;if(dojo.isFunction(tf)){_11f=tf.call(it);if(it!==_11f){return _11e(_11f,_11b,_120);}}if(it.nodeType&&it.cloneNode){throw new Error("Can't serialize DOM nodes");}var sep=_11b?" ":"";var _121=_11b?"\n":"";if(dojo.isArray(it)){var res=dojo.map(it,function(obj){var val=_11e(obj,_11b,_120);if(typeof val!="string"){val="undefined";}return _121+_120+val;});return "["+res.join(","+sep)+_121+_11c+"]";}if(_11d=="function"){return null;}var _122=[],key;for(key in it){var _123,val;if(typeof key=="number"){_123="\""+key+"\"";}else{if(typeof key=="string"){_123=dojo._escapeString(key);}else{continue;}}val=_11e(it[key],_11b,_120);if(typeof val!="string"){continue;}_122.push(_121+_120+_123+":"+sep+val);}return "{"+_122.join(","+sep)+_121+_11c+"}";};}if(!dojo._hasResource["dojo._base.Color"]){dojo._hasResource["dojo._base.Color"]=true;dojo.provide("dojo._base.Color");(function(){var d=dojo;dojo.Color=function(_124){if(_124){this.setColor(_124);}};dojo.Color.named={black:[0,0,0],silver:[192,192,192],gray:[128,128,128],white:[255,255,255],maroon:[128,0,0],red:[255,0,0],purple:[128,0,128],fuchsia:[255,0,255],green:[0,128,0],lime:[0,255,0],olive:[128,128,0],yellow:[255,255,0],navy:[0,0,128],blue:[0,0,255],teal:[0,128,128],aqua:[0,255,255],transparent:d.config.transparentColor||[255,255,255]};dojo.extend(dojo.Color,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_125){if(d.isString(_125)){d.colorFromString(_125,this);}else{if(d.isArray(_125)){d.colorFromArray(_125,this);}else{this._set(_125.r,_125.g,_125.b,_125.a);if(!(_125 instanceof d.Color)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var arr=d.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+arr.join("");},toCss:function(_126){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_126?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});dojo.blendColors=function(_127,end,_128,obj){var t=obj||new d.Color();d.forEach(["r","g","b","a"],function(x){t[x]=_127[x]+(end[x]-_127[x])*_128;if(x!="a"){t[x]=Math.round(t[x]);}});return t.sanitize();};dojo.colorFromRgb=function(_129,obj){var m=_129.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&dojo.colorFromArray(m[1].split(/\s*,\s*/),obj);};dojo.colorFromHex=function(_12a,obj){var t=obj||new d.Color(),bits=(_12a.length==4)?4:8,mask=(1<<bits)-1;_12a=Number("0x"+_12a.substr(1));if(isNaN(_12a)){return null;}d.forEach(["b","g","r"],function(x){var c=_12a&mask;_12a>>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new d.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=d.Color.named[str];return a&&d.colorFromArray(a,obj)||d.colorFromRgb(str,obj)||d.colorFromHex(str,obj);};})();}if(!dojo._hasResource["dojo._base"]){dojo._hasResource["dojo._base"]=true;dojo.provide("dojo._base");}if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_12b,_12c){dojo.global=_12b;dojo.doc=_12c;};dojo.withGlobal=function(_12d,_12e,_12f,_130){var _131=dojo.global;try{dojo.global=_12d;return dojo.withDoc.call(null,_12d.document,_12e,_12f,_130);}finally{dojo.global=_131;}};dojo.withDoc=function(_132,_133,_134,_135){var _136=dojo.doc,_137=dojo._bodyLtr,oldQ=dojo.isQuirks;try{dojo.doc=_132;delete dojo._bodyLtr;dojo.isQuirks=dojo.doc.compatMode=="BackCompat";if(_134&&typeof _133=="string"){_133=_134[_133];}return _133.apply(_134,_135||[]);}finally{dojo.doc=_136;delete dojo._bodyLtr;if(_137!==undefined){dojo._bodyLtr=_137;}dojo.isQuirks=oldQ;}};}if(!dojo._hasResource["dojo._base.event"]){dojo._hasResource["dojo._base.event"]=true;dojo.provide("dojo._base.event");(function(){var del=(dojo._event_listener={add:function(node,name,fp){if(!node){return;}name=del._normalizeEventName(name);fp=del._fixCallback(name,fp);var _138=name;if(!dojo.isIE&&(name=="mouseenter"||name=="mouseleave")){var ofp=fp;name=(name=="mouseenter")?"mouseover":"mouseout";fp=function(e){if(!dojo.isDescendant(e.relatedTarget,node)){return ofp.call(this,e);}};}node.addEventListener(name,fp,false);return fp;},remove:function(node,_139,_13a){if(node){_139=del._normalizeEventName(_139);if(!dojo.isIE&&(_139=="mouseenter"||_139=="mouseleave")){_139=(_139=="mouseenter")?"mouseover":"mouseout";}node.removeEventListener(_139,_13a,false);}},_normalizeEventName:function(name){return name.slice(0,2)=="on"?name.slice(2):name;},_fixCallback:function(name,fp){return name!="keypress"?fp:function(e){return fp.call(this,del._fixEvent(e,this));};},_fixEvent:function(evt,_13b){switch(evt.type){case "keypress":del._setKeyChar(evt);break;}return evt;},_setKeyChar:function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}});dojo.fixEvent=function(evt,_13c){return del._fixEvent(evt,_13c);};dojo.stopEvent=function(evt){evt.preventDefault();evt.stopPropagation();};var _13d=dojo._listener;dojo._connect=function(obj,_13e,_13f,_140,_141){var _142=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);var lid=_142?(_141?2:1):0,l=[dojo._listener,del,_13d][lid];var h=l.add(obj,_13e,dojo.hitch(_13f,_140));return [obj,_13e,h,lid];};dojo._disconnect=function(obj,_143,_144,_145){([dojo._listener,del,_13d][_145]).remove(obj,_143,_144);};dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:dojo.isSafari?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,copyKey:dojo.isMac&&!dojo.isAIR?(dojo.isSafari?91:224):17};var _146=dojo.isMac?"metaKey":"ctrlKey";dojo.isCopyKey=function(e){return e[_146];};if(dojo.isIE){dojo.mouseButtons={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_147){return e.button&_147;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{dojo.mouseButtons={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_148){return e.button==_148;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}if(dojo.isIE){var _149=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};var iel=dojo._listener;var _14a=(dojo._ieListenersName="_"+dojo._scopeName+"_listeners");if(!dojo.config._allow_leaks){_13d=iel=dojo._ie_listener={handlers:[],add:function(_14b,_14c,_14d){_14b=_14b||dojo.global;var f=_14b[_14c];if(!f||!f[_14a]){var d=dojo._getIeDispatcher();d.target=f&&(ieh.push(f)-1);d[_14a]=[];f=_14b[_14c]=d;}return f[_14a].push(ieh.push(_14d)-1);},remove:function(_14e,_14f,_150){var f=(_14e||dojo.global)[_14f],l=f&&f[_14a];if(f&&l&&_150--){delete ieh[l[_150]];delete l[_150];}}};var ieh=iel.handlers;}dojo.mixin(del,{add:function(node,_151,fp){if(!node){return;}_151=del._normalizeEventName(_151);if(_151=="onkeypress"){var kd=node.onkeydown;if(!kd||!kd[_14a]||!kd._stealthKeydownHandle){var h=del.add(node,"onkeydown",del._stealthKeyDown);kd=node.onkeydown;kd._stealthKeydownHandle=h;kd._stealthKeydownRefs=1;}else{kd._stealthKeydownRefs++;}}return iel.add(node,_151,del._fixCallback(fp));},remove:function(node,_152,_153){_152=del._normalizeEventName(_152);iel.remove(node,_152,_153);if(_152=="onkeypress"){var kd=node.onkeydown;if(--kd._stealthKeydownRefs<=0){iel.remove(node,"onkeydown",kd._stealthKeydownHandle);delete kd._stealthKeydownHandle;}}},_normalizeEventName:function(_154){return _154.slice(0,2)!="on"?"on"+_154:_154;},_nop:function(){},_fixEvent:function(evt,_155){if(!evt){var w=_155&&(_155.ownerDocument||_155.document||_155).parentWindow||window;evt=w.event;}if(!evt){return (evt);}evt.target=evt.srcElement;evt.currentTarget=(_155||evt.srcElement);evt.layerX=evt.offsetX;evt.layerY=evt.offsetY;var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;var _156=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;var _157=dojo._getIeDocumentElementOffset();evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_156.scrollLeft||0)-_157.x;evt.pageY=evt.clientY+(_156.scrollTop||0)-_157.y;if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}evt.stopPropagation=del._stopPropagation;evt.preventDefault=del._preventDefault;return del._fixKeys(evt);},_fixKeys:function(evt){switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;del._setKeyChar(evt);break;}return evt;},_stealthKeyDown:function(evt){var kp=evt.currentTarget.onkeypress;if(!kp||!kp[_14a]){return;}var k=evt.keyCode;var _158=k!=13&&k!=32&&k!=27&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_158||evt.ctrlKey){var c=_158?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,faux);evt.cancelBubble=faux.cancelBubble;evt.returnValue=faux.returnValue;_149(evt,faux.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_149(this,0);}this.returnValue=false;}});dojo.stopEvent=function(evt){evt=evt||window.event;del._stopPropagation.call(evt);del._preventDefault.call(evt);};}del._synthesizeEvent=function(evt,_159){var faux=dojo.mixin({},evt,_159);del._setKeyChar(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};if(dojo.isOpera){dojo.mixin(del,{_fixEvent:function(evt,_15a){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=c<41&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return del._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isWebKit){del._add=del.add;del._remove=del.remove;dojo.mixin(del,{add:function(node,_15b,fp){if(!node){return;}var _15c=del._add(node,_15b,fp);if(del._normalizeEventName(_15b)=="keypress"){_15c._stealthKeyDownHandle=del._add(node,"keydown",function(evt){var k=evt.keyCode;var _15d=k!=13&&k!=32&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_15d||evt.ctrlKey){var c=_15d?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if(!evt.shiftKey&&c>=65&&c<=90){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});fp.call(evt.currentTarget,faux);}});}return _15c;},remove:function(node,_15e,_15f){if(node){if(_15f._stealthKeyDownHandle){del._remove(node,"keydown",_15f._stealthKeyDownHandle);}del._remove(node,_15e,_15f);}},_fixEvent:function(evt,_160){switch(evt.type){case "keypress":if(evt.faux){return evt;}var c=evt.charCode;c=c>=32?c:0;return del._synthesizeEvent(evt,{charCode:c,faux:true});}return evt;}});}})();if(dojo.isIE){dojo._ieDispatcher=function(args,_161){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=args.callee,ls=c[dojo._ieListenersName],t=h[c.target];var r=t&&t.apply(_161,args);var lls=[].concat(ls);for(var i in lls){var f=h[lls[i]];if(!(i in ap)&&f){f.apply(_161,args);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE||dojo.isOpera){dojo.byId=function(id,doc){if(typeof id!="string"){return id;}var _162=doc||dojo.doc,te=_162.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_162.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}};}else{dojo.byId=function(id,doc){return (typeof id=="string")?(doc||dojo.doc).getElementById(id):id;};}(function(){var d=dojo;var byId=d.byId;var _163=null,_164;d.addOnWindowUnload(function(){_163=null;});dojo._destroyElement=dojo.destroy=function(node){node=byId(node);try{var doc=node.ownerDocument;if(!_163||_164!=doc){_163=doc.createElement("div");_164=doc;}_163.appendChild(node.parentNode?node.parentNode.removeChild(node):node);_163.innerHTML="";}catch(e){}};dojo.isDescendant=function(node,_165){try{node=byId(node);_165=byId(_165);while(node){if(node==_165){return true;}node=node.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(node,_166){node=byId(node);if(d.isMozilla){node.style.MozUserSelect=_166?"":"none";}else{if(d.isKhtml||d.isWebKit){node.style.KhtmlUserSelect=_166?"auto":"none";}else{if(d.isIE){var v=(node.unselectable=_166?"":"on");d.query("*",node).forEach("item.unselectable = '"+v+"'");}}}};var _167=function(node,ref){var _168=ref.parentNode;if(_168){_168.insertBefore(node,ref);}};var _169=function(node,ref){var _16a=ref.parentNode;if(_16a){if(_16a.lastChild==ref){_16a.appendChild(node);}else{_16a.insertBefore(node,ref.nextSibling);}}};dojo.place=function(node,_16b,_16c){_16b=byId(_16b);if(typeof node=="string"){node=node.charAt(0)=="<"?d._toDom(node,_16b.ownerDocument):byId(node);}if(typeof _16c=="number"){var cn=_16b.childNodes;if(!cn.length||cn.length<=_16c){_16b.appendChild(node);}else{_167(node,cn[_16c<0?0:_16c]);}}else{switch(_16c){case "before":_167(node,_16b);break;case "after":_169(node,_16b);break;case "replace":_16b.parentNode.replaceChild(node,_16b);break;case "only":d.empty(_16b);_16b.appendChild(node);break;case "first":if(_16b.firstChild){_167(node,_16b.firstChild);break;}default:_16b.appendChild(node);}}return node;};dojo.boxModel="content-box";if(d.isIE){d.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}var gcs;if(d.isWebKit){gcs=function(node){var s;if(node.nodeType==1){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(d.isIE){gcs=function(node){return node.nodeType==1?node.currentStyle:{};};}else{gcs=function(node){return node.nodeType==1?node.ownerDocument.defaultView.getComputedStyle(node,null):{};};}}dojo.getComputedStyle=gcs;if(!d.isIE){d._toPixelValue=function(_16d,_16e){return parseFloat(_16e)||0;};}else{d._toPixelValue=function(_16f,_170){if(!_170){return 0;}if(_170=="medium"){return 4;}if(_170.slice&&_170.slice(-2)=="px"){return parseFloat(_170);}with(_16f){var _171=style.left;var _172=runtimeStyle.left;runtimeStyle.left=currentStyle.left;try{style.left=_170;_170=style.pixelLeft;}catch(e){_170=0;}style.left=_171;runtimeStyle.left=_172;}return _170;};}var px=d._toPixelValue;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};dojo._getOpacity=d.isIE?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return gcs(node).opacity;};dojo._setOpacity=d.isIE?function(node,_173){var ov=_173*100,_174=_173==1;node.style.zoom=_174?"":1;if(!af(node)){if(_174){return _173;}node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}else{af(node,1).Opacity=ov;}af(node,1).Enabled=!_174;if(node.nodeName.toLowerCase()=="tr"){d.query("> td",node).forEach(function(i){d._setOpacity(i,_173);});}return _173;}:function(node,_175){return node.style.opacity=_175;};var _176={left:true,top:true};var _177=/margin|padding|width|height|max|min|offset/;var _178=function(node,type,_179){type=type.toLowerCase();if(d.isIE){if(_179=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_179){case 700:return "bold";case 400:default:return "normal";}}}if(!(type in _176)){_176[type]=_177.test(type);}return _176[type]?px(node,_179):_179;};var _17a=d.isIE?"styleFloat":"cssFloat",_17b={"cssFloat":_17a,"styleFloat":_17a,"float":_17a};dojo.style=function(node,_17c,_17d){var n=byId(node),args=arguments.length,op=(_17c=="opacity");_17c=_17b[_17c]||_17c;if(args==3){return op?d._setOpacity(n,_17d):n.style[_17c]=_17d;}if(args==2&&op){return d._getOpacity(n);}var s=gcs(n);if(args==2&&typeof _17c!="string"){for(var x in _17c){d.style(node,x,_17c[x]);}return s;}return (args==1)?s:_178(n,_17c,s[_17c]||n.style[_17c]);};dojo._getPadExtents=function(n,_17e){var s=_17e||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_17f){var ne="none",s=_17f||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_180){var s=_180||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_181){var s=_181||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isWebKit&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(node,_182){var s=_182||gcs(node),me=d._getMarginExtents(node,s);var l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera||(d.isIE>7&&!d.isQuirks)){if(p){be=d._getBorderExtents(p);l-=be.l;t-=be.t;}}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};dojo._getContentBox=function(node,_183){var s=_183||gcs(node),pe=d._getPadExtents(node,s),be=d._getBorderExtents(node,s),w=node.clientWidth,h;if(!w){w=node.offsetWidth,h=node.offsetHeight;}else{h=node.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(node,_184){var s=_184||gcs(node),pe=d._getPadExtents(node,s),cb=d._getContentBox(node,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._isButtonTag=function(node){return node.tagName=="BUTTON"||node.tagName=="INPUT"&&(node.getAttribute("type")||"").toUpperCase()=="BUTTON";};dojo._usesBorderBox=function(node){var n=node.tagName;return d.boxModel=="border-box"||n=="TABLE"||d._isButtonTag(node);};dojo._setContentSize=function(node,_185,_186,_187){if(d._usesBorderBox(node)){var pb=d._getPadBorderExtents(node,_187);if(_185>=0){_185+=pb.w;}if(_186>=0){_186+=pb.h;}}d._setBox(node,NaN,NaN,_185,_186);};dojo._setMarginBox=function(node,_188,_189,_18a,_18b,_18c){var s=_18c||gcs(node),bb=d._usesBorderBox(node),pb=bb?_18d:d._getPadBorderExtents(node,s);if(d.isWebKit){if(d._isButtonTag(node)){var ns=node.style;if(_18a>=0&&!ns.width){ns.width="4px";}if(_18b>=0&&!ns.height){ns.height="4px";}}}var mb=d._getMarginExtents(node,s);if(_18a>=0){_18a=Math.max(_18a-pb.w-mb.w,0);}if(_18b>=0){_18b=Math.max(_18b-pb.h-mb.h,0);}d._setBox(node,_188,_189,_18a,_18b);};var _18d={l:0,t:0,w:0,h:0};dojo.marginBox=function(node,box){var n=byId(node),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(node,box){var n=byId(node),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _18e=function(node,prop){if(!(node=(node||0).parentNode)){return 0;}var val,_18f=0,_190=d.body();while(node&&node.style){if(gcs(node).position=="fixed"){return 0;}val=node[prop];if(val){_18f+=val-0;if(node==_190){break;}}node=node.parentNode;}return _18f;};dojo._docScroll=function(){var n=d.global;return "pageXOffset" in n?{x:n.pageXOffset,y:n.pageYOffset}:(n=d.doc.documentElement,n.clientHeight?{x:d._fixIeBiDiScrollLeft(n.scrollLeft),y:n.scrollTop}:(n=d.body(),{x:n.scrollLeft||0,y:n.scrollTop||0}));};dojo._isBodyLtr=function(){return "_bodyLtr" in d?d._bodyLtr:d._bodyLtr=(d.body().dir||d.doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;if(d.isIE<8){var r=de.getBoundingClientRect();var l=r.left,t=r.top;if(d.isIE<7){l+=de.clientLeft;t+=de.clientTop;}return {x:l<0?0:l,y:t<0?0:t};}else{return {x:0,y:0};}};dojo._fixIeBiDiScrollLeft=function(_191){var dd=d.doc;if(d.isIE<8&&!d._isBodyLtr()){var de=d.isQuirks?dd.body:dd.documentElement;return _191+de.clientWidth-de.scrollWidth;}return _191;};dojo._abs=dojo.position=function(node,_192){var db=d.body(),dh=db.parentNode,ret;node=byId(node);if(node["getBoundingClientRect"]){ret=node.getBoundingClientRect();ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(d.isIE){var _193=d._getIeDocumentElementOffset();ret.x-=_193.x+(d.isQuirks?db.clientLeft+db.offsetLeft:0);ret.y-=_193.y+(d.isQuirks?db.clientTop+db.offsetTop:0);}else{if(d.isFF==3){var cs=gcs(dh);ret.x-=px(dh,cs.marginLeft)+px(dh,cs.borderLeftWidth);ret.y-=px(dh,cs.marginTop)+px(dh,cs.borderTopWidth);}}}else{ret={x:0,y:0,w:node.offsetWidth,h:node.offsetHeight};if(node["offsetParent"]){ret.x-=_18e(node,"scrollLeft");ret.y-=_18e(node,"scrollTop");var _194=node;do{var n=_194.offsetLeft,t=_194.offsetTop;ret.x+=isNaN(n)?0:n;ret.y+=isNaN(t)?0:t;cs=gcs(_194);if(_194!=node){if(d.isMoz){ret.x+=2*px(_194,cs.borderLeftWidth);ret.y+=2*px(_194,cs.borderTopWidth);}else{ret.x+=px(_194,cs.borderLeftWidth);ret.y+=px(_194,cs.borderTopWidth);}}if(d.isMoz&&cs.position=="static"){var _195=_194.parentNode;while(_195!=_194.offsetParent){var pcs=gcs(_195);if(pcs.position=="static"){ret.x+=px(_194,pcs.borderLeftWidth);ret.y+=px(_194,pcs.borderTopWidth);}_195=_195.parentNode;}}_194=_194.offsetParent;}while((_194!=dh)&&_194);}else{if(node.x&&node.y){ret.x+=isNaN(node.x)?0:node.x;ret.y+=isNaN(node.y)?0:node.y;}}}if(_192){var _196=d._docScroll();ret.x+=_196.x;ret.y+=_196.y;}return ret;};dojo.coords=function(node,_197){var n=byId(node),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d.position(n,_197);mb.x=abs.x;mb.y=abs.y;return mb;};var _198={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",valuetype:"valueType"},_199={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"},_19a={innerHTML:1,className:1,htmlFor:d.isIE,value:1};var _19b=function(name){return _199[name.toLowerCase()]||name;};var _19c=function(node,name){var attr=node.getAttributeNode&&node.getAttributeNode(name);return attr&&attr.specified;};dojo.hasAttr=function(node,name){var lc=name.toLowerCase();return _19a[_198[lc]||name]||_19c(byId(node),_199[lc]||name);};var _19d={},_19e=0,_19f=dojo._scopeName+"attrid",_1a0={col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1};dojo.attr=function(node,name,_1a1){node=byId(node);var args=arguments.length,prop;if(args==2&&typeof name!="string"){for(var x in name){d.attr(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_1a2=_198[lc]||name,_1a3=_19a[_1a2],_1a4=_199[lc]||name;if(args==3){do{if(_1a2=="style"&&typeof _1a1!="string"){d.style(node,_1a1);break;}if(_1a2=="innerHTML"){if(d.isIE&&node.tagName.toLowerCase() in _1a0){d.empty(node);node.appendChild(d._toDom(_1a1,node.ownerDocument));}else{node[_1a2]=_1a1;}break;}if(d.isFunction(_1a1)){var _1a5=d.attr(node,_19f);if(!_1a5){_1a5=_19e++;d.attr(node,_19f,_1a5);}if(!_19d[_1a5]){_19d[_1a5]={};}var h=_19d[_1a5][_1a2];if(h){d.disconnect(h);}else{try{delete node[_1a2];}catch(e){}}_19d[_1a5][_1a2]=d.connect(node,_1a2,_1a1);break;}if(_1a3||typeof _1a1=="boolean"){node[_1a2]=_1a1;break;}node.setAttribute(_1a4,_1a1);}while(false);return node;}_1a1=node[_1a2];if(_1a3&&typeof _1a1!="undefined"){return _1a1;}if(_1a2!="href"&&(typeof _1a1=="boolean"||d.isFunction(_1a1))){return _1a1;}return _19c(node,_1a4)?node.getAttribute(_1a4):null;};dojo.removeAttr=function(node,name){byId(node).removeAttribute(_19b(name));};dojo.getNodeProp=function(node,name){node=byId(node);var lc=name.toLowerCase(),_1a6=_198[lc]||name;if((_1a6 in node)&&_1a6!="href"){return node[_1a6];}var _1a7=_199[lc]||name;return _19c(node,_1a7)?node.getAttribute(_1a7):null;};dojo.create=function(tag,_1a8,_1a9,pos){var doc=d.doc;if(_1a9){_1a9=byId(_1a9);doc=_1a9.ownerDocument;}if(typeof tag=="string"){tag=doc.createElement(tag);}if(_1a8){d.attr(tag,_1a8);}if(_1a9){d.place(tag,_1a9,pos);}return tag;};d.empty=d.isIE?function(node){node=byId(node);for(var c;c=node.lastChild;){d.destroy(c);}}:function(node){byId(node).innerHTML="";};var _1aa={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_1ab=/<\s*([\w\:]+)/,_1ac={},_1ad=0,_1ae="__"+d._scopeName+"ToDomId";for(var _1af in _1aa){var tw=_1aa[_1af];tw.pre=_1af=="option"?"<select multiple=\"multiple\">":"<"+tw.join("><")+">";tw.post="</"+tw.reverse().join("></")+">";}d._toDom=function(frag,doc){doc=doc||d.doc;var _1b0=doc[_1ae];if(!_1b0){doc[_1ae]=_1b0=++_1ad+"";_1ac[_1b0]=doc.createElement("div");}frag+="";var _1b1=frag.match(_1ab),tag=_1b1?_1b1[1].toLowerCase():"",_1b2=_1ac[_1b0],wrap,i,fc,df;if(_1b1&&_1aa[tag]){wrap=_1aa[tag];_1b2.innerHTML=wrap.pre+frag+wrap.post;for(i=wrap.length;i;--i){_1b2=_1b2.firstChild;}}else{_1b2.innerHTML=frag;}if(_1b2.childNodes.length==1){return _1b2.removeChild(_1b2.firstChild);}df=doc.createDocumentFragment();while(fc=_1b2.firstChild){df.appendChild(fc);}return df;};var _1b3="className";dojo.hasClass=function(node,_1b4){return ((" "+byId(node)[_1b3]+" ").indexOf(" "+_1b4+" ")>=0);};var _1b5=/\s+/,a1=[""],_1b6=function(s){if(typeof s=="string"||s instanceof String){if(s.indexOf(" ")<0){a1[0]=s;return a1;}else{return s.split(_1b5);}}return s||"";};dojo.addClass=function(node,_1b7){node=byId(node);_1b7=_1b6(_1b7);var cls=node[_1b3],_1b8;cls=cls?" "+cls+" ":" ";_1b8=cls.length;for(var i=0,len=_1b7.length,c;i<len;++i){c=_1b7[i];if(c&&cls.indexOf(" "+c+" ")<0){cls+=c+" ";}}if(_1b8<cls.length){node[_1b3]=cls.substr(1,cls.length-2);}};dojo.removeClass=function(node,_1b9){node=byId(node);var cls;if(_1b9!==undefined){_1b9=_1b6(_1b9);cls=" "+node[_1b3]+" ";for(var i=0,len=_1b9.length;i<len;++i){cls=cls.replace(" "+_1b9[i]+" "," ");}cls=d.trim(cls);}else{cls="";}if(node[_1b3]!=cls){node[_1b3]=cls;}};dojo.toggleClass=function(node,_1ba,_1bb){if(_1bb===undefined){_1bb=!d.hasClass(node,_1ba);}d[_1bb?"addClass":"removeClass"](node,_1ba);};})();}if(!dojo._hasResource["dojo._base.NodeList"]){dojo._hasResource["dojo._base.NodeList"]=true;dojo.provide("dojo._base.NodeList");(function(){var d=dojo;var ap=Array.prototype,aps=ap.slice,apc=ap.concat;var tnl=function(a,_1bc,_1bd){if(!a.sort){a=aps.call(a,0);}var ctor=_1bd||this._NodeListCtor||d._NodeListCtor;a.constructor=ctor;dojo._mixin(a,ctor.prototype);a._NodeListCtor=ctor;return _1bc?a._stash(_1bc):a;};var _1be=function(f,a,o){a=[0].concat(aps.call(a,0));o=o||d.global;return function(node){a[0]=node;return f.apply(o,a);};};var _1bf=function(f,o){return function(){this.forEach(_1be(f,arguments,o));return this;};};var _1c0=function(f,o){return function(){return this.map(_1be(f,arguments,o));};};var _1c1=function(f,o){return function(){return this.filter(_1be(f,arguments,o));};};var _1c2=function(f,g,o){return function(){var a=arguments,body=_1be(f,a,o);if(g.call(o||d.global,a)){return this.map(body);}this.forEach(body);return this;};};var _1c3=function(a){return a.length==1&&(typeof a[0]=="string");};var _1c4=function(node){var p=node.parentNode;if(p){p.removeChild(node);}};dojo.NodeList=function(){return tnl(Array.apply(null,arguments));};d._NodeListCtor=d.NodeList;var nl=d.NodeList,nlp=nl.prototype;nl._wrap=nlp._wrap=tnl;nl._adaptAsMap=_1c0;nl._adaptAsForEach=_1bf;nl._adaptAsFilter=_1c1;nl._adaptWithCondition=_1c2;d.forEach(["slice","splice"],function(name){var f=ap[name];nlp[name]=function(){return this._wrap(f.apply(this,arguments),name=="slice"?this:null);};});d.forEach(["indexOf","lastIndexOf","every","some"],function(name){var f=d[name];nlp[name]=function(){return f.apply(d,[this].concat(aps.call(arguments,0)));};});d.forEach(["attr","style"],function(name){nlp[name]=_1c2(d[name],_1c3);});d.forEach(["connect","addClass","removeClass","toggleClass","empty","removeAttr"],function(name){nlp[name]=_1bf(d[name]);});dojo.extend(dojo.NodeList,{_normalize:function(_1c5,_1c6){var _1c7=_1c5.parse===true?true:false;if(typeof _1c5.template=="string"){var _1c8=_1c5.templateFunc||(dojo.string&&dojo.string.substitute);_1c5=_1c8?_1c8(_1c5.template,_1c5):_1c5;}var type=(typeof _1c5);if(type=="string"||type=="number"){_1c5=dojo._toDom(_1c5,(_1c6&&_1c6.ownerDocument));if(_1c5.nodeType==11){_1c5=dojo._toArray(_1c5.childNodes);}else{_1c5=[_1c5];}}else{if(!dojo.isArrayLike(_1c5)){_1c5=[_1c5];}else{if(!dojo.isArray(_1c5)){_1c5=dojo._toArray(_1c5);}}}if(_1c7){_1c5._runParse=true;}return _1c5;},_cloneNode:function(node){return node.cloneNode(true);},_place:function(ary,_1c9,_1ca,_1cb){if(_1c9.nodeType!=1&&_1ca=="only"){return;}var _1cc=_1c9,_1cd;var _1ce=ary.length;for(var i=_1ce-1;i>=0;i--){var node=(_1cb?this._cloneNode(ary[i]):ary[i]);if(ary._runParse&&dojo.parser&&dojo.parser.parse){if(!_1cd){_1cd=_1cc.ownerDocument.createElement("div");}_1cd.appendChild(node);dojo.parser.parse(_1cd);node=_1cd.firstChild;while(_1cd.firstChild){_1cd.removeChild(_1cd.firstChild);}}if(i==_1ce-1){dojo.place(node,_1cc,_1ca);}else{_1cc.parentNode.insertBefore(node,_1cc);}_1cc=node;}},_stash:function(_1cf){this._parent=_1cf;return this;},end:function(){if(this._parent){return this._parent;}else{return new this._NodeListCtor();}},concat:function(item){var t=d.isArray(this)?this:aps.call(this,0),m=d.map(arguments,function(a){return a&&!d.isArray(a)&&(typeof NodeList!="undefined"&&a.constructor===NodeList||a.constructor===this._NodeListCtor)?aps.call(a,0):a;});return this._wrap(apc.apply(t,m),this);},map:function(func,obj){return this._wrap(d.map(this,func,obj),this);},forEach:function(_1d0,_1d1){d.forEach(this,_1d0,_1d1);return this;},coords:_1c0(d.coords),position:_1c0(d.position),place:function(_1d2,_1d3){var item=d.query(_1d2)[0];return this.forEach(function(node){d.place(node,item,_1d3);});},orphan:function(_1d4){return (_1d4?d._filterQueryResult(this,_1d4):this).forEach(_1c4);},adopt:function(_1d5,_1d6){return d.query(_1d5).place(this[0],_1d6)._stash(this);},query:function(_1d7){if(!_1d7){return this;}var ret=this.map(function(node){return d.query(_1d7,node).filter(function(_1d8){return _1d8!==undefined;});});return this._wrap(apc.apply([],ret),this);},filter:function(_1d9){var a=arguments,_1da=this,_1db=0;if(typeof _1d9=="string"){_1da=d._filterQueryResult(this,a[0]);if(a.length==1){return _1da._stash(this);}_1db=1;}return this._wrap(d.filter(_1da,a[_1db],a[_1db+1]),this);},addContent:function(_1dc,_1dd){_1dc=this._normalize(_1dc,this[0]);for(var i=0,node;node=this[i];i++){this._place(_1dc,node,_1dd,i>0);}return this;},instantiate:function(_1de,_1df){var c=d.isFunction(_1de)?_1de:d.getObject(_1de);_1df=_1df||{};return this.forEach(function(node){new c(_1df,node);});},at:function(){var t=new this._NodeListCtor();d.forEach(arguments,function(i){if(i<0){i=this.length+i;}if(this[i]){t.push(this[i]);}},this);return t._stash(this);}});nl.events=["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"];d.forEach(nl.events,function(evt){var _1e0="on"+evt;nlp[_1e0]=function(a,b){return this.connect(_1e0,a,b);};});})();}if(!dojo._hasResource["dojo._base.query"]){dojo._hasResource["dojo._base.query"]=true;if(typeof dojo!="undefined"){dojo.provide("dojo._base.query");}(function(d){var trim=d.trim;var each=d.forEach;var qlc=d._NodeListCtor=d.NodeList;var _1e1=function(){return d.doc;};var _1e2=((d.isWebKit||d.isMozilla)&&((_1e1().compatMode)=="BackCompat"));var _1e3=!!_1e1().firstChild["children"]?"children":"childNodes";var _1e4=">~+";var _1e5=false;var _1e6=function(){return true;};var _1e7=function(_1e8){if(_1e4.indexOf(_1e8.slice(-1))>=0){_1e8+=" * ";}else{_1e8+=" ";}var ts=function(s,e){return trim(_1e8.slice(s,e));};var _1e9=[];var _1ea=-1,_1eb=-1,_1ec=-1,_1ed=-1,_1ee=-1,inId=-1,_1ef=-1,lc="",cc="",_1f0;var x=0,ql=_1e8.length,_1f1=null,_1f2=null;var _1f3=function(){if(_1ef>=0){var tv=(_1ef==x)?null:ts(_1ef,x);_1f1[(_1e4.indexOf(tv)<0)?"tag":"oper"]=tv;_1ef=-1;}};var _1f4=function(){if(inId>=0){_1f1.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _1f5=function(){if(_1ee>=0){_1f1.classes.push(ts(_1ee+1,x).replace(/\\/g,""));_1ee=-1;}};var _1f6=function(){_1f4();_1f3();_1f5();};var _1f7=function(){_1f6();if(_1ed>=0){_1f1.pseudos.push({name:ts(_1ed+1,x)});}_1f1.loops=(_1f1.pseudos.length||_1f1.attrs.length||_1f1.classes.length);_1f1.oquery=_1f1.query=ts(_1f0,x);_1f1.otag=_1f1.tag=(_1f1["oper"])?null:(_1f1.tag||"*");if(_1f1.tag){_1f1.tag=_1f1.tag.toUpperCase();}if(_1e9.length&&(_1e9[_1e9.length-1].oper)){_1f1.infixOper=_1e9.pop();_1f1.query=_1f1.infixOper.query+" "+_1f1.query;}_1e9.push(_1f1);_1f1=null;};for(;lc=cc,cc=_1e8.charAt(x),x<ql;x++){if(lc=="\\"){continue;}if(!_1f1){_1f0=x;_1f1={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return (_1e5)?this.otag:this.tag;}};_1ef=x;}if(_1ea>=0){if(cc=="]"){if(!_1f2.attr){_1f2.attr=ts(_1ea+1,x);}else{_1f2.matchFor=ts((_1ec||_1ea+1),x);}var cmf=_1f2.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_1f2.matchFor=cmf.slice(1,-1);}}_1f1.attrs.push(_1f2);_1f2=null;_1ea=_1ec=-1;}else{if(cc=="="){var _1f8=("|~^$*".indexOf(lc)>=0)?lc:"";_1f2.type=_1f8+cc;_1f2.attr=ts(_1ea+1,x-_1f8.length);_1ec=x+1;}}}else{if(_1eb>=0){if(cc==")"){if(_1ed>=0){_1f2.value=ts(_1eb+1,x);}_1ed=_1eb=-1;}}else{if(cc=="#"){_1f6();inId=x+1;}else{if(cc=="."){_1f6();_1ee=x;}else{if(cc==":"){_1f6();_1ed=x;}else{if(cc=="["){_1f6();_1ea=x;_1f2={};}else{if(cc=="("){if(_1ed>=0){_1f2={name:ts(_1ed+1,x),value:null};_1f1.pseudos.push(_1f2);}_1eb=x;}else{if((cc==" ")&&(lc!=cc)){_1f7();}}}}}}}}}return _1e9;};var _1f9=function(_1fa,_1fb){if(!_1fa){return _1fb;}if(!_1fb){return _1fa;}return function(){return _1fa.apply(window,arguments)&&_1fb.apply(window,arguments);};};var _1fc=function(i,arr){var r=arr||[];if(i){r.push(i);}return r;};var _1fd=function(n){return (1==n.nodeType);};var _1fe="";var _1ff=function(elem,attr){if(!elem){return _1fe;}if(attr=="class"){return elem.className||_1fe;}if(attr=="for"){return elem.htmlFor||_1fe;}if(attr=="style"){return elem.style.cssText||_1fe;}return (_1e5?elem.getAttribute(attr):elem.getAttribute(attr,2))||_1fe;};var _200={"*=":function(attr,_201){return function(elem){return (_1ff(elem,attr).indexOf(_201)>=0);};},"^=":function(attr,_202){return function(elem){return (_1ff(elem,attr).indexOf(_202)==0);};},"$=":function(attr,_203){var tval=" "+_203;return function(elem){var ea=" "+_1ff(elem,attr);return (ea.lastIndexOf(_203)==(ea.length-_203.length));};},"~=":function(attr,_204){var tval=" "+_204+" ";return function(elem){var ea=" "+_1ff(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_205){var _206=" "+_205+"-";return function(elem){var ea=" "+_1ff(elem,attr);return ((ea==_205)||(ea.indexOf(_206)==0));};},"=":function(attr,_207){return function(elem){return (_1ff(elem,attr)==_207);};}};var _208=(typeof _1e1().firstChild.nextElementSibling=="undefined");var _209=!_208?"nextElementSibling":"nextSibling";var _20a=!_208?"previousElementSibling":"previousSibling";var _20b=(_208?_1fd:_1e6);var _20c=function(node){while(node=node[_20a]){if(_20b(node)){return false;}}return true;};var _20d=function(node){while(node=node[_209]){if(_20b(node)){return false;}}return true;};var _20e=function(node){var root=node.parentNode;var i=0,tret=root[_1e3],ci=(node["_i"]||-1),cl=(root["_l"]||-1);if(!tret){return -1;}var l=tret.length;if(cl==l&&ci>=0&&cl>=0){return ci;}root["_l"]=l;ci=-1;for(var te=root["firstElementChild"]||root["firstChild"];te;te=te[_209]){if(_20b(te)){te["_i"]=++i;if(node===te){ci=i;}}}return ci;};var _20f=function(elem){return !((_20e(elem))%2);};var _210=function(elem){return ((_20e(elem))%2);};var _211={"checked":function(name,_212){return function(elem){return !!("checked" in elem?elem.checked:elem.selected);};},"first-child":function(){return _20c;},"last-child":function(){return _20d;},"only-child":function(name,_213){return function(node){if(!_20c(node)){return false;}if(!_20d(node)){return false;}return true;};},"empty":function(name,_214){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt===1)||(nt==3)){return false;}}return true;};},"contains":function(name,_215){var cz=_215.charAt(0);if(cz=="\""||cz=="'"){_215=_215.slice(1,-1);}return function(elem){return (elem.innerHTML.indexOf(_215)>=0);};},"not":function(name,_216){var p=_1e7(_216)[0];var _217={el:1};if(p.tag!="*"){_217.tag=1;}if(!p.classes.length){_217.classes=1;}var ntf=_218(p,_217);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_219){var pi=parseInt;if(_219=="odd"){return _210;}else{if(_219=="even"){return _20f;}}if(_219.indexOf("n")!=-1){var _21a=_219.split("n",2);var pred=_21a[0]?((_21a[0]=="-")?-1:pi(_21a[0])):1;var idx=_21a[1]?pi(_21a[1]):0;var lb=0,ub=-1;if(pred>0){if(idx<0){idx=(idx%pred)&&(pred+(idx%pred));}else{if(idx>0){if(idx>=pred){lb=idx-idx%pred;}idx=idx%pred;}}}else{if(pred<0){pred*=-1;if(idx>0){ub=idx;idx=idx%pred;}}}if(pred>0){return function(elem){var i=_20e(elem);return (i>=lb)&&(ub<0||i<=ub)&&((i%pred)==idx);};}else{_219=idx;}}var _21b=pi(_219);return function(elem){return (_20e(elem)==_21b);};}};var _21c=(d.isIE)?function(cond){var clc=cond.toLowerCase();if(clc=="class"){cond="className";}return function(elem){return (_1e5?elem.getAttribute(cond):elem[cond]||elem[clc]);};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _218=function(_21d,_21e){if(!_21d){return _1e6;}_21e=_21e||{};var ff=null;if(!("el" in _21e)){ff=_1f9(ff,_1fd);}if(!("tag" in _21e)){if(_21d.tag!="*"){ff=_1f9(ff,function(elem){return (elem&&(elem.tagName==_21d.getTag()));});}}if(!("classes" in _21e)){each(_21d.classes,function(_21f,idx,arr){var re=new RegExp("(?:^|\\s)"+_21f+"(?:\\s|$)");ff=_1f9(ff,function(elem){return re.test(elem.className);});ff.count=idx;});}if(!("pseudos" in _21e)){each(_21d.pseudos,function(_220){var pn=_220.name;if(_211[pn]){ff=_1f9(ff,_211[pn](pn,_220.value));}});}if(!("attrs" in _21e)){each(_21d.attrs,function(attr){var _221;var a=attr.attr;if(attr.type&&_200[attr.type]){_221=_200[attr.type](a,attr.matchFor);}else{if(a.length){_221=_21c(a);}}if(_221){ff=_1f9(ff,_221);}});}if(!("id" in _21e)){if(_21d.id){ff=_1f9(ff,function(elem){return (!!elem&&(elem.id==_21d.id));});}}if(!ff){if(!("default" in _21e)){ff=_1e6;}}return ff;};var _222=function(_223){return function(node,ret,bag){while(node=node[_209]){if(_208&&(!_1fd(node))){continue;}if((!bag||_224(node,bag))&&_223(node)){ret.push(node);}break;}return ret;};};var _225=function(_226){return function(root,ret,bag){var te=root[_209];while(te){if(_20b(te)){if(bag&&!_224(te,bag)){break;}if(_226(te)){ret.push(te);}}te=te[_209];}return ret;};};var _227=function(_228){_228=_228||_1e6;return function(root,ret,bag){var te,x=0,tret=root[_1e3];while(te=tret[x++]){if(_20b(te)&&(!bag||_224(te,bag))&&(_228(te,x))){ret.push(te);}}return ret;};};var _229=function(node,root){var pn=node.parentNode;while(pn){if(pn==root){break;}pn=pn.parentNode;}return !!pn;};var _22a={};var _22b=function(_22c){var _22d=_22a[_22c.query];if(_22d){return _22d;}var io=_22c.infixOper;var oper=(io?io.oper:"");var _22e=_218(_22c,{el:1});var qt=_22c.tag;var _22f=("*"==qt);var ecs=_1e1()["getElementsByClassName"];if(!oper){if(_22c.id){_22e=(!_22c.loops&&_22f)?_1e6:_218(_22c,{el:1,id:1});_22d=function(root,arr){var te=d.byId(_22c.id,(root.ownerDocument||root));if(!te||!_22e(te)){return;}if(9==root.nodeType){return _1fc(te,arr);}else{if(_229(te,root)){return _1fc(te,arr);}}};}else{if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_22c.classes.length&&!_1e2){_22e=_218(_22c,{el:1,classes:1,id:1});var _230=_22c.classes.join(" ");_22d=function(root,arr,bag){var ret=_1fc(0,arr),te,x=0;var tret=root.getElementsByClassName(_230);while((te=tret[x++])){if(_22e(te,root)&&_224(te,bag)){ret.push(te);}}return ret;};}else{if(!_22f&&!_22c.loops){_22d=function(root,arr,bag){var ret=_1fc(0,arr),te,x=0;var tret=root.getElementsByTagName(_22c.getTag());while((te=tret[x++])){if(_224(te,bag)){ret.push(te);}}return ret;};}else{_22e=_218(_22c,{el:1,tag:1,id:1});_22d=function(root,arr,bag){var ret=_1fc(0,arr),te,x=0;var tret=root.getElementsByTagName(_22c.getTag());while((te=tret[x++])){if(_22e(te,root)&&_224(te,bag)){ret.push(te);}}return ret;};}}}}else{var _231={el:1};if(_22f){_231.tag=1;}_22e=_218(_22c,_231);if("+"==oper){_22d=_222(_22e);}else{if("~"==oper){_22d=_225(_22e);}else{if(">"==oper){_22d=_227(_22e);}}}}return _22a[_22c.query]=_22d;};var _232=function(root,_233){var _234=_1fc(root),qp,x,te,qpl=_233.length,bag,ret;for(var i=0;i<qpl;i++){ret=[];qp=_233[i];x=_234.length-1;if(x>0){bag={};ret.nozip=true;}var gef=_22b(qp);for(var j=0;(te=_234[j]);j++){gef(te,ret,bag);}if(!ret.length){break;}_234=ret;}return ret;};var _235={},_236={};var _237=function(_238){var _239=_1e7(trim(_238));if(_239.length==1){var tef=_22b(_239[0]);return function(root){var r=tef(root,new qlc());if(r){r.nozip=true;}return r;};}return function(root){return _232(root,_239);};};var nua=navigator.userAgent;var wk="WebKit/";var _23a=(d.isWebKit&&(nua.indexOf(wk)>0)&&(parseFloat(nua.split(wk)[1])>528));var _23b=d.isIE?"commentStrip":"nozip";var qsa="querySelectorAll";var _23c=(!!_1e1()[qsa]&&(!d.isSafari||(d.isSafari>3.1)||_23a));var _23d=/n\+\d|([^ ])?([>~+])([^ =])?/g;var _23e=function(_23f,pre,ch,post){return ch?(pre?pre+" ":"")+ch+(post?" "+post:""):_23f;};var _240=function(_241,_242){_241=_241.replace(_23d,_23e);if(_23c){var _243=_236[_241];if(_243&&!_242){return _243;}}var _244=_235[_241];if(_244){return _244;}var qcz=_241.charAt(0);var _245=(-1==_241.indexOf(" "));if((_241.indexOf("#")>=0)&&(_245)){_242=true;}var _246=(_23c&&(!_242)&&(_1e4.indexOf(qcz)==-1)&&(!d.isIE||(_241.indexOf(":")==-1))&&(!(_1e2&&(_241.indexOf(".")>=0)))&&(_241.indexOf(":contains")==-1)&&(_241.indexOf(":checked")==-1)&&(_241.indexOf("|=")==-1));if(_246){var tq=(_1e4.indexOf(_241.charAt(_241.length-1))>=0)?(_241+" *"):_241;return _236[_241]=function(root){try{if(!((9==root.nodeType)||_245)){throw "";}var r=root[qsa](tq);r[_23b]=true;return r;}catch(e){return _240(_241,true)(root);}};}else{var _247=_241.split(/\s*,\s*/);return _235[_241]=((_247.length<2)?_237(_241):function(root){var _248=0,ret=[],tp;while((tp=_247[_248++])){ret=ret.concat(_237(tp)(root));}return ret;});}};var _249=0;var _24a=d.isIE?function(node){if(_1e5){return (node.getAttribute("_uid")||node.setAttribute("_uid",++_249)||_249);}else{return node.uniqueID;}}:function(node){return (node._uid||(node._uid=++_249));};var _224=function(node,bag){if(!bag){return 1;}var id=_24a(node);if(!bag[id]){return bag[id]=1;}return 0;};var _24b="_zipIdx";var _24c=function(arr){if(arr&&arr.nozip){return (qlc._wrap)?qlc._wrap(arr):arr;}var ret=new qlc();if(!arr||!arr.length){return ret;}if(arr[0]){ret.push(arr[0]);}if(arr.length<2){return ret;}_249++;if(d.isIE&&_1e5){var _24d=_249+"";arr[0].setAttribute(_24b,_24d);for(var x=1,te;te=arr[x];x++){if(arr[x].getAttribute(_24b)!=_24d){ret.push(te);}te.setAttribute(_24b,_24d);}}else{if(d.isIE&&arr.commentStrip){try{for(var x=1,te;te=arr[x];x++){if(_1fd(te)){ret.push(te);}}}catch(e){}}else{if(arr[0]){arr[0][_24b]=_249;}for(var x=1,te;te=arr[x];x++){if(arr[x][_24b]!=_249){ret.push(te);}te[_24b]=_249;}}}return ret;};d.query=function(_24e,root){qlc=d._NodeListCtor;if(!_24e){return new qlc();}if(_24e.constructor==qlc){return _24e;}if(typeof _24e!="string"){return new qlc(_24e);}if(typeof root=="string"){root=d.byId(root);if(!root){return new qlc();}}root=root||_1e1();var od=root.ownerDocument||root.documentElement;_1e5=(root.contentType&&root.contentType=="application/xml")||(d.isOpera&&(root.doctype||od.toString()=="[object XMLDocument]"))||(!!od)&&(d.isIE?od.xml:(root.xmlVersion||od.xmlVersion));var r=_240(_24e)(root);if(r&&r.nozip&&!qlc._wrap){return r;}return _24c(r);};d.query.pseudos=_211;d._filterQueryResult=function(_24f,_250){var _251=new d._NodeListCtor();var _252=_218(_1e7(_250)[0]);for(var x=0,te;te=_24f[x];x++){if(_252(te)){_251.push(te);}}return _251;};})(this["queryPortability"]||this["acme"]||dojo);}if(!dojo._hasResource["dojo._base.xhr"]){dojo._hasResource["dojo._base.xhr"]=true;dojo.provide("dojo._base.xhr");(function(){var _253=dojo,cfg=_253.config;function _254(obj,name,_255){if(_255===null){return;}var val=obj[name];if(typeof val=="string"){obj[name]=[val,_255];}else{if(_253.isArray(val)){val.push(_255);}else{obj[name]=_255;}}};dojo.fieldToObject=function(_256){var ret=null;var item=_253.byId(_256);if(item){var _257=item.name;var type=(item.type||"").toLowerCase();if(_257&&type&&!item.disabled){if(type=="radio"||type=="checkbox"){if(item.checked){ret=item.value;}}else{if(item.multiple){ret=[];_253.query("option",item).forEach(function(opt){if(opt.selected){ret.push(opt.value);}});}else{ret=item.value;}}}}return ret;};dojo.formToObject=function(_258){var ret={};var _259="file|submit|image|reset|button|";_253.forEach(dojo.byId(_258).elements,function(item){var _25a=item.name;var type=(item.type||"").toLowerCase();if(_25a&&type&&_259.indexOf(type)==-1&&!item.disabled){_254(ret,_25a,_253.fieldToObject(item));if(type=="image"){ret[_25a+".x"]=ret[_25a+".y"]=ret[_25a].x=ret[_25a].y=0;}}});return ret;};dojo.objectToQuery=function(map){var enc=encodeURIComponent;var _25b=[];var _25c={};for(var name in map){var _25d=map[name];if(_25d!=_25c[name]){var _25e=enc(name)+"=";if(_253.isArray(_25d)){for(var i=0;i<_25d.length;i++){_25b.push(_25e+enc(_25d[i]));}}else{_25b.push(_25e+enc(_25d));}}}return _25b.join("&");};dojo.formToQuery=function(_25f){return _253.objectToQuery(_253.formToObject(_25f));};dojo.formToJson=function(_260,_261){return _253.toJson(_253.formToObject(_260),_261);};dojo.queryToObject=function(str){var ret={};var qp=str.split("&");var dec=decodeURIComponent;_253.forEach(qp,function(item){if(item.length){var _262=item.split("=");var name=dec(_262.shift());var val=dec(_262.join("="));if(typeof ret[name]=="string"){ret[name]=[ret[name]];}if(_253.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}});return ret;};dojo._blockAsync=false;var _263=_253._contentHandlers=dojo.contentHandlers={text:function(xhr){return xhr.responseText;},json:function(xhr){return _253.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!dojo.config.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _264=xhr.responseText;var _265=_264.indexOf("/*");var _266=_264.lastIndexOf("*/");if(_265==-1||_266==-1){throw new Error("JSON was not comment filtered");}return _253.fromJson(_264.substring(_265+2,_266));},javascript:function(xhr){return _253.eval(xhr.responseText);},xml:function(xhr){var _267=xhr.responseXML;if(_253.isIE&&(!_267||!_267.documentElement)){var ms=function(n){return "MSXML"+n+".DOMDocument";};var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];_253.some(dp,function(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(xhr.responseText);_267=dom;}catch(e){return false;}return true;});}return _267;},"json-comment-optional":function(xhr){if(xhr.responseText&&/^[^{\[]*\/\*/.test(xhr.responseText)){return _263["json-comment-filtered"](xhr);}else{return _263["json"](xhr);}}};dojo._ioSetArgs=function(args,_268,_269,_26a){var _26b={args:args,url:args.url};var _26c=null;if(args.form){var form=_253.byId(args.form);var _26d=form.getAttributeNode("action");_26b.url=_26b.url||(_26d?_26d.value:null);_26c=_253.formToObject(form);}var _26e=[{}];if(_26c){_26e.push(_26c);}if(args.content){_26e.push(args.content);}if(args.preventCache){_26e.push({"dojo.preventCache":new Date().valueOf()});}_26b.query=_253.objectToQuery(_253.mixin.apply(null,_26e));_26b.handleAs=args.handleAs||"text";var d=new _253.Deferred(_268);d.addCallbacks(_269,function(_26f){return _26a(_26f,d);});var ld=args.load;if(ld&&_253.isFunction(ld)){d.addCallback(function(_270){return ld.call(args,_270,_26b);});}var err=args.error;if(err&&_253.isFunction(err)){d.addErrback(function(_271){return err.call(args,_271,_26b);});}var _272=args.handle;if(_272&&_253.isFunction(_272)){d.addBoth(function(_273){return _272.call(args,_273,_26b);});}if(cfg.ioPublish&&_253.publish&&_26b.args.ioPublish!==false){d.addCallbacks(function(res){_253.publish("/dojo/io/load",[d,res]);return res;},function(res){_253.publish("/dojo/io/error",[d,res]);return res;});d.addBoth(function(res){_253.publish("/dojo/io/done",[d,res]);return res;});}d.ioArgs=_26b;return d;};var _274=function(dfd){dfd.canceled=true;var xhr=dfd.ioArgs.xhr;var _275=typeof xhr.abort;if(_275=="function"||_275=="object"||_275=="unknown"){xhr.abort();}var err=dfd.ioArgs.error;if(!err){err=new Error("xhr cancelled");err.dojoType="cancel";}return err;};var _276=function(dfd){var ret=_263[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return ret===undefined?null:ret;};var _277=function(_278,dfd){if(!dfd.ioArgs.args.failOk){console.error(_278);}return _278;};var _279=null;var _27a=[];var _27b=0;var _27c=function(dfd){if(_27b<=0){_27b=0;if(cfg.ioPublish&&_253.publish&&(!dfd||dfd&&dfd.ioArgs.args.ioPublish!==false)){_253.publish("/dojo/io/stop");}}};var _27d=function(){var now=(new Date()).getTime();if(!_253._blockAsync){for(var i=0,tif;i<_27a.length&&(tif=_27a[i]);i++){var dfd=tif.dfd;var func=function(){if(!dfd||dfd.canceled||!tif.validCheck(dfd)){_27a.splice(i--,1);_27b-=1;}else{if(tif.ioCheck(dfd)){_27a.splice(i--,1);tif.resHandle(dfd);_27b-=1;}else{if(dfd.startTime){if(dfd.startTime+(dfd.ioArgs.args.timeout||0)<now){_27a.splice(i--,1);var err=new Error("timeout exceeded");err.dojoType="timeout";dfd.errback(err);dfd.cancel();_27b-=1;}}}}};if(dojo.config.debugAtAllCosts){func.call(this);}else{try{func.call(this);}catch(e){dfd.errback(e);}}}}_27c(dfd);if(!_27a.length){clearInterval(_279);_279=null;return;}};dojo._ioCancelAll=function(){try{_253.forEach(_27a,function(i){try{i.dfd.cancel();}catch(e){}});}catch(e){}};if(_253.isIE){_253.addOnWindowUnload(_253._ioCancelAll);}_253._ioNotifyStart=function(dfd){if(cfg.ioPublish&&_253.publish&&dfd.ioArgs.args.ioPublish!==false){if(!_27b){_253.publish("/dojo/io/start");}_27b+=1;_253.publish("/dojo/io/send",[dfd]);}};_253._ioWatch=function(dfd,_27e,_27f,_280){var args=dfd.ioArgs.args;if(args.timeout){dfd.startTime=(new Date()).getTime();}_27a.push({dfd:dfd,validCheck:_27e,ioCheck:_27f,resHandle:_280});if(!_279){_279=setInterval(_27d,50);}if(args.sync){_27d();}};var _281="application/x-www-form-urlencoded";var _282=function(dfd){return dfd.ioArgs.xhr.readyState;};var _283=function(dfd){return 4==dfd.ioArgs.xhr.readyState;};var _284=function(dfd){var xhr=dfd.ioArgs.xhr;if(_253._isDocumentOk(xhr)){dfd.callback(dfd);}else{var err=new Error("Unable to load "+dfd.ioArgs.url+" status:"+xhr.status);err.status=xhr.status;err.responseText=xhr.responseText;dfd.errback(err);}};dojo._ioAddQueryToUrl=function(_285){if(_285.query.length){_285.url+=(_285.url.indexOf("?")==-1?"?":"&")+_285.query;_285.query=null;}};dojo.xhr=function(_286,args,_287){var dfd=_253._ioSetArgs(args,_274,_276,_277);var _288=dfd.ioArgs;var xhr=_288.xhr=_253._xhrObj(_288.args);if(!xhr){dfd.cancel();return dfd;}if("postData" in args){_288.query=args.postData;}else{if("putData" in args){_288.query=args.putData;}else{if("rawBody" in args){_288.query=args.rawBody;}else{if((arguments.length>2&&!_287)||"POST|PUT".indexOf(_286.toUpperCase())==-1){_253._ioAddQueryToUrl(_288);}}}}xhr.open(_286,_288.url,args.sync!==true,args.user||undefined,args.password||undefined);if(args.headers){for(var hdr in args.headers){if(hdr.toLowerCase()==="content-type"&&!args.contentType){args.contentType=args.headers[hdr];}else{if(args.headers[hdr]){xhr.setRequestHeader(hdr,args.headers[hdr]);}}}}xhr.setRequestHeader("Content-Type",args.contentType||_281);if(!args.headers||!("X-Requested-With" in args.headers)){xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");}_253._ioNotifyStart(dfd);if(dojo.config.debugAtAllCosts){xhr.send(_288.query);}else{try{xhr.send(_288.query);}catch(e){_288.error=e;dfd.cancel();}}_253._ioWatch(dfd,_282,_283,_284);xhr=null;return dfd;};dojo.xhrGet=function(args){return _253.xhr("GET",args);};dojo.rawXhrPost=dojo.xhrPost=function(args){return _253.xhr("POST",args,true);};dojo.rawXhrPut=dojo.xhrPut=function(args){return _253.xhr("PUT",args,true);};dojo.xhrDelete=function(args){return _253.xhr("DELETE",args);};})();}if(!dojo._hasResource["dojo._base.fx"]){dojo._hasResource["dojo._base.fx"]=true;dojo.provide("dojo._base.fx");(function(){var d=dojo;var _289=d._mixin;dojo._Line=function(_28a,end){this.start=_28a;this.end=end;};dojo._Line.prototype.getValue=function(n){return ((this.end-this.start)*n)+this.start;};dojo.Animation=function(args){_289(this,args);if(d.isArray(this.curve)){this.curve=new d._Line(this.curve[0],this.curve[1]);}};d._Animation=d.Animation;d.extend(dojo.Animation,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var _28b=this._percent,_28c=this.easing;return _28c?_28c(_28b):_28b;},_fire:function(evt,args){var a=args||[];if(this[evt]){if(d.config.debugAtAllCosts){this[evt].apply(this,a);}else{try{this[evt].apply(this,a);}catch(e){console.error("exception in animation handler for:",evt);console.error(e);}}}return this;},play:function(_28d,_28e){var _28f=this;if(_28f._delayTimer){_28f._clearTimer();}if(_28e){_28f._stopTimer();_28f._active=_28f._paused=false;_28f._percent=0;}else{if(_28f._active&&!_28f._paused){return _28f;}}_28f._fire("beforeBegin",[_28f.node]);var de=_28d||_28f.delay,_290=dojo.hitch(_28f,"_play",_28e);if(de>0){_28f._delayTimer=setTimeout(_290,de);return _28f;}_290();return _28f;},_play:function(_291){var _292=this;if(_292._delayTimer){_292._clearTimer();}_292._startTime=new Date().valueOf();if(_292._paused){_292._startTime-=_292.duration*_292._percent;}_292._active=true;_292._paused=false;var _293=_292.curve.getValue(_292._getStep());if(!_292._percent){if(!_292._startRepeatCount){_292._startRepeatCount=_292.repeat;}_292._fire("onBegin",[_293]);}_292._fire("onPlay",[_293]);_292._cycle();return _292;},pause:function(){var _294=this;if(_294._delayTimer){_294._clearTimer();}_294._stopTimer();if(!_294._active){return _294;}_294._paused=true;_294._fire("onPause",[_294.curve.getValue(_294._getStep())]);return _294;},gotoPercent:function(_295,_296){var _297=this;_297._stopTimer();_297._active=_297._paused=true;_297._percent=_295;if(_296){_297.play();}return _297;},stop:function(_298){var _299=this;if(_299._delayTimer){_299._clearTimer();}if(!_299._timer){return _299;}_299._stopTimer();if(_298){_299._percent=1;}_299._fire("onStop",[_299.curve.getValue(_299._getStep())]);_299._active=_299._paused=false;return _299;},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _29a=this;if(_29a._active){var curr=new Date().valueOf();var step=(curr-_29a._startTime)/(_29a.duration);if(step>=1){step=1;}_29a._percent=step;if(_29a.easing){step=_29a.easing(step);}_29a._fire("onAnimate",[_29a.curve.getValue(step)]);if(_29a._percent<1){_29a._startTimer();}else{_29a._active=false;if(_29a.repeat>0){_29a.repeat--;_29a.play(null,true);}else{if(_29a.repeat==-1){_29a.play(null,true);}else{if(_29a._startRepeatCount){_29a.repeat=_29a._startRepeatCount;_29a._startRepeatCount=0;}}}_29a._percent=0;_29a._fire("onEnd",[_29a.node]);!_29a.repeat&&_29a._stopTimer();}}return _29a;},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer;}});var ctr=0,_29b=null,_29c={run:function(){}};d.extend(d.Animation,{_startTimer:function(){if(!this._timer){this._timer=d.connect(_29c,"run",this,"_cycle");ctr++;}if(!_29b){_29b=setInterval(d.hitch(_29c,"run"),this.rate);}},_stopTimer:function(){if(this._timer){d.disconnect(this._timer);this._timer=null;ctr--;}if(ctr<=0){clearInterval(_29b);_29b=null;ctr=0;}}});var _29d=d.isIE?function(node){var ns=node.style;if(!ns.width.length&&d.style(node,"width")=="auto"){ns.width="auto";}}:function(){};dojo._fade=function(args){args.node=d.byId(args.node);var _29e=_289({properties:{}},args),_29f=(_29e.properties.opacity={});_29f.start=!("start" in _29e)?function(){return +d.style(_29e.node,"opacity")||0;}:_29e.start;_29f.end=_29e.end;var anim=d.animateProperty(_29e);d.connect(anim,"beforeBegin",d.partial(_29d,_29e.node));return anim;};dojo.fadeIn=function(args){return d._fade(_289({end:1},args));};dojo.fadeOut=function(args){return d._fade(_289({end:0},args));};dojo._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _2a0=function(_2a1){this._properties=_2a1;for(var p in _2a1){var prop=_2a1[p];if(prop.start instanceof d.Color){prop.tempColor=new d.Color();}}};_2a0.prototype.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p],_2a2=prop.start;if(_2a2 instanceof d.Color){ret[p]=d.blendColors(_2a2,prop.end,r,prop.tempColor).toCss();}else{if(!d.isArray(_2a2)){ret[p]=((prop.end-_2a2)*r)+_2a2+(p!="opacity"?prop.units||"px":0);}}}return ret;};dojo.animateProperty=function(args){var n=args.node=d.byId(args.node);if(!args.easing){args.easing=d._defaultEasing;}var anim=new d.Animation(args);d.connect(anim,"beforeBegin",anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];if(d.isFunction(prop)){prop=prop(n);}prop=pm[p]=_289({},(d.isObject(prop)?prop:{end:prop}));if(d.isFunction(prop.start)){prop.start=prop.start(n);}if(d.isFunction(prop.end)){prop.end=prop.end(n);}var _2a3=(p.toLowerCase().indexOf("color")>=0);function _2a4(node,p){var v={height:node.offsetHeight,width:node.offsetWidth}[p];if(v!==undefined){return v;}v=d.style(node,p);return (p=="opacity")?+v:(_2a3?v:parseFloat(v));};if(!("end" in prop)){prop.end=_2a4(n,p);}else{if(!("start" in prop)){prop.start=_2a4(n,p);}}if(_2a3){prop.start=new d.Color(prop.start);prop.end=new d.Color(prop.end);}else{prop.start=(p=="opacity")?+prop.start:parseFloat(prop.start);}}this.curve=new _2a0(pm);});d.connect(anim,"onAnimate",d.hitch(d,"style",anim.node));return anim;};dojo.anim=function(node,_2a5,_2a6,_2a7,_2a8,_2a9){return d.animateProperty({node:node,duration:_2a6||d.Animation.prototype.duration,properties:_2a5,easing:_2a7,onEnd:_2a8}).play(_2a9||0);};})();}if(!dojo._hasResource["dojo._base.browser"]){dojo._hasResource["dojo._base.browser"]=true;dojo.provide("dojo._base.browser");dojo.forEach(dojo.config.require,function(i){dojo["require"](i);});}if(dojo.isBrowser&&(document.readyState==="complete"||dojo.config.afterOnLoad)){window.setTimeout(dojo._loadInit,100);}})();
diff --git a/lib/dojo/dojo.js.uncompressed.js b/lib/dojo/dojo.js.uncompressed.js
new file mode 100644 (file)
index 0000000..07593d8
--- /dev/null
@@ -0,0 +1,11251 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+;(function(){
+
+       /*
+       dojo, dijit, and dojox must always be the first three, and in that order.
+       djConfig.scopeMap = [
+               ["dojo", "fojo"],
+               ["dijit", "fijit"],
+               ["dojox", "fojox"]
+       
+       ]
+       */
+
+       /**Build will replace this comment with a scoped djConfig **/
+
+       //The null below can be relaced by a build-time value used instead of djConfig.scopeMap.
+       var sMap = null;
+
+       //See if new scopes need to be defined.
+       if((sMap || (typeof djConfig != "undefined" && djConfig.scopeMap)) && (typeof window != "undefined")){
+               var scopeDef = "", scopePrefix = "", scopeSuffix = "", scopeMap = {}, scopeMapRev = {};
+               sMap = sMap || djConfig.scopeMap;
+               for(var i = 0; i < sMap.length; i++){
+                       //Make local variables, then global variables that use the locals.
+                       var newScope = sMap[i];
+                       scopeDef += "var " + newScope[0] + " = {}; " + newScope[1] + " = " + newScope[0] + ";" + newScope[1] + "._scopeName = '" + newScope[1] + "';";
+                       scopePrefix += (i == 0 ? "" : ",") + newScope[0];
+                       scopeSuffix += (i == 0 ? "" : ",") + newScope[1];
+                       scopeMap[newScope[0]] = newScope[1];
+                       scopeMapRev[newScope[1]] = newScope[0];
+               }
+
+               eval(scopeDef + "dojo._scopeArgs = [" + scopeSuffix + "];");
+
+               dojo._scopePrefixArgs = scopePrefix;
+               dojo._scopePrefix = "(function(" + scopePrefix + "){";
+               dojo._scopeSuffix = "})(" + scopeSuffix + ")";
+               dojo._scopeMap = scopeMap;
+               dojo._scopeMapRev = scopeMapRev;
+       }
+
+/*=====
+// note:
+//             'djConfig' does not exist under 'dojo.*' so that it can be set before the
+//             'dojo' variable exists.
+// note:
+//             Setting any of these variables *after* the library has loaded does
+//             nothing at all.
+
+djConfig = {
+       // summary:
+       //              Application code can set the global 'djConfig' prior to loading
+       //              the library to override certain global settings for how dojo works.
+       //
+       // isDebug: Boolean
+       //              Defaults to `false`. If set to `true`, ensures that Dojo provides
+       //              extended debugging feedback via Firebug. If Firebug is not available
+       //              on your platform, setting `isDebug` to `true` will force Dojo to
+       //              pull in (and display) the version of Firebug Lite which is
+       //              integrated into the Dojo distribution, thereby always providing a
+       //              debugging/logging console when `isDebug` is enabled. Note that
+       //              Firebug's `console.*` methods are ALWAYS defined by Dojo. If
+       //              `isDebug` is false and you are on a platform without Firebug, these
+       //              methods will be defined as no-ops.
+       isDebug: false,
+       // debugAtAllCosts: Boolean
+       //              Defaults to `false`. If set to `true`, this triggers an alternate
+       //              mode of the package system in which dependencies are detected and
+       //              only then are resources evaluated in dependency order via
+       //              `<script>` tag inclusion. This may double-request resources and
+       //              cause problems with scripts which expect `dojo.require()` to
+       //              preform synchronously. `debugAtAllCosts` can be an invaluable
+       //              debugging aid, but when using it, ensure that all code which
+       //              depends on Dojo modules is wrapped in `dojo.addOnLoad()` handlers.
+       //              Due to the somewhat unpredictable side-effects of using
+       //              `debugAtAllCosts`, it is strongly recommended that you enable this
+       //              flag as a last resort. `debugAtAllCosts` has no effect when loading
+       //              resources across domains. For usage information, see the
+       //              [Dojo Book](http://dojotoolkit.org/book/book-dojo/part-4-meta-dojo-making-your-dojo-code-run-faster-and-better/debugging-facilities/deb)
+       debugAtAllCosts: false,
+       // locale: String
+       //              The locale to assume for loading localized resources in this page,
+       //              specified according to [RFC 3066](http://www.ietf.org/rfc/rfc3066.txt).
+       //              Must be specified entirely in lowercase, e.g. `en-us` and `zh-cn`.
+       //              See the documentation for `dojo.i18n` and `dojo.requireLocalization`
+       //              for details on loading localized resources. If no locale is specified,
+       //              Dojo assumes the locale of the user agent, according to `navigator.userLanguage`
+       //              or `navigator.language` properties.
+       locale: undefined,
+       // extraLocale: Array
+       //              No default value. Specifies additional locales whose
+       //              resources should also be loaded alongside the default locale when
+       //              calls to `dojo.requireLocalization()` are processed.
+       extraLocale: undefined,
+       // baseUrl: String
+       //              The directory in which `dojo.js` is located. Under normal
+       //              conditions, Dojo auto-detects the correct location from which it
+       //              was loaded. You may need to manually configure `baseUrl` in cases
+       //              where you have renamed `dojo.js` or in which `<base>` tags confuse
+       //              some browsers (e.g. IE 6). The variable `dojo.baseUrl` is assigned
+       //              either the value of `djConfig.baseUrl` if one is provided or the
+       //              auto-detected root if not. Other modules are located relative to
+       //              this path. The path should end in a slash.
+       baseUrl: undefined,
+       // modulePaths: Object
+       //              A map of module names to paths relative to `dojo.baseUrl`. The
+       //              key/value pairs correspond directly to the arguments which
+       //              `dojo.registerModulePath` accepts. Specifiying
+       //              `djConfig.modulePaths = { "foo": "../../bar" }` is the equivalent
+       //              of calling `dojo.registerModulePath("foo", "../../bar");`. Multiple
+       //              modules may be configured via `djConfig.modulePaths`.
+       modulePaths: {},
+       // afterOnLoad: Boolean 
+       //              Indicates Dojo was added to the page after the page load. In this case
+       //              Dojo will not wait for the page DOMContentLoad/load events and fire
+       //              its dojo.addOnLoad callbacks after making sure all outstanding
+       //              dojo.required modules have loaded. Only works with a built dojo.js,
+       //              it does not work the dojo.js directly from source control.
+       afterOnLoad: false,
+       // addOnLoad: Function or Array
+       //              Adds a callback via dojo.addOnLoad. Useful when Dojo is added after
+       //              the page loads and djConfig.afterOnLoad is true. Supports the same
+       //              arguments as dojo.addOnLoad. When using a function reference, use
+       //              `djConfig.addOnLoad = function(){};`. For object with function name use
+       //              `djConfig.addOnLoad = [myObject, "functionName"];` and for object with
+       //              function reference use
+       //              `djConfig.addOnLoad = [myObject, function(){}];`
+       addOnLoad: null,
+       // require: Array
+       //              An array of module names to be loaded immediately after dojo.js has been included
+       //              in a page.
+       require: [],
+       // defaultDuration: Array
+       //              Default duration, in milliseconds, for wipe and fade animations within dijits.
+       //              Assigned to dijit.defaultDuration.
+       defaultDuration: 200,
+       // dojoBlankHtmlUrl: String
+       //              Used by some modules to configure an empty iframe. Used by dojo.io.iframe and
+       //              dojo.back, and dijit popup support in IE where an iframe is needed to make sure native
+       //              controls do not bleed through the popups. Normally this configuration variable 
+       //              does not need to be set, except when using cross-domain/CDN Dojo builds.
+       //              Save dojo/resources/blank.html to your domain and set `djConfig.dojoBlankHtmlUrl`
+       //              to the path on your domain your copy of blank.html.
+       dojoBlankHtmlUrl: undefined,
+       //      ioPublish: Boolean?
+       //              Set this to true to enable publishing of topics for the different phases of
+       //              IO operations. Publishing is done via dojo.publish. See dojo.__IoPublish for a list
+       //              of topics that are published.
+       ioPublish: false,
+       //  useCustomLogger: Anything?
+       //              If set to a value that evaluates to true such as a string or array and
+       //              isDebug is true and Firebug is not available or running, then it bypasses
+       //              the creation of Firebug Lite allowing you to define your own console object.
+       useCustomLogger: undefined,
+       // transparentColor: Array
+       //              Array containing the r, g, b components used as transparent color in dojo.Color;
+       //              if undefined, [255,255,255] (white) will be used.
+       transparentColor: undefined,
+       // skipIeDomLoaded: Boolean
+       //              For IE only, skip the DOMContentLoaded hack used. Sometimes it can cause an Operation
+       //              Aborted error if the rest of the page triggers script defers before the DOM is ready.
+       //              If this is config value is set to true, then dojo.addOnLoad callbacks will not be
+       //              triggered until the page load event, which is after images and iframes load. If you
+       //              want to trigger the callbacks sooner, you can put a script block in the bottom of
+       //              your HTML that calls dojo._loadInit();. If you are using multiversion support, change
+       //              "dojo." to the appropriate scope name for dojo.
+       skipIeDomLoaded: false
+}
+=====*/
+
+(function(){
+       // firebug stubs
+
+       if(typeof this["loadFirebugConsole"] == "function"){
+               // for Firebug 1.2
+               this["loadFirebugConsole"]();
+       }else{
+               this.console = this.console || {};
+
+               //      Be careful to leave 'log' always at the end
+               var cn = [
+                       "assert", "count", "debug", "dir", "dirxml", "error", "group",
+                       "groupEnd", "info", "profile", "profileEnd", "time", "timeEnd",
+                       "trace", "warn", "log"
+               ];
+               var i=0, tn;
+               while((tn=cn[i++])){
+                       if(!console[tn]){
+                               (function(){
+                                       var tcn = tn+"";
+                                       console[tcn] = ('log' in console) ? function(){
+                                               var a = Array.apply({}, arguments);
+                                               a.unshift(tcn+":");
+                                               console["log"](a.join(" "));
+                                       } : function(){}
+                                       console[tcn]._fake = true;
+                               })();
+                       }
+               }
+       }
+
+       //TODOC:  HOW TO DOC THIS?
+       // dojo is the root variable of (almost all) our public symbols -- make sure it is defined.
+       if(typeof dojo == "undefined"){
+               dojo = {
+                       _scopeName: "dojo",
+                       _scopePrefix: "",
+                       _scopePrefixArgs: "",
+                       _scopeSuffix: "",
+                       _scopeMap: {},
+                       _scopeMapRev: {}
+               };
+       }
+
+       var d = dojo;
+
+       //Need placeholders for dijit and dojox for scoping code.
+       if(typeof dijit == "undefined"){
+               dijit = {_scopeName: "dijit"};
+       }
+       if(typeof dojox == "undefined"){
+               dojox = {_scopeName: "dojox"};
+       }
+
+       if(!d._scopeArgs){
+               d._scopeArgs = [dojo, dijit, dojox];
+       }
+
+/*=====
+dojo.global = {
+       //      summary:
+       //              Alias for the global scope
+       //              (e.g. the window object in a browser).
+       //      description:
+       //              Refer to 'dojo.global' rather than referring to window to ensure your
+       //              code runs correctly in contexts other than web browsers (e.g. Rhino on a server).
+}
+=====*/
+       d.global = this;
+
+       d.config =/*===== djConfig = =====*/{
+               isDebug: false,
+               debugAtAllCosts: false
+       };
+
+       if(typeof djConfig != "undefined"){
+               for(var opt in djConfig){
+                       d.config[opt] = djConfig[opt];
+               }
+       }
+
+/*=====
+       // Override locale setting, if specified
+       dojo.locale = {
+               // summary: the locale as defined by Dojo (read-only)
+       };
+=====*/
+       dojo.locale = d.config.locale;
+
+       var rev = "$Rev: 22487 $".match(/\d+/);
+
+/*=====
+       dojo.version = function(){
+               // summary:
+               //              Version number of the Dojo Toolkit
+               // major: Integer
+               //              Major version. If total version is "1.2.0beta1", will be 1
+               // minor: Integer
+               //              Minor version. If total version is "1.2.0beta1", will be 2
+               // patch: Integer
+               //              Patch version. If total version is "1.2.0beta1", will be 0
+               // flag: String
+               //              Descriptor flag. If total version is "1.2.0beta1", will be "beta1"
+               // revision: Number
+               //              The SVN rev from which dojo was pulled
+               this.major = 0;
+               this.minor = 0;
+               this.patch = 0;
+               this.flag = "";
+               this.revision = 0;
+       }
+=====*/
+       dojo.version = {
+               major: 1, minor: 5, patch: 0, flag: "",
+               revision: rev ? +rev[0] : NaN,
+               toString: function(){
+                       with(d.version){
+                               return major + "." + minor + "." + patch + flag + " (" + revision + ")";        // String
+                       }
+               }
+       }
+
+               // Register with the OpenAjax hub
+       if(typeof OpenAjax != "undefined"){
+               OpenAjax.hub.registerLibrary(dojo._scopeName, "http://dojotoolkit.org", d.version.toString());
+       }
+       
+       var extraNames, extraLen, empty = {};
+       for(var i in {toString: 1}){ extraNames = []; break; }
+       dojo._extraNames = extraNames = extraNames || ["hasOwnProperty", "valueOf", "isPrototypeOf",
+               "propertyIsEnumerable", "toLocaleString", "toString", "constructor"];
+       extraLen = extraNames.length;
+
+       dojo._mixin = function(/*Object*/ target, /*Object*/ source){
+               // summary:
+               //              Adds all properties and methods of source to target. This addition
+               //              is "prototype extension safe", so that instances of objects
+               //              will not pass along prototype defaults.
+               var name, s, i;
+               for(name in source){
+                       // the "tobj" condition avoid copying properties in "source"
+                       // inherited from Object.prototype.  For example, if target has a custom
+                       // toString() method, don't overwrite it with the toString() method
+                       // that source inherited from Object.prototype
+                       s = source[name];
+                       if(!(name in target) || (target[name] !== s && (!(name in empty) || empty[name] !== s))){
+                               target[name] = s;
+                       }
+               }
+                               // IE doesn't recognize some custom functions in for..in
+               if(extraLen && source){
+                       for(i = 0; i < extraLen; ++i){
+                               name = extraNames[i];
+                               s = source[name];
+                               if(!(name in target) || (target[name] !== s && (!(name in empty) || empty[name] !== s))){
+                                       target[name] = s;
+                               }
+                       }
+               }
+                               return target; // Object
+       }
+
+       dojo.mixin = function(/*Object*/obj, /*Object...*/props){
+               // summary:
+               //              Adds all properties and methods of props to obj and returns the
+               //              (now modified) obj.
+               //      description:
+               //              `dojo.mixin` can mix multiple source objects into a
+               //              destination object which is then returned. Unlike regular
+               //              `for...in` iteration, `dojo.mixin` is also smart about avoiding
+               //              extensions which other toolkits may unwisely add to the root
+               //              object prototype
+               //      obj:
+               //              The object to mix properties into. Also the return value.
+               //      props:
+               //              One or more objects whose values are successively copied into
+               //              obj. If more than one of these objects contain the same value,
+               //              the one specified last in the function call will "win".
+               //      example:
+               //              make a shallow copy of an object
+               //      |       var copy = dojo.mixin({}, source);
+               //      example:
+               //              many class constructors often take an object which specifies
+               //              values to be configured on the object. In this case, it is
+               //              often simplest to call `dojo.mixin` on the `this` object:
+               //      |       dojo.declare("acme.Base", null, {
+               //      |               constructor: function(properties){
+               //      |                       // property configuration:
+               //      |                       dojo.mixin(this, properties);
+               //      |       
+               //      |                       console.log(this.quip);
+               //      |                       //  ...
+               //      |               },
+               //      |               quip: "I wasn't born yesterday, you know - I've seen movies.",
+               //      |               // ...
+               //      |       });
+               //      |
+               //      |       // create an instance of the class and configure it
+               //      |       var b = new acme.Base({quip: "That's what it does!" });
+               //      example:
+               //              copy in properties from multiple objects
+               //      |       var flattened = dojo.mixin(
+               //      |               {
+               //      |                       name: "Frylock",
+               //      |                       braces: true
+               //      |               },
+               //      |               {
+               //      |                       name: "Carl Brutanananadilewski"
+               //      |               }
+               //      |       );
+               //      |       
+               //      |       // will print "Carl Brutanananadilewski"
+               //      |       console.log(flattened.name);
+               //      |       // will print "true"
+               //      |       console.log(flattened.braces);
+               if(!obj){ obj = {}; }
+               for(var i=1, l=arguments.length; i<l; i++){
+                       d._mixin(obj, arguments[i]);
+               }
+               return obj; // Object
+       }
+
+       dojo._getProp = function(/*Array*/parts, /*Boolean*/create, /*Object*/context){
+               var obj=context || d.global;
+               for(var i=0, p; obj && (p=parts[i]); i++){
+                       if(i == 0 && d._scopeMap[p]){
+                               p = d._scopeMap[p];
+                       }
+                       obj = (p in obj ? obj[p] : (create ? obj[p]={} : undefined));
+               }
+               return obj; // mixed
+       }
+
+       dojo.setObject = function(/*String*/name, /*Object*/value, /*Object?*/context){
+               // summary:
+               //              Set a property from a dot-separated string, such as "A.B.C"
+               //      description:
+               //              Useful for longer api chains where you have to test each object in
+               //              the chain, or when you have an object reference in string format.
+               //              Objects are created as needed along `path`. Returns the passed
+               //              value if setting is successful or `undefined` if not.
+               //      name:
+               //              Path to a property, in the form "A.B.C".
+               //      context:
+               //              Optional. Object to use as root of path. Defaults to
+               //              `dojo.global`.
+               //      example:
+               //              set the value of `foo.bar.baz`, regardless of whether
+               //              intermediate objects already exist:
+               //      |       dojo.setObject("foo.bar.baz", value);
+               //      example:
+               //              without `dojo.setObject`, we often see code like this:
+               //      |       // ensure that intermediate objects are available
+               //      |       if(!obj["parent"]){ obj.parent = {}; }
+               //      |       if(!obj.parent["child"]){ obj.parent.child= {}; }
+               //      |       // now we can safely set the property
+               //      |       obj.parent.child.prop = "some value";
+               //              wheras with `dojo.setObject`, we can shorten that to:
+               //      |       dojo.setObject("parent.child.prop", "some value", obj);
+               var parts=name.split("."), p=parts.pop(), obj=d._getProp(parts, true, context);
+               return obj && p ? (obj[p]=value) : undefined; // Object
+       }
+
+       dojo.getObject = function(/*String*/name, /*Boolean?*/create, /*Object?*/context){
+               // summary:
+               //              Get a property from a dot-separated string, such as "A.B.C"
+               //      description:
+               //              Useful for longer api chains where you have to test each object in
+               //              the chain, or when you have an object reference in string format.
+               //      name:
+               //              Path to an property, in the form "A.B.C".
+               //      create:
+               //              Optional. Defaults to `false`. If `true`, Objects will be
+               //              created at any point along the 'path' that is undefined.
+               //      context:
+               //              Optional. Object to use as root of path. Defaults to
+               //              'dojo.global'. Null may be passed.
+               return d._getProp(name.split("."), create, context); // Object
+       }
+
+       dojo.exists = function(/*String*/name, /*Object?*/obj){
+               //      summary:
+               //              determine if an object supports a given method
+               //      description:
+               //              useful for longer api chains where you have to test each object in
+               //              the chain. Useful only for object and method detection.
+               //              Not useful for testing generic properties on an object.
+               //              In particular, dojo.exists("foo.bar") when foo.bar = ""
+               //              will return false. Use ("bar" in foo) to test for those cases.
+               //      name:
+               //              Path to an object, in the form "A.B.C".
+               //      obj:
+               //              Object to use as root of path. Defaults to
+               //              'dojo.global'. Null may be passed.
+               //      example:
+               //      |       // define an object
+               //      |       var foo = {
+               //      |               bar: { }
+               //      |       };
+               //      |
+               //      |       // search the global scope
+               //      |       dojo.exists("foo.bar"); // true
+               //      |       dojo.exists("foo.bar.baz"); // false
+               //      |
+               //      |       // search from a particular scope
+               //      |       dojo.exists("bar", foo); // true
+               //      |       dojo.exists("bar.baz", foo); // false
+               return !!d.getObject(name, false, obj); // Boolean
+       }
+
+       dojo["eval"] = function(/*String*/ scriptFragment){
+               //      summary:
+               //              A legacy method created for use exclusively by internal Dojo methods. Do not use
+               //              this method directly, the behavior of this eval will differ from the normal
+               //              browser eval.
+               //      description:
+               //              Placed in a separate function to minimize size of trapped
+               //              exceptions. Calling eval() directly from some other scope may
+               //              complicate tracebacks on some platforms.
+               //      returns:
+               //              The result of the evaluation. Often `undefined`
+               return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment);    // Object
+       }
+
+       /*=====
+               dojo.deprecated = function(behaviour, extra, removal){
+                       //      summary:
+                       //              Log a debug message to indicate that a behavior has been
+                       //              deprecated.
+                       //      behaviour: String
+                       //              The API or behavior being deprecated. Usually in the form
+                       //              of "myApp.someFunction()".
+                       //      extra: String?
+                       //              Text to append to the message. Often provides advice on a
+                       //              new function or facility to achieve the same goal during
+                       //              the deprecation period.
+                       //      removal: String?
+                       //              Text to indicate when in the future the behavior will be
+                       //              removed. Usually a version number.
+                       //      example:
+                       //      |       dojo.deprecated("myApp.getTemp()", "use myApp.getLocaleTemp() instead", "1.0");
+               }
+
+               dojo.experimental = function(moduleName, extra){
+                       //      summary: Marks code as experimental.
+                       //      description:
+                       //              This can be used to mark a function, file, or module as
+                       //              experimental.  Experimental code is not ready to be used, and the
+                       //              APIs are subject to change without notice.  Experimental code may be
+                       //              completed deleted without going through the normal deprecation
+                       //              process.
+                       //      moduleName: String
+                       //              The name of a module, or the name of a module file or a specific
+                       //              function
+                       //      extra: String?
+                       //              some additional message for the user
+                       //      example:
+                       //      |       dojo.experimental("dojo.data.Result");
+                       //      example:
+                       //      |       dojo.experimental("dojo.weather.toKelvin()", "PENDING approval from NOAA");
+               }
+       =====*/
+
+       //Real functions declared in dojo._firebug.firebug.
+       d.deprecated = d.experimental = function(){};
+
+})();
+// vim:ai:ts=4:noet
+
+/*
+ * loader.js - A bootstrap module.  Runs before the hostenv_*.js file. Contains
+ * all of the package loading methods.
+ */
+
+(function(){
+       var d = dojo;
+
+       d.mixin(d, {
+               _loadedModules: {},
+               _inFlightCount: 0,
+               _hasResource: {},
+
+               _modulePrefixes: {
+                       dojo:   {       name: "dojo", value: "." },
+                       // dojox:       {       name: "dojox", value: "../dojox" },
+                       // dijit:       {       name: "dijit", value: "../dijit" },
+                       doh:    {       name: "doh", value: "../util/doh" },
+                       tests:  {       name: "tests", value: "tests" }
+               },
+
+               _moduleHasPrefix: function(/*String*/module){
+                       // summary: checks to see if module has been established
+                       var mp = d._modulePrefixes;
+                       return !!(mp[module] && mp[module].value); // Boolean
+               },
+
+               _getModulePrefix: function(/*String*/module){
+                       // summary: gets the prefix associated with module
+                       var mp = d._modulePrefixes;
+                       if(d._moduleHasPrefix(module)){
+                               return mp[module].value; // String
+                       }
+                       return module; // String
+               },
+
+               _loadedUrls: [],
+
+               //WARNING: 
+               //              This variable is referenced by packages outside of bootstrap:
+               //              FloatingPane.js and undo/browser.js
+               _postLoad: false,
+               
+               //Egad! Lots of test files push on this directly instead of using dojo.addOnLoad.
+               _loaders: [],
+               _unloaders: [],
+               _loadNotifying: false
+       });
+
+
+               dojo._loadPath = function(/*String*/relpath, /*String?*/module, /*Function?*/cb){
+               //      summary:
+               //              Load a Javascript module given a relative path
+               //
+               //      description:
+               //              Loads and interprets the script located at relpath, which is
+               //              relative to the script root directory.  If the script is found but
+               //              its interpretation causes a runtime exception, that exception is
+               //              not caught by us, so the caller will see it.  We return a true
+               //              value if and only if the script is found.
+               //
+               // relpath: 
+               //              A relative path to a script (no leading '/', and typically ending
+               //              in '.js').
+               // module: 
+               //              A module whose existance to check for after loading a path.  Can be
+               //              used to determine success or failure of the load.
+               // cb: 
+               //              a callback function to pass the result of evaluating the script
+
+               var uri = ((relpath.charAt(0) == '/' || relpath.match(/^\w+:/)) ? "" : d.baseUrl) + relpath;
+               try{
+                       return !module ? d._loadUri(uri, cb) : d._loadUriAndCheck(uri, module, cb); // Boolean
+               }catch(e){
+                       console.error(e);
+                       return false; // Boolean
+               }
+       }
+
+       dojo._loadUri = function(/*String*/uri, /*Function?*/cb){
+               //      summary:
+               //              Loads JavaScript from a URI
+               //      description:
+               //              Reads the contents of the URI, and evaluates the contents.  This is
+               //              used to load modules as well as resource bundles. Returns true if
+               //              it succeeded. Returns false if the URI reading failed.  Throws if
+               //              the evaluation throws.
+               //      uri: a uri which points at the script to be loaded
+               //      cb: 
+               //              a callback function to process the result of evaluating the script
+               //              as an expression, typically used by the resource bundle loader to
+               //              load JSON-style resources
+
+               if(d._loadedUrls[uri]){
+                       return true; // Boolean
+               }
+               d._inFlightCount++; // block addOnLoad calls that arrive while we're busy downloading
+               var contents = d._getText(uri, true);
+               if(contents){ // not 404, et al
+                       d._loadedUrls[uri] = true;
+                       d._loadedUrls.push(uri);
+                       if(cb){
+                               contents = '('+contents+')';
+                       }else{
+                               //Only do the scoping if no callback. If a callback is specified,
+                               //it is most likely the i18n bundle stuff.
+                               contents = d._scopePrefix + contents + d._scopeSuffix;
+                       }
+                       if(!d.isIE){ contents += "\r\n//@ sourceURL=" + uri; } // debugging assist for Firebug
+                       var value = d["eval"](contents);
+                       if(cb){ cb(value); }
+               }
+               // Check to see if we need to call _callLoaded() due to an addOnLoad() that arrived while we were busy downloading
+               if(--d._inFlightCount == 0 && d._postLoad && d._loaders.length){
+                       // We shouldn't be allowed to get here but Firefox allows an event 
+                       // (mouse, keybd, async xhrGet) to interrupt a synchronous xhrGet. 
+                       // If the current script block contains multiple require() statements, then after each
+                       // require() returns, inFlightCount == 0, but we want to hold the _callLoaded() until
+                       // all require()s are done since the out-of-sequence addOnLoad() presumably needs them all.
+                       // setTimeout allows the next require() to start (if needed), and then we check this again.
+                       setTimeout(function(){ 
+                               // If inFlightCount > 0, then multiple require()s are running sequentially and 
+                               // the next require() started after setTimeout() was executed but before we got here.
+                               if(d._inFlightCount == 0){ 
+                                       d._callLoaded();
+                               }
+                       }, 0);
+               }
+               return !!contents; // Boolean: contents? true : false
+       }
+       
+       // FIXME: probably need to add logging to this method
+       dojo._loadUriAndCheck = function(/*String*/uri, /*String*/moduleName, /*Function?*/cb){
+               // summary: calls loadUri then findModule and returns true if both succeed
+               var ok = false;
+               try{
+                       ok = d._loadUri(uri, cb);
+               }catch(e){
+                       console.error("failed loading " + uri + " with error: " + e);
+               }
+               return !!(ok && d._loadedModules[moduleName]); // Boolean
+       }
+
+       dojo.loaded = function(){
+               // summary:
+               //              signal fired when initial environment and package loading is
+               //              complete. You should use dojo.addOnLoad() instead of doing a 
+               //              direct dojo.connect() to this method in order to handle
+               //              initialization tasks that require the environment to be
+               //              initialized. In a browser host, declarative widgets will 
+               //              be constructed when this function finishes runing.
+               d._loadNotifying = true;
+               d._postLoad = true;
+               var mll = d._loaders;
+
+               //Clear listeners so new ones can be added
+               //For other xdomain package loads after the initial load.
+               d._loaders = [];
+
+               for(var x = 0; x < mll.length; x++){
+                       mll[x]();
+               }
+
+               d._loadNotifying = false;
+               
+               //Make sure nothing else got added to the onload queue
+               //after this first run. If something did, and we are not waiting for any
+               //more inflight resources, run again.
+               if(d._postLoad && d._inFlightCount == 0 && mll.length){
+                       d._callLoaded();
+               }
+       }
+
+       dojo.unloaded = function(){
+               // summary:
+               //              signal fired by impending environment destruction. You should use
+               //              dojo.addOnUnload() instead of doing a direct dojo.connect() to this 
+               //              method to perform page/application cleanup methods. See 
+               //              dojo.addOnUnload for more info.
+               var mll = d._unloaders;
+               while(mll.length){
+                       (mll.pop())();
+               }
+       }
+
+       d._onto = function(arr, obj, fn){
+               if(!fn){
+                       arr.push(obj);
+               }else if(fn){
+                       var func = (typeof fn == "string") ? obj[fn] : fn;
+                       arr.push(function(){ func.call(obj); });
+               }
+       }
+
+       dojo.ready = dojo.addOnLoad = function(/*Object*/obj, /*String|Function?*/functionName){
+               // summary:
+               //              Registers a function to be triggered after the DOM and dojo.require() calls 
+               //              have finished loading.
+               //
+               // description:
+               //              Registers a function to be triggered after the DOM has finished
+               //              loading and `dojo.require` modules have loaded. Widgets declared in markup 
+               //              have been instantiated if `djConfig.parseOnLoad` is true when this fires. 
+               //
+               //              Images and CSS files may or may not have finished downloading when
+               //              the specified function is called.  (Note that widgets' CSS and HTML
+               //              code is guaranteed to be downloaded before said widgets are
+               //              instantiated, though including css resouces BEFORE any script elements
+               //              is highly recommended).
+               //
+               // example:
+               //      Register an anonymous function to run when everything is ready
+               //      |       dojo.addOnLoad(function(){ doStuff(); });
+               //
+               // example:
+               //      Register a function to run when everything is ready by pointer:
+               //      |       var init = function(){ doStuff(); }
+               //      |       dojo.addOnLoad(init);
+               //
+               // example:
+               //      Register a function to run scoped to `object`, either by name or anonymously:
+               //      |       dojo.addOnLoad(object, "functionName");
+               //      |       dojo.addOnLoad(object, function(){ doStuff(); });
+
+               d._onto(d._loaders, obj, functionName);
+
+               //Added for xdomain loading. dojo.addOnLoad is used to
+               //indicate callbacks after doing some dojo.require() statements.
+               //In the xdomain case, if all the requires are loaded (after initial
+               //page load), then immediately call any listeners.
+               if(d._postLoad && d._inFlightCount == 0 && !d._loadNotifying){
+                       d._callLoaded();
+               }
+       }
+
+       //Support calling dojo.addOnLoad via djConfig.addOnLoad. Support all the
+       //call permutations of dojo.addOnLoad. Mainly useful when dojo is added
+       //to the page after the page has loaded.
+       var dca = d.config.addOnLoad;
+       if(dca){
+               d.addOnLoad[(dca instanceof Array ? "apply" : "call")](d, dca);
+       }
+
+       dojo._modulesLoaded = function(){
+               if(d._postLoad){ return; }
+               if(d._inFlightCount > 0){ 
+                       console.warn("files still in flight!");
+                       return;
+               }
+               d._callLoaded();
+       }
+
+       dojo._callLoaded = function(){
+
+               // The "object" check is for IE, and the other opera check fixes an
+               // issue in Opera where it could not find the body element in some
+               // widget test cases.  For 0.9, maybe route all browsers through the
+               // setTimeout (need protection still for non-browser environments
+               // though). This might also help the issue with FF 2.0 and freezing
+               // issues where we try to do sync xhr while background css images are
+               // being loaded (trac #2572)? Consider for 0.9.
+               if(typeof setTimeout == "object" || (d.config.useXDomain && d.isOpera)){
+                       setTimeout(
+                               d.isAIR ? function(){ d.loaded(); } : d._scopeName + ".loaded();",
+                               0);
+               }else{
+                       d.loaded();
+               }
+       }
+
+       dojo._getModuleSymbols = function(/*String*/modulename){
+               // summary:
+               //              Converts a module name in dotted JS notation to an array
+               //              representing the path in the source tree
+               var syms = modulename.split(".");
+               for(var i = syms.length; i>0; i--){
+                       var parentModule = syms.slice(0, i).join(".");
+                       if(i == 1 && !d._moduleHasPrefix(parentModule)){                
+                               // Support default module directory (sibling of dojo) for top-level modules 
+                               syms[0] = "../" + syms[0];
+                       }else{
+                               var parentModulePath = d._getModulePrefix(parentModule);
+                               if(parentModulePath != parentModule){
+                                       syms.splice(0, i, parentModulePath);
+                                       break;
+                               }
+                       }
+               }
+               return syms; // Array
+       }
+
+       dojo._global_omit_module_check = false;
+
+       dojo.loadInit = function(/*Function*/init){
+               //      summary:
+               //              Executes a function that needs to be executed for the loader's dojo.requireIf
+               //              resolutions to work. This is needed mostly for the xdomain loader case where
+               //              a function needs to be executed to set up the possible values for a dojo.requireIf
+               //              call.
+               //      init:
+               //              a function reference. Executed immediately.
+               //      description: This function is mainly a marker for the xdomain loader to know parts of
+               //              code that needs be executed outside the function wrappper that is placed around modules.
+               //              The init function could be executed more than once, and it should make no assumptions
+               //              on what is loaded, or what modules are available. Only the functionality in Dojo Base
+               //              is allowed to be used. Avoid using this method. For a valid use case,
+               //              see the source for dojox.gfx.
+               init();
+       }
+
+       dojo._loadModule = dojo.require = function(/*String*/moduleName, /*Boolean?*/omitModuleCheck){
+               //      summary:
+               //              loads a Javascript module from the appropriate URI
+               //      moduleName:
+               //              module name to load, using periods for separators,
+               //               e.g. "dojo.date.locale".  Module paths are de-referenced by dojo's
+               //              internal mapping of locations to names and are disambiguated by
+               //              longest prefix. See `dojo.registerModulePath()` for details on
+               //              registering new modules.
+               //      omitModuleCheck:
+               //              if `true`, omitModuleCheck skips the step of ensuring that the
+               //              loaded file actually defines the symbol it is referenced by.
+               //              For example if it called as `dojo.require("a.b.c")` and the
+               //              file located at `a/b/c.js` does not define an object `a.b.c`,
+               //              and exception will be throws whereas no exception is raised
+               //              when called as `dojo.require("a.b.c", true)`
+               //      description:
+               //              Modules are loaded via dojo.require by using one of two loaders: the normal loader
+               //              and the xdomain loader. The xdomain loader is used when dojo was built with a
+               //              custom build that specified loader=xdomain and the module lives on a modulePath
+               //              that is a whole URL, with protocol and a domain. The versions of Dojo that are on
+               //              the Google and AOL CDNs use the xdomain loader.
+               // 
+               //              If the module is loaded via the xdomain loader, it is an asynchronous load, since
+               //              the module is added via a dynamically created script tag. This
+               //              means that dojo.require() can return before the module has loaded. However, this 
+               //              should only happen in the case where you do dojo.require calls in the top-level
+               //              HTML page, or if you purposely avoid the loader checking for dojo.require
+               //              dependencies in your module by using a syntax like dojo["require"] to load the module.
+               // 
+               //              Sometimes it is useful to not have the loader detect the dojo.require calls in the
+               //              module so that you can dynamically load the modules as a result of an action on the
+               //              page, instead of right at module load time.
+               // 
+               //              Also, for script blocks in an HTML page, the loader does not pre-process them, so
+               //              it does not know to download the modules before the dojo.require calls occur.
+               // 
+               //              So, in those two cases, when you want on-the-fly module loading or for script blocks
+               //              in the HTML page, special care must be taken if the dojo.required code is loaded
+               //              asynchronously. To make sure you can execute code that depends on the dojo.required
+               //              modules, be sure to add the code that depends on the modules in a dojo.addOnLoad()
+               //              callback. dojo.addOnLoad waits for all outstanding modules to finish loading before
+               //              executing. Example:
+               // 
+               //              |       <script type="text/javascript">
+               //              |       dojo.require("foo");
+               //              |       dojo.require("bar");
+               //              |       dojo.addOnLoad(function(){
+               //              |               //you can now safely do something with foo and bar
+               //              |       });
+               //              |       </script>
+               // 
+               //              This type of syntax works with both xdomain and normal loaders, so it is good
+               //              practice to always use this idiom for on-the-fly code loading and in HTML script
+               //              blocks. If at some point you change loaders and where the code is loaded from,
+               //              it will all still work.
+               // 
+               //              More on how dojo.require
+               //              `dojo.require("A.B")` first checks to see if symbol A.B is
+               //              defined. If it is, it is simply returned (nothing to do).
+               //      
+               //              If it is not defined, it will look for `A/B.js` in the script root
+               //              directory.
+               //      
+               //              `dojo.require` throws an excpetion if it cannot find a file
+               //              to load, or if the symbol `A.B` is not defined after loading.
+               //      
+               //              It returns the object `A.B`, but note the caveats above about on-the-fly loading and
+               //              HTML script blocks when the xdomain loader is loading a module.
+               //      
+               //              `dojo.require()` does nothing about importing symbols into
+               //              the current namespace.  It is presumed that the caller will
+               //              take care of that. For example, to import all symbols into a
+               //              local block, you might write:
+               //      
+               //              |       with (dojo.require("A.B")) {
+               //              |               ...
+               //              |       }
+               //      
+               //              And to import just the leaf symbol to a local variable:
+               //      
+               //              |       var B = dojo.require("A.B");
+               //              |       ...
+               //      returns: the required namespace object
+               omitModuleCheck = d._global_omit_module_check || omitModuleCheck;
+
+               //Check if it is already loaded.
+               var module = d._loadedModules[moduleName];
+               if(module){
+                       return module;
+               }
+
+               // convert periods to slashes
+               var relpath = d._getModuleSymbols(moduleName).join("/") + '.js';
+
+               var modArg = !omitModuleCheck ? moduleName : null;
+               var ok = d._loadPath(relpath, modArg);
+
+               if(!ok && !omitModuleCheck){
+                       throw new Error("Could not load '" + moduleName + "'; last tried '" + relpath + "'");
+               }
+
+               // check that the symbol was defined
+               // Don't bother if we're doing xdomain (asynchronous) loading.
+               if(!omitModuleCheck && !d._isXDomain){
+                       // pass in false so we can give better error
+                       module = d._loadedModules[moduleName];
+                       if(!module){
+                               throw new Error("symbol '" + moduleName + "' is not defined after loading '" + relpath + "'"); 
+                       }
+               }
+
+               return module;
+       }
+
+       dojo.provide = function(/*String*/ resourceName){
+               //      summary:
+               //              Register a resource with the package system. Works in conjunction with `dojo.require`
+               //
+               //      description:
+               //              Each javascript source file is called a resource.  When a
+               //              resource is loaded by the browser, `dojo.provide()` registers
+               //              that it has been loaded.
+               //
+               //              Each javascript source file must have at least one
+               //              `dojo.provide()` call at the top of the file, corresponding to
+               //              the file name.  For example, `js/dojo/foo.js` must have
+               //              `dojo.provide("dojo.foo");` before any calls to
+               //              `dojo.require()` are made.
+               //      
+               //              For backwards compatibility reasons, in addition to registering
+               //              the resource, `dojo.provide()` also ensures that the javascript
+               //              object for the module exists.  For example,
+               //              `dojo.provide("dojox.data.FlickrStore")`, in addition to
+               //              registering that `FlickrStore.js` is a resource for the
+               //              `dojox.data` module, will ensure that the `dojox.data`
+               //              javascript object exists, so that calls like 
+               //              `dojo.data.foo = function(){ ... }` don't fail.
+               //
+               //              In the case of a build where multiple javascript source files
+               //              are combined into one bigger file (similar to a .lib or .jar
+               //              file), that file may contain multiple dojo.provide() calls, to
+               //              note that it includes multiple resources.
+               //
+               // resourceName: String
+               //              A dot-sperated string identifying a resource. 
+               //
+               // example:
+               //      Safely create a `my` object, and make dojo.require("my.CustomModule") work
+               //      |       dojo.provide("my.CustomModule"); 
+
+               //Make sure we have a string.
+               resourceName = resourceName + "";
+               return (d._loadedModules[resourceName] = d.getObject(resourceName, true)); // Object
+       }
+
+       //Start of old bootstrap2:
+
+       dojo.platformRequire = function(/*Object*/modMap){
+               //      summary:
+               //              require one or more modules based on which host environment
+               //              Dojo is currently operating in
+               //      description:
+               //              This method takes a "map" of arrays which one can use to
+               //              optionally load dojo modules. The map is indexed by the
+               //              possible dojo.name_ values, with two additional values:
+               //              "default" and "common". The items in the "default" array will
+               //              be loaded if none of the other items have been choosen based on
+               //              dojo.name_, set by your host environment. The items in the
+               //              "common" array will *always* be loaded, regardless of which
+               //              list is chosen.
+               //      example:
+               //              |       dojo.platformRequire({
+               //              |               browser: [
+               //              |                       "foo.sample", // simple module
+               //              |                       "foo.test",
+               //              |                       ["foo.bar.baz", true] // skip object check in _loadModule (dojo.require)
+               //              |               ],
+               //              |               default: [ "foo.sample._base" ],
+               //              |               common: [ "important.module.common" ]
+               //              |       });
+
+               var common = modMap.common || [];
+               var result = common.concat(modMap[d._name] || modMap["default"] || []);
+
+               for(var x=0; x<result.length; x++){
+                       var curr = result[x];
+                       if(curr.constructor == Array){
+                               d._loadModule.apply(d, curr);
+                       }else{
+                               d._loadModule(curr);
+                       }
+               }
+       }
+
+       dojo.requireIf = function(/*Boolean*/ condition, /*String*/ resourceName){
+               // summary:
+               //              If the condition is true then call `dojo.require()` for the specified
+               //              resource
+               //
+               // example:
+               //      |       dojo.requireIf(dojo.isBrowser, "my.special.Module");
+               
+               if(condition === true){
+                       // FIXME: why do we support chained require()'s here? does the build system?
+                       var args = [];
+                       for(var i = 1; i < arguments.length; i++){ 
+                               args.push(arguments[i]);
+                       }
+                       d.require.apply(d, args);
+               }
+       }
+
+       dojo.requireAfterIf = d.requireIf;
+
+       dojo.registerModulePath = function(/*String*/module, /*String*/prefix){
+               //      summary: 
+               //              Maps a module name to a path
+               //      description: 
+               //              An unregistered module is given the default path of ../[module],
+               //              relative to Dojo root. For example, module acme is mapped to
+               //              ../acme.  If you want to use a different module name, use
+               //              dojo.registerModulePath. 
+               //      example:
+               //              If your dojo.js is located at this location in the web root:
+               //      |       /myapp/js/dojo/dojo/dojo.js
+               //              and your modules are located at:
+               //      |       /myapp/js/foo/bar.js
+               //      |       /myapp/js/foo/baz.js
+               //      |       /myapp/js/foo/thud/xyzzy.js
+               //              Your application can tell Dojo to locate the "foo" namespace by calling:
+               //      |       dojo.registerModulePath("foo", "../../foo");
+               //              At which point you can then use dojo.require() to load the
+               //              modules (assuming they provide() the same things which are
+               //              required). The full code might be:
+               //      |       <script type="text/javascript" 
+               //      |               src="/myapp/js/dojo/dojo/dojo.js"></script>
+               //      |       <script type="text/javascript">
+               //      |               dojo.registerModulePath("foo", "../../foo");
+               //      |               dojo.require("foo.bar");
+               //      |               dojo.require("foo.baz");
+               //      |               dojo.require("foo.thud.xyzzy");
+               //      |       </script>
+               d._modulePrefixes[module] = { name: module, value: prefix };
+       }
+
+       dojo.requireLocalization = function(/*String*/moduleName, /*String*/bundleName, /*String?*/locale, /*String?*/availableFlatLocales){
+               // summary:
+               //              Declares translated resources and loads them if necessary, in the
+               //              same style as dojo.require.  Contents of the resource bundle are
+               //              typically strings, but may be any name/value pair, represented in
+               //              JSON format.  See also `dojo.i18n.getLocalization`.
+               //
+               // description:
+               //              Load translated resource bundles provided underneath the "nls"
+               //              directory within a package.  Translated resources may be located in
+               //              different packages throughout the source tree.  
+               //
+               //              Each directory is named for a locale as specified by RFC 3066,
+               //              (http://www.ietf.org/rfc/rfc3066.txt), normalized in lowercase.
+               //              Note that the two bundles in the example do not define all the
+               //              same variants.  For a given locale, bundles will be loaded for
+               //              that locale and all more general locales above it, including a
+               //              fallback at the root directory.  For example, a declaration for
+               //              the "de-at" locale will first load `nls/de-at/bundleone.js`,
+               //              then `nls/de/bundleone.js` and finally `nls/bundleone.js`.  The
+               //              data will be flattened into a single Object so that lookups
+               //              will follow this cascading pattern.  An optional build step can
+               //              preload the bundles to avoid data redundancy and the multiple
+               //              network hits normally required to load these resources.
+               //
+               // moduleName: 
+               //              name of the package containing the "nls" directory in which the
+               //              bundle is found
+               //
+               // bundleName: 
+               //              bundle name, i.e. the filename without the '.js' suffix. Using "nls" as a
+               //              a bundle name is not supported, since "nls" is the name of the folder
+               //              that holds bundles. Using "nls" as the bundle name will cause problems
+               //              with the custom build.
+               //
+               // locale: 
+               //              the locale to load (optional)  By default, the browser's user
+               //              locale as defined by dojo.locale
+               //
+               // availableFlatLocales: 
+               //              A comma-separated list of the available, flattened locales for this
+               //              bundle. This argument should only be set by the build process.
+               //
+               //      example:
+               //              A particular widget may define one or more resource bundles,
+               //              structured in a program as follows, where moduleName is
+               //              mycode.mywidget and bundleNames available include bundleone and
+               //              bundletwo:
+               //      |               ...
+               //      |       mycode/
+               //      |               mywidget/
+               //      |                       nls/
+               //      |                               bundleone.js (the fallback translation, English in this example)
+               //      |                               bundletwo.js (also a fallback translation)
+               //      |                               de/
+               //      |                                       bundleone.js
+               //      |                                       bundletwo.js
+               //      |                               de-at/
+               //      |                                       bundleone.js
+               //      |                               en/
+               //      |                                       (empty; use the fallback translation)
+               //      |                               en-us/
+               //      |                                       bundleone.js
+               //      |                               en-gb/
+               //      |                                       bundleone.js
+               //      |                               es/
+               //      |                                       bundleone.js
+               //      |                                       bundletwo.js
+               //      |                                 ...etc
+               //      |                               ...
+               //
+
+               d.require("dojo.i18n");
+               d.i18n._requireLocalization.apply(d.hostenv, arguments);
+       };
+
+
+       var ore = new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),
+               ire = new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");
+
+       dojo._Url = function(/*dojo._Url|String...*/){
+               // summary: 
+               //              Constructor to create an object representing a URL.
+               //              It is marked as private, since we might consider removing
+               //              or simplifying it.
+               // description: 
+               //              Each argument is evaluated in order relative to the next until
+               //              a canonical uri is produced. To get an absolute Uri relative to
+               //              the current document use:
+               //              new dojo._Url(document.baseURI, url)
+
+               var n = null,
+                       _a = arguments,
+                       uri = [_a[0]];
+               // resolve uri components relative to each other
+               for(var i = 1; i<_a.length; i++){
+                       if(!_a[i]){ continue; }
+
+                       // Safari doesn't support this.constructor so we have to be explicit
+                       // FIXME: Tracked (and fixed) in Webkit bug 3537.
+                       //              http://bugs.webkit.org/show_bug.cgi?id=3537
+                       var relobj = new d._Url(_a[i]+""),
+                               uriobj = new d._Url(uri[0]+"");
+
+                       if(
+                               relobj.path == "" &&
+                               !relobj.scheme &&
+                               !relobj.authority &&
+                               !relobj.query
+                       ){
+                               if(relobj.fragment != n){
+                                       uriobj.fragment = relobj.fragment;
+                               }
+                               relobj = uriobj;
+                       }else if(!relobj.scheme){
+                               relobj.scheme = uriobj.scheme;
+
+                               if(!relobj.authority){
+                                       relobj.authority = uriobj.authority;
+
+                                       if(relobj.path.charAt(0) != "/"){
+                                               var path = uriobj.path.substring(0,
+                                                       uriobj.path.lastIndexOf("/") + 1) + relobj.path;
+
+                                               var segs = path.split("/");
+                                               for(var j = 0; j < segs.length; j++){
+                                                       if(segs[j] == "."){
+                                                               // flatten "./" references
+                                                               if(j == segs.length - 1){
+                                                                       segs[j] = "";
+                                                               }else{
+                                                                       segs.splice(j, 1);
+                                                                       j--;
+                                                               }
+                                                       }else if(j > 0 && !(j == 1 && segs[0] == "") &&
+                                                               segs[j] == ".." && segs[j-1] != ".."){
+                                                               // flatten "../" references
+                                                               if(j == (segs.length - 1)){
+                                                                       segs.splice(j, 1);
+                                                                       segs[j - 1] = "";
+                                                               }else{
+                                                                       segs.splice(j - 1, 2);
+                                                                       j -= 2;
+                                                               }
+                                                       }
+                                               }
+                                               relobj.path = segs.join("/");
+                                       }
+                               }
+                       }
+
+                       uri = [];
+                       if(relobj.scheme){ 
+                               uri.push(relobj.scheme, ":");
+                       }
+                       if(relobj.authority){
+                               uri.push("//", relobj.authority);
+                       }
+                       uri.push(relobj.path);
+                       if(relobj.query){
+                               uri.push("?", relobj.query);
+                       }
+                       if(relobj.fragment){
+                               uri.push("#", relobj.fragment);
+                       }
+               }
+
+               this.uri = uri.join("");
+
+               // break the uri into its main components
+               var r = this.uri.match(ore);
+
+               this.scheme = r[2] || (r[1] ? "" : n);
+               this.authority = r[4] || (r[3] ? "" : n);
+               this.path = r[5]; // can never be undefined
+               this.query = r[7] || (r[6] ? "" : n);
+               this.fragment  = r[9] || (r[8] ? "" : n);
+
+               if(this.authority != n){
+                       // server based naming authority
+                       r = this.authority.match(ire);
+
+                       this.user = r[3] || n;
+                       this.password = r[4] || n;
+                       this.host = r[6] || r[7]; // ipv6 || ipv4
+                       this.port = r[9] || n;
+               }
+       }
+
+       dojo._Url.prototype.toString = function(){ return this.uri; };
+
+       dojo.moduleUrl = function(/*String*/module, /*dojo._Url||String*/url){
+               //      summary: 
+               //              Returns a `dojo._Url` object relative to a module.
+               //      example:
+               //      |       var pngPath = dojo.moduleUrl("acme","images/small.png");
+               //      |       console.dir(pngPath); // list the object properties
+               //      |       // create an image and set it's source to pngPath's value:
+               //      |       var img = document.createElement("img");
+               //      |       // NOTE: we assign the string representation of the url object
+               //      |       img.src = pngPath.toString(); 
+               //      |       // add our image to the document
+               //      |       dojo.body().appendChild(img);
+               //      example: 
+               //              you may de-reference as far as you like down the package
+               //              hierarchy.  This is sometimes handy to avoid lenghty relative
+               //              urls or for building portable sub-packages. In this example,
+               //              the `acme.widget` and `acme.util` directories may be located
+               //              under different roots (see `dojo.registerModulePath`) but the
+               //              the modules which reference them can be unaware of their
+               //              relative locations on the filesystem:
+               //      |       // somewhere in a configuration block
+               //      |       dojo.registerModulePath("acme.widget", "../../acme/widget");
+               //      |       dojo.registerModulePath("acme.util", "../../util");
+               //      |       
+               //      |       // ...
+               //      |       
+               //      |       // code in a module using acme resources
+               //      |       var tmpltPath = dojo.moduleUrl("acme.widget","templates/template.html");
+               //      |       var dataPath = dojo.moduleUrl("acme.util","resources/data.json");
+
+               var loc = d._getModuleSymbols(module).join('/');
+               if(!loc){ return null; }
+               if(loc.lastIndexOf("/") != loc.length-1){
+                       loc += "/";
+               }
+               
+               //If the path is an absolute path (starts with a / or is on another
+               //domain/xdomain) then don't add the baseUrl.
+               var colonIndex = loc.indexOf(":");
+               if(loc.charAt(0) != "/" && (colonIndex == -1 || colonIndex > loc.indexOf("/"))){
+                       loc = d.baseUrl + loc;
+               }
+
+               return new d._Url(loc, url); // dojo._Url
+       }
+})();
+
+/*=====
+dojo.isBrowser = {
+       //      example:
+       //      |       if(dojo.isBrowser){ ... }
+};
+
+dojo.isFF = {
+       //      example:
+       //      |       if(dojo.isFF > 1){ ... }
+};
+
+dojo.isIE = {
+       // example:
+       //      |       if(dojo.isIE > 6){
+       //      |               // we are IE7
+       //      |       }
+};
+
+dojo.isSafari = {
+       //      example:
+       //      |       if(dojo.isSafari){ ... }
+       //      example: 
+       //              Detect iPhone:
+       //      |       if(dojo.isSafari && navigator.userAgent.indexOf("iPhone") != -1){ 
+       //      |               // we are iPhone. Note, iPod touch reports "iPod" above and fails this test.
+       //      |       }
+};
+
+dojo = {
+       // isBrowser: Boolean
+       //              True if the client is a web-browser
+       isBrowser: true,
+       //      isFF: Number | undefined
+       //              Version as a Number if client is FireFox. undefined otherwise. Corresponds to
+       //              major detected FireFox version (1.5, 2, 3, etc.)
+       isFF: 2,
+       //      isIE: Number | undefined
+       //              Version as a Number if client is MSIE(PC). undefined otherwise. Corresponds to
+       //              major detected IE version (6, 7, 8, etc.)
+       isIE: 6,
+       //      isKhtml: Number | undefined
+       //              Version as a Number if client is a KHTML browser. undefined otherwise. Corresponds to major
+       //              detected version.
+       isKhtml: 0,
+       //      isWebKit: Number | undefined
+       //              Version as a Number if client is a WebKit-derived browser (Konqueror,
+       //              Safari, Chrome, etc.). undefined otherwise.
+       isWebKit: 0,
+       //      isMozilla: Number | undefined
+       //              Version as a Number if client is a Mozilla-based browser (Firefox,
+       //              SeaMonkey). undefined otherwise. Corresponds to major detected version.
+       isMozilla: 0,
+       //      isOpera: Number | undefined
+       //              Version as a Number if client is Opera. undefined otherwise. Corresponds to
+       //              major detected version.
+       isOpera: 0,
+       //      isSafari: Number | undefined
+       //              Version as a Number if client is Safari or iPhone. undefined otherwise.
+       isSafari: 0,
+       //      isChrome: Number | undefined
+       //              Version as a Number if client is Chrome browser. undefined otherwise.
+       isChrome: 0
+       //      isMac: Boolean
+       //              True if the client runs on Mac
+}
+=====*/
+
+if(typeof window != 'undefined'){
+       dojo.isBrowser = true;
+       dojo._name = "browser";
+
+
+       // attempt to figure out the path to dojo if it isn't set in the config
+       (function(){
+               var d = dojo;
+
+               // this is a scope protection closure. We set browser versions and grab
+               // the URL we were loaded from here.
+
+               // grab the node we were loaded from
+               if(document && document.getElementsByTagName){
+                       var scripts = document.getElementsByTagName("script");
+                       var rePkg = /dojo(\.xd)?\.js(\W|$)/i;
+                       for(var i = 0; i < scripts.length; i++){
+                               var src = scripts[i].getAttribute("src");
+                               if(!src){ continue; }
+                               var m = src.match(rePkg);
+                               if(m){
+                                       // find out where we came from
+                                       if(!d.config.baseUrl){
+                                               d.config.baseUrl = src.substring(0, m.index);
+                                       }
+                                       // and find out if we need to modify our behavior
+                                       var cfg = scripts[i].getAttribute("djConfig");
+                                       if(cfg){
+                                               var cfgo = eval("({ "+cfg+" })");
+                                               for(var x in cfgo){
+                                                       dojo.config[x] = cfgo[x];
+                                               }
+                                       }
+                                       break; // "first Dojo wins"
+                               }
+                       }
+               }
+               d.baseUrl = d.config.baseUrl;
+
+               // fill in the rendering support information in dojo.render.*
+               var n = navigator;
+               var dua = n.userAgent,
+                       dav = n.appVersion,
+                       tv = parseFloat(dav);
+
+               if(dua.indexOf("Opera") >= 0){ d.isOpera = tv; }
+               if(dua.indexOf("AdobeAIR") >= 0){ d.isAIR = 1; }
+               d.isKhtml = (dav.indexOf("Konqueror") >= 0) ? tv : 0;
+               d.isWebKit = parseFloat(dua.split("WebKit/")[1]) || undefined;
+               d.isChrome = parseFloat(dua.split("Chrome/")[1]) || undefined;
+               d.isMac = dav.indexOf("Macintosh") >= 0;
+
+               // safari detection derived from:
+               //              http://developer.apple.com/internet/safari/faq.html#anchor2
+               //              http://developer.apple.com/internet/safari/uamatrix.html
+               var index = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0);
+               if(index && !dojo.isChrome){
+                       // try to grab the explicit Safari version first. If we don't get
+                       // one, look for less than 419.3 as the indication that we're on something
+                       // "Safari 2-ish".
+                       d.isSafari = parseFloat(dav.split("Version/")[1]);
+                       if(!d.isSafari || parseFloat(dav.substr(index + 7)) <= 419.3){
+                               d.isSafari = 2;
+                       }
+               }
+
+                               if(dua.indexOf("Gecko") >= 0 && !d.isKhtml && !d.isWebKit){ d.isMozilla = d.isMoz = tv; }
+               if(d.isMoz){
+                       //We really need to get away from this. Consider a sane isGecko approach for the future.
+                       d.isFF = parseFloat(dua.split("Firefox/")[1] || dua.split("Minefield/")[1]) || undefined;
+               }
+               if(document.all && !d.isOpera){
+                       d.isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
+                       //In cases where the page has an HTTP header or META tag with
+                       //X-UA-Compatible, then it is in emulation mode.
+                       //Make sure isIE reflects the desired version.
+                       //document.documentMode of 5 means quirks mode.
+                       //Only switch the value if documentMode's major version
+                       //is different from isIE's major version.
+                       var mode = document.documentMode;
+                       if(mode && mode != 5 && Math.floor(d.isIE) != mode){
+                               d.isIE = mode;
+                       }
+               }
+
+               //Workaround to get local file loads of dojo to work on IE 7
+               //by forcing to not use native xhr.
+               if(dojo.isIE && window.location.protocol === "file:"){
+                       dojo.config.ieForceActiveXXhr=true;
+               }
+               
+               d.isQuirks = document.compatMode == "BackCompat";
+
+               // TODO: is the HTML LANG attribute relevant?
+               d.locale = dojo.config.locale || (d.isIE ? n.userLanguage : n.language).toLowerCase();
+
+               // These are in order of decreasing likelihood; this will change in time.
+                               d._XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];
+               
+               d._xhrObj = function(){
+                       // summary: 
+                       //              does the work of portably generating a new XMLHTTPRequest object.
+                       var http, last_e;
+                                               if(!dojo.isIE || !dojo.config.ieForceActiveXXhr){
+                                                       try{ http = new XMLHttpRequest(); }catch(e){}
+                                               }
+                       if(!http){
+                               for(var i=0; i<3; ++i){
+                                       var progid = d._XMLHTTP_PROGIDS[i];
+                                       try{
+                                               http = new ActiveXObject(progid);
+                                       }catch(e){
+                                               last_e = e;
+                                       }
+
+                                       if(http){
+                                               d._XMLHTTP_PROGIDS = [progid];  // so faster next time
+                                               break;
+                                       }
+                               }
+                       }
+                       
+                       if(!http){
+                               throw new Error("XMLHTTP not available: "+last_e);
+                       }
+
+                       return http; // XMLHTTPRequest instance
+               }
+
+               d._isDocumentOk = function(http){
+                       var stat = http.status || 0,
+                               lp = location.protocol;
+                       return (stat >= 200 && stat < 300) ||   // Boolean
+                               stat == 304 ||                                          // allow any 2XX response code
+                               stat == 1223 ||                                                 // get it out of the cache
+                               // Internet Explorer mangled the status code OR we're Titanium/browser chrome/chrome extension requesting a local file
+                               (!stat && (lp == "file:" || lp == "chrome:" || lp == "chrome-extension:" || lp == "app:") );
+               }
+
+               //See if base tag is in use.
+               //This is to fix http://trac.dojotoolkit.org/ticket/3973,
+               //but really, we need to find out how to get rid of the dojo._Url reference
+               //below and still have DOH work with the dojo.i18n test following some other
+               //test that uses the test frame to load a document (trac #2757).
+               //Opera still has problems, but perhaps a larger issue of base tag support
+               //with XHR requests (hasBase is true, but the request is still made to document
+               //path, not base path).
+               var owloc = window.location+"";
+               var base = document.getElementsByTagName("base");
+               var hasBase = (base && base.length > 0);
+
+               d._getText = function(/*URI*/ uri, /*Boolean*/ fail_ok){
+                       // summary: Read the contents of the specified uri and return those contents.
+                       // uri:
+                       //              A relative or absolute uri. If absolute, it still must be in
+                       //              the same "domain" as we are.
+                       // fail_ok:
+                       //              Default false. If fail_ok and loading fails, return null
+                       //              instead of throwing.
+                       // returns: The response text. null is returned when there is a
+                       //              failure and failure is okay (an exception otherwise)
+
+                       // NOTE: must be declared before scope switches ie. this._xhrObj()
+                       var http = d._xhrObj();
+
+                       if(!hasBase && dojo._Url){
+                               uri = (new dojo._Url(owloc, uri)).toString();
+                       }
+
+                       if(d.config.cacheBust){
+                               //Make sure we have a string before string methods are used on uri
+                               uri += "";
+                               uri += (uri.indexOf("?") == -1 ? "?" : "&") + String(d.config.cacheBust).replace(/\W+/g,"");
+                       }
+
+                       http.open('GET', uri, false);
+                       try{
+                               http.send(null);
+                               if(!d._isDocumentOk(http)){
+                                       var err = Error("Unable to load "+uri+" status:"+ http.status);
+                                       err.status = http.status;
+                                       err.responseText = http.responseText;
+                                       throw err;
+                               }
+                       }catch(e){
+                               if(fail_ok){ return null; } // null
+                               // rethrow the exception
+                               throw e;
+                       }
+                       return http.responseText; // String
+               }
+               
+
+               var _w = window;
+               var _handleNodeEvent = function(/*String*/evtName, /*Function*/fp){
+                       // summary:
+                       //              non-destructively adds the specified function to the node's
+                       //              evtName handler.
+                       // evtName: should be in the form "onclick" for "onclick" handlers.
+                       // Make sure you pass in the "on" part.
+                       var _a = _w.attachEvent || _w.addEventListener;
+                       evtName = _w.attachEvent ? evtName : evtName.substring(2);
+                       _a(evtName, function(){
+                               fp.apply(_w, arguments);
+                       }, false);
+               };
+
+
+               d._windowUnloaders = [];
+               
+               d.windowUnloaded = function(){
+                       // summary:
+                       //              signal fired by impending window destruction. You may use
+                       //              dojo.addOnWindowUnload() to register a listener for this
+                       //              event. NOTE: if you wish to dojo.connect() to this method
+                       //              to perform page/application cleanup, be aware that this
+                       //              event WILL NOT fire if no handler has been registered with
+                       //              dojo.addOnWindowUnload. This behavior started in Dojo 1.3.
+                       //              Previous versions always triggered dojo.windowUnloaded. See
+                       //              dojo.addOnWindowUnload for more info.
+                       var mll = d._windowUnloaders;
+                       while(mll.length){
+                               (mll.pop())();
+                       }
+                       d = null;
+               };
+
+               var _onWindowUnloadAttached = 0;
+               d.addOnWindowUnload = function(/*Object?|Function?*/obj, /*String|Function?*/functionName){
+                       // summary:
+                       //              registers a function to be triggered when window.onunload
+                       //              fires. 
+                       //      description:
+                       //              The first time that addOnWindowUnload is called Dojo
+                       //              will register a page listener to trigger your unload
+                       //              handler with. Note that registering these handlers may
+                       //              destory "fastback" page caching in browsers that support
+                       //              it. Be careful trying to modify the DOM or access
+                       //              JavaScript properties during this phase of page unloading:
+                       //              they may not always be available. Consider
+                       //              dojo.addOnUnload() if you need to modify the DOM or do
+                       //              heavy JavaScript work since it fires at the eqivalent of
+                       //              the page's "onbeforeunload" event.
+                       // example:
+                       //      |       dojo.addOnWindowUnload(functionPointer)
+                       //      |       dojo.addOnWindowUnload(object, "functionName");
+                       //      |       dojo.addOnWindowUnload(object, function(){ /* ... */});
+
+                       d._onto(d._windowUnloaders, obj, functionName);
+                       if(!_onWindowUnloadAttached){
+                               _onWindowUnloadAttached = 1;
+                               _handleNodeEvent("onunload", d.windowUnloaded);
+                       }
+               };
+
+               var _onUnloadAttached = 0;
+               d.addOnUnload = function(/*Object?|Function?*/obj, /*String|Function?*/functionName){
+                       // summary:
+                       //              registers a function to be triggered when the page unloads.
+                       //      description:
+                       //              The first time that addOnUnload is called Dojo will
+                       //              register a page listener to trigger your unload handler
+                       //              with. 
+                       //
+                       //              In a browser enviroment, the functions will be triggered
+                       //              during the window.onbeforeunload event. Be careful of doing
+                       //              too much work in an unload handler. onbeforeunload can be
+                       //              triggered if a link to download a file is clicked, or if
+                       //              the link is a javascript: link. In these cases, the
+                       //              onbeforeunload event fires, but the document is not
+                       //              actually destroyed. So be careful about doing destructive
+                       //              operations in a dojo.addOnUnload callback.
+                       //
+                       //              Further note that calling dojo.addOnUnload will prevent
+                       //              browsers from using a "fast back" cache to make page
+                       //              loading via back button instantaneous. 
+                       // example:
+                       //      |       dojo.addOnUnload(functionPointer)
+                       //      |       dojo.addOnUnload(object, "functionName")
+                       //      |       dojo.addOnUnload(object, function(){ /* ... */});
+
+                       d._onto(d._unloaders, obj, functionName);
+                       if(!_onUnloadAttached){
+                               _onUnloadAttached = 1;
+                               _handleNodeEvent("onbeforeunload", dojo.unloaded);
+                       }
+               };
+
+       })();
+
+       //START DOMContentLoaded
+       dojo._initFired = false;
+       dojo._loadInit = function(e){
+               if(dojo._scrollIntervalId){
+                       clearInterval(dojo._scrollIntervalId);
+                       dojo._scrollIntervalId = 0;
+               }
+
+               if(!dojo._initFired){
+                       dojo._initFired = true;
+
+                       //Help out IE to avoid memory leak.
+                       if(!dojo.config.afterOnLoad && window.detachEvent){
+                               window.detachEvent("onload", dojo._loadInit);
+                       }
+
+                       if(dojo._inFlightCount == 0){
+                               dojo._modulesLoaded();
+                       }
+               }
+       }
+
+       if(!dojo.config.afterOnLoad){           
+               if(document.addEventListener){
+                       //Standards. Hooray! Assumption here that if standards based,
+                       //it knows about DOMContentLoaded. It is OK if it does not, the fall through
+                       //to window onload should be good enough.
+                       document.addEventListener("DOMContentLoaded", dojo._loadInit, false);
+                       window.addEventListener("load", dojo._loadInit, false);
+               }else if(window.attachEvent){
+                       window.attachEvent("onload", dojo._loadInit);
+
+                       //DOMContentLoaded approximation. Diego Perini found this MSDN article
+                       //that indicates doScroll is available after DOM ready, so do a setTimeout
+                       //to check when it is available.
+                       //http://msdn.microsoft.com/en-us/library/ms531426.aspx
+                       if(!dojo.config.skipIeDomLoaded && self === self.top){
+                               dojo._scrollIntervalId = setInterval(function (){
+                                       try{
+                                               //When dojo is loaded into an iframe in an IE HTML Application 
+                                               //(HTA), such as in a selenium test, javascript in the iframe
+                                               //can't see anything outside of it, so self===self.top is true,
+                                               //but the iframe is not the top window and doScroll will be 
+                                               //available before document.body is set. Test document.body
+                                               //before trying the doScroll trick
+                                               if(document.body){
+                                                       document.documentElement.doScroll("left");
+                                                       dojo._loadInit();
+                                               }
+                                       }catch (e){}
+                               }, 30);
+                       }
+               }
+       }
+
+               if(dojo.isIE){
+               try{
+                       (function(){
+                               document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
+                               var vmlElems = ["*", "group", "roundrect", "oval", "shape", "rect", "imagedata", "path", "textpath", "text"],
+                                       i = 0, l = 1, s = document.createStyleSheet();
+                               if(dojo.isIE >= 8){
+                                       i = 1;
+                                       l = vmlElems.length;
+                               }
+                               for(; i < l; ++i){
+                                       s.addRule("v\\:" + vmlElems[i], "behavior:url(#default#VML); display:inline-block");
+                               }
+                       })();
+               }catch(e){}
+       }
+               //END DOMContentLoaded
+
+
+       /*
+       OpenAjax.subscribe("OpenAjax", "onload", function(){
+               if(dojo._inFlightCount == 0){
+                       dojo._modulesLoaded();
+               }
+       });
+
+       OpenAjax.subscribe("OpenAjax", "onunload", function(){
+               dojo.unloaded();
+       });
+       */
+} //if (typeof window != 'undefined')
+
+//Register any module paths set up in djConfig. Need to do this
+//in the hostenvs since hostenv_browser can read djConfig from a
+//script tag's attribute.
+(function(){
+       var mp = dojo.config["modulePaths"];
+       if(mp){
+               for(var param in mp){
+                       dojo.registerModulePath(param, mp[param]);
+               }
+       }
+})();
+
+//Load debug code if necessary.
+if(dojo.config.isDebug){
+       dojo.require("dojo._firebug.firebug");
+}
+
+if(dojo.config.debugAtAllCosts){
+       dojo.config.useXDomain = true;
+       dojo.require("dojo._base._loader.loader_xd");
+       dojo.require("dojo._base._loader.loader_debug");
+       dojo.require("dojo.i18n");
+}
+
+if(!dojo._hasResource["dojo._base.lang"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.lang"] = true;
+dojo.provide("dojo._base.lang");
+
+(function(){
+       var d = dojo, opts = Object.prototype.toString;
+
+       // Crockford (ish) functions
+
+       dojo.isString = function(/*anything*/ it){
+               //      summary:
+               //              Return true if it is a String
+               return (typeof it == "string" || it instanceof String); // Boolean
+       }
+
+       dojo.isArray = function(/*anything*/ it){
+               //      summary:
+               //              Return true if it is an Array.
+               //              Does not work on Arrays created in other windows.
+               return it && (it instanceof Array || typeof it == "array"); // Boolean
+       }
+
+       dojo.isFunction = function(/*anything*/ it){
+               // summary:
+               //              Return true if it is a Function
+               return opts.call(it) === "[object Function]";
+       };
+
+       dojo.isObject = function(/*anything*/ it){
+               // summary:
+               //              Returns true if it is a JavaScript object (or an Array, a Function
+               //              or null)
+               return it !== undefined &&
+                       (it === null || typeof it == "object" || d.isArray(it) || d.isFunction(it)); // Boolean
+       }
+
+       dojo.isArrayLike = function(/*anything*/ it){
+               //      summary:
+               //              similar to dojo.isArray() but more permissive
+               //      description:
+               //              Doesn't strongly test for "arrayness".  Instead, settles for "isn't
+               //              a string or number and has a length property". Arguments objects
+               //              and DOM collections will return true when passed to
+               //              dojo.isArrayLike(), but will return false when passed to
+               //              dojo.isArray().
+               //      returns:
+               //              If it walks like a duck and quacks like a duck, return `true`
+               return it && it !== undefined && // Boolean
+                       // keep out built-in constructors (Number, String, ...) which have length
+                       // properties
+                       !d.isString(it) && !d.isFunction(it) &&
+                       !(it.tagName && it.tagName.toLowerCase() == 'form') &&
+                       (d.isArray(it) || isFinite(it.length));
+       }
+
+       dojo.isAlien = function(/*anything*/ it){
+               // summary:
+               //              Returns true if it is a built-in function or some other kind of
+               //              oddball that *should* report as a function but doesn't
+               return it && !d.isFunction(it) && /\{\s*\[native code\]\s*\}/.test(String(it)); // Boolean
+       }
+
+       dojo.extend = function(/*Object*/ constructor, /*Object...*/ props){
+               // summary:
+               //              Adds all properties and methods of props to constructor's
+               //              prototype, making them available to all instances created with
+               //              constructor.
+               for(var i=1, l=arguments.length; i<l; i++){
+                       d._mixin(constructor.prototype, arguments[i]);
+               }
+               return constructor; // Object
+       }
+
+       dojo._hitchArgs = function(scope, method /*,...*/){
+               var pre = d._toArray(arguments, 2);
+               var named = d.isString(method);
+               return function(){
+                       // arrayify arguments
+                       var args = d._toArray(arguments);
+                       // locate our method
+                       var f = named ? (scope||d.global)[method] : method;
+                       // invoke with collected args
+                       return f && f.apply(scope || this, pre.concat(args)); // mixed
+               } // Function
+       }
+
+       dojo.hitch = function(/*Object*/scope, /*Function|String*/method /*,...*/){
+               //      summary:
+               //              Returns a function that will only ever execute in the a given scope.
+               //              This allows for easy use of object member functions
+               //              in callbacks and other places in which the "this" keyword may
+               //              otherwise not reference the expected scope.
+               //              Any number of default positional arguments may be passed as parameters 
+               //              beyond "method".
+               //              Each of these values will be used to "placehold" (similar to curry)
+               //              for the hitched function.
+               //      scope:
+               //              The scope to use when method executes. If method is a string,
+               //              scope is also the object containing method.
+               //      method:
+               //              A function to be hitched to scope, or the name of the method in
+               //              scope to be hitched.
+               //      example:
+               //      |       dojo.hitch(foo, "bar")();
+               //              runs foo.bar() in the scope of foo
+               //      example:
+               //      |       dojo.hitch(foo, myFunction);
+               //              returns a function that runs myFunction in the scope of foo
+               //      example:
+               //              Expansion on the default positional arguments passed along from
+               //              hitch. Passed args are mixed first, additional args after.
+               //      |       var foo = { bar: function(a, b, c){ console.log(a, b, c); } };
+               //      |       var fn = dojo.hitch(foo, "bar", 1, 2);
+               //      |       fn(3); // logs "1, 2, 3"
+               //      example:
+               //      |       var foo = { bar: 2 };
+               //      |       dojo.hitch(foo, function(){ this.bar = 10; })();
+               //              execute an anonymous function in scope of foo
+               
+               if(arguments.length > 2){
+                       return d._hitchArgs.apply(d, arguments); // Function
+               }
+               if(!method){
+                       method = scope;
+                       scope = null;
+               }
+               if(d.isString(method)){
+                       scope = scope || d.global;
+                       if(!scope[method]){ throw(['dojo.hitch: scope["', method, '"] is null (scope="', scope, '")'].join('')); }
+                       return function(){ return scope[method].apply(scope, arguments || []); }; // Function
+               }
+               return !scope ? method : function(){ return method.apply(scope, arguments || []); }; // Function
+       }
+
+       /*=====
+       dojo.delegate = function(obj, props){
+               //      summary:
+               //              Returns a new object which "looks" to obj for properties which it
+               //              does not have a value for. Optionally takes a bag of properties to
+               //              seed the returned object with initially.
+               //      description:
+               //              This is a small implementaton of the Boodman/Crockford delegation
+               //              pattern in JavaScript. An intermediate object constructor mediates
+               //              the prototype chain for the returned object, using it to delegate
+               //              down to obj for property lookup when object-local lookup fails.
+               //              This can be thought of similarly to ES4's "wrap", save that it does
+               //              not act on types but rather on pure objects.
+               //      obj:
+               //              The object to delegate to for properties not found directly on the
+               //              return object or in props.
+               //      props:
+               //              an object containing properties to assign to the returned object
+               //      returns:
+               //              an Object of anonymous type
+               //      example:
+               //      |       var foo = { bar: "baz" };
+               //      |       var thinger = dojo.delegate(foo, { thud: "xyzzy"});
+               //      |       thinger.bar == "baz"; // delegated to foo
+               //      |       foo.thud == undefined; // by definition
+               //      |       thinger.thud == "xyzzy"; // mixed in from props
+               //      |       foo.bar = "thonk";
+               //      |       thinger.bar == "thonk"; // still delegated to foo's bar
+       }
+       =====*/
+
+       dojo.delegate = dojo._delegate = (function(){
+               // boodman/crockford delegation w/ cornford optimization
+               function TMP(){}
+               return function(obj, props){
+                       TMP.prototype = obj;
+                       var tmp = new TMP();
+                       TMP.prototype = null;
+                       if(props){
+                               d._mixin(tmp, props);
+                       }
+                       return tmp; // Object
+               }
+       })();
+
+       /*=====
+       dojo._toArray = function(obj, offset, startWith){
+               //      summary:
+               //              Converts an array-like object (i.e. arguments, DOMCollection) to an
+               //              array. Returns a new Array with the elements of obj.
+               //      obj: Object
+               //              the object to "arrayify". We expect the object to have, at a
+               //              minimum, a length property which corresponds to integer-indexed
+               //              properties.
+               //      offset: Number?
+               //              the location in obj to start iterating from. Defaults to 0.
+               //              Optional.
+               //      startWith: Array?
+               //              An array to pack with the properties of obj. If provided,
+               //              properties in obj are appended at the end of startWith and
+               //              startWith is the returned array.
+       }
+       =====*/
+
+       var efficient = function(obj, offset, startWith){
+               return (startWith||[]).concat(Array.prototype.slice.call(obj, offset||0));
+       };
+
+               var slow = function(obj, offset, startWith){
+               var arr = startWith||[];
+               for(var x = offset || 0; x < obj.length; x++){
+                       arr.push(obj[x]);
+               }
+               return arr;
+       };
+       
+       dojo._toArray =
+                               d.isIE ?  function(obj){
+                       return ((obj.item) ? slow : efficient).apply(this, arguments);
+               } :
+                               efficient;
+
+       dojo.partial = function(/*Function|String*/method /*, ...*/){
+               //      summary:
+               //              similar to hitch() except that the scope object is left to be
+               //              whatever the execution context eventually becomes.
+               //      description:
+               //              Calling dojo.partial is the functional equivalent of calling:
+               //              |       dojo.hitch(null, funcName, ...);
+               var arr = [ null ];
+               return d.hitch.apply(d, arr.concat(d._toArray(arguments))); // Function
+       }
+
+       var extraNames = d._extraNames, extraLen = extraNames.length, empty = {};
+
+       dojo.clone = function(/*anything*/ o){
+               // summary:
+               //              Clones objects (including DOM nodes) and all children.
+               //              Warning: do not clone cyclic structures.
+               if(!o || typeof o != "object" || d.isFunction(o)){
+                       // null, undefined, any non-object, or function
+                       return o;       // anything
+               }
+               if(o.nodeType && "cloneNode" in o){
+                       // DOM Node
+                       return o.cloneNode(true); // Node
+               }
+               if(o instanceof Date){
+                       // Date
+                       return new Date(o.getTime());   // Date
+               }
+               var r, i, l, s, name;
+               if(d.isArray(o)){
+                       // array
+                       r = [];
+                       for(i = 0, l = o.length; i < l; ++i){
+                               if(i in o){
+                                       r.push(d.clone(o[i]));
+                               }
+                       }
+// we don't clone functions for performance reasons
+//             }else if(d.isFunction(o)){
+//                     // function
+//                     r = function(){ return o.apply(this, arguments); };
+               }else{
+                       // generic objects
+                       r = o.constructor ? new o.constructor() : {};
+               }
+               for(name in o){
+                       // the "tobj" condition avoid copying properties in "source"
+                       // inherited from Object.prototype.  For example, if target has a custom
+                       // toString() method, don't overwrite it with the toString() method
+                       // that source inherited from Object.prototype
+                       s = o[name];
+                       if(!(name in r) || (r[name] !== s && (!(name in empty) || empty[name] !== s))){
+                               r[name] = d.clone(s);
+                       }
+               }
+                               // IE doesn't recognize some custom functions in for..in
+               if(extraLen){
+                       for(i = 0; i < extraLen; ++i){
+                               name = extraNames[i];
+                               s = o[name];
+                               if(!(name in r) || (r[name] !== s && (!(name in empty) || empty[name] !== s))){
+                                       r[name] = s; // functions only, we don't clone them
+                               }
+                       }
+               }
+                               return r; // Object
+       }
+
+       /*=====
+       dojo.trim = function(str){
+               //      summary:
+               //              Trims whitespace from both sides of the string
+               //      str: String
+               //              String to be trimmed
+               //      returns: String
+               //              Returns the trimmed string
+               //      description:
+               //              This version of trim() was selected for inclusion into the base due
+               //              to its compact size and relatively good performance
+               //              (see [Steven Levithan's blog](http://blog.stevenlevithan.com/archives/faster-trim-javascript)
+               //              Uses String.prototype.trim instead, if available.
+               //              The fastest but longest version of this function is located at
+               //              dojo.string.trim()
+               return "";      // String
+       }
+       =====*/
+
+       dojo.trim = String.prototype.trim ?
+               function(str){ return str.trim(); } :
+               function(str){ return str.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); };
+
+       /*=====
+       dojo.replace = function(tmpl, map, pattern){
+               //      summary:
+               //              Performs parameterized substitutions on a string. Throws an
+               //              exception if any parameter is unmatched. 
+               //      tmpl: String
+               //              String to be used as a template.
+               //      map: Object|Function
+               //              If an object, it is used as a dictionary to look up substitutions.
+               //              If a function, it is called for every substitution with following
+               //              parameters: a whole match, a name, an offset, and the whole template
+               //              string (see https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String/replace
+               //              for more details).
+               //      pattern: RegEx?
+               //              Optional regular expression objects that overrides the default pattern.
+               //              Must be global and match one item. The default is: /\{([^\}]+)\}/g,
+               //              which matches patterns like that: "{xxx}", where "xxx" is any sequence
+               //              of characters, which doesn't include "}".
+               //      returns: String
+               //              Returns the substituted string.
+               //      example:
+               //      |       // uses a dictionary for substitutions:
+               //      |       dojo.replace("Hello, {name.first} {name.last} AKA {nick}!",
+               //      |         {
+               //      |           nick: "Bob",
+               //      |           name: {
+               //      |             first:  "Robert",
+               //      |             middle: "X",
+               //      |             last:   "Cringely"
+               //      |           }
+               //      |         });
+               //      |       // returns: Hello, Robert Cringely AKA Bob!
+               //      example:
+               //      |       // uses an array for substitutions:
+               //      |       dojo.replace("Hello, {0} {2}!",
+               //      |         ["Robert", "X", "Cringely"]);
+               //      |       // returns: Hello, Robert Cringely!
+               //      example:
+               //      |       // uses a function for substitutions:
+               //      |       function sum(a){
+               //      |         var t = 0;
+               //      |         dojo.forEach(a, function(x){ t += x; });
+               //      |         return t;
+               //      |       }
+               //      |       dojo.replace(
+               //      |         "{count} payments averaging {avg} USD per payment.",
+               //      |         dojo.hitch(
+               //      |           { payments: [11, 16, 12] },
+               //      |           function(_, key){
+               //      |             switch(key){
+               //      |               case "count": return this.payments.length;
+               //      |               case "min":   return Math.min.apply(Math, this.payments);
+               //      |               case "max":   return Math.max.apply(Math, this.payments);
+               //      |               case "sum":   return sum(this.payments);
+               //      |               case "avg":   return sum(this.payments) / this.payments.length;
+               //      |             }
+               //      |           }
+               //      |         )
+               //      |       );
+               //      |       // prints: 3 payments averaging 13 USD per payment.
+               //      example:
+               //      |       // uses an alternative PHP-like pattern for substitutions:
+               //      |       dojo.replace("Hello, ${0} ${2}!",
+               //      |         ["Robert", "X", "Cringely"], /\$\{([^\}]+)\}/g);
+               //      |       // returns: Hello, Robert Cringely!
+               return "";      // String
+       }
+       =====*/
+
+       var _pattern = /\{([^\}]+)\}/g;
+       dojo.replace = function(tmpl, map, pattern){
+               return tmpl.replace(pattern || _pattern, d.isFunction(map) ?
+                       map : function(_, k){ return d.getObject(k, false, map); });
+       };
+})();
+
+}
+
+if(!dojo._hasResource["dojo._base.array"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.array"] = true;
+
+dojo.provide("dojo._base.array");
+
+(function(){
+       var _getParts = function(arr, obj, cb){
+               return [ 
+                       (typeof arr == "string") ? arr.split("") : arr, 
+                       obj || dojo.global,
+                       // FIXME: cache the anonymous functions we create here?
+                       (typeof cb == "string") ? new Function("item", "index", "array", cb) : cb
+               ];
+       };
+
+       var everyOrSome = function(/*Boolean*/every, /*Array|String*/arr, /*Function|String*/callback, /*Object?*/thisObject){
+               var _p = _getParts(arr, thisObject, callback); arr = _p[0];
+               for(var i=0,l=arr.length; i<l; ++i){
+                       var result = !!_p[2].call(_p[1], arr[i], i, arr);
+                       if(every ^ result){
+                               return result; // Boolean
+                       }
+               }
+               return every; // Boolean
+       };
+
+       dojo.mixin(dojo, {
+               indexOf: function(      /*Array*/               array, 
+                                                       /*Object*/              value,
+                                                       /*Integer?*/    fromIndex,
+                                                       /*Boolean?*/    findLast){
+                       // summary:
+                       //              locates the first index of the provided value in the
+                       //              passed array. If the value is not found, -1 is returned.
+                       // description:
+                       //              This method corresponds to the JavaScript 1.6 Array.indexOf method, with one difference: when
+                       //              run over sparse arrays, the Dojo function invokes the callback for every index whereas JavaScript 
+                       //              1.6's indexOf skips the holes in the sparse array.
+                       //              For details on this method, see:
+                       //                      https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/indexOf
+
+                       var step = 1, end = array.length || 0, i = 0;
+                       if(findLast){
+                               i = end - 1;
+                               step = end = -1;
+                       }
+                       if(fromIndex != undefined){ i = fromIndex; }
+                       if((findLast && i > end) || i < end){
+                               for(; i != end; i += step){
+                                       if(array[i] == value){ return i; }
+                               }
+                       }
+                       return -1;      // Number
+               },
+
+               lastIndexOf: function(/*Array*/array, /*Object*/value, /*Integer?*/fromIndex){
+                       // summary:
+                       //              locates the last index of the provided value in the passed
+                       //              array. If the value is not found, -1 is returned.
+                       // description:
+                       //              This method corresponds to the JavaScript 1.6 Array.lastIndexOf method, with one difference: when
+                       //              run over sparse arrays, the Dojo function invokes the callback for every index whereas JavaScript 
+                       //              1.6's lastIndexOf skips the holes in the sparse array.
+                       //              For details on this method, see:
+                       //                      https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/lastIndexOf
+                       return dojo.indexOf(array, value, fromIndex, true); // Number
+               },
+
+               forEach: function(/*Array|String*/arr, /*Function|String*/callback, /*Object?*/thisObject){
+                       //      summary:
+                       //              for every item in arr, callback is invoked. Return values are ignored.
+                       //              If you want to break out of the loop, consider using dojo.every() or dojo.some().
+                       //              forEach does not allow breaking out of the loop over the items in arr.
+                       //      arr:
+                       //              the array to iterate over. If a string, operates on individual characters.
+                       //      callback:
+                       //              a function is invoked with three arguments: item, index, and array
+                       //      thisObject:
+                       //              may be used to scope the call to callback
+                       //      description:
+                       //              This function corresponds to the JavaScript 1.6 Array.forEach() method, with one difference: when 
+                       //              run over sparse arrays, this implemenation passes the "holes" in the sparse array to
+                       //              the callback function with a value of undefined. JavaScript 1.6's forEach skips the holes in the sparse array.
+                       //              For more details, see:
+                       //                      https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/forEach
+                       //      example:
+                       //      |       // log out all members of the array:
+                       //      |       dojo.forEach(
+                       //      |               [ "thinger", "blah", "howdy", 10 ],
+                       //      |               function(item){
+                       //      |                       console.log(item);
+                       //      |               }
+                       //      |       );
+                       //      example:
+                       //      |       // log out the members and their indexes
+                       //      |       dojo.forEach(
+                       //      |               [ "thinger", "blah", "howdy", 10 ],
+                       //      |               function(item, idx, arr){
+                       //      |                       console.log(item, "at index:", idx);
+                       //      |               }
+                       //      |       );
+                       //      example:
+                       //      |       // use a scoped object member as the callback
+                       //      |       
+                       //      |       var obj = {
+                       //      |               prefix: "logged via obj.callback:", 
+                       //      |               callback: function(item){
+                       //      |                       console.log(this.prefix, item);
+                       //      |               }
+                       //      |       };
+                       //      |       
+                       //      |       // specifying the scope function executes the callback in that scope
+                       //      |       dojo.forEach(
+                       //      |               [ "thinger", "blah", "howdy", 10 ],
+                       //      |               obj.callback,
+                       //      |               obj
+                       //      |       );
+                       //      |       
+                       //      |       // alternately, we can accomplish the same thing with dojo.hitch()
+                       //      |       dojo.forEach(
+                       //      |               [ "thinger", "blah", "howdy", 10 ],
+                       //      |               dojo.hitch(obj, "callback")
+                       //      |       );
+
+                       // match the behavior of the built-in forEach WRT empty arrs
+                       if(!arr || !arr.length){ return; }
+
+                       // FIXME: there are several ways of handilng thisObject. Is
+                       // dojo.global always the default context?
+                       var _p = _getParts(arr, thisObject, callback); arr = _p[0];
+                       for(var i=0,l=arr.length; i<l; ++i){ 
+                               _p[2].call(_p[1], arr[i], i, arr);
+                       }
+               },
+
+               every: function(/*Array|String*/arr, /*Function|String*/callback, /*Object?*/thisObject){
+                       // summary:
+                       //              Determines whether or not every item in arr satisfies the
+                       //              condition implemented by callback.
+                       // arr:
+                       //              the array to iterate on. If a string, operates on individual characters.
+                       // callback:
+                       //              a function is invoked with three arguments: item, index,
+                       //              and array and returns true if the condition is met.
+                       // thisObject:
+                       //              may be used to scope the call to callback
+                       // description:
+                       //              This function corresponds to the JavaScript 1.6 Array.every() method, with one difference: when 
+                       //              run over sparse arrays, this implemenation passes the "holes" in the sparse array to
+                       //              the callback function with a value of undefined. JavaScript 1.6's every skips the holes in the sparse array.
+                       //              For more details, see:
+                       //                      https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/every
+                       // example:
+                       //      |       // returns false
+                       //      |       dojo.every([1, 2, 3, 4], function(item){ return item>1; });
+                       // example:
+                       //      |       // returns true 
+                       //      |       dojo.every([1, 2, 3, 4], function(item){ return item>0; });
+                       return everyOrSome(true, arr, callback, thisObject); // Boolean
+               },
+
+               some: function(/*Array|String*/arr, /*Function|String*/callback, /*Object?*/thisObject){
+                       // summary:
+                       //              Determines whether or not any item in arr satisfies the
+                       //              condition implemented by callback.
+                       // arr:
+                       //              the array to iterate over. If a string, operates on individual characters.
+                       // callback:
+                       //              a function is invoked with three arguments: item, index,
+                       //              and array and returns true if the condition is met.
+                       // thisObject:
+                       //              may be used to scope the call to callback
+                       // description:
+                       //              This function corresponds to the JavaScript 1.6 Array.some() method, with one difference: when 
+                       //              run over sparse arrays, this implemenation passes the "holes" in the sparse array to
+                       //              the callback function with a value of undefined. JavaScript 1.6's some skips the holes in the sparse array.
+                       //              For more details, see:
+                       //                      https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/some
+                       // example:
+                       //      |       // is true
+                       //      |       dojo.some([1, 2, 3, 4], function(item){ return item>1; });
+                       // example:
+                       //      |       // is false
+                       //      |       dojo.some([1, 2, 3, 4], function(item){ return item<1; });
+                       return everyOrSome(false, arr, callback, thisObject); // Boolean
+               },
+
+               map: function(/*Array|String*/arr, /*Function|String*/callback, /*Function?*/thisObject){
+                       // summary:
+                       //              applies callback to each element of arr and returns
+                       //              an Array with the results
+                       // arr:
+                       //              the array to iterate on. If a string, operates on
+                       //              individual characters.
+                       // callback:
+                       //              a function is invoked with three arguments, (item, index,
+                       //              array),  and returns a value
+                       // thisObject:
+                       //              may be used to scope the call to callback
+                       // description:
+                       //              This function corresponds to the JavaScript 1.6 Array.map() method, with one difference: when 
+                       //              run over sparse arrays, this implemenation passes the "holes" in the sparse array to
+                       //              the callback function with a value of undefined. JavaScript 1.6's map skips the holes in the sparse array.
+                       //              For more details, see:
+                       //                      https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/map
+                       // example:
+                       //      |       // returns [2, 3, 4, 5]
+                       //      |       dojo.map([1, 2, 3, 4], function(item){ return item+1 });
+
+                       var _p = _getParts(arr, thisObject, callback); arr = _p[0];
+                       var outArr = (arguments[3] ? (new arguments[3]()) : []);
+                       for(var i=0,l=arr.length; i<l; ++i){
+                               outArr.push(_p[2].call(_p[1], arr[i], i, arr));
+                       }
+                       return outArr; // Array
+               },
+
+               filter: function(/*Array*/arr, /*Function|String*/callback, /*Object?*/thisObject){
+                       // summary:
+                       //              Returns a new Array with those items from arr that match the
+                       //              condition implemented by callback.
+                       // arr:
+                       //              the array to iterate over.
+                       // callback:
+                       //              a function that is invoked with three arguments (item,
+                       //              index, array). The return of this function is expected to
+                       //              be a boolean which determines whether the passed-in item
+                       //              will be included in the returned array.
+                       // thisObject:
+                       //              may be used to scope the call to callback
+                       // description:
+                       //              This function corresponds to the JavaScript 1.6 Array.filter() method, with one difference: when 
+                       //              run over sparse arrays, this implemenation passes the "holes" in the sparse array to
+                       //              the callback function with a value of undefined. JavaScript 1.6's filter skips the holes in the sparse array. 
+                       //              For more details, see:
+                       //                      https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Array/filter
+                       // example:
+                       //      |       // returns [2, 3, 4]
+                       //      |       dojo.filter([1, 2, 3, 4], function(item){ return item>1; });
+
+                       var _p = _getParts(arr, thisObject, callback); arr = _p[0];
+                       var outArr = [];
+                       for(var i=0,l=arr.length; i<l; ++i){
+                               if(_p[2].call(_p[1], arr[i], i, arr)){
+                                       outArr.push(arr[i]);
+                               }
+                       }
+                       return outArr; // Array
+               }
+       });
+})();
+/*
+*/
+
+}
+
+if(!dojo._hasResource["dojo._base.declare"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.declare"] = true;
+dojo.provide("dojo._base.declare");
+
+
+
+
+(function(){
+       var d = dojo, mix = d._mixin, op = Object.prototype, opts = op.toString,
+               xtor = new Function, counter = 0, cname = "constructor";
+
+       function err(msg){ throw new Error("declare: " + msg); }
+
+       // C3 Method Resolution Order (see http://www.python.org/download/releases/2.3/mro/)
+       function c3mro(bases){
+               var result = [], roots = [{cls: 0, refs: []}], nameMap = {}, clsCount = 1,
+                       l = bases.length, i = 0, j, lin, base, top, proto, rec, name, refs;
+
+               // build a list of bases naming them if needed
+               for(; i < l; ++i){
+                       base = bases[i];
+                       if(!base){
+                               err("mixin #" + i + " is unknown. Did you use dojo.require to pull it in?");
+                       }else if(opts.call(base) != "[object Function]"){
+                               err("mixin #" + i + " is not a callable constructor.");
+                       }
+                       lin = base._meta ? base._meta.bases : [base];
+                       top = 0;
+                       // add bases to the name map
+                       for(j = lin.length - 1; j >= 0; --j){
+                               proto = lin[j].prototype;
+                               if(!proto.hasOwnProperty("declaredClass")){
+                                       proto.declaredClass = "uniqName_" + (counter++);
+                               }
+                               name = proto.declaredClass;
+                               if(!nameMap.hasOwnProperty(name)){
+                                       nameMap[name] = {count: 0, refs: [], cls: lin[j]};
+                                       ++clsCount;
+                               }
+                               rec = nameMap[name];
+                               if(top && top !== rec){
+                                       rec.refs.push(top);
+                                       ++top.count;
+                               }
+                               top = rec;
+                       }
+                       ++top.count;
+                       roots[0].refs.push(top);
+               }
+
+               // remove classes without external references recursively
+               while(roots.length){
+                       top = roots.pop();
+                       result.push(top.cls);
+                       --clsCount;
+                       // optimization: follow a single-linked chain
+                       while(refs = top.refs, refs.length == 1){
+                               top = refs[0];
+                               if(!top || --top.count){
+                                       // branch or end of chain => do not end to roots
+                                       top = 0;
+                                       break;
+                               }
+                               result.push(top.cls);
+                               --clsCount;
+                       }
+                       if(top){
+                               // branch
+                               for(i = 0, l = refs.length; i < l; ++i){
+                                       top = refs[i];
+                                       if(!--top.count){
+                                               roots.push(top);
+                                       }
+                               }
+                       }
+               }
+               if(clsCount){
+                       err("can't build consistent linearization");
+               }
+
+               // calculate the superclass offset
+               base = bases[0];
+               result[0] = base ?
+                       base._meta && base === result[result.length - base._meta.bases.length] ?
+                               base._meta.bases.length : 1 : 0;
+
+               return result;
+       }
+
+       function inherited(args, a, f){
+               var name, chains, bases, caller, meta, base, proto, opf, pos,
+                       cache = this._inherited = this._inherited || {};
+
+               // crack arguments
+               if(typeof args == "string"){
+                       name = args;
+                       args = a;
+                       a = f;
+               }
+               f = 0;
+
+               caller = args.callee;
+               name = name || caller.nom;
+               if(!name){
+                       err("can't deduce a name to call inherited()");
+               }
+
+               meta = this.constructor._meta;
+               bases = meta.bases;
+
+               pos = cache.p;
+               if(name != cname){
+                       // method
+                       if(cache.c !== caller){
+                               // cache bust
+                               pos = 0;
+                               base = bases[0];
+                               meta = base._meta;
+                               if(meta.hidden[name] !== caller){
+                                       // error detection
+                                       chains = meta.chains;
+                                       if(chains && typeof chains[name] == "string"){
+                                               err("calling chained method with inherited: " + name);
+                                       }
+                                       // find caller
+                                       do{
+                                               meta = base._meta;
+                                               proto = base.prototype;
+                                               if(meta && (proto[name] === caller && proto.hasOwnProperty(name) || meta.hidden[name] === caller)){
+                                                       break;
+                                               }
+                                       }while(base = bases[++pos]); // intentional assignment
+                                       pos = base ? pos : -1;
+                               }
+                       }
+                       // find next
+                       base = bases[++pos];
+                       if(base){
+                               proto = base.prototype;
+                               if(base._meta && proto.hasOwnProperty(name)){
+                                       f = proto[name];
+                               }else{
+                                       opf = op[name];
+                                       do{
+                                               proto = base.prototype;
+                                               f = proto[name];
+                                               if(f && (base._meta ? proto.hasOwnProperty(name) : f !== opf)){
+                                                       break;
+                                               }
+                                       }while(base = bases[++pos]); // intentional assignment
+                               }
+                       }
+                       f = base && f || op[name];
+               }else{
+                       // constructor
+                       if(cache.c !== caller){
+                               // cache bust
+                               pos = 0;
+                               meta = bases[0]._meta;
+                               if(meta && meta.ctor !== caller){
+                                       // error detection
+                                       chains = meta.chains;
+                                       if(!chains || chains.constructor !== "manual"){
+                                               err("calling chained constructor with inherited");
+                                       }
+                                       // find caller
+                                       while(base = bases[++pos]){ // intentional assignment
+                                               meta = base._meta;
+                                               if(meta && meta.ctor === caller){
+                                                       break;
+                                               }
+                                       }
+                                       pos = base ? pos : -1;
+                               }
+                       }
+                       // find next
+                       while(base = bases[++pos]){     // intentional assignment
+                               meta = base._meta;
+                               f = meta ? meta.ctor : base;
+                               if(f){
+                                       break;
+                               }
+                       }
+                       f = base && f;
+               }
+
+               // cache the found super method
+               cache.c = f;
+               cache.p = pos;
+
+               // now we have the result
+               if(f){
+                       return a === true ? f : f.apply(this, a || args);
+               }
+               // intentionally if a super method was not found
+       }
+
+       function getInherited(name, args){
+               if(typeof name == "string"){
+                       return this.inherited(name, args, true);
+               }
+               return this.inherited(name, true);
+       }
+
+       // emulation of "instanceof"
+       function isInstanceOf(cls){
+               var bases = this.constructor._meta.bases;
+               for(var i = 0, l = bases.length; i < l; ++i){
+                       if(bases[i] === cls){
+                               return true;
+                       }
+               }
+               return this instanceof cls;
+       }
+
+       function mixOwn(target, source){
+               var name, i = 0, l = d._extraNames.length;
+               // add props adding metadata for incoming functions skipping a constructor
+               for(name in source){
+                       if(name != cname && source.hasOwnProperty(name)){
+                               target[name] = source[name];
+                       }
+               }
+               // process unenumerable methods on IE
+               for(; i < l; ++i){
+                       name = d._extraNames[i];
+                       if(name != cname && source.hasOwnProperty(name)){
+                               target[name] = source[name];
+                       }
+               }
+       }
+
+       // implementation of safe mixin function
+       function safeMixin(target, source){
+               var name, t, i = 0, l = d._extraNames.length;
+               // add props adding metadata for incoming functions skipping a constructor
+               for(name in source){
+                       t = source[name];
+                       if((t !== op[name] || !(name in op)) && name != cname){
+                               if(opts.call(t) == "[object Function]"){
+                                       // non-trivial function method => attach its name
+                                       t.nom = name;
+                               }
+                               target[name] = t;
+                       }
+               }
+               // process unenumerable methods on IE
+               for(; i < l; ++i){
+                       name = d._extraNames[i];
+                       t = source[name];
+                       if((t !== op[name] || !(name in op)) && name != cname){
+                               if(opts.call(t) == "[object Function]"){
+                                       // non-trivial function method => attach its name
+                                       t.nom = name;
+                               }
+                               target[name] = t;
+                       }
+               }
+               return target;
+       }
+
+       function extend(source){
+               safeMixin(this.prototype, source);
+               return this;
+       }
+
+       // chained constructor compatible with the legacy dojo.declare()
+       function chainedConstructor(bases, ctorSpecial){
+               return function(){
+                       var a = arguments, args = a, a0 = a[0], f, i, m,
+                               l = bases.length, preArgs;
+
+                       if(!(this instanceof a.callee)){
+                               // not called via new, so force it
+                               return applyNew(a);
+                       }
+
+                       //this._inherited = {};
+                       // perform the shaman's rituals of the original dojo.declare()
+                       // 1) call two types of the preamble
+                       if(ctorSpecial && (a0 && a0.preamble || this.preamble)){
+                               // full blown ritual
+                               preArgs = new Array(bases.length);
+                               // prepare parameters
+                               preArgs[0] = a;
+                               for(i = 0;;){
+                                       // process the preamble of the 1st argument
+                                       a0 = a[0];
+                                       if(a0){
+                                               f = a0.preamble;
+                                               if(f){
+                                                       a = f.apply(this, a) || a;
+                                               }
+                                       }
+                                       // process the preamble of this class
+                                       f = bases[i].prototype;
+                                       f = f.hasOwnProperty("preamble") && f.preamble;
+                                       if(f){
+                                               a = f.apply(this, a) || a;
+                                       }
+                                       // one peculiarity of the preamble:
+                                       // it is called if it is not needed,
+                                       // e.g., there is no constructor to call
+                                       // let's watch for the last constructor
+                                       // (see ticket #9795)
+                                       if(++i == l){
+                                               break;
+                                       }
+                                       preArgs[i] = a;
+                               }
+                       }
+                       // 2) call all non-trivial constructors using prepared arguments
+                       for(i = l - 1; i >= 0; --i){
+                               f = bases[i];
+                               m = f._meta;
+                               f = m ? m.ctor : f;
+                               if(f){
+                                       f.apply(this, preArgs ? preArgs[i] : a);
+                               }
+                       }
+                       // 3) continue the original ritual: call the postscript
+                       f = this.postscript;
+                       if(f){
+                               f.apply(this, args);
+                       }
+               };
+       }
+
+
+       // chained constructor compatible with the legacy dojo.declare()
+       function singleConstructor(ctor, ctorSpecial){
+               return function(){
+                       var a = arguments, t = a, a0 = a[0], f;
+
+                       if(!(this instanceof a.callee)){
+                               // not called via new, so force it
+                               return applyNew(a);
+                       }
+
+                       //this._inherited = {};
+                       // perform the shaman's rituals of the original dojo.declare()
+                       // 1) call two types of the preamble
+                       if(ctorSpecial){
+                               // full blown ritual
+                               if(a0){
+                                       // process the preamble of the 1st argument
+                                       f = a0.preamble;
+                                       if(f){
+                                               t = f.apply(this, t) || t;
+                                       }
+                               }
+                               f = this.preamble;
+                               if(f){
+                                       // process the preamble of this class
+                                       f.apply(this, t);
+                                       // one peculiarity of the preamble:
+                                       // it is called even if it is not needed,
+                                       // e.g., there is no constructor to call
+                                       // let's watch for the last constructor
+                                       // (see ticket #9795)
+                               }
+                       }
+                       // 2) call a constructor
+                       if(ctor){
+                               ctor.apply(this, a);
+                       }
+                       // 3) continue the original ritual: call the postscript
+                       f = this.postscript;
+                       if(f){
+                               f.apply(this, a);
+                       }
+               };
+       }
+
+       // plain vanilla constructor (can use inherited() to call its base constructor)
+       function simpleConstructor(bases){
+               return function(){
+                       var a = arguments, i = 0, f, m;
+
+                       if(!(this instanceof a.callee)){
+                               // not called via new, so force it
+                               return applyNew(a);
+                       }
+
+                       //this._inherited = {};
+                       // perform the shaman's rituals of the original dojo.declare()
+                       // 1) do not call the preamble
+                       // 2) call the top constructor (it can use this.inherited())
+                       for(; f = bases[i]; ++i){ // intentional assignment
+                               m = f._meta;
+                               f = m ? m.ctor : f;
+                               if(f){
+                                       f.apply(this, a);
+                                       break;
+                               }
+                       }
+                       // 3) call the postscript
+                       f = this.postscript;
+                       if(f){
+                               f.apply(this, a);
+                       }
+               };
+       }
+
+       function chain(name, bases, reversed){
+               return function(){
+                       var b, m, f, i = 0, step = 1;
+                       if(reversed){
+                               i = bases.length - 1;
+                               step = -1;
+                       }
+                       for(; b = bases[i]; i += step){ // intentional assignment
+                               m = b._meta;
+                               f = (m ? m.hidden : b.prototype)[name];
+                               if(f){
+                                       f.apply(this, arguments);
+                               }
+                       }
+               };
+       }
+
+       // forceNew(ctor)
+       // return a new object that inherits from ctor.prototype but
+       // without actually running ctor on the object.
+       function forceNew(ctor){
+               // create object with correct prototype using a do-nothing
+               // constructor
+               xtor.prototype = ctor.prototype;
+               var t = new xtor;
+               xtor.prototype = null;  // clean up
+               return t;
+       }
+
+       // applyNew(args)
+       // just like 'new ctor()' except that the constructor and its arguments come
+       // from args, which must be an array or an arguments object
+       function applyNew(args){
+               // create an object with ctor's prototype but without
+               // calling ctor on it.
+               var ctor = args.callee, t = forceNew(ctor);
+               // execute the real constructor on the new object
+               ctor.apply(t, args);
+               return t;
+       }
+
+       d.declare = function(className, superclass, props){
+               // crack parameters
+               if(typeof className != "string"){
+                       props = superclass;
+                       superclass = className;
+                       className = "";
+               }
+               props = props || {};
+
+               var proto, i, t, ctor, name, bases, chains, mixins = 1, parents = superclass;
+
+               // build a prototype
+               if(opts.call(superclass) == "[object Array]"){
+                       // C3 MRO
+                       bases = c3mro(superclass);
+                       t = bases[0];
+                       mixins = bases.length - t;
+                       superclass = bases[mixins];
+               }else{
+                       bases = [0];
+                       if(superclass){
+                               if(opts.call(superclass) == "[object Function]"){
+                                       t = superclass._meta;
+                                       bases = bases.concat(t ? t.bases : superclass);
+                               }else{
+                                       err("base class is not a callable constructor.");
+                               }
+                       }else if(superclass !== null){
+                               err("unknown base class. Did you use dojo.require to pull it in?")
+                       }
+               }
+               if(superclass){
+                       for(i = mixins - 1;; --i){
+                               proto = forceNew(superclass);
+                               if(!i){
+                                       // stop if nothing to add (the last base)
+                                       break;
+                               }
+                               // mix in properties
+                               t = bases[i];
+                               (t._meta ? mixOwn : mix)(proto, t.prototype);
+                               // chain in new constructor
+                               ctor = new Function;
+                               ctor.superclass = superclass;
+                               ctor.prototype = proto;
+                               superclass = proto.constructor = ctor;
+                       }
+               }else{
+                       proto = {};
+               }
+               // add all properties
+               safeMixin(proto, props);
+               // add constructor
+               t = props.constructor;
+               if(t !== op.constructor){
+                       t.nom = cname;
+                       proto.constructor = t;
+               }
+
+               // collect chains and flags
+               for(i = mixins - 1; i; --i){ // intentional assignment
+                       t = bases[i]._meta;
+                       if(t && t.chains){
+                               chains = mix(chains || {}, t.chains);
+                       }
+               }
+               if(proto["-chains-"]){
+                       chains = mix(chains || {}, proto["-chains-"]);
+               }
+
+               // build ctor
+               t = !chains || !chains.hasOwnProperty(cname);
+               bases[0] = ctor = (chains && chains.constructor === "manual") ? simpleConstructor(bases) :
+                       (bases.length == 1 ? singleConstructor(props.constructor, t) : chainedConstructor(bases, t));
+
+               // add meta information to the constructor
+               ctor._meta  = {bases: bases, hidden: props, chains: chains,
+                       parents: parents, ctor: props.constructor};
+               ctor.superclass = superclass && superclass.prototype;
+               ctor.extend = extend;
+               ctor.prototype = proto;
+               proto.constructor = ctor;
+
+               // add "standard" methods to the prototype
+               proto.getInherited = getInherited;
+               proto.inherited = inherited;
+               proto.isInstanceOf = isInstanceOf;
+
+               // add name if specified
+               if(className){
+                       proto.declaredClass = className;
+                       d.setObject(className, ctor);
+               }
+
+               // build chains and add them to the prototype
+               if(chains){
+                       for(name in chains){
+                               if(proto[name] && typeof chains[name] == "string" && name != cname){
+                                       t = proto[name] = chain(name, bases, chains[name] === "after");
+                                       t.nom = name;
+                               }
+                       }
+               }
+               // chained methods do not return values
+               // no need to chain "invisible" functions
+
+               return ctor;    // Function
+       };
+
+       d.safeMixin = safeMixin;
+
+       /*=====
+       dojo.declare = function(className, superclass, props){
+               //      summary:
+               //              Create a feature-rich constructor from compact notation.
+               //      className: String?:
+               //              The optional name of the constructor (loosely, a "class")
+               //              stored in the "declaredClass" property in the created prototype.
+               //              It will be used as a global name for a created constructor.
+               //      superclass: Function|Function[]:
+               //              May be null, a Function, or an Array of Functions. This argument
+               //              specifies a list of bases (the left-most one is the most deepest
+               //              base).
+               //      props: Object:
+               //              An object whose properties are copied to the created prototype.
+               //              Add an instance-initialization function by making it a property
+               //              named "constructor".
+               //      returns:
+               //              New constructor function.
+               //      description:
+               //              Create a constructor using a compact notation for inheritance and
+               //              prototype extension.
+               //
+               //              Mixin ancestors provide a type of multiple inheritance.
+               //              Prototypes of mixin ancestors are copied to the new class:
+               //              changes to mixin prototypes will not affect classes to which
+               //              they have been mixed in.
+               //
+               //              Ancestors can be compound classes created by this version of
+               //              dojo.declare. In complex cases all base classes are going to be
+               //              linearized according to C3 MRO algorithm
+               //              (see http://www.python.org/download/releases/2.3/mro/ for more
+               //              details).
+               //
+               //              "className" is cached in "declaredClass" property of the new class,
+               //              if it was supplied. The immediate super class will be cached in
+               //              "superclass" property of the new class.
+               //
+               //              Methods in "props" will be copied and modified: "nom" property
+               //              (the declared name of the method) will be added to all copied
+               //              functions to help identify them for the internal machinery. Be
+               //              very careful, while reusing methods: if you use the same
+               //              function under different names, it can produce errors in some
+               //              cases.
+               //
+               //              It is possible to use constructors created "manually" (without
+               //              dojo.declare) as bases. They will be called as usual during the
+               //              creation of an instance, their methods will be chained, and even
+               //              called by "this.inherited()".
+               //
+               //              Special property "-chains-" governs how to chain methods. It is
+               //              a dictionary, which uses method names as keys, and hint strings
+               //              as values. If a hint string is "after", this method will be
+               //              called after methods of its base classes. If a hint string is
+               //              "before", this method will be called before methods of its base
+               //              classes.
+               //
+               //              If "constructor" is not mentioned in "-chains-" property, it will
+               //              be chained using the legacy mode: using "after" chaining,
+               //              calling preamble() method before each constructor, if available,
+               //              and calling postscript() after all constructors were executed.
+               //              If the hint is "after", it is chained as a regular method, but
+               //              postscript() will be called after the chain of constructors.
+               //              "constructor" cannot be chained "before", but it allows
+               //              a special hint string: "manual", which means that constructors
+               //              are not going to be chained in any way, and programmer will call
+               //              them manually using this.inherited(). In the latter case
+               //              postscript() will be called after the construction.
+               //
+               //              All chaining hints are "inherited" from base classes and
+               //              potentially can be overridden. Be very careful when overriding
+               //              hints! Make sure that all chained methods can work in a proposed
+               //              manner of chaining.
+               //
+               //              Once a method was chained, it is impossible to unchain it. The
+               //              only exception is "constructor". You don't need to define a
+               //              method in order to supply a chaining hint.
+               //
+               //              If a method is chained, it cannot use this.inherited() because
+               //              all other methods in the hierarchy will be called automatically.
+               //
+               //              Usually constructors and initializers of any kind are chained
+               //              using "after" and destructors of any kind are chained as
+               //              "before". Note that chaining assumes that chained methods do not
+               //              return any value: any returned value will be discarded.
+               //
+               //      example:
+               //      |       dojo.declare("my.classes.bar", my.classes.foo, {
+               //      |               // properties to be added to the class prototype
+               //      |               someValue: 2,
+               //      |               // initialization function
+               //      |               constructor: function(){
+               //      |                       this.myComplicatedObject = new ReallyComplicatedObject();
+               //      |               },
+               //      |               // other functions
+               //      |               someMethod: function(){
+               //      |                       doStuff();
+               //      |               }
+               //      |       });
+               //
+               //      example:
+               //      |       var MyBase = dojo.declare(null, {
+               //      |               // constructor, properties, and methods go here
+               //      |               // ...
+               //      |       });
+               //      |       var MyClass1 = dojo.declare(MyBase, {
+               //      |               // constructor, properties, and methods go here
+               //      |               // ...
+               //      |       });
+               //      |       var MyClass2 = dojo.declare(MyBase, {
+               //      |               // constructor, properties, and methods go here
+               //      |               // ...
+               //      |       });
+               //      |       var MyDiamond = dojo.declare([MyClass1, MyClass2], {
+               //      |               // constructor, properties, and methods go here
+               //      |               // ...
+               //      |       });
+               //
+               //      example:
+               //      |       var F = function(){ console.log("raw constructor"); };
+               //      |       F.prototype.method = function(){
+               //      |               console.log("raw method");
+               //      |       };
+               //      |       var A = dojo.declare(F, {
+               //      |               constructor: function(){
+               //      |                       console.log("A.constructor");
+               //      |               },
+               //      |               method: function(){
+               //      |                       console.log("before calling F.method...");
+               //      |                       this.inherited(arguments);
+               //      |                       console.log("...back in A");
+               //      |               }
+               //      |       });
+               //      |       new A().method();
+               //      |       // will print:
+               //      |       // raw constructor
+               //      |       // A.constructor
+               //      |       // before calling F.method...
+               //      |       // raw method
+               //      |       // ...back in A
+               //
+               //      example:
+               //      |       var A = dojo.declare(null, {
+               //      |               "-chains-": {
+               //      |                       destroy: "before"
+               //      |               }
+               //      |       });
+               //      |       var B = dojo.declare(A, {
+               //      |               constructor: function(){
+               //      |                       console.log("B.constructor");
+               //      |               },
+               //      |               destroy: function(){
+               //      |                       console.log("B.destroy");
+               //      |               }
+               //      |       });
+               //      |       var C = dojo.declare(B, {
+               //      |               constructor: function(){
+               //      |                       console.log("C.constructor");
+               //      |               },
+               //      |               destroy: function(){
+               //      |                       console.log("C.destroy");
+               //      |               }
+               //      |       });
+               //      |       new C().destroy();
+               //      |       // prints:
+               //      |       // B.constructor
+               //      |       // C.constructor
+               //      |       // C.destroy
+               //      |       // B.destroy
+               //
+               //      example:
+               //      |       var A = dojo.declare(null, {
+               //      |               "-chains-": {
+               //      |                       constructor: "manual"
+               //      |               }
+               //      |       });
+               //      |       var B = dojo.declare(A, {
+               //      |               constructor: function(){
+               //      |                       // ...
+               //      |                       // call the base constructor with new parameters
+               //      |                       this.inherited(arguments, [1, 2, 3]);
+               //      |                       // ...
+               //      |               }
+               //      |       });
+               //
+               //      example:
+               //      |       var A = dojo.declare(null, {
+               //      |               "-chains-": {
+               //      |                       m1: "before"
+               //      |               },
+               //      |               m1: function(){
+               //      |                       console.log("A.m1");
+               //      |               },
+               //      |               m2: function(){
+               //      |                       console.log("A.m2");
+               //      |               }
+               //      |       });
+               //      |       var B = dojo.declare(A, {
+               //      |               "-chains-": {
+               //      |                       m2: "after"
+               //      |               },
+               //      |               m1: function(){
+               //      |                       console.log("B.m1");
+               //      |               },
+               //      |               m2: function(){
+               //      |                       console.log("B.m2");
+               //      |               }
+               //      |       });
+               //      |       var x = new B();
+               //      |       x.m1();
+               //      |       // prints:
+               //      |       // B.m1
+               //      |       // A.m1
+               //      |       x.m2();
+               //      |       // prints:
+               //      |       // A.m2
+               //      |       // B.m2
+               return new Function(); // Function
+       };
+       =====*/
+
+       /*=====
+       dojo.safeMixin = function(target, source){
+               //      summary:
+               //              Mix in properties skipping a constructor and decorating functions
+               //              like it is done by dojo.declare.
+               //      target: Object
+               //              Target object to accept new properties.
+               //      source: Object
+               //              Source object for new properties.
+               //      description:
+               //              This function is used to mix in properties like dojo._mixin does,
+               //              but it skips a constructor property and decorates functions like
+               //              dojo.declare does.
+               //
+               //              It is meant to be used with classes and objects produced with
+               //              dojo.declare. Functions mixed in with dojo.safeMixin can use
+               //              this.inherited() like normal methods.
+               //
+               //              This function is used to implement extend() method of a constructor
+               //              produced with dojo.declare().
+               //
+               //      example:
+               //      |       var A = dojo.declare(null, {
+               //      |               m1: function(){
+               //      |                       console.log("A.m1");
+               //      |               },
+               //      |               m2: function(){
+               //      |                       console.log("A.m2");
+               //      |               }
+               //      |       });
+               //      |       var B = dojo.declare(A, {
+               //      |               m1: function(){
+               //      |                       this.inherited(arguments);
+               //      |                       console.log("B.m1");
+               //      |               }
+               //      |       });
+               //      |       B.extend({
+               //      |               m2: function(){
+               //      |                       this.inherited(arguments);
+               //      |                       console.log("B.m2");
+               //      |               }
+               //      |       });
+               //      |       var x = new B();
+               //      |       dojo.safeMixin(x, {
+               //      |               m1: function(){
+               //      |                       this.inherited(arguments);
+               //      |                       console.log("X.m1");
+               //      |               },
+               //      |               m2: function(){
+               //      |                       this.inherited(arguments);
+               //      |                       console.log("X.m2");
+               //      |               }
+               //      |       });
+               //      |       x.m2();
+               //      |       // prints:
+               //      |       // A.m1
+               //      |       // B.m1
+               //      |       // X.m1
+       };
+       =====*/
+
+       /*=====
+       Object.inherited = function(name, args, newArgs){
+               //      summary:
+               //              Calls a super method.
+               //      name: String?
+               //              The optional method name. Should be the same as the caller's
+               //              name. Usually "name" is specified in complex dynamic cases, when
+               //              the calling method was dynamically added, undecorated by
+               //              dojo.declare, and it cannot be determined.
+               //      args: Arguments
+               //              The caller supply this argument, which should be the original
+               //              "arguments".
+               //      newArgs: Object?
+               //              If "true", the found function will be returned without
+               //              executing it.
+               //              If Array, it will be used to call a super method. Otherwise
+               //              "args" will be used.
+               //      returns:
+               //              Whatever is returned by a super method, or a super method itself,
+               //              if "true" was specified as newArgs.
+               //      description:
+               //              This method is used inside method of classes produced with
+               //              dojo.declare to call a super method (next in the chain). It is
+               //              used for manually controlled chaining. Consider using the regular
+               //              chaining, because it is faster. Use "this.inherited()" only in
+               //              complex cases.
+               //
+               //              This method cannot me called from automatically chained
+               //              constructors including the case of a special (legacy)
+               //              constructor chaining. It cannot be called from chained methods.
+               //
+               //              If "this.inherited()" cannot find the next-in-chain method, it
+               //              does nothing and returns "undefined". The last method in chain
+               //              can be a default method implemented in Object, which will be
+               //              called last.
+               //
+               //              If "name" is specified, it is assumed that the method that
+               //              received "args" is the parent method for this call. It is looked
+               //              up in the chain list and if it is found the next-in-chain method
+               //              is called. If it is not found, the first-in-chain method is
+               //              called.
+               //
+               //              If "name" is not specified, it will be derived from the calling
+               //              method (using a methoid property "nom").
+               //
+               //      example:
+               //      |       var B = dojo.declare(A, {
+               //      |               method1: function(a, b, c){
+               //      |                       this.inherited(arguments);
+               //      |               },
+               //      |               method2: function(a, b){
+               //      |                       return this.inherited(arguments, [a + b]);
+               //      |               }
+               //      |       });
+               //      |       // next method is not in the chain list because it is added
+               //      |       // manually after the class was created.
+               //      |       B.prototype.method3 = function(){
+               //      |               console.log("This is a dynamically-added method.");
+               //      |               this.inherited("method3", arguments);
+               //      |       };
+               //      example:
+               //      |       var B = dojo.declare(A, {
+               //      |               method: function(a, b){
+               //      |                       var super = this.inherited(arguments, true);
+               //      |                       // ...
+               //      |                       if(!super){
+               //      |                               console.log("there is no super method");
+               //      |                               return 0;
+               //      |                       }
+               //      |                       return super.apply(this, arguments);
+               //      |               }
+               //      |       });
+               return  {};     // Object
+       }
+       =====*/
+
+       /*=====
+       Object.getInherited = function(name, args){
+               //      summary:
+               //              Returns a super method.
+               //      name: String?
+               //              The optional method name. Should be the same as the caller's
+               //              name. Usually "name" is specified in complex dynamic cases, when
+               //              the calling method was dynamically added, undecorated by
+               //              dojo.declare, and it cannot be determined.
+               //      args: Arguments
+               //              The caller supply this argument, which should be the original
+               //              "arguments".
+               //      returns:
+               //              Returns a super method (Function) or "undefined".
+               //      description:
+               //              This method is a convenience method for "this.inherited()".
+               //              It uses the same algorithm but instead of executing a super
+               //              method, it returns it, or "undefined" if not found.
+               //
+               //      example:
+               //      |       var B = dojo.declare(A, {
+               //      |               method: function(a, b){
+               //      |                       var super = this.getInherited(arguments);
+               //      |                       // ...
+               //      |                       if(!super){
+               //      |                               console.log("there is no super method");
+               //      |                               return 0;
+               //      |                       }
+               //      |                       return super.apply(this, arguments);
+               //      |               }
+               //      |       });
+               return  {};     // Object
+       }
+       =====*/
+
+       /*=====
+       Object.isInstanceOf = function(cls){
+               //      summary:
+               //              Checks the inheritance chain to see if it is inherited from this
+               //              class.
+               //      cls: Function
+               //              Class constructor.
+               //      returns:
+               //              "true", if this object is inherited from this class, "false"
+               //              otherwise.
+               //      description:
+               //              This method is used with instances of classes produced with
+               //              dojo.declare to determine of they support a certain interface or
+               //              not. It models "instanceof" operator.
+               //
+               //      example:
+               //      |       var A = dojo.declare(null, {
+               //      |               // constructor, properties, and methods go here
+               //      |               // ...
+               //      |       });
+               //      |       var B = dojo.declare(null, {
+               //      |               // constructor, properties, and methods go here
+               //      |               // ...
+               //      |       });
+               //      |       var C = dojo.declare([A, B], {
+               //      |               // constructor, properties, and methods go here
+               //      |               // ...
+               //      |       });
+               //      |       var D = dojo.declare(A, {
+               //      |               // constructor, properties, and methods go here
+               //      |               // ...
+               //      |       });
+               //      |
+               //      |       var a = new A(), b = new B(), c = new C(), d = new D();
+               //      |
+               //      |       console.log(a.isInstanceOf(A)); // true
+               //      |       console.log(b.isInstanceOf(A)); // false
+               //      |       console.log(c.isInstanceOf(A)); // true
+               //      |       console.log(d.isInstanceOf(A)); // true
+               //      |
+               //      |       console.log(a.isInstanceOf(B)); // false
+               //      |       console.log(b.isInstanceOf(B)); // true
+               //      |       console.log(c.isInstanceOf(B)); // true
+               //      |       console.log(d.isInstanceOf(B)); // false
+               //      |
+               //      |       console.log(a.isInstanceOf(C)); // false
+               //      |       console.log(b.isInstanceOf(C)); // false
+               //      |       console.log(c.isInstanceOf(C)); // true
+               //      |       console.log(d.isInstanceOf(C)); // false
+               //      |
+               //      |       console.log(a.isInstanceOf(D)); // false
+               //      |       console.log(b.isInstanceOf(D)); // false
+               //      |       console.log(c.isInstanceOf(D)); // false
+               //      |       console.log(d.isInstanceOf(D)); // true
+               return  {};     // Object
+       }
+       =====*/
+
+       /*=====
+       Object.extend = function(source){
+               //      summary:
+               //              Adds all properties and methods of source to constructor's
+               //              prototype, making them available to all instances created with
+               //              constructor. This method is specific to constructors created with
+               //              dojo.declare.
+               //      source: Object
+               //              Source object which properties are going to be copied to the
+               //              constructor's prototype.
+               //      description:
+               //              Adds source properties to the constructor's prototype. It can
+               //              override existing properties.
+               //
+               //              This method is similar to dojo.extend function, but it is specific
+               //              to constructors produced by dojo.declare. It is implemented
+               //              using dojo.safeMixin, and it skips a constructor property,
+               //              and properly decorates copied functions.
+               //
+               //      example:
+               //      |       var A = dojo.declare(null, {
+               //      |               m1: function(){},
+               //      |               s1: "Popokatepetl"
+               //      |       });
+               //      |       A.extend({
+               //      |               m1: function(){},
+               //      |               m2: function(){},
+               //      |               f1: true,
+               //      |               d1: 42
+               //      |       });
+       };
+       =====*/
+})();
+
+}
+
+if(!dojo._hasResource["dojo._base.connect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.connect"] = true;
+dojo.provide("dojo._base.connect");
+
+
+// this file courtesy of the TurboAjax Group, licensed under a Dojo CLA
+
+// low-level delegation machinery
+dojo._listener = {
+       // create a dispatcher function
+       getDispatcher: function(){
+               // following comments pulled out-of-line to prevent cloning them 
+               // in the returned function.
+               // - indices (i) that are really in the array of listeners (ls) will 
+               //   not be in Array.prototype. This is the 'sparse array' trick
+               //   that keeps us safe from libs that take liberties with built-in 
+               //   objects
+               // - listener is invoked with current scope (this)
+               return function(){
+                       var ap=Array.prototype, c=arguments.callee, ls=c._listeners, t=c.target;
+                       // return value comes from original target function
+                       var r = t && t.apply(this, arguments);
+                       // make local copy of listener array so it is immutable during processing
+                       var i, lls;
+                                                                                       lls = [].concat(ls);
+                                                       
+                       // invoke listeners after target function
+                       for(i in lls){
+                               if(!(i in ap)){
+                                       lls[i].apply(this, arguments);
+                               }
+                       }
+                       // return value comes from original target function
+                       return r;
+               };
+       },
+       // add a listener to an object
+       add: function(/*Object*/ source, /*String*/ method, /*Function*/ listener){
+               // Whenever 'method' is invoked, 'listener' will have the same scope.
+               // Trying to supporting a context object for the listener led to 
+               // complexity. 
+               // Non trivial to provide 'once' functionality here
+               // because listener could be the result of a dojo.hitch call,
+               // in which case two references to the same hitch target would not
+               // be equivalent. 
+               source = source || dojo.global;
+               // The source method is either null, a dispatcher, or some other function
+               var f = source[method];
+               // Ensure a dispatcher
+               if(!f || !f._listeners){
+                       var d = dojo._listener.getDispatcher();
+                       // original target function is special
+                       d.target = f;
+                       // dispatcher holds a list of listeners
+                       d._listeners = []; 
+                       // redirect source to dispatcher
+                       f = source[method] = d;
+               }
+               // The contract is that a handle is returned that can 
+               // identify this listener for disconnect. 
+               //
+               // The type of the handle is private. Here is it implemented as Integer. 
+               // DOM event code has this same contract but handle is Function 
+               // in non-IE browsers.
+               //
+               // We could have separate lists of before and after listeners.
+               return f._listeners.push(listener); /*Handle*/
+       },
+       // remove a listener from an object
+       remove: function(/*Object*/ source, /*String*/ method, /*Handle*/ handle){
+               var f = (source || dojo.global)[method];
+               // remember that handle is the index+1 (0 is not a valid handle)
+               if(f && f._listeners && handle--){
+                       delete f._listeners[handle];
+               }
+       }
+};
+
+// Multiple delegation for arbitrary methods.
+
+// This unit knows nothing about DOM, but we include DOM aware documentation
+// and dontFix argument here to help the autodocs. Actual DOM aware code is in
+// event.js.
+
+dojo.connect = function(/*Object|null*/ obj, 
+                                               /*String*/ event, 
+                                               /*Object|null*/ context, 
+                                               /*String|Function*/ method,
+                                               /*Boolean?*/ dontFix){
+       // summary:
+       //              `dojo.connect` is the core event handling and delegation method in
+       //              Dojo. It allows one function to "listen in" on the execution of
+       //              any other, triggering the second whenever the first is called. Many
+       //              listeners may be attached to a function, and source functions may
+       //              be either regular function calls or DOM events.
+       //
+       // description:
+       //              Connects listeners to actions, so that after event fires, a
+       //              listener is called with the same arguments passed to the original
+       //              function.
+       //
+       //              Since `dojo.connect` allows the source of events to be either a
+       //              "regular" JavaScript function or a DOM event, it provides a uniform
+       //              interface for listening to all the types of events that an
+       //              application is likely to deal with though a single, unified
+       //              interface. DOM programmers may want to think of it as
+       //              "addEventListener for everything and anything".
+       //
+       //              When setting up a connection, the `event` parameter must be a
+       //              string that is the name of the method/event to be listened for. If
+       //              `obj` is null, `dojo.global` is assumed, meaning that connections
+       //              to global methods are supported but also that you may inadvertently
+       //              connect to a global by passing an incorrect object name or invalid
+       //              reference.
+       //
+       //              `dojo.connect` generally is forgiving. If you pass the name of a
+       //              function or method that does not yet exist on `obj`, connect will
+       //              not fail, but will instead set up a stub method. Similarly, null
+       //              arguments may simply be omitted such that fewer than 4 arguments
+       //              may be required to set up a connection See the examples for details.
+       //
+       //              The return value is a handle that is needed to 
+       //              remove this connection with `dojo.disconnect`.
+       //
+       // obj: 
+       //              The source object for the event function. 
+       //              Defaults to `dojo.global` if null.
+       //              If obj is a DOM node, the connection is delegated 
+       //              to the DOM event manager (unless dontFix is true).
+       //
+       // event:
+       //              String name of the event function in obj. 
+       //              I.e. identifies a property `obj[event]`.
+       //
+       // context: 
+       //              The object that method will receive as "this".
+       //
+       //              If context is null and method is a function, then method
+       //              inherits the context of event.
+       //      
+       //              If method is a string then context must be the source 
+       //              object object for method (context[method]). If context is null,
+       //              dojo.global is used.
+       //
+       // method:
+       //              A function reference, or name of a function in context. 
+       //              The function identified by method fires after event does. 
+       //              method receives the same arguments as the event.
+       //              See context argument comments for information on method's scope.
+       //
+       // dontFix:
+       //              If obj is a DOM node, set dontFix to true to prevent delegation 
+       //              of this connection to the DOM event manager.
+       //
+       // example:
+       //              When obj.onchange(), do ui.update():
+       //      |       dojo.connect(obj, "onchange", ui, "update");
+       //      |       dojo.connect(obj, "onchange", ui, ui.update); // same
+       //
+       // example:
+       //              Using return value for disconnect:
+       //      |       var link = dojo.connect(obj, "onchange", ui, "update");
+       //      |       ...
+       //      |       dojo.disconnect(link);
+       //
+       // example:
+       //              When onglobalevent executes, watcher.handler is invoked:
+       //      |       dojo.connect(null, "onglobalevent", watcher, "handler");
+       //
+       // example:
+       //              When ob.onCustomEvent executes, customEventHandler is invoked:
+       //      |       dojo.connect(ob, "onCustomEvent", null, "customEventHandler");
+       //      |       dojo.connect(ob, "onCustomEvent", "customEventHandler"); // same
+       //
+       // example:
+       //              When ob.onCustomEvent executes, customEventHandler is invoked
+       //              with the same scope (this):
+       //      |       dojo.connect(ob, "onCustomEvent", null, customEventHandler);
+       //      |       dojo.connect(ob, "onCustomEvent", customEventHandler); // same
+       //
+       // example:
+       //              When globalEvent executes, globalHandler is invoked
+       //              with the same scope (this):
+       //      |       dojo.connect(null, "globalEvent", null, globalHandler);
+       //      |       dojo.connect("globalEvent", globalHandler); // same
+
+       // normalize arguments
+       var a=arguments, args=[], i=0;
+       // if a[0] is a String, obj was omitted
+       args.push(dojo.isString(a[0]) ? null : a[i++], a[i++]);
+       // if the arg-after-next is a String or Function, context was NOT omitted
+       var a1 = a[i+1];
+       args.push(dojo.isString(a1)||dojo.isFunction(a1) ? a[i++] : null, a[i++]);
+       // absorb any additional arguments
+       for(var l=a.length; i<l; i++){  args.push(a[i]); }
+       // do the actual work
+       return dojo._connect.apply(this, args); /*Handle*/
+}
+
+// used by non-browser hostenvs. always overriden by event.js
+dojo._connect = function(obj, event, context, method){
+       var l=dojo._listener, h=l.add(obj, event, dojo.hitch(context, method)); 
+       return [obj, event, h, l]; // Handle
+}
+
+dojo.disconnect = function(/*Handle*/ handle){
+       // summary:
+       //              Remove a link created by dojo.connect.
+       // description:
+       //              Removes the connection between event and the method referenced by handle.
+       // handle:
+       //              the return value of the dojo.connect call that created the connection.
+       if(handle && handle[0] !== undefined){
+               dojo._disconnect.apply(this, handle);
+               // let's not keep this reference
+               delete handle[0];
+       }
+}
+
+dojo._disconnect = function(obj, event, handle, listener){
+       listener.remove(obj, event, handle);
+}
+
+// topic publish/subscribe
+
+dojo._topics = {};
+
+dojo.subscribe = function(/*String*/ topic, /*Object|null*/ context, /*String|Function*/ method){
+       //      summary:
+       //              Attach a listener to a named topic. The listener function is invoked whenever the
+       //              named topic is published (see: dojo.publish).
+       //              Returns a handle which is needed to unsubscribe this listener.
+       //      context:
+       //              Scope in which method will be invoked, or null for default scope.
+       //      method:
+       //              The name of a function in context, or a function reference. This is the function that
+       //              is invoked when topic is published.
+       //      example:
+       //      |       dojo.subscribe("alerts", null, function(caption, message){ alert(caption + "\n" + message); });
+       //      |       dojo.publish("alerts", [ "read this", "hello world" ]);                                                                                                                                 
+
+       // support for 2 argument invocation (omitting context) depends on hitch
+       return [topic, dojo._listener.add(dojo._topics, topic, dojo.hitch(context, method))]; /*Handle*/
+}
+
+dojo.unsubscribe = function(/*Handle*/ handle){
+       //      summary:
+       //              Remove a topic listener. 
+       //      handle:
+       //              The handle returned from a call to subscribe.
+       //      example:
+       //      |       var alerter = dojo.subscribe("alerts", null, function(caption, message){ alert(caption + "\n" + message); };
+       //      |       ...
+       //      |       dojo.unsubscribe(alerter);
+       if(handle){
+               dojo._listener.remove(dojo._topics, handle[0], handle[1]);
+       }
+}
+
+dojo.publish = function(/*String*/ topic, /*Array*/ args){
+       //      summary:
+       //              Invoke all listener method subscribed to topic.
+       //      topic:
+       //              The name of the topic to publish.
+       //      args:
+       //              An array of arguments. The arguments will be applied 
+       //              to each topic subscriber (as first class parameters, via apply).
+       //      example:
+       //      |       dojo.subscribe("alerts", null, function(caption, message){ alert(caption + "\n" + message); };
+       //      |       dojo.publish("alerts", [ "read this", "hello world" ]); 
+
+       // Note that args is an array, which is more efficient vs variable length
+       // argument list.  Ideally, var args would be implemented via Array
+       // throughout the APIs.
+       var f = dojo._topics[topic];
+       if(f){
+               f.apply(this, args||[]);
+       }
+}
+
+dojo.connectPublisher = function(      /*String*/ topic, 
+                                                                       /*Object|null*/ obj, 
+                                                                       /*String*/ event){
+       //      summary:
+       //              Ensure that every time obj.event() is called, a message is published
+       //              on the topic. Returns a handle which can be passed to
+       //              dojo.disconnect() to disable subsequent automatic publication on
+       //              the topic.
+       //      topic:
+       //              The name of the topic to publish.
+       //      obj: 
+       //              The source object for the event function. Defaults to dojo.global
+       //              if null.
+       //      event:
+       //              The name of the event function in obj. 
+       //              I.e. identifies a property obj[event].
+       //      example:
+       //      |       dojo.connectPublisher("/ajax/start", dojo, "xhrGet");
+       var pf = function(){ dojo.publish(topic, arguments); }
+       return event ? dojo.connect(obj, event, pf) : dojo.connect(obj, pf); //Handle
+};
+
+}
+
+if(!dojo._hasResource["dojo._base.Deferred"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.Deferred"] = true;
+dojo.provide("dojo._base.Deferred");
+
+
+(function(){
+       var mutator = function(){};             
+       var freeze = Object.freeze || function(){};
+       // A deferred provides an API for creating and resolving a promise.
+       dojo.Deferred = function(/*Function?*/canceller){
+       // summary:
+       //              Deferreds provide a generic means for encapsulating an asynchronous
+       //              operation and notifying users of the completion and result of the operation. 
+       // description:
+       //              The dojo.Deferred API is based on the concept of promises that provide a
+       //              generic interface into the eventual completion of an asynchronous action.
+       //              The motivation for promises fundamentally is about creating a 
+       //              separation of concerns that allows one to achieve the same type of 
+       //              call patterns and logical data flow in asynchronous code as can be 
+       //              achieved in synchronous code. Promises allows one 
+       //              to be able to call a function purely with arguments needed for 
+       //              execution, without conflating the call with concerns of whether it is 
+       //              sync or async. One shouldn't need to alter a call's arguments if the 
+       //              implementation switches from sync to async (or vice versa). By having 
+       //              async functions return promises, the concerns of making the call are 
+       //              separated from the concerns of asynchronous interaction (which are 
+       //              handled by the promise).
+       // 
+       //      The dojo.Deferred is a type of promise that provides methods for fulfilling the 
+       //              promise with a successful result or an error. The most important method for 
+       //              working with Dojo's promises is the then() method, which follows the 
+       //              CommonJS proposed promise API. An example of using a Dojo promise:
+       //              
+       //              |       var resultingPromise = someAsyncOperation.then(function(result){
+       //              |               ... handle result ...
+       //              |       },
+       //              |       function(error){
+       //              |               ... handle error ...
+       //              |       });
+       //      
+       //              The .then() call returns a new promise that represents the result of the 
+       //              execution of the callback. The callbacks will never affect the original promises value.
+       //
+       //              The dojo.Deferred instances also provide the following functions for backwards compatibility:
+       //
+       //                      * addCallback(handler)
+       //                      * addErrback(handler)
+       //                      * callback(result)
+       //                      * errback(result)
+       //
+       //              Callbacks are allowed to return promisesthemselves, so
+       //              you can build complicated sequences of events with ease.
+       //
+       //              The creator of the Deferred may specify a canceller.  The canceller
+       //              is a function that will be called if Deferred.cancel is called
+       //              before the Deferred fires. You can use this to implement clean
+       //              aborting of an XMLHttpRequest, etc. Note that cancel will fire the
+       //              deferred with a CancelledError (unless your canceller returns
+       //              another kind of error), so the errbacks should be prepared to
+       //              handle that error for cancellable Deferreds.
+       // example:
+       //      |       var deferred = new dojo.Deferred();
+       //      |       setTimeout(function(){ deferred.callback({success: true}); }, 1000);
+       //      |       return deferred;
+       // example:
+       //              Deferred objects are often used when making code asynchronous. It
+       //              may be easiest to write functions in a synchronous manner and then
+       //              split code using a deferred to trigger a response to a long-lived
+       //              operation. For example, instead of register a callback function to
+       //              denote when a rendering operation completes, the function can
+       //              simply return a deferred:
+       //
+       //              |       // callback style:
+       //              |       function renderLotsOfData(data, callback){
+       //              |               var success = false
+       //              |               try{
+       //              |                       for(var x in data){
+       //              |                               renderDataitem(data[x]);
+       //              |                       }
+       //              |                       success = true;
+       //              |               }catch(e){ }
+       //              |               if(callback){
+       //              |                       callback(success);
+       //              |               }
+       //              |       }
+       //
+       //              |       // using callback style
+       //              |       renderLotsOfData(someDataObj, function(success){
+       //              |               // handles success or failure
+       //              |               if(!success){
+       //              |                       promptUserToRecover();
+       //              |               }
+       //              |       });
+       //              |       // NOTE: no way to add another callback here!!
+       // example:
+       //              Using a Deferred doesn't simplify the sending code any, but it
+       //              provides a standard interface for callers and senders alike,
+       //              providing both with a simple way to service multiple callbacks for
+       //              an operation and freeing both sides from worrying about details
+       //              such as "did this get called already?". With Deferreds, new
+       //              callbacks can be added at any time.
+       //
+       //              |       // Deferred style:
+       //              |       function renderLotsOfData(data){
+       //              |               var d = new dojo.Deferred();
+       //              |               try{
+       //              |                       for(var x in data){
+       //              |                               renderDataitem(data[x]);
+       //              |                       }
+       //              |                       d.callback(true);
+       //              |               }catch(e){ 
+       //              |                       d.errback(new Error("rendering failed"));
+       //              |               }
+       //              |               return d;
+       //              |       }
+       //
+       //              |       // using Deferred style
+       //              |       renderLotsOfData(someDataObj).then(null, function(){
+       //              |               promptUserToRecover();
+       //              |       });
+       //              |       // NOTE: addErrback and addCallback both return the Deferred
+       //              |       // again, so we could chain adding callbacks or save the
+       //              |       // deferred for later should we need to be notified again.
+       // example:
+       //              In this example, renderLotsOfData is syncrhonous and so both
+       //              versions are pretty artificial. Putting the data display on a
+       //              timeout helps show why Deferreds rock:
+       //
+       //              |       // Deferred style and async func
+       //              |       function renderLotsOfData(data){
+       //              |               var d = new dojo.Deferred();
+       //              |               setTimeout(function(){
+       //              |                       try{
+       //              |                               for(var x in data){
+       //              |                                       renderDataitem(data[x]);
+       //              |                               }
+       //              |                               d.callback(true);
+       //              |                       }catch(e){ 
+       //              |                               d.errback(new Error("rendering failed"));
+       //              |                       }
+       //              |               }, 100);
+       //              |               return d;
+       //              |       }
+       //
+       //              |       // using Deferred style
+       //              |       renderLotsOfData(someDataObj).then(null, function(){
+       //              |               promptUserToRecover();
+       //              |       });
+       //
+       //              Note that the caller doesn't have to change his code at all to
+       //              handle the asynchronous case.
+               var result, finished, isError, head, nextListener;
+               var promise = this.promise = {};
+               
+               function complete(value){
+                       if(finished){
+                               throw new Error("This deferred has already been resolved");                             
+                       }
+                       result = value;
+                       finished = true;
+                       notify();
+               }
+               function notify(){
+                       var mutated;
+                       while(!mutated && nextListener){
+                               var listener = nextListener;
+                               nextListener = nextListener.next;
+                               if(mutated = (listener.progress == mutator)){ // assignment and check
+                                       finished = false;
+                               }
+                               var func = (isError ? listener.error : listener.resolved);
+                               if (func) {
+                                       try {
+                                               var newResult = func(result);
+                                               if (newResult && typeof newResult.then === "function") {
+                                                       newResult.then(dojo.hitch(listener.deferred, "resolve"), dojo.hitch(listener.deferred, "reject"));
+                                                       continue;
+                                               }
+                                               var unchanged = mutated && newResult === undefined;
+                                               listener.deferred[unchanged && isError ? "reject" : "resolve"](unchanged ? result : newResult);
+                                       }
+                                       catch (e) {
+                                               listener.deferred.reject(e);
+                                       }
+                               }else {
+                                       if(isError){
+                                               listener.deferred.reject(result);
+                                       }else{
+                                               listener.deferred.resolve(result);
+                                       }
+                               }
+                       }       
+               }
+               // calling resolve will resolve the promise
+               this.resolve = this.callback = function(value){
+                       // summary:
+                       //              Fulfills the Deferred instance successfully with the provide value
+                       this.fired = 0;
+                       this.results = [value, null];
+                       complete(value);
+               };
+               
+               
+               // calling error will indicate that the promise failed
+               this.reject = this.errback = function(error){
+                       // summary:
+                       //              Fulfills the Deferred instance as an error with the provided error 
+                       isError = true;
+                       this.fired = 1;
+                       complete(error);
+                       this.results = [null, error];
+                       if(!error || error.log !== false){
+                               (dojo.config.deferredOnError || function(x){ console.error(x); })(error);
+                       }
+               };
+               // call progress to provide updates on the progress on the completion of the promise
+               this.progress = function(update){
+                       // summary
+                       //              Send progress events to all listeners
+                       var listener = nextListener;
+                       while(listener){
+                               var progress = listener.progress;
+                               progress && progress(update);
+                               listener = listener.next;       
+                       }
+               };
+               this.addCallbacks = function(/*Function?*/callback, /*Function?*/errback){
+                       this.then(callback, errback, mutator);
+                       return this;
+               };
+               // provide the implementation of the promise
+               this.then = promise.then = function(/*Function?*/resolvedCallback, /*Function?*/errorCallback, /*Function?*/progressCallback){
+                       // summary
+                       //              Adds a fulfilledHandler, errorHandler, and progressHandler to be called for 
+                       //              completion of a promise. The fulfilledHandler is called when the promise 
+                       //              is fulfilled. The errorHandler is called when a promise fails. The 
+                       //              progressHandler is called for progress events. All arguments are optional 
+                       //              and non-function values are ignored. The progressHandler is not only an 
+                       //              optional argument, but progress events are purely optional. Promise 
+                       //              providers are not required to ever create progress events.
+                       // 
+                       //              This function will return a new promise that is fulfilled when the given 
+                       //              fulfilledHandler or errorHandler callback is finished. This allows promise 
+                       //              operations to be chained together. The value returned from the callback 
+                       //              handler is the fulfillment value for the returned promise. If the callback 
+                       //              throws an error, the returned promise will be moved to failed state.
+                       //      
+                       // example:
+                       //              An example of using a CommonJS compliant promise:
+                       //              |       asyncComputeTheAnswerToEverything().
+                       //              |               then(addTwo).
+                       //              |               then(printResult, onError);
+                       //              |       >44 
+                       //              
+                       var returnDeferred = progressCallback == mutator ? this : new dojo.Deferred(promise.cancel);
+                       var listener = {
+                               resolved: resolvedCallback, 
+                               error: errorCallback, 
+                               progress: progressCallback, 
+                               deferred: returnDeferred
+                       }; 
+                       if(nextListener){
+                               head = head.next = listener;
+                       }
+                       else{
+                               nextListener = head = listener;
+                       }
+                       if(finished){
+                               notify();
+                       }
+                       return returnDeferred.promise;
+               };
+               var deferred = this;
+               this.cancel = promise.cancel = function () {
+                       // summary:
+                       //              Cancels the asynchronous operation
+                       if(!finished){
+                               var error = canceller && canceller(deferred);
+                               if(!finished){
+                                       if (!(error instanceof Error)) {
+                                               error = new Error(error);
+                                       }
+                                       error.log = false;
+                                       deferred.reject(error);
+                               }
+                       }
+               }
+               freeze(promise);
+       };
+       dojo.extend(dojo.Deferred, {
+               addCallback: function (/*Function*/callback) {
+                       return this.addCallbacks(dojo.hitch.apply(dojo, arguments));
+               },
+       
+               addErrback: function (/*Function*/errback) {
+                       return this.addCallbacks(null, dojo.hitch.apply(dojo, arguments));
+               },
+       
+               addBoth: function (/*Function*/callback) {
+                       var enclosed = dojo.hitch.apply(dojo, arguments);
+                       return this.addCallbacks(enclosed, enclosed);
+               },
+               fired: -1
+       });
+})();
+dojo.when = function(promiseOrValue, /*Function?*/callback, /*Function?*/errback, /*Function?*/progressHandler){
+       // summary:
+       //              This provides normalization between normal synchronous values and 
+       //              asynchronous promises, so you can interact with them in a common way
+       //      example:
+       //              |       function printFirstAndList(items){
+       //              |               dojo.when(findFirst(items), console.log);
+       //              |               dojo.when(findLast(items), console.log);
+       //              |       }
+       //              |       function findFirst(items){
+       //              |               return dojo.when(items, function(items){
+       //              |                       return items[0];
+       //              |               });
+       //              |       }
+       //              |       function findLast(items){
+       //              |               return dojo.when(items, function(items){
+       //              |                       return items[items.length];
+       //              |               });
+       //              |       }
+       //              And now all three of his functions can be used sync or async.
+       //              |       printFirstAndLast([1,2,3,4]) will work just as well as
+       //              |       printFirstAndLast(dojo.xhrGet(...));
+       
+       if(promiseOrValue && typeof promiseOrValue.then === "function"){
+               return promiseOrValue.then(callback, errback, progressHandler);
+       }
+       return callback(promiseOrValue);
+};
+
+}
+
+if(!dojo._hasResource["dojo._base.json"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.json"] = true;
+dojo.provide("dojo._base.json");
+
+dojo.fromJson = function(/*String*/ json){
+       // summary:
+       //              Parses a [JSON](http://json.org) string to return a JavaScript object.
+       // description:
+       //              Throws for invalid JSON strings, but it does not use a strict JSON parser. It
+       //              delegates to eval().  The content passed to this method must therefore come
+       //              from a trusted source.
+       // json: 
+       //              a string literal of a JSON item, for instance:
+       //                      `'{ "foo": [ "bar", 1, { "baz": "thud" } ] }'`
+
+       return eval("(" + json + ")"); // Object
+}
+
+dojo._escapeString = function(/*String*/str){
+       //summary:
+       //              Adds escape sequences for non-visual characters, double quote and
+       //              backslash and surrounds with double quotes to form a valid string
+       //              literal.
+       return ('"' + str.replace(/(["\\])/g, '\\$1') + '"').
+               replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n").
+               replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r"); // string
+}
+
+dojo.toJsonIndentStr = "\t";
+dojo.toJson = function(/*Object*/ it, /*Boolean?*/ prettyPrint, /*String?*/ _indentStr){
+       //      summary:
+       //              Returns a [JSON](http://json.org) serialization of an object.
+       //      description:
+       //              Returns a [JSON](http://json.org) serialization of an object.
+       //              Note that this doesn't check for infinite recursion, so don't do that!
+       //      it:
+       //              an object to be serialized. Objects may define their own
+       //              serialization via a special "__json__" or "json" function
+       //              property. If a specialized serializer has been defined, it will
+       //              be used as a fallback.
+       //      prettyPrint:
+       //              if true, we indent objects and arrays to make the output prettier.
+       //              The variable `dojo.toJsonIndentStr` is used as the indent string --
+       //              to use something other than the default (tab), change that variable
+       //              before calling dojo.toJson().
+       //      _indentStr:
+       //              private variable for recursive calls when pretty printing, do not use.
+       //      example:
+       //              simple serialization of a trivial object
+       //              |       var jsonStr = dojo.toJson({ howdy: "stranger!", isStrange: true });
+       //              |       doh.is('{"howdy":"stranger!","isStrange":true}', jsonStr);
+       //      example:
+       //              a custom serializer for an objects of a particular class:
+       //              |       dojo.declare("Furby", null, {
+       //              |               furbies: "are strange",
+       //              |               furbyCount: 10,
+       //              |               __json__: function(){
+       //              |               },
+       //              |       });
+
+       if(it === undefined){
+               return "undefined";
+       }
+       var objtype = typeof it;
+       if(objtype == "number" || objtype == "boolean"){
+               return it + "";
+       }
+       if(it === null){
+               return "null";
+       }
+       if(dojo.isString(it)){ 
+               return dojo._escapeString(it); 
+       }
+       // recurse
+       var recurse = arguments.callee;
+       // short-circuit for objects that support "json" serialization
+       // if they return "self" then just pass-through...
+       var newObj;
+       _indentStr = _indentStr || "";
+       var nextIndent = prettyPrint ? _indentStr + dojo.toJsonIndentStr : "";
+       var tf = it.__json__||it.json;
+       if(dojo.isFunction(tf)){
+               newObj = tf.call(it);
+               if(it !== newObj){
+                       return recurse(newObj, prettyPrint, nextIndent);
+               }
+       }
+       if(it.nodeType && it.cloneNode){ // isNode
+               // we can't seriailize DOM nodes as regular objects because they have cycles
+               // DOM nodes could be serialized with something like outerHTML, but
+               // that can be provided by users in the form of .json or .__json__ function.
+               throw new Error("Can't serialize DOM nodes");
+       }
+
+       var sep = prettyPrint ? " " : "";
+       var newLine = prettyPrint ? "\n" : "";
+
+       // array
+       if(dojo.isArray(it)){
+               var res = dojo.map(it, function(obj){
+                       var val = recurse(obj, prettyPrint, nextIndent);
+                       if(typeof val != "string"){
+                               val = "undefined";
+                       }
+                       return newLine + nextIndent + val;
+               });
+               return "[" + res.join("," + sep) + newLine + _indentStr + "]";
+       }
+       /*
+       // look in the registry
+       try {
+               window.o = it;
+               newObj = dojo.json.jsonRegistry.match(it);
+               return recurse(newObj, prettyPrint, nextIndent);
+       }catch(e){
+               // console.log(e);
+       }
+       // it's a function with no adapter, skip it
+       */
+       if(objtype == "function"){
+               return null; // null
+       }
+       // generic object code path
+       var output = [], key;
+       for(key in it){
+               var keyStr, val;
+               if(typeof key == "number"){
+                       keyStr = '"' + key + '"';
+               }else if(typeof key == "string"){
+                       keyStr = dojo._escapeString(key);
+               }else{
+                       // skip non-string or number keys
+                       continue;
+               }
+               val = recurse(it[key], prettyPrint, nextIndent);
+               if(typeof val != "string"){
+                       // skip non-serializable values
+                       continue;
+               }
+               // FIXME: use += on Moz!!
+               //       MOW NOTE: using += is a pain because you have to account for the dangling comma...
+               output.push(newLine + nextIndent + keyStr + ":" + sep + val);
+       }
+       return "{" + output.join("," + sep) + newLine + _indentStr + "}"; // String
+}
+
+}
+
+if(!dojo._hasResource["dojo._base.Color"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.Color"] = true;
+dojo.provide("dojo._base.Color");
+
+
+
+(function(){
+
+       var d = dojo;
+
+       dojo.Color = function(/*Array|String|Object*/ color){
+               // summary:
+               //              Takes a named string, hex string, array of rgb or rgba values,
+               //              an object with r, g, b, and a properties, or another `dojo.Color` object
+               //              and creates a new Color instance to work from.
+               //
+               // example:
+               //              Work with a Color instance:
+               //       | var c = new dojo.Color();
+               //       | c.setColor([0,0,0]); // black
+               //       | var hex = c.toHex(); // #000000
+               //
+               // example:
+               //              Work with a node's color:
+               //       | var color = dojo.style("someNode", "backgroundColor");
+               //       | var n = new dojo.Color(color);
+               //       | // adjust the color some
+               //       | n.r *= .5;
+               //       | console.log(n.toString()); // rgb(128, 255, 255);
+               if(color){ this.setColor(color); }
+       };
+
+       // FIXME:
+       //      there's got to be a more space-efficient way to encode or discover
+       //      these!!  Use hex?
+       dojo.Color.named = {
+               black:      [0,0,0],
+               silver:     [192,192,192],
+               gray:       [128,128,128],
+               white:      [255,255,255],
+               maroon:         [128,0,0],
+               red:        [255,0,0],
+               purple:         [128,0,128],
+               fuchsia:        [255,0,255],
+               green:      [0,128,0],
+               lime:       [0,255,0],
+               olive:          [128,128,0],
+               yellow:         [255,255,0],
+               navy:       [0,0,128],
+               blue:       [0,0,255],
+               teal:           [0,128,128],
+               aqua:           [0,255,255],
+               transparent: d.config.transparentColor || [255,255,255]
+       };
+
+       dojo.extend(dojo.Color, {
+               r: 255, g: 255, b: 255, a: 1,
+               _set: function(r, g, b, a){
+                       var t = this; t.r = r; t.g = g; t.b = b; t.a = a;
+               },
+               setColor: function(/*Array|String|Object*/ color){
+                       // summary:
+                       //              Takes a named string, hex string, array of rgb or rgba values,
+                       //              an object with r, g, b, and a properties, or another `dojo.Color` object
+                       //              and sets this color instance to that value.
+                       //
+                       // example:
+                       //      |       var c = new dojo.Color(); // no color
+                       //      |       c.setColor("#ededed"); // greyish
+                       if(d.isString(color)){
+                               d.colorFromString(color, this);
+                       }else if(d.isArray(color)){
+                               d.colorFromArray(color, this);
+                       }else{
+                               this._set(color.r, color.g, color.b, color.a);
+                               if(!(color instanceof d.Color)){ this.sanitize(); }
+                       }
+                       return this;    // dojo.Color
+               },
+               sanitize: function(){
+                       // summary:
+                       //              Ensures the object has correct attributes
+                       // description:
+                       //              the default implementation does nothing, include dojo.colors to
+                       //              augment it with real checks
+                       return this;    // dojo.Color
+               },
+               toRgb: function(){
+                       // summary:
+                       //              Returns 3 component array of rgb values
+                       // example:
+                       //      |       var c = new dojo.Color("#000000");
+                       //      |       console.log(c.toRgb()); // [0,0,0]
+                       var t = this;
+                       return [t.r, t.g, t.b]; // Array
+               },
+               toRgba: function(){
+                       // summary:
+                       //              Returns a 4 component array of rgba values from the color
+                       //              represented by this object.
+                       var t = this;
+                       return [t.r, t.g, t.b, t.a];    // Array
+               },
+               toHex: function(){
+                       // summary:
+                       //              Returns a CSS color string in hexadecimal representation
+                       // example:
+                       //      |       console.log(new dojo.Color([0,0,0]).toHex()); // #000000
+                       var arr = d.map(["r", "g", "b"], function(x){
+                               var s = this[x].toString(16);
+                               return s.length < 2 ? "0" + s : s;
+                       }, this);
+                       return "#" + arr.join("");      // String
+               },
+               toCss: function(/*Boolean?*/ includeAlpha){
+                       // summary:
+                       //              Returns a css color string in rgb(a) representation
+                       // example:
+                       //      |       var c = new dojo.Color("#FFF").toCss();
+                       //      |       console.log(c); // rgb('255','255','255')
+                       var t = this, rgb = t.r + ", " + t.g + ", " + t.b;
+                       return (includeAlpha ? "rgba(" + rgb + ", " + t.a : "rgb(" + rgb) + ")";        // String
+               },
+               toString: function(){
+                       // summary:
+                       //              Returns a visual representation of the color
+                       return this.toCss(true); // String
+               }
+       });
+
+       dojo.blendColors = function(
+               /*dojo.Color*/ start,
+               /*dojo.Color*/ end,
+               /*Number*/ weight,
+               /*dojo.Color?*/ obj
+       ){
+               // summary:
+               //              Blend colors end and start with weight from 0 to 1, 0.5 being a 50/50 blend,
+               //              can reuse a previously allocated dojo.Color object for the result
+               var t = obj || new d.Color();
+               d.forEach(["r", "g", "b", "a"], function(x){
+                       t[x] = start[x] + (end[x] - start[x]) * weight;
+                       if(x != "a"){ t[x] = Math.round(t[x]); }
+               });
+               return t.sanitize();    // dojo.Color
+       };
+
+       dojo.colorFromRgb = function(/*String*/ color, /*dojo.Color?*/ obj){
+               // summary:
+               //              Returns a `dojo.Color` instance from a string of the form
+               //              "rgb(...)" or "rgba(...)". Optionally accepts a `dojo.Color`
+               //              object to update with the parsed value and return instead of
+               //              creating a new object.
+               // returns:
+               //              A dojo.Color object. If obj is passed, it will be the return value.
+               var m = color.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);
+               return m && dojo.colorFromArray(m[1].split(/\s*,\s*/), obj);    // dojo.Color
+       };
+
+       dojo.colorFromHex = function(/*String*/ color, /*dojo.Color?*/ obj){
+               // summary:
+               //              Converts a hex string with a '#' prefix to a color object.
+               //              Supports 12-bit #rgb shorthand. Optionally accepts a
+               //              `dojo.Color` object to update with the parsed value.
+               //
+               // returns:
+               //              A dojo.Color object. If obj is passed, it will be the return value.
+               //
+               // example:
+               //       | var thing = dojo.colorFromHex("#ededed"); // grey, longhand
+               //
+               // example:
+               //      | var thing = dojo.colorFromHex("#000"); // black, shorthand
+               var t = obj || new d.Color(),
+                       bits = (color.length == 4) ? 4 : 8,
+                       mask = (1 << bits) - 1;
+               color = Number("0x" + color.substr(1));
+               if(isNaN(color)){
+                       return null; // dojo.Color
+               }
+               d.forEach(["b", "g", "r"], function(x){
+                       var c = color & mask;
+                       color >>= bits;
+                       t[x] = bits == 4 ? 17 * c : c;
+               });
+               t.a = 1;
+               return t;       // dojo.Color
+       };
+
+       dojo.colorFromArray = function(/*Array*/ a, /*dojo.Color?*/ obj){
+               // summary:
+               //              Builds a `dojo.Color` from a 3 or 4 element array, mapping each
+               //              element in sequence to the rgb(a) values of the color.
+               // example:
+               //              | var myColor = dojo.colorFromArray([237,237,237,0.5]); // grey, 50% alpha 
+               // returns:
+               //              A dojo.Color object. If obj is passed, it will be the return value.
+               var t = obj || new d.Color();
+               t._set(Number(a[0]), Number(a[1]), Number(a[2]), Number(a[3]));
+               if(isNaN(t.a)){ t.a = 1; }
+               return t.sanitize();    // dojo.Color
+       };
+
+       dojo.colorFromString = function(/*String*/ str, /*dojo.Color?*/ obj){
+               // summary:
+               //              Parses `str` for a color value. Accepts hex, rgb, and rgba
+               //              style color values.
+               // description:
+               //              Acceptable input values for str may include arrays of any form
+               //              accepted by dojo.colorFromArray, hex strings such as "#aaaaaa", or
+               //              rgb or rgba strings such as "rgb(133, 200, 16)" or "rgba(10, 10,
+               //              10, 50)"
+               // returns:
+               //              A dojo.Color object. If obj is passed, it will be the return value.
+               var a = d.Color.named[str];
+               return a && d.colorFromArray(a, obj) || d.colorFromRgb(str, obj) || d.colorFromHex(str, obj);
+       };
+})();
+
+}
+
+if(!dojo._hasResource["dojo._base"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base"] = true;
+dojo.provide("dojo._base");
+
+
+
+
+
+
+
+
+
+}
+
+if(!dojo._hasResource["dojo._base.window"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.window"] = true;
+dojo.provide("dojo._base.window");
+
+/*=====
+dojo.doc = {
+       // summary:
+       //              Alias for the current document. 'dojo.doc' can be modified
+       //              for temporary context shifting. Also see dojo.withDoc().
+       // description:
+       //    Refer to dojo.doc rather
+       //    than referring to 'window.document' to ensure your code runs
+       //    correctly in managed contexts.
+       // example:
+       //      |       n.appendChild(dojo.doc.createElement('div'));
+}
+=====*/
+dojo.doc = window["document"] || null;
+
+dojo.body = function(){
+       // summary:
+       //              Return the body element of the document
+       //              return the body object associated with dojo.doc
+       // example:
+       //      |       dojo.body().appendChild(dojo.doc.createElement('div'));
+
+       // Note: document.body is not defined for a strict xhtml document
+       // Would like to memoize this, but dojo.doc can change vi dojo.withDoc().
+       return dojo.doc.body || dojo.doc.getElementsByTagName("body")[0]; // Node
+}
+
+dojo.setContext = function(/*Object*/globalObject, /*DocumentElement*/globalDocument){
+       // summary:
+       //              changes the behavior of many core Dojo functions that deal with
+       //              namespace and DOM lookup, changing them to work in a new global
+       //              context (e.g., an iframe). The varibles dojo.global and dojo.doc
+       //              are modified as a result of calling this function and the result of
+       //              `dojo.body()` likewise differs.
+       dojo.global = globalObject;
+       dojo.doc = globalDocument;
+};
+
+dojo.withGlobal = function(    /*Object*/globalObject, 
+                                                       /*Function*/callback, 
+                                                       /*Object?*/thisObject, 
+                                                       /*Array?*/cbArguments){
+       // summary:
+       //              Invoke callback with globalObject as dojo.global and
+       //              globalObject.document as dojo.doc.
+       // description:
+       //              Invoke callback with globalObject as dojo.global and
+       //              globalObject.document as dojo.doc. If provided, globalObject
+       //              will be executed in the context of object thisObject
+       //              When callback() returns or throws an error, the dojo.global
+       //              and dojo.doc will be restored to its previous state.
+
+       var oldGlob = dojo.global;
+       try{
+               dojo.global = globalObject;
+               return dojo.withDoc.call(null, globalObject.document, callback, thisObject, cbArguments);
+       }finally{
+               dojo.global = oldGlob;
+       }
+}
+
+dojo.withDoc = function(       /*DocumentElement*/documentObject, 
+                                                       /*Function*/callback, 
+                                                       /*Object?*/thisObject, 
+                                                       /*Array?*/cbArguments){
+       // summary:
+       //              Invoke callback with documentObject as dojo.doc.
+       // description:
+       //              Invoke callback with documentObject as dojo.doc. If provided,
+       //              callback will be executed in the context of object thisObject
+       //              When callback() returns or throws an error, the dojo.doc will
+       //              be restored to its previous state.
+
+       var oldDoc = dojo.doc,
+               oldLtr = dojo._bodyLtr,
+               oldQ = dojo.isQuirks;
+
+       try{
+               dojo.doc = documentObject;
+               delete dojo._bodyLtr; // uncache
+               dojo.isQuirks = dojo.doc.compatMode == "BackCompat"; // no need to check for QuirksMode which was Opera 7 only
+
+               if(thisObject && typeof callback == "string"){
+                       callback = thisObject[callback];
+               }
+
+               return callback.apply(thisObject, cbArguments || []);
+       }finally{
+               dojo.doc = oldDoc;
+               delete dojo._bodyLtr; // in case it was undefined originally, and set to true/false by the alternate document
+               if(oldLtr !== undefined){ dojo._bodyLtr = oldLtr; }
+               dojo.isQuirks = oldQ;
+       }
+};
+       
+
+}
+
+if(!dojo._hasResource["dojo._base.event"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.event"] = true;
+dojo.provide("dojo._base.event");
+
+
+// this file courtesy of the TurboAjax Group, licensed under a Dojo CLA
+
+(function(){
+       // DOM event listener machinery
+       var del = (dojo._event_listener = {
+               add: function(/*DOMNode*/ node, /*String*/ name, /*Function*/ fp){
+                       if(!node){return;} 
+                       name = del._normalizeEventName(name);
+                       fp = del._fixCallback(name, fp);
+                       var oname = name;
+                       if(
+                                                               !dojo.isIE && 
+                                                               (name == "mouseenter" || name == "mouseleave")
+                       ){
+                               var ofp = fp;
+                               //oname = name;
+                               name = (name == "mouseenter") ? "mouseover" : "mouseout";
+                               fp = function(e){
+                                       if(!dojo.isDescendant(e.relatedTarget, node)){
+                                               // e.type = oname; // FIXME: doesn't take? SJM: event.type is generally immutable.
+                                               return ofp.call(this, e); 
+                                       }
+                               }
+                       }
+                       node.addEventListener(name, fp, false);
+                       return fp; /*Handle*/
+               },
+               remove: function(/*DOMNode*/ node, /*String*/ event, /*Handle*/ handle){
+                       // summary:
+                       //              clobbers the listener from the node
+                       // node:
+                       //              DOM node to attach the event to
+                       // event:
+                       //              the name of the handler to remove the function from
+                       // handle:
+                       //              the handle returned from add
+                       if(node){
+                               event = del._normalizeEventName(event);
+                               if(!dojo.isIE && (event == "mouseenter" || event == "mouseleave")){
+                                       event = (event == "mouseenter") ? "mouseover" : "mouseout";
+                               }
+
+                               node.removeEventListener(event, handle, false);
+                       }
+               },
+               _normalizeEventName: function(/*String*/ name){
+                       // Generally, name should be lower case, unless it is special
+                       // somehow (e.g. a Mozilla DOM event).
+                       // Remove 'on'.
+                       return name.slice(0,2) =="on" ? name.slice(2) : name;
+               },
+               _fixCallback: function(/*String*/ name, fp){
+                       // By default, we only invoke _fixEvent for 'keypress'
+                       // If code is added to _fixEvent for other events, we have
+                       // to revisit this optimization.
+                       // This also applies to _fixEvent overrides for Safari and Opera
+                       // below.
+                       return name != "keypress" ? fp : function(e){ return fp.call(this, del._fixEvent(e, this)); };
+               },
+               _fixEvent: function(evt, sender){
+                       // _fixCallback only attaches us to keypress.
+                       // Switch on evt.type anyway because we might 
+                       // be called directly from dojo.fixEvent.
+                       switch(evt.type){
+                               case "keypress":
+                                       del._setKeyChar(evt);
+                                       break;
+                       }
+                       return evt;
+               },
+               _setKeyChar: function(evt){
+                       evt.keyChar = evt.charCode ? String.fromCharCode(evt.charCode) : '';
+                       evt.charOrCode = evt.keyChar || evt.keyCode;
+               },
+               // For IE and Safari: some ctrl-key combinations (mostly w/punctuation) do not emit a char code in IE
+               // we map those virtual key codes to ascii here
+               // not valid for all (non-US) keyboards, so maybe we shouldn't bother
+               _punctMap: { 
+                       106:42, 
+                       111:47, 
+                       186:59, 
+                       187:43, 
+                       188:44, 
+                       189:45, 
+                       190:46, 
+                       191:47, 
+                       192:96, 
+                       219:91, 
+                       220:92, 
+                       221:93, 
+                       222:39 
+               }
+       });
+
+       // DOM events
+       
+       dojo.fixEvent = function(/*Event*/ evt, /*DOMNode*/ sender){
+               // summary:
+               //              normalizes properties on the event object including event
+               //              bubbling methods, keystroke normalization, and x/y positions
+               // evt: Event
+               //              native event object
+               // sender: DOMNode
+               //              node to treat as "currentTarget"
+               return del._fixEvent(evt, sender);
+       }
+
+       dojo.stopEvent = function(/*Event*/ evt){
+               // summary:
+               //              prevents propagation and clobbers the default action of the
+               //              passed event
+               // evt: Event
+               //              The event object. If omitted, window.event is used on IE.
+               evt.preventDefault();
+               evt.stopPropagation();
+               // NOTE: below, this method is overridden for IE
+       }
+
+       // the default listener to use on dontFix nodes, overriden for IE
+       var node_listener = dojo._listener;
+       
+       // Unify connect and event listeners
+       dojo._connect = function(obj, event, context, method, dontFix){
+               // FIXME: need a more strict test
+               var isNode = obj && (obj.nodeType||obj.attachEvent||obj.addEventListener);
+               // choose one of three listener options: raw (connect.js), DOM event on a Node, custom event on a Node
+               // we need the third option to provide leak prevention on broken browsers (IE)
+               var lid = isNode ? (dontFix ? 2 : 1) : 0, l = [dojo._listener, del, node_listener][lid];
+               // create a listener
+               var h = l.add(obj, event, dojo.hitch(context, method));
+               // formerly, the disconnect package contained "l" directly, but if client code
+               // leaks the disconnect package (by connecting it to a node), referencing "l" 
+               // compounds the problem.
+               // instead we return a listener id, which requires custom _disconnect below.
+               // return disconnect package
+               return [ obj, event, h, lid ];
+       }
+
+       dojo._disconnect = function(obj, event, handle, listener){
+               ([dojo._listener, del, node_listener][listener]).remove(obj, event, handle);
+       }
+
+       // Constants
+
+       // Public: client code should test
+       // keyCode against these named constants, as the
+       // actual codes can vary by browser.
+       dojo.keys = {
+               // summary:
+               //              Definitions for common key values
+               BACKSPACE: 8,
+               TAB: 9,
+               CLEAR: 12,
+               ENTER: 13,
+               SHIFT: 16,
+               CTRL: 17,
+               ALT: 18,
+               META: dojo.isSafari ? 91 : 224,         // the apple key on macs
+               PAUSE: 19,
+               CAPS_LOCK: 20,
+               ESCAPE: 27,
+               SPACE: 32,
+               PAGE_UP: 33,
+               PAGE_DOWN: 34,
+               END: 35,
+               HOME: 36,
+               LEFT_ARROW: 37,
+               UP_ARROW: 38,
+               RIGHT_ARROW: 39,
+               DOWN_ARROW: 40,
+               INSERT: 45,
+               DELETE: 46,
+               HELP: 47,
+               LEFT_WINDOW: 91,
+               RIGHT_WINDOW: 92,
+               SELECT: 93,
+               NUMPAD_0: 96,
+               NUMPAD_1: 97,
+               NUMPAD_2: 98,
+               NUMPAD_3: 99,
+               NUMPAD_4: 100,
+               NUMPAD_5: 101,
+               NUMPAD_6: 102,
+               NUMPAD_7: 103,
+               NUMPAD_8: 104,
+               NUMPAD_9: 105,
+               NUMPAD_MULTIPLY: 106,
+               NUMPAD_PLUS: 107,
+               NUMPAD_ENTER: 108,
+               NUMPAD_MINUS: 109,
+               NUMPAD_PERIOD: 110,
+               NUMPAD_DIVIDE: 111,
+               F1: 112,
+               F2: 113,
+               F3: 114,
+               F4: 115,
+               F5: 116,
+               F6: 117,
+               F7: 118,
+               F8: 119,
+               F9: 120,
+               F10: 121,
+               F11: 122,
+               F12: 123,
+               F13: 124,
+               F14: 125,
+               F15: 126,
+               NUM_LOCK: 144,
+               SCROLL_LOCK: 145,
+               // virtual key mapping
+               copyKey: dojo.isMac && !dojo.isAIR ? (dojo.isSafari ? 91 : 224 ) : 17
+       };
+       
+       var evtCopyKey = dojo.isMac ? "metaKey" : "ctrlKey";
+       
+       dojo.isCopyKey = function(e){
+               // summary:
+               //              Checks an event for the copy key (meta on Mac, and ctrl anywhere else)
+               // e: Event
+               //              Event object to examine
+               return e[evtCopyKey];   // Boolean
+       };
+
+       // Public: decoding mouse buttons from events
+
+/*=====
+       dojo.mouseButtons = {
+               // LEFT: Number
+               //              Numeric value of the left mouse button for the platform.
+               LEFT:   0,
+               // MIDDLE: Number
+               //              Numeric value of the middle mouse button for the platform.
+               MIDDLE: 1,
+               // RIGHT: Number
+               //              Numeric value of the right mouse button for the platform.
+               RIGHT:  2,
+       
+               isButton: function(e, button){
+                       // summary:
+                       //              Checks an event object for a pressed button
+                       // e: Event
+                       //              Event object to examine
+                       // button: Number
+                       //              The button value (example: dojo.mouseButton.LEFT)
+                       return e.button == button; // Boolean
+               },
+               isLeft: function(e){
+                       // summary:
+                       //              Checks an event object for the pressed left button
+                       // e: Event
+                       //              Event object to examine
+                       return e.button == 0; // Boolean
+               },
+               isMiddle: function(e){
+                       // summary:
+                       //              Checks an event object for the pressed middle button
+                       // e: Event
+                       //              Event object to examine
+                       return e.button == 1; // Boolean
+               },
+               isRight: function(e){
+                       // summary:
+                       //              Checks an event object for the pressed right button
+                       // e: Event
+                       //              Event object to examine
+                       return e.button == 2; // Boolean
+               }
+       };
+=====*/
+
+               if(dojo.isIE){
+               dojo.mouseButtons = {
+                       LEFT:   1,
+                       MIDDLE: 4,
+                       RIGHT:  2,
+                       // helper functions
+                       isButton: function(e, button){ return e.button & button; },
+                       isLeft:   function(e){ return e.button & 1; },
+                       isMiddle: function(e){ return e.button & 4; },
+                       isRight:  function(e){ return e.button & 2; }
+               };
+       }else{
+                       dojo.mouseButtons = {
+                       LEFT:   0,
+                       MIDDLE: 1,
+                       RIGHT:  2,
+                       // helper functions
+                       isButton: function(e, button){ return e.button == button; },
+                       isLeft:   function(e){ return e.button == 0; },
+                       isMiddle: function(e){ return e.button == 1; },
+                       isRight:  function(e){ return e.button == 2; }
+               };
+               }
+       
+               // IE event normalization
+       if(dojo.isIE){ 
+               var _trySetKeyCode = function(e, code){
+                       try{
+                               // squelch errors when keyCode is read-only
+                               // (e.g. if keyCode is ctrl or shift)
+                               return (e.keyCode = code);
+                       }catch(e){
+                               return 0;
+                       }
+               }
+
+               // by default, use the standard listener
+               var iel = dojo._listener;
+               var listenersName = (dojo._ieListenersName = "_" + dojo._scopeName + "_listeners");
+               // dispatcher tracking property
+               if(!dojo.config._allow_leaks){
+                       // custom listener that handles leak protection for DOM events
+                       node_listener = iel = dojo._ie_listener = {
+                               // support handler indirection: event handler functions are 
+                               // referenced here. Event dispatchers hold only indices.
+                               handlers: [],
+                               // add a listener to an object
+                               add: function(/*Object*/ source, /*String*/ method, /*Function*/ listener){
+                                       source = source || dojo.global;
+                                       var f = source[method];
+                                       if(!f||!f[listenersName]){
+                                               var d = dojo._getIeDispatcher();
+                                               // original target function is special
+                                               d.target = f && (ieh.push(f) - 1);
+                                               // dispatcher holds a list of indices into handlers table
+                                               d[listenersName] = [];
+                                               // redirect source to dispatcher
+                                               f = source[method] = d;
+                                       }
+                                       return f[listenersName].push(ieh.push(listener) - 1) ; /*Handle*/
+                               },
+                               // remove a listener from an object
+                               remove: function(/*Object*/ source, /*String*/ method, /*Handle*/ handle){
+                                       var f = (source||dojo.global)[method], l = f && f[listenersName];
+                                       if(f && l && handle--){
+                                               delete ieh[l[handle]];
+                                               delete l[handle];
+                                       }
+                               }
+                       };
+                       // alias used above
+                       var ieh = iel.handlers;
+               }
+
+               dojo.mixin(del, {
+                       add: function(/*DOMNode*/ node, /*String*/ event, /*Function*/ fp){
+                               if(!node){return;} // undefined
+                               event = del._normalizeEventName(event);
+                               if(event=="onkeypress"){
+                                       // we need to listen to onkeydown to synthesize
+                                       // keypress events that otherwise won't fire
+                                       // on IE
+                                       var kd = node.onkeydown;
+                                       if(!kd || !kd[listenersName] || !kd._stealthKeydownHandle){
+                                               var h = del.add(node, "onkeydown", del._stealthKeyDown);
+                                               kd = node.onkeydown;
+                                               kd._stealthKeydownHandle = h;
+                                               kd._stealthKeydownRefs = 1;
+                                       }else{
+                                               kd._stealthKeydownRefs++;
+                                       }
+                               }
+                               return iel.add(node, event, del._fixCallback(fp));
+                       },
+                       remove: function(/*DOMNode*/ node, /*String*/ event, /*Handle*/ handle){
+                               event = del._normalizeEventName(event);
+                               iel.remove(node, event, handle); 
+                               if(event=="onkeypress"){
+                                       var kd = node.onkeydown;
+                                       if(--kd._stealthKeydownRefs <= 0){
+                                               iel.remove(node, "onkeydown", kd._stealthKeydownHandle);
+                                               delete kd._stealthKeydownHandle;
+                                       }
+                               }
+                       },
+                       _normalizeEventName: function(/*String*/ eventName){
+                               // Generally, eventName should be lower case, unless it is
+                               // special somehow (e.g. a Mozilla event)
+                               // ensure 'on'
+                               return eventName.slice(0,2) != "on" ? "on" + eventName : eventName;
+                       },
+                       _nop: function(){},
+                       _fixEvent: function(/*Event*/ evt, /*DOMNode*/ sender){
+                               // summary:
+                               //              normalizes properties on the event object including event
+                               //              bubbling methods, keystroke normalization, and x/y positions
+                               // evt:
+                               //              native event object
+                               // sender:
+                               //              node to treat as "currentTarget"
+                               if(!evt){
+                                       var w = sender && (sender.ownerDocument || sender.document || sender).parentWindow || window;
+                                       evt = w.event; 
+                               }
+                               if(!evt){return(evt);}
+                               evt.target = evt.srcElement; 
+                               evt.currentTarget = (sender || evt.srcElement); 
+                               evt.layerX = evt.offsetX;
+                               evt.layerY = evt.offsetY;
+                               // FIXME: scroll position query is duped from dojo.html to
+                               // avoid dependency on that entire module. Now that HTML is in
+                               // Base, we should convert back to something similar there.
+                               var se = evt.srcElement, doc = (se && se.ownerDocument) || document;
+                               // DO NOT replace the following to use dojo.body(), in IE, document.documentElement should be used
+                               // here rather than document.body
+                               var docBody = ((dojo.isIE < 6) || (doc["compatMode"] == "BackCompat")) ? doc.body : doc.documentElement;
+                               var offset = dojo._getIeDocumentElementOffset();
+                               evt.pageX = evt.clientX + dojo._fixIeBiDiScrollLeft(docBody.scrollLeft || 0) - offset.x;
+                               evt.pageY = evt.clientY + (docBody.scrollTop || 0) - offset.y;
+                               if(evt.type == "mouseover"){ 
+                                       evt.relatedTarget = evt.fromElement;
+                               }
+                               if(evt.type == "mouseout"){ 
+                                       evt.relatedTarget = evt.toElement;
+                               }
+                               evt.stopPropagation = del._stopPropagation;
+                               evt.preventDefault = del._preventDefault;
+                               return del._fixKeys(evt);
+                       },
+                       _fixKeys: function(evt){
+                               switch(evt.type){
+                                       case "keypress":
+                                               var c = ("charCode" in evt ? evt.charCode : evt.keyCode);
+                                               if (c==10){
+                                                       // CTRL-ENTER is CTRL-ASCII(10) on IE, but CTRL-ENTER on Mozilla
+                                                       c=0;
+                                                       evt.keyCode = 13;
+                                               }else if(c==13||c==27){
+                                                       c=0; // Mozilla considers ENTER and ESC non-printable
+                                               }else if(c==3){
+                                                       c=99; // Mozilla maps CTRL-BREAK to CTRL-c
+                                               }
+                                               // Mozilla sets keyCode to 0 when there is a charCode
+                                               // but that stops the event on IE.
+                                               evt.charCode = c;
+                                               del._setKeyChar(evt);
+                                               break;
+                               }
+                               return evt;
+                       },
+                       _stealthKeyDown: function(evt){
+                               // IE doesn't fire keypress for most non-printable characters.
+                               // other browsers do, we simulate it here.
+                               var kp = evt.currentTarget.onkeypress;
+                               // only works if kp exists and is a dispatcher
+                               if(!kp || !kp[listenersName]){ return; }
+                               // munge key/charCode
+                               var k=evt.keyCode;
+                               // These are Windows Virtual Key Codes
+                               // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp
+                               var unprintable = k!=13 && k!=32 && k!=27 && (k<48||k>90) && (k<96||k>111) && (k<186||k>192) && (k<219||k>222);
+                               // synthesize keypress for most unprintables and CTRL-keys
+                               if(unprintable||evt.ctrlKey){
+                                       var c = unprintable ? 0 : k;
+                                       if(evt.ctrlKey){
+                                               if(k==3 || k==13){
+                                                       return; // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively 
+                                               }else if(c>95 && c<106){ 
+                                                       c -= 48; // map CTRL-[numpad 0-9] to ASCII
+                                               }else if((!evt.shiftKey)&&(c>=65&&c<=90)){ 
+                                                       c += 32; // map CTRL-[A-Z] to lowercase
+                                               }else{ 
+                                                       c = del._punctMap[c] || c; // map other problematic CTRL combinations to ASCII
+                                               }
+                                       }
+                                       // simulate a keypress event
+                                       var faux = del._synthesizeEvent(evt, {type: 'keypress', faux: true, charCode: c});
+                                       kp.call(evt.currentTarget, faux);
+                                       evt.cancelBubble = faux.cancelBubble;
+                                       evt.returnValue = faux.returnValue;
+                                       _trySetKeyCode(evt, faux.keyCode);
+                               }
+                       },
+                       // Called in Event scope
+                       _stopPropagation: function(){
+                               this.cancelBubble = true; 
+                       },
+                       _preventDefault: function(){
+                               // Setting keyCode to 0 is the only way to prevent certain keypresses (namely
+                               // ctrl-combinations that correspond to menu accelerator keys).
+                               // Otoh, it prevents upstream listeners from getting this information
+                               // Try to split the difference here by clobbering keyCode only for ctrl 
+                               // combinations. If you still need to access the key upstream, bubbledKeyCode is
+                               // provided as a workaround.
+                               this.bubbledKeyCode = this.keyCode;
+                               if(this.ctrlKey){_trySetKeyCode(this, 0);}
+                               this.returnValue = false;
+                       }
+               });
+                               
+               // override stopEvent for IE
+               dojo.stopEvent = function(evt){
+                       evt = evt || window.event;
+                       del._stopPropagation.call(evt);
+                       del._preventDefault.call(evt);
+               }
+       }
+       
+       del._synthesizeEvent = function(evt, props){
+                       var faux = dojo.mixin({}, evt, props);
+                       del._setKeyChar(faux);
+                       // FIXME: would prefer to use dojo.hitch: dojo.hitch(evt, evt.preventDefault); 
+                       // but it throws an error when preventDefault is invoked on Safari
+                       // does Event.preventDefault not support "apply" on Safari?
+                       faux.preventDefault = function(){ evt.preventDefault(); }; 
+                       faux.stopPropagation = function(){ evt.stopPropagation(); }; 
+                       return faux;
+       }
+       
+               // Opera event normalization
+       if(dojo.isOpera){
+               dojo.mixin(del, {
+                       _fixEvent: function(evt, sender){
+                               switch(evt.type){
+                                       case "keypress":
+                                               var c = evt.which;
+                                               if(c==3){
+                                                       c=99; // Mozilla maps CTRL-BREAK to CTRL-c
+                                               }
+                                               // can't trap some keys at all, like INSERT and DELETE
+                                               // there is no differentiating info between DELETE and ".", or INSERT and "-"
+                                               c = c<41 && !evt.shiftKey ? 0 : c;
+                                               if(evt.ctrlKey && !evt.shiftKey && c>=65 && c<=90){
+                                                       // lowercase CTRL-[A-Z] keys
+                                                       c += 32;
+                                               }
+                                               return del._synthesizeEvent(evt, { charCode: c });
+                               }
+                               return evt;
+                       }
+               });
+       }
+       
+               // Webkit event normalization
+       if(dojo.isWebKit){
+                               del._add = del.add;
+               del._remove = del.remove;
+
+               dojo.mixin(del, {
+                       add: function(/*DOMNode*/ node, /*String*/ event, /*Function*/ fp){
+                               if(!node){return;} // undefined
+                               var handle = del._add(node, event, fp);
+                               if(del._normalizeEventName(event) == "keypress"){
+                                       // we need to listen to onkeydown to synthesize
+                                       // keypress events that otherwise won't fire
+                                       // in Safari 3.1+: https://lists.webkit.org/pipermail/webkit-dev/2007-December/002992.html
+                                       handle._stealthKeyDownHandle = del._add(node, "keydown", function(evt){
+                                               //A variation on the IE _stealthKeydown function
+                                               //Synthesize an onkeypress event, but only for unprintable characters.
+                                               var k=evt.keyCode;
+                                               // These are Windows Virtual Key Codes
+                                               // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp
+                                               var unprintable = k!=13 && k!=32 && (k<48 || k>90) && (k<96 || k>111) && (k<186 || k>192) && (k<219 || k>222);
+                                               // synthesize keypress for most unprintables and CTRL-keys
+                                               if(unprintable || evt.ctrlKey){
+                                                       var c = unprintable ? 0 : k;
+                                                       if(evt.ctrlKey){
+                                                               if(k==3 || k==13){
+                                                                       return; // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively 
+                                                               }else if(c>95 && c<106){ 
+                                                                       c -= 48; // map CTRL-[numpad 0-9] to ASCII
+                                                               }else if(!evt.shiftKey && c>=65 && c<=90){ 
+                                                                       c += 32; // map CTRL-[A-Z] to lowercase
+                                                               }else{ 
+                                                                       c = del._punctMap[c] || c; // map other problematic CTRL combinations to ASCII
+                                                               }
+                                                       }
+                                                       // simulate a keypress event
+                                                       var faux = del._synthesizeEvent(evt, {type: 'keypress', faux: true, charCode: c});
+                                                       fp.call(evt.currentTarget, faux);
+                                               }
+                                       });
+                               }
+                               return handle; /*Handle*/
+                       },
+
+                       remove: function(/*DOMNode*/ node, /*String*/ event, /*Handle*/ handle){
+                               if(node){
+                                       if(handle._stealthKeyDownHandle){
+                                               del._remove(node, "keydown", handle._stealthKeyDownHandle);
+                                       }
+                                       del._remove(node, event, handle);
+                               }
+                       },
+                       _fixEvent: function(evt, sender){
+                               switch(evt.type){
+                                       case "keypress":
+                                               if(evt.faux){ return evt; }
+                                               var c = evt.charCode;
+                                               c = c>=32 ? c : 0;
+                                               return del._synthesizeEvent(evt, {charCode: c, faux: true});
+                               }
+                               return evt;
+                       }
+               });
+               }
+       })();
+
+if(dojo.isIE){
+       // keep this out of the closure
+       // closing over 'iel' or 'ieh' b0rks leak prevention
+       // ls[i] is an index into the master handler array
+       dojo._ieDispatcher = function(args, sender){
+               var ap = Array.prototype,
+                       h = dojo._ie_listener.handlers,
+                       c = args.callee,
+                       ls = c[dojo._ieListenersName],
+                       t = h[c.target];
+               // return value comes from original target function
+               var r = t && t.apply(sender, args);
+               // make local copy of listener array so it's immutable during processing
+               var lls = [].concat(ls);
+               // invoke listeners after target function
+               for(var i in lls){
+                       var f = h[lls[i]];
+                       if(!(i in ap) && f){
+                               f.apply(sender, args);
+                       }
+               }
+               return r;
+       }
+       dojo._getIeDispatcher = function(){
+               // ensure the returned function closes over nothing ("new Function" apparently doesn't close)
+               return new Function(dojo._scopeName + "._ieDispatcher(arguments, this)"); // function
+       }
+       // keep this out of the closure to reduce RAM allocation
+       dojo._event_listener._fixCallback = function(fp){
+               var f = dojo._event_listener._fixEvent;
+               return function(e){ return fp.call(this, f(e, this)); };
+       }
+}
+
+}
+
+if(!dojo._hasResource["dojo._base.html"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.html"] = true;
+
+dojo.provide("dojo._base.html");
+
+// FIXME: need to add unit tests for all the semi-public methods
+
+try{
+       document.execCommand("BackgroundImageCache", false, true);
+}catch(e){
+       // sane browsers don't have cache "issues"
+}
+
+// =============================
+// DOM Functions
+// =============================
+
+/*=====
+dojo.byId = function(id, doc){
+       //      summary:
+       //              Returns DOM node with matching `id` attribute or `null`
+       //              if not found. If `id` is a DomNode, this function is a no-op.
+       //
+       //      id: String|DOMNode
+       //              A string to match an HTML id attribute or a reference to a DOM Node
+       //
+       //      doc: Document?
+       //              Document to work in. Defaults to the current value of
+       //              dojo.doc.  Can be used to retrieve
+       //              node references from other documents.
+       //
+       //      example:
+       //      Look up a node by ID:
+       //      |       var n = dojo.byId("foo");
+       //
+       //      example:
+       //      Check if a node exists, and use it.
+       //      |       var n = dojo.byId("bar");
+       //      |       if(n){ doStuff() ... }
+       //
+       //      example:
+       //      Allow string or DomNode references to be passed to a custom function:
+       //      |       var foo = function(nodeOrId){
+       //      |               nodeOrId = dojo.byId(nodeOrId);
+       //      |               // ... more stuff
+       //      |       }
+=====*/
+
+if(dojo.isIE || dojo.isOpera){
+       dojo.byId = function(id, doc){
+               if(typeof id != "string"){
+                       return id;
+               }
+               var _d = doc || dojo.doc, te = _d.getElementById(id);
+               // attributes.id.value is better than just id in case the 
+               // user has a name=id inside a form
+               if(te && (te.attributes.id.value == id || te.id == id)){
+                       return te;
+               }else{
+                       var eles = _d.all[id];
+                       if(!eles || eles.nodeName){
+                               eles = [eles];
+                       }
+                       // if more than 1, choose first with the correct id
+                       var i=0;
+                       while((te=eles[i++])){
+                               if((te.attributes && te.attributes.id && te.attributes.id.value == id)
+                                       || te.id == id){
+                                       return te;
+                               }
+                       }
+               }
+       };
+}else{
+       dojo.byId = function(id, doc){
+               // inline'd type check
+               return (typeof id == "string") ? (doc || dojo.doc).getElementById(id) : id; // DomNode
+       };
+}
+/*=====
+};
+=====*/
+
+(function(){
+       var d = dojo;
+       var byId = d.byId;
+
+       var _destroyContainer = null,
+               _destroyDoc;
+               d.addOnWindowUnload(function(){
+               _destroyContainer = null; //prevent IE leak
+       });
+       
+/*=====
+       dojo._destroyElement = function(node){
+               // summary:
+               //              Existing alias for `dojo.destroy`. Deprecated, will be removed
+               //              in 2.0
+       }
+=====*/
+       dojo._destroyElement = dojo.destroy = function(/*String|DomNode*/node){
+               //      summary:
+               //              Removes a node from its parent, clobbering it and all of its
+               //              children.
+               //
+               //      description:
+               //              Removes a node from its parent, clobbering it and all of its
+               //              children. Function only works with DomNodes, and returns nothing.
+               //
+               //      node:
+               //              A String ID or DomNode reference of the element to be destroyed
+               //
+               //      example:
+               //      Destroy a node byId:
+               //      |       dojo.destroy("someId");
+               //
+               //      example:
+               //      Destroy all nodes in a list by reference:
+               //      |       dojo.query(".someNode").forEach(dojo.destroy);
+
+               node = byId(node);
+               try{
+                       var doc = node.ownerDocument;
+                       // cannot use _destroyContainer.ownerDocument since this can throw an exception on IE
+                       if(!_destroyContainer || _destroyDoc != doc){
+                               _destroyContainer = doc.createElement("div");
+                               _destroyDoc = doc;
+                       }
+                       _destroyContainer.appendChild(node.parentNode ? node.parentNode.removeChild(node) : node);
+                       // NOTE: see http://trac.dojotoolkit.org/ticket/2931. This may be a bug and not a feature
+                       _destroyContainer.innerHTML = "";
+               }catch(e){
+                       /* squelch */
+               }
+       };
+
+       dojo.isDescendant = function(/*DomNode|String*/node, /*DomNode|String*/ancestor){
+               //      summary:
+               //              Returns true if node is a descendant of ancestor
+               //      node: string id or node reference to test
+               //      ancestor: string id or node reference of potential parent to test against
+               //
+               // example:
+               //      Test is node id="bar" is a descendant of node id="foo"
+               //      |       if(dojo.isDescendant("bar", "foo")){ ... }
+               try{
+                       node = byId(node);
+                       ancestor = byId(ancestor);
+                       while(node){
+                               if(node == ancestor){
+                                       return true; // Boolean
+                               }
+                               node = node.parentNode;
+                       }
+               }catch(e){ /* squelch, return false */ }
+               return false; // Boolean
+       };
+
+       dojo.setSelectable = function(/*DomNode|String*/node, /*Boolean*/selectable){
+               //      summary: 
+               //              Enable or disable selection on a node
+               //      node:
+               //              id or reference to node
+               //      selectable:
+               //              state to put the node in. false indicates unselectable, true 
+               //              allows selection.
+               //      example:
+               //      Make the node id="bar" unselectable
+               //      |       dojo.setSelectable("bar"); 
+               //      example:
+               //      Make the node id="bar" selectable
+               //      |       dojo.setSelectable("bar", true);
+               node = byId(node);
+                               if(d.isMozilla){
+                       node.style.MozUserSelect = selectable ? "" : "none";
+               }else if(d.isKhtml || d.isWebKit){
+                                       node.style.KhtmlUserSelect = selectable ? "auto" : "none";
+                               }else if(d.isIE){
+                       var v = (node.unselectable = selectable ? "" : "on");
+                       d.query("*", node).forEach("item.unselectable = '"+v+"'");
+               }
+                               //FIXME: else?  Opera?
+       };
+
+       var _insertBefore = function(/*DomNode*/node, /*DomNode*/ref){
+               var parent = ref.parentNode;
+               if(parent){
+                       parent.insertBefore(node, ref);
+               }
+       };
+
+       var _insertAfter = function(/*DomNode*/node, /*DomNode*/ref){
+               //      summary:
+               //              Try to insert node after ref
+               var parent = ref.parentNode;
+               if(parent){
+                       if(parent.lastChild == ref){
+                               parent.appendChild(node);
+                       }else{
+                               parent.insertBefore(node, ref.nextSibling);
+                       }
+               }
+       };
+
+       dojo.place = function(node, refNode, position){
+               //      summary:
+               //              Attempt to insert node into the DOM, choosing from various positioning options.
+               //              Returns the first argument resolved to a DOM node.
+               //
+               //      node: String|DomNode
+               //              id or node reference, or HTML fragment starting with "<" to place relative to refNode
+               //
+               //      refNode: String|DomNode
+               //              id or node reference to use as basis for placement
+               //
+               //      position: String|Number?
+               //              string noting the position of node relative to refNode or a
+               //              number indicating the location in the childNodes collection of refNode.
+               //              Accepted string values are:
+               //      |       * before
+               //      |       * after
+               //      |       * replace
+               //      |       * only
+               //      |       * first
+               //      |       * last
+               //              "first" and "last" indicate positions as children of refNode, "replace" replaces refNode,
+               //              "only" replaces all children.  position defaults to "last" if not specified
+               //
+               //      returns: DomNode
+               //              Returned values is the first argument resolved to a DOM node.
+               //
+               //              .place() is also a method of `dojo.NodeList`, allowing `dojo.query` node lookups.
+               //
+               // example:
+               //              Place a node by string id as the last child of another node by string id:
+               //      |       dojo.place("someNode", "anotherNode");
+               //
+               // example:
+               //              Place a node by string id before another node by string id
+               //      |       dojo.place("someNode", "anotherNode", "before");
+               //
+               // example:
+               //              Create a Node, and place it in the body element (last child):
+               //      |       dojo.place("<div></div>", dojo.body());
+               //
+               // example:
+               //              Put a new LI as the first child of a list by id:
+               //      |       dojo.place("<li></li>", "someUl", "first");
+
+               refNode = byId(refNode);
+               if(typeof node == "string"){ // inline'd type check
+                       node = node.charAt(0) == "<" ? d._toDom(node, refNode.ownerDocument) : byId(node);
+               }
+               if(typeof position == "number"){ // inline'd type check
+                       var cn = refNode.childNodes;
+                       if(!cn.length || cn.length <= position){
+                               refNode.appendChild(node);
+                       }else{
+                               _insertBefore(node, cn[position < 0 ? 0 : position]);
+                       }
+               }else{
+                       switch(position){
+                               case "before":
+                                       _insertBefore(node, refNode);
+                                       break;
+                               case "after":
+                                       _insertAfter(node, refNode);
+                                       break;
+                               case "replace":
+                                       refNode.parentNode.replaceChild(node, refNode);
+                                       break;
+                               case "only":
+                                       d.empty(refNode);
+                                       refNode.appendChild(node);
+                                       break;
+                               case "first":
+                                       if(refNode.firstChild){
+                                               _insertBefore(node, refNode.firstChild);
+                                               break;
+                                       }
+                                       // else fallthrough...
+                               default: // aka: last
+                                       refNode.appendChild(node);
+                       }
+               }
+               return node; // DomNode
+       }
+
+       // Box functions will assume this model.
+       // On IE/Opera, BORDER_BOX will be set if the primary document is in quirks mode.
+       // Can be set to change behavior of box setters.
+
+       // can be either:
+       //      "border-box"
+       //      "content-box" (default)
+       dojo.boxModel = "content-box";
+
+       // We punt per-node box mode testing completely.
+       // If anybody cares, we can provide an additional (optional) unit 
+       // that overrides existing code to include per-node box sensitivity.
+
+       // Opera documentation claims that Opera 9 uses border-box in BackCompat mode.
+       // but experiments (Opera 9.10.8679 on Windows Vista) indicate that it actually continues to use content-box.
+       // IIRC, earlier versions of Opera did in fact use border-box.
+       // Opera guys, this is really confusing. Opera being broken in quirks mode is not our fault.
+
+               if(d.isIE /*|| dojo.isOpera*/){
+               // client code may have to adjust if compatMode varies across iframes
+               d.boxModel = document.compatMode == "BackCompat" ? "border-box" : "content-box";
+       }
+       
+       // =============================
+       // Style Functions
+       // =============================
+
+       // getComputedStyle drives most of the style code.
+       // Wherever possible, reuse the returned object.
+       //
+       // API functions below that need to access computed styles accept an 
+       // optional computedStyle parameter.
+       // If this parameter is omitted, the functions will call getComputedStyle themselves.
+       // This way, calling code can access computedStyle once, and then pass the reference to 
+       // multiple API functions.
+
+/*=====
+       dojo.getComputedStyle = function(node){
+               //      summary:
+               //              Returns a "computed style" object.
+               //
+               //      description:
+               //              Gets a "computed style" object which can be used to gather
+               //              information about the current state of the rendered node.
+               //
+               //              Note that this may behave differently on different browsers.
+               //              Values may have different formats and value encodings across
+               //              browsers.
+               //
+               //              Note also that this method is expensive.  Wherever possible,
+               //              reuse the returned object.
+               //
+               //              Use the dojo.style() method for more consistent (pixelized)
+               //              return values.
+               //
+               //      node: DOMNode
+               //              A reference to a DOM node. Does NOT support taking an
+               //              ID string for speed reasons.
+               //      example:
+               //      |       dojo.getComputedStyle(dojo.byId('foo')).borderWidth;
+               //
+               //      example:
+               //      Reusing the returned object, avoiding multiple lookups:
+               //      |       var cs = dojo.getComputedStyle(dojo.byId("someNode"));
+               //      |       var w = cs.width, h = cs.height;
+               return; // CSS2Properties
+       }
+=====*/
+
+       // Although we normally eschew argument validation at this
+       // level, here we test argument 'node' for (duck)type,
+       // by testing nodeType, ecause 'document' is the 'parentNode' of 'body'
+       // it is frequently sent to this function even 
+       // though it is not Element.
+       var gcs;
+               if(d.isWebKit){
+                       gcs = function(/*DomNode*/node){
+                       var s;
+                       if(node.nodeType == 1){
+                               var dv = node.ownerDocument.defaultView;
+                               s = dv.getComputedStyle(node, null);
+                               if(!s && node.style){
+                                       node.style.display = "";
+                                       s = dv.getComputedStyle(node, null);
+                               }
+                       }
+                       return s || {};
+               };
+               }else if(d.isIE){
+               gcs = function(node){
+                       // IE (as of 7) doesn't expose Element like sane browsers
+                       return node.nodeType == 1 /* ELEMENT_NODE*/ ? node.currentStyle : {};
+               };
+       }else{
+               gcs = function(node){
+                       return node.nodeType == 1 ?
+                               node.ownerDocument.defaultView.getComputedStyle(node, null) : {};
+               };
+       }
+               dojo.getComputedStyle = gcs;
+
+               if(!d.isIE){
+                       d._toPixelValue = function(element, value){
+                       // style values can be floats, client code may want
+                       // to round for integer pixels.
+                       return parseFloat(value) || 0;
+               };
+               }else{
+               d._toPixelValue = function(element, avalue){
+                       if(!avalue){ return 0; }
+                       // on IE7, medium is usually 4 pixels
+                       if(avalue == "medium"){ return 4; }
+                       // style values can be floats, client code may
+                       // want to round this value for integer pixels.
+                       if(avalue.slice && avalue.slice(-2) == 'px'){ return parseFloat(avalue); }
+                       with(element){
+                               var sLeft = style.left;
+                               var rsLeft = runtimeStyle.left;
+                               runtimeStyle.left = currentStyle.left;
+                               try{
+                                       // 'avalue' may be incompatible with style.left, which can cause IE to throw
+                                       // this has been observed for border widths using "thin", "medium", "thick" constants
+                                       // those particular constants could be trapped by a lookup
+                                       // but perhaps there are more
+                                       style.left = avalue;
+                                       avalue = style.pixelLeft;
+                               }catch(e){
+                                       avalue = 0;
+                               }
+                               style.left = sLeft;
+                               runtimeStyle.left = rsLeft;
+                       }
+                       return avalue;
+               }
+       }
+               var px = d._toPixelValue;
+
+       // FIXME: there opacity quirks on FF that we haven't ported over. Hrm.
+       /*=====
+       dojo._getOpacity = function(node){
+                       //      summary:
+                       //              Returns the current opacity of the passed node as a
+                       //              floating-point value between 0 and 1.
+                       //      node: DomNode
+                       //              a reference to a DOM node. Does NOT support taking an
+                       //              ID string for speed reasons.
+                       //      returns: Number between 0 and 1
+                       return; // Number
+       }
+       =====*/
+
+               var astr = "DXImageTransform.Microsoft.Alpha";
+       var af = function(n, f){
+               try{
+                       return n.filters.item(astr);
+               }catch(e){
+                       return f ? {} : null;
+               }
+       };
+
+               dojo._getOpacity =
+                       d.isIE ? function(node){
+                       try{
+                               return af(node).Opacity / 100; // Number
+                       }catch(e){
+                               return 1; // Number
+                       }
+               } :
+                       function(node){
+                       return gcs(node).opacity;
+               };
+
+       /*=====
+       dojo._setOpacity = function(node, opacity){
+                       //      summary:
+                       //              set the opacity of the passed node portably. Returns the
+                       //              new opacity of the node.
+                       //      node: DOMNode
+                       //              a reference to a DOM node. Does NOT support taking an
+                       //              ID string for performance reasons.
+                       //      opacity: Number
+                       //              A Number between 0 and 1. 0 specifies transparent.
+                       //      returns: Number between 0 and 1
+                       return; // Number
+       }
+       =====*/
+
+       dojo._setOpacity =
+                               d.isIE ? function(/*DomNode*/node, /*Number*/opacity){
+                       var ov = opacity * 100, opaque = opacity == 1;
+                       node.style.zoom = opaque ? "" : 1;
+
+                       if(!af(node)){
+                               if(opaque){
+                                       return opacity;
+                               }
+                               node.style.filter += " progid:" + astr + "(Opacity=" + ov + ")";
+                       }else{
+                               af(node, 1).Opacity = ov;
+                       }
+
+                       // on IE7 Alpha(Filter opacity=100) makes text look fuzzy so disable it altogether (bug #2661),
+                       //but still update the opacity value so we can get a correct reading if it is read later.
+                       af(node, 1).Enabled = !opaque;
+
+                       if(node.nodeName.toLowerCase() == "tr"){
+                               d.query("> td", node).forEach(function(i){
+                                       d._setOpacity(i, opacity);
+                               });
+                       }
+                       return opacity;
+               } :
+                               function(node, opacity){
+                       return node.style.opacity = opacity;
+               };
+
+       var _pixelNamesCache = {
+               left: true, top: true
+       };
+       var _pixelRegExp = /margin|padding|width|height|max|min|offset/;  // |border
+       var _toStyleValue = function(node, type, value){
+               type = type.toLowerCase(); // FIXME: should we really be doing string case conversion here? Should we cache it? Need to profile!
+                               if(d.isIE){
+                       if(value == "auto"){
+                               if(type == "height"){ return node.offsetHeight; }
+                               if(type == "width"){ return node.offsetWidth; }
+                       }
+                       if(type == "fontweight"){
+                               switch(value){
+                                       case 700: return "bold";
+                                       case 400:
+                                       default: return "normal";
+                               }
+                       }
+               }
+                               if(!(type in _pixelNamesCache)){
+                       _pixelNamesCache[type] = _pixelRegExp.test(type);
+               }
+               return _pixelNamesCache[type] ? px(node, value) : value;
+       };
+
+       var _floatStyle = d.isIE ? "styleFloat" : "cssFloat",
+               _floatAliases = { "cssFloat": _floatStyle, "styleFloat": _floatStyle, "float": _floatStyle }
+       ;
+
+       // public API
+
+       dojo.style = function(  /*DomNode|String*/ node,
+                                                       /*String?|Object?*/ style,
+                                                       /*String?*/ value){
+               //      summary:
+               //              Accesses styles on a node. If 2 arguments are
+               //              passed, acts as a getter. If 3 arguments are passed, acts
+               //              as a setter.
+               //      description:
+               //              Getting the style value uses the computed style for the node, so the value
+               //              will be a calculated value, not just the immediate node.style value.
+               //              Also when getting values, use specific style names,
+               //              like "borderBottomWidth" instead of "border" since compound values like
+               //              "border" are not necessarily reflected as expected.
+               //              If you want to get node dimensions, use `dojo.marginBox()`, 
+               //              `dojo.contentBox()` or `dojo.position()`.
+               //      node:
+               //              id or reference to node to get/set style for
+               //      style:
+               //              the style property to set in DOM-accessor format
+               //              ("borderWidth", not "border-width") or an object with key/value
+               //              pairs suitable for setting each property.
+               //      value:
+               //              If passed, sets value on the node for style, handling
+               //              cross-browser concerns.  When setting a pixel value,
+               //              be sure to include "px" in the value. For instance, top: "200px".
+               //              Otherwise, in some cases, some browsers will not apply the style.
+               //      example:
+               //              Passing only an ID or node returns the computed style object of
+               //              the node:
+               //      |       dojo.style("thinger");
+               //      example:
+               //              Passing a node and a style property returns the current
+               //              normalized, computed value for that property:
+               //      |       dojo.style("thinger", "opacity"); // 1 by default
+               //
+               //      example:
+               //              Passing a node, a style property, and a value changes the
+               //              current display of the node and returns the new computed value
+               //      |       dojo.style("thinger", "opacity", 0.5); // == 0.5
+               //
+               //      example:
+               //              Passing a node, an object-style style property sets each of the values in turn and returns the computed style object of the node:
+               //      |       dojo.style("thinger", {
+               //      |               "opacity": 0.5,
+               //      |               "border": "3px solid black",
+               //      |               "height": "300px"
+               //      |       });
+               //
+               //      example:
+               //              When the CSS style property is hyphenated, the JavaScript property is camelCased.
+               //              font-size becomes fontSize, and so on.
+               //      |       dojo.style("thinger",{
+               //      |               fontSize:"14pt",
+               //      |               letterSpacing:"1.2em"
+               //      |       });
+               //
+               //      example:
+               //              dojo.NodeList implements .style() using the same syntax, omitting the "node" parameter, calling
+               //              dojo.style() on every element of the list. See: `dojo.query()` and `dojo.NodeList()`
+               //      |       dojo.query(".someClassName").style("visibility","hidden");
+               //      |       // or
+               //      |       dojo.query("#baz > div").style({
+               //      |               opacity:0.75,
+               //      |               fontSize:"13pt"
+               //      |       });
+
+               var n = byId(node), args = arguments.length, op = (style == "opacity");
+               style = _floatAliases[style] || style;
+               if(args == 3){
+                       return op ? d._setOpacity(n, value) : n.style[style] = value; /*Number*/
+               }
+               if(args == 2 && op){
+                       return d._getOpacity(n);
+               }
+               var s = gcs(n);
+               if(args == 2 && typeof style != "string"){ // inline'd type check
+                       for(var x in style){
+                               d.style(node, x, style[x]);
+                       }
+                       return s;
+               }
+               return (args == 1) ? s : _toStyleValue(n, style, s[style] || n.style[style]); /* CSS2Properties||String||Number */
+       }
+
+       // =============================
+       // Box Functions
+       // =============================
+
+       dojo._getPadExtents = function(/*DomNode*/n, /*Object*/computedStyle){
+               //      summary:
+               //              Returns object with special values specifically useful for node
+               //              fitting.
+               //      description:
+               //              Returns an object with `w`, `h`, `l`, `t` properties:
+               //      |               l/t = left/top padding (respectively)
+               //      |               w = the total of the left and right padding 
+               //      |               h = the total of the top and bottom padding
+               //              If 'node' has position, l/t forms the origin for child nodes.
+               //              The w/h are used for calculating boxes.
+               //              Normally application code will not need to invoke this
+               //              directly, and will use the ...box... functions instead.
+               var 
+                       s = computedStyle||gcs(n),
+                       l = px(n, s.paddingLeft),
+                       t = px(n, s.paddingTop);
+               return {
+                       l: l,
+                       t: t,
+                       w: l+px(n, s.paddingRight),
+                       h: t+px(n, s.paddingBottom)
+               };
+       }
+
+       dojo._getBorderExtents = function(/*DomNode*/n, /*Object*/computedStyle){
+               //      summary:
+               //              returns an object with properties useful for noting the border
+               //              dimensions.
+               //      description:
+               //              * l/t = the sum of left/top border (respectively)
+               //              * w = the sum of the left and right border
+               //              * h = the sum of the top and bottom border
+               //
+               //              The w/h are used for calculating boxes.
+               //              Normally application code will not need to invoke this
+               //              directly, and will use the ...box... functions instead.
+               var 
+                       ne = "none",
+                       s = computedStyle||gcs(n),
+                       bl = (s.borderLeftStyle != ne ? px(n, s.borderLeftWidth) : 0),
+                       bt = (s.borderTopStyle != ne ? px(n, s.borderTopWidth) : 0);
+               return {
+                       l: bl,
+                       t: bt,
+                       w: bl + (s.borderRightStyle!=ne ? px(n, s.borderRightWidth) : 0),
+                       h: bt + (s.borderBottomStyle!=ne ? px(n, s.borderBottomWidth) : 0)
+               };
+       }
+
+       dojo._getPadBorderExtents = function(/*DomNode*/n, /*Object*/computedStyle){
+               //      summary:
+               //              Returns object with properties useful for box fitting with
+               //              regards to padding.
+               // description:
+               //              * l/t = the sum of left/top padding and left/top border (respectively)
+               //              * w = the sum of the left and right padding and border
+               //              * h = the sum of the top and bottom padding and border
+               //
+               //              The w/h are used for calculating boxes.
+               //              Normally application code will not need to invoke this
+               //              directly, and will use the ...box... functions instead.
+               var 
+                       s = computedStyle||gcs(n),
+                       p = d._getPadExtents(n, s),
+                       b = d._getBorderExtents(n, s);
+               return {
+                       l: p.l + b.l,
+                       t: p.t + b.t,
+                       w: p.w + b.w,
+                       h: p.h + b.h
+               };
+       }
+
+       dojo._getMarginExtents = function(n, computedStyle){
+               //      summary:
+               //              returns object with properties useful for box fitting with
+               //              regards to box margins (i.e., the outer-box).
+               //
+               //              * l/t = marginLeft, marginTop, respectively
+               //              * w = total width, margin inclusive
+               //              * h = total height, margin inclusive
+               //
+               //              The w/h are used for calculating boxes.
+               //              Normally application code will not need to invoke this
+               //              directly, and will use the ...box... functions instead.
+               var 
+                       s = computedStyle||gcs(n),
+                       l = px(n, s.marginLeft),
+                       t = px(n, s.marginTop),
+                       r = px(n, s.marginRight),
+                       b = px(n, s.marginBottom);
+               if(d.isWebKit && (s.position != "absolute")){
+                       // FIXME: Safari's version of the computed right margin
+                       // is the space between our right edge and the right edge 
+                       // of our offsetParent.
+                       // What we are looking for is the actual margin value as 
+                       // determined by CSS.
+                       // Hack solution is to assume left/right margins are the same.
+                       r = l;
+               }
+               return {
+                       l: l,
+                       t: t,
+                       w: l+r,
+                       h: t+b
+               };
+       }
+
+       // Box getters work in any box context because offsetWidth/clientWidth
+       // are invariant wrt box context
+       //
+       // They do *not* work for display: inline objects that have padding styles
+       // because the user agent ignores padding (it's bogus styling in any case)
+       //
+       // Be careful with IMGs because they are inline or block depending on 
+       // browser and browser mode.
+
+       // Although it would be easier to read, there are not separate versions of 
+       // _getMarginBox for each browser because:
+       // 1. the branching is not expensive
+       // 2. factoring the shared code wastes cycles (function call overhead)
+       // 3. duplicating the shared code wastes bytes
+
+       dojo._getMarginBox = function(/*DomNode*/node, /*Object*/computedStyle){
+               // summary:
+               //              returns an object that encodes the width, height, left and top
+               //              positions of the node's margin box.
+               var s = computedStyle || gcs(node), me = d._getMarginExtents(node, s);
+               var l = node.offsetLeft - me.l, t = node.offsetTop - me.t, p = node.parentNode;
+                               if(d.isMoz){
+                       // Mozilla:
+                       // If offsetParent has a computed overflow != visible, the offsetLeft is decreased
+                       // by the parent's border.
+                       // We don't want to compute the parent's style, so instead we examine node's
+                       // computed left/top which is more stable.
+                       var sl = parseFloat(s.left), st = parseFloat(s.top);
+                       if(!isNaN(sl) && !isNaN(st)){
+                               l = sl, t = st;
+                       }else{
+                               // If child's computed left/top are not parseable as a number (e.g. "auto"), we
+                               // have no choice but to examine the parent's computed style.
+                               if(p && p.style){
+                                       var pcs = gcs(p);
+                                       if(pcs.overflow != "visible"){
+                                               var be = d._getBorderExtents(p, pcs);
+                                               l += be.l, t += be.t;
+                                       }
+                               }
+                       }
+               }else if(d.isOpera || (d.isIE > 7 && !d.isQuirks)){
+                       // On Opera and IE 8, offsetLeft/Top includes the parent's border
+                       if(p){
+                               be = d._getBorderExtents(p);
+                               l -= be.l;
+                               t -= be.t;
+                       }
+               }
+                               return {
+                       l: l,
+                       t: t,
+                       w: node.offsetWidth + me.w,
+                       h: node.offsetHeight + me.h 
+               };
+       }
+
+       dojo._getContentBox = function(node, computedStyle){
+               // summary:
+               //              Returns an object that encodes the width, height, left and top
+               //              positions of the node's content box, irrespective of the
+               //              current box model.
+
+               // clientWidth/Height are important since the automatically account for scrollbars
+               // fallback to offsetWidth/Height for special cases (see #3378)
+               var s = computedStyle || gcs(node),
+                       pe = d._getPadExtents(node, s),
+                       be = d._getBorderExtents(node, s),
+                       w = node.clientWidth,
+                       h
+               ;
+               if(!w){
+                       w = node.offsetWidth, h = node.offsetHeight;
+               }else{
+                       h = node.clientHeight, be.w = be.h = 0;
+               }
+               // On Opera, offsetLeft includes the parent's border
+                               if(d.isOpera){ pe.l += be.l; pe.t += be.t; };
+                               return {
+                       l: pe.l,
+                       t: pe.t,
+                       w: w - pe.w - be.w,
+                       h: h - pe.h - be.h
+               };
+       }
+
+       dojo._getBorderBox = function(node, computedStyle){
+               var s = computedStyle || gcs(node),
+                       pe = d._getPadExtents(node, s),
+                       cb = d._getContentBox(node, s)
+               ;
+               return {
+                       l: cb.l - pe.l,
+                       t: cb.t - pe.t,
+                       w: cb.w + pe.w,
+                       h: cb.h + pe.h
+               };
+       }
+
+       // Box setters depend on box context because interpretation of width/height styles
+       // vary wrt box context.
+       //
+       // The value of dojo.boxModel is used to determine box context.
+       // dojo.boxModel can be set directly to change behavior.
+       //
+       // Beware of display: inline objects that have padding styles
+       // because the user agent ignores padding (it's a bogus setup anyway)
+       //
+       // Be careful with IMGs because they are inline or block depending on 
+       // browser and browser mode.
+       //
+       // Elements other than DIV may have special quirks, like built-in
+       // margins or padding, or values not detectable via computedStyle.
+       // In particular, margins on TABLE do not seems to appear 
+       // at all in computedStyle on Mozilla.
+
+       dojo._setBox = function(/*DomNode*/node, /*Number?*/l, /*Number?*/t, /*Number?*/w, /*Number?*/h, /*String?*/u){
+               //      summary:
+               //              sets width/height/left/top in the current (native) box-model
+               //              dimentions. Uses the unit passed in u.
+               //      node:
+               //              DOM Node reference. Id string not supported for performance
+               //              reasons.
+               //      l:
+               //              left offset from parent.
+               //      t:
+               //              top offset from parent.
+               //      w:
+               //              width in current box model.
+               //      h:
+               //              width in current box model.
+               //      u:
+               //              unit measure to use for other measures. Defaults to "px".
+               u = u || "px";
+               var s = node.style;
+               if(!isNaN(l)){ s.left = l + u; }
+               if(!isNaN(t)){ s.top = t + u; }
+               if(w >= 0){ s.width = w + u; }
+               if(h >= 0){ s.height = h + u; }
+       }
+
+       dojo._isButtonTag = function(/*DomNode*/node) {
+               // summary:
+               //              True if the node is BUTTON or INPUT.type="button".
+               return node.tagName == "BUTTON"
+                       || node.tagName=="INPUT" && (node.getAttribute("type")||'').toUpperCase() == "BUTTON"; // boolean
+       }
+
+       dojo._usesBorderBox = function(/*DomNode*/node){
+               //      summary:
+               //              True if the node uses border-box layout.
+
+               // We could test the computed style of node to see if a particular box
+               // has been specified, but there are details and we choose not to bother.
+
+               // TABLE and BUTTON (and INPUT type=button) are always border-box by default.
+               // If you have assigned a different box to either one via CSS then
+               // box functions will break.
+
+               var n = node.tagName;
+               return d.boxModel=="border-box" || n=="TABLE" || d._isButtonTag(node); // boolean
+       }
+
+       dojo._setContentSize = function(/*DomNode*/node, /*Number*/widthPx, /*Number*/heightPx, /*Object*/computedStyle){
+               //      summary:
+               //              Sets the size of the node's contents, irrespective of margins,
+               //              padding, or borders.
+               if(d._usesBorderBox(node)){
+                       var pb = d._getPadBorderExtents(node, computedStyle);
+                       if(widthPx >= 0){ widthPx += pb.w; }
+                       if(heightPx >= 0){ heightPx += pb.h; }
+               }
+               d._setBox(node, NaN, NaN, widthPx, heightPx);
+       }
+
+       dojo._setMarginBox = function(/*DomNode*/node,  /*Number?*/leftPx, /*Number?*/topPx,
+                                                                                                       /*Number?*/widthPx, /*Number?*/heightPx,
+                                                                                                       /*Object*/computedStyle){
+               //      summary:
+               //              sets the size of the node's margin box and placement
+               //              (left/top), irrespective of box model. Think of it as a
+               //              passthrough to dojo._setBox that handles box-model vagaries for
+               //              you.
+
+               var s = computedStyle || gcs(node),
+               // Some elements have special padding, margin, and box-model settings.
+               // To use box functions you may need to set padding, margin explicitly.
+               // Controlling box-model is harder, in a pinch you might set dojo.boxModel.
+                       bb = d._usesBorderBox(node),
+                       pb = bb ? _nilExtents : d._getPadBorderExtents(node, s)
+               ;
+               if(d.isWebKit){
+                       // on Safari (3.1.2), button nodes with no explicit size have a default margin
+                       // setting an explicit size eliminates the margin.
+                       // We have to swizzle the width to get correct margin reading.
+                       if(d._isButtonTag(node)){
+                               var ns = node.style;
+                               if(widthPx >= 0 && !ns.width) { ns.width = "4px"; }
+                               if(heightPx >= 0 && !ns.height) { ns.height = "4px"; }
+                       }
+               }
+               var mb = d._getMarginExtents(node, s);
+               if(widthPx >= 0){ widthPx = Math.max(widthPx - pb.w - mb.w, 0); }
+               if(heightPx >= 0){ heightPx = Math.max(heightPx - pb.h - mb.h, 0); }
+               d._setBox(node, leftPx, topPx, widthPx, heightPx);
+       }
+
+       var _nilExtents = { l:0, t:0, w:0, h:0 };
+
+       // public API
+
+       dojo.marginBox = function(/*DomNode|String*/node, /*Object?*/box){
+               //      summary:
+               //              Getter/setter for the margin-box of node.
+               //      description:
+               //              Getter/setter for the margin-box of node.
+               //              Returns an object in the expected format of box (regardless
+               //              if box is passed). The object might look like:
+               //                      `{ l: 50, t: 200, w: 300: h: 150 }`
+               //              for a node offset from its parent 50px to the left, 200px from
+               //              the top with a margin width of 300px and a margin-height of
+               //              150px.
+               //      node:
+               //              id or reference to DOM Node to get/set box for
+               //      box:
+               //              If passed, denotes that dojo.marginBox() should
+               //              update/set the margin box for node. Box is an object in the
+               //              above format. All properties are optional if passed.
+               //      example:
+               //      Retrieve the marginbox of a passed node
+               //      |       var box = dojo.marginBox("someNodeId");
+               //      |       console.dir(box);
+               //
+               //      example:
+               //      Set a node's marginbox to the size of another node
+               //      |       var box = dojo.marginBox("someNodeId");
+               //      |       dojo.marginBox("someOtherNode", box);
+               
+               var n = byId(node), s = gcs(n), b = box;
+               return !b ? d._getMarginBox(n, s) : d._setMarginBox(n, b.l, b.t, b.w, b.h, s); // Object
+       }
+
+       dojo.contentBox = function(/*DomNode|String*/node, /*Object?*/box){
+               //      summary:
+               //              Getter/setter for the content-box of node.
+               //      description:
+               //              Returns an object in the expected format of box (regardless if box is passed).
+               //              The object might look like:
+               //                      `{ l: 50, t: 200, w: 300: h: 150 }`
+               //              for a node offset from its parent 50px to the left, 200px from
+               //              the top with a content width of 300px and a content-height of
+               //              150px. Note that the content box may have a much larger border
+               //              or margin box, depending on the box model currently in use and
+               //              CSS values set/inherited for node.
+               //              While the getter will return top and left values, the
+               //              setter only accepts setting the width and height.
+               //      node:
+               //              id or reference to DOM Node to get/set box for
+               //      box:
+               //              If passed, denotes that dojo.contentBox() should
+               //              update/set the content box for node. Box is an object in the
+               //              above format, but only w (width) and h (height) are supported.
+               //              All properties are optional if passed.
+               var n = byId(node), s = gcs(n), b = box;
+               return !b ? d._getContentBox(n, s) : d._setContentSize(n, b.w, b.h, s); // Object
+       }
+
+       // =============================
+       // Positioning 
+       // =============================
+
+       var _sumAncestorProperties = function(node, prop){
+               if(!(node = (node||0).parentNode)){return 0}
+               var val, retVal = 0, _b = d.body();
+               while(node && node.style){
+                       if(gcs(node).position == "fixed"){
+                               return 0;
+                       }
+                       val = node[prop];
+                       if(val){
+                               retVal += val - 0;
+                               // opera and khtml #body & #html has the same values, we only
+                               // need one value
+                               if(node == _b){ break; }
+                       }
+                       node = node.parentNode;
+               }
+               return retVal;  //      integer
+       }
+
+       dojo._docScroll = function(){
+               var n = d.global;
+               return "pageXOffset" in n? { x:n.pageXOffset, y:n.pageYOffset } :
+                       (n=d.doc.documentElement, n.clientHeight? { x:d._fixIeBiDiScrollLeft(n.scrollLeft), y:n.scrollTop } :
+                       (n=d.body(), { x:n.scrollLeft||0, y:n.scrollTop||0 }));
+       };
+
+       dojo._isBodyLtr = function(){
+               return "_bodyLtr" in d? d._bodyLtr :
+                       d._bodyLtr = (d.body().dir || d.doc.documentElement.dir || "ltr").toLowerCase() == "ltr"; // Boolean 
+       }
+
+               dojo._getIeDocumentElementOffset = function(){
+               //      summary:
+               //              returns the offset in x and y from the document body to the
+               //              visual edge of the page
+               //      description:
+               // The following values in IE contain an offset:
+               //      |               event.clientX
+               //      |               event.clientY
+               //      |               node.getBoundingClientRect().left
+               //      |               node.getBoundingClientRect().top
+               //              But other position related values do not contain this offset,
+               //              such as node.offsetLeft, node.offsetTop, node.style.left and
+               //              node.style.top. The offset is always (2, 2) in LTR direction.
+               //              When the body is in RTL direction, the offset counts the width
+               //              of left scroll bar's width.  This function computes the actual
+               //              offset.
+
+               //NOTE: assumes we're being called in an IE browser
+
+               var de = d.doc.documentElement; // only deal with HTML element here, _abs handles body/quirks 
+
+               if(d.isIE < 8){
+                       var r = de.getBoundingClientRect(); // works well for IE6+
+                       //console.debug('rect left,top = ' + r.left+','+r.top + ', html client left/top = ' + de.clientLeft+','+de.clientTop + ', rtl = ' + (!d._isBodyLtr()) + ', quirks = ' + d.isQuirks);
+                       var l = r.left,
+                           t = r.top;
+                       if(d.isIE < 7){
+                               l += de.clientLeft;     // scrollbar size in strict/RTL, or,
+                               t += de.clientTop;      // HTML border size in strict
+                       }
+                       return {
+                               x: l < 0? 0 : l, // FRAME element border size can lead to inaccurate negative values
+                               y: t < 0? 0 : t
+                       };
+               }else{
+                       return {
+                               x: 0,
+                               y: 0
+                       };
+               }
+
+       };
+       
+       dojo._fixIeBiDiScrollLeft = function(/*Integer*/ scrollLeft){
+               // In RTL direction, scrollLeft should be a negative value, but IE < 8
+               // returns a positive one. All codes using documentElement.scrollLeft
+               // must call this function to fix this error, otherwise the position
+               // will offset to right when there is a horizontal scrollbar.
+
+                               var dd = d.doc;
+               if(d.isIE < 8 && !d._isBodyLtr()){
+                       var de = d.isQuirks ? dd.body : dd.documentElement;
+                       return scrollLeft + de.clientWidth - de.scrollWidth; // Integer
+               }
+                               return scrollLeft; // Integer
+       }
+
+       // FIXME: need a setter for coords or a moveTo!!
+       dojo._abs = dojo.position = function(/*DomNode*/node, /*Boolean?*/includeScroll){
+               //      summary:
+               //              Gets the position and size of the passed element relative to
+               //              the viewport (if includeScroll==false), or relative to the
+               //              document root (if includeScroll==true).
+               //
+               //      description:
+               //              Returns an object of the form:
+               //                      { x: 100, y: 300, w: 20, h: 15 }
+               //              If includeScroll==true, the x and y values will include any
+               //              document offsets that may affect the position relative to the
+               //              viewport.
+               //              Uses the border-box model (inclusive of border and padding but
+               //              not margin).  Does not act as a setter.
+
+               var db = d.body(), dh = db.parentNode, ret;
+               node = byId(node);
+               if(node["getBoundingClientRect"]){
+                       // IE6+, FF3+, super-modern WebKit, and Opera 9.6+ all take this branch
+                       ret = node.getBoundingClientRect();
+                       ret = { x: ret.left, y: ret.top, w: ret.right - ret.left, h: ret.bottom - ret.top };
+                                       if(d.isIE){
+                               // On IE there's a 2px offset that we need to adjust for, see _getIeDocumentElementOffset()
+                               var offset = d._getIeDocumentElementOffset();
+
+                               // fixes the position in IE, quirks mode
+                               ret.x -= offset.x + (d.isQuirks ? db.clientLeft+db.offsetLeft : 0);
+                               ret.y -= offset.y + (d.isQuirks ? db.clientTop+db.offsetTop : 0);
+                       }else if(d.isFF == 3){
+                               // In FF3 you have to subtract the document element margins.
+                               // Fixed in FF3.5 though.
+                               var cs = gcs(dh);
+                               ret.x -= px(dh, cs.marginLeft) + px(dh, cs.borderLeftWidth);
+                               ret.y -= px(dh, cs.marginTop) + px(dh, cs.borderTopWidth);
+                       }
+                               }else{
+                       // FF2 and older WebKit
+                       ret = {
+                               x: 0,
+                               y: 0,
+                               w: node.offsetWidth,
+                               h: node.offsetHeight
+                       };
+                       if(node["offsetParent"]){
+                               ret.x -= _sumAncestorProperties(node, "scrollLeft");
+                               ret.y -= _sumAncestorProperties(node, "scrollTop");
+
+                               var curnode = node;
+                               do{
+                                       var n = curnode.offsetLeft,
+                                               t = curnode.offsetTop;
+                                       ret.x += isNaN(n) ? 0 : n;
+                                       ret.y += isNaN(t) ? 0 : t;
+
+                                       cs = gcs(curnode);
+                                       if(curnode != node){
+                                                               if(d.isMoz){
+                                                       // tried left+right with differently sized left/right borders
+                                                       // it really is 2xleft border in FF, not left+right, even in RTL!
+                                                       ret.x += 2 * px(curnode,cs.borderLeftWidth);
+                                                       ret.y += 2 * px(curnode,cs.borderTopWidth);
+                                               }else{
+                                                                       ret.x += px(curnode, cs.borderLeftWidth);
+                                                       ret.y += px(curnode, cs.borderTopWidth);
+                                                               }
+                                                       }
+                                       // static children in a static div in FF2 are affected by the div's border as well
+                                       // but offsetParent will skip this div!
+                                                       if(d.isMoz && cs.position=="static"){
+                                               var parent=curnode.parentNode;
+                                               while(parent!=curnode.offsetParent){
+                                                       var pcs=gcs(parent);
+                                                       if(pcs.position=="static"){
+                                                               ret.x += px(curnode,pcs.borderLeftWidth);
+                                                               ret.y += px(curnode,pcs.borderTopWidth);
+                                                       }
+                                                       parent=parent.parentNode;
+                                               }
+                                       }
+                                                       curnode = curnode.offsetParent;
+                               }while((curnode != dh) && curnode);
+                       }else if(node.x && node.y){
+                               ret.x += isNaN(node.x) ? 0 : node.x;
+                               ret.y += isNaN(node.y) ? 0 : node.y;
+                       }
+               }
+               // account for document scrolling
+               // if offsetParent is used, ret value already includes scroll position
+               // so we may have to actually remove that value if !includeScroll
+               if(includeScroll){
+                       var scroll = d._docScroll();
+                       ret.x += scroll.x;
+                       ret.y += scroll.y;
+               }
+
+               return ret; // Object
+       }
+
+       dojo.coords = function(/*DomNode|String*/node, /*Boolean?*/includeScroll){
+               //      summary:
+               //              Deprecated: Use position() for border-box x/y/w/h
+               //              or marginBox() for margin-box w/h/l/t.
+               //              Returns an object representing a node's size and position.
+               //
+               //      description:
+               //              Returns an object that measures margin-box (w)idth/(h)eight
+               //              and absolute position x/y of the border-box. Also returned
+               //              is computed (l)eft and (t)op values in pixels from the
+               //              node's offsetParent as returned from marginBox().
+               //              Return value will be in the form:
+               //|                     { l: 50, t: 200, w: 300: h: 150, x: 100, y: 300 }
+               //              Does not act as a setter. If includeScroll is passed, the x and
+               //              y params are affected as one would expect in dojo.position().
+               var n = byId(node), s = gcs(n), mb = d._getMarginBox(n, s);
+               var abs = d.position(n, includeScroll);
+               mb.x = abs.x;
+               mb.y = abs.y;
+               return mb;
+       }
+
+       // =============================
+       // Element attribute Functions
+       // =============================
+
+       // dojo.attr() should conform to http://www.w3.org/TR/DOM-Level-2-Core/
+
+       var _propNames = {
+                       // properties renamed to avoid clashes with reserved words
+                       "class":   "className",
+                       "for":     "htmlFor",
+                       // properties written as camelCase
+                       tabindex:  "tabIndex",
+                       readonly:  "readOnly",
+                       colspan:   "colSpan",
+                       frameborder: "frameBorder",
+                       rowspan:   "rowSpan",
+                       valuetype: "valueType"
+               },
+               _attrNames = {
+                       // original attribute names
+                       classname: "class",
+                       htmlfor:   "for",
+                       // for IE
+                       tabindex:  "tabIndex",
+                       readonly:  "readOnly"
+               },
+               _forcePropNames = {
+                       innerHTML: 1,
+                       className: 1,
+                       htmlFor:   d.isIE,
+                       value:     1
+               };
+
+       var _fixAttrName = function(/*String*/ name){
+               return _attrNames[name.toLowerCase()] || name;
+       };
+
+       var _hasAttr = function(node, name){
+               var attr = node.getAttributeNode && node.getAttributeNode(name);
+               return attr && attr.specified; // Boolean
+       };
+
+       // There is a difference in the presence of certain properties and their default values
+       // between browsers. For example, on IE "disabled" is present on all elements,
+       // but it is value is "false"; "tabIndex" of <div> returns 0 by default on IE, yet other browsers
+       // can return -1.
+
+       dojo.hasAttr = function(/*DomNode|String*/node, /*String*/name){
+               //      summary:
+               //              Returns true if the requested attribute is specified on the
+               //              given element, and false otherwise.
+               //      node:
+               //              id or reference to the element to check
+               //      name:
+               //              the name of the attribute
+               //      returns:
+               //              true if the requested attribute is specified on the
+               //              given element, and false otherwise
+               var lc = name.toLowerCase();
+               return _forcePropNames[_propNames[lc] || name] || _hasAttr(byId(node), _attrNames[lc] || name); // Boolean
+       }
+
+       var _evtHdlrMap = {}, _ctr = 0,
+               _attrId = dojo._scopeName + "attrid",
+               // the next dictionary lists elements with read-only innerHTML on IE
+               _roInnerHtml = {col: 1, colgroup: 1,
+                       // frameset: 1, head: 1, html: 1, style: 1,
+                       table: 1, tbody: 1, tfoot: 1, thead: 1, tr: 1, title: 1};
+
+       dojo.attr = function(/*DomNode|String*/node, /*String|Object*/name, /*String?*/value){
+               //      summary:
+               //              Gets or sets an attribute on an HTML element.
+               //      description:
+               //              Handles normalized getting and setting of attributes on DOM
+               //              Nodes. If 2 arguments are passed, and a the second argumnt is a
+               //              string, acts as a getter.
+               //
+               //              If a third argument is passed, or if the second argument is a
+               //              map of attributes, acts as a setter.
+               //
+               //              When passing functions as values, note that they will not be
+               //              directly assigned to slots on the node, but rather the default
+               //              behavior will be removed and the new behavior will be added
+               //              using `dojo.connect()`, meaning that event handler properties
+               //              will be normalized and that some caveats with regards to
+               //              non-standard behaviors for onsubmit apply. Namely that you
+               //              should cancel form submission using `dojo.stopEvent()` on the
+               //              passed event object instead of returning a boolean value from
+               //              the handler itself.
+               //      node:
+               //              id or reference to the element to get or set the attribute on
+               //      name:
+               //              the name of the attribute to get or set.
+               //      value:
+               //              The value to set for the attribute
+               //      returns:
+               //              when used as a getter, the value of the requested attribute
+               //              or null if that attribute does not have a specified or
+               //              default value;
+               //
+               //              when used as a setter, the DOM node
+               //
+               //      example:
+               //      |       // get the current value of the "foo" attribute on a node
+               //      |       dojo.attr(dojo.byId("nodeId"), "foo");
+               //      |       // or we can just pass the id:
+               //      |       dojo.attr("nodeId", "foo");
+               //
+               //      example:
+               //      |       // use attr() to set the tab index
+               //      |       dojo.attr("nodeId", "tabIndex", 3);
+               //      |
+               //
+               //      example:
+               //      Set multiple values at once, including event handlers:
+               //      |       dojo.attr("formId", {
+               //      |               "foo": "bar",
+               //      |               "tabIndex": -1,
+               //      |               "method": "POST",
+               //      |               "onsubmit": function(e){
+               //      |                       // stop submitting the form. Note that the IE behavior
+               //      |                       // of returning true or false will have no effect here
+               //      |                       // since our handler is connect()ed to the built-in
+               //      |                       // onsubmit behavior and so we need to use
+               //      |                       // dojo.stopEvent() to ensure that the submission
+               //      |                       // doesn't proceed.
+               //      |                       dojo.stopEvent(e);
+               //      |
+               //      |                       // submit the form with Ajax
+               //      |                       dojo.xhrPost({ form: "formId" });
+               //      |               }
+               //      |       });
+               //
+               //      example:
+               //      Style is s special case: Only set with an object hash of styles
+               //      |       dojo.attr("someNode",{
+               //      |               id:"bar",
+               //      |               style:{
+               //      |                       width:"200px", height:"100px", color:"#000"
+               //      |               }
+               //      |       });
+               //
+               //      example:
+               //      Again, only set style as an object hash of styles:
+               //      |       var obj = { color:"#fff", backgroundColor:"#000" };
+               //      |       dojo.attr("someNode", "style", obj);
+               //      |
+               //      |       // though shorter to use `dojo.style()` in this case:
+               //      |       dojo.style("someNode", obj);
+
+               node = byId(node);
+               var args = arguments.length, prop;
+               if(args == 2 && typeof name != "string"){ // inline'd type check
+                       // the object form of setter: the 2nd argument is a dictionary
+                       for(var x in name){
+                               d.attr(node, x, name[x]);
+                       }
+                       return node; // DomNode
+               }
+               var lc = name.toLowerCase(),
+                       propName = _propNames[lc] || name,
+                       forceProp = _forcePropNames[propName],
+                       attrName = _attrNames[lc] || name;
+               if(args == 3){
+                       // setter
+                       do{
+                               if(propName == "style" && typeof value != "string"){ // inline'd type check
+                                       // special case: setting a style
+                                       d.style(node, value);
+                                       break;
+                               }
+                               if(propName == "innerHTML"){
+                                       // special case: assigning HTML
+                                                                               if(d.isIE && node.tagName.toLowerCase() in _roInnerHtml){
+                                               d.empty(node);
+                                               node.appendChild(d._toDom(value, node.ownerDocument));
+                                       }else{
+                                                                                       node[propName] = value;
+                                                                               }
+                                                                               break;
+                               }
+                               if(d.isFunction(value)){
+                                       // special case: assigning an event handler
+                                       // clobber if we can
+                                       var attrId = d.attr(node, _attrId);
+                                       if(!attrId){
+                                               attrId = _ctr++;
+                                               d.attr(node, _attrId, attrId);
+                                       }
+                                       if(!_evtHdlrMap[attrId]){
+                                               _evtHdlrMap[attrId] = {};
+                                       }
+                                       var h = _evtHdlrMap[attrId][propName];
+                                       if(h){
+                                               d.disconnect(h);
+                                       }else{
+                                               try{
+                                                       delete node[propName];
+                                               }catch(e){}
+                                       }
+                                       // ensure that event objects are normalized, etc.
+                                       _evtHdlrMap[attrId][propName] = d.connect(node, propName, value);
+                                       break;
+                               }
+                               if(forceProp || typeof value == "boolean"){
+                                       // special case: forcing assignment to the property
+                                       // special case: setting boolean to a property instead of attribute
+                                       node[propName] = value;
+                                       break;
+                               }
+                               // node's attribute
+                               node.setAttribute(attrName, value);
+                       }while(false);
+                       return node; // DomNode
+               }
+               // getter
+               // should we access this attribute via a property or
+               // via getAttribute()?
+               value = node[propName];
+               if(forceProp && typeof value != "undefined"){
+                       // node's property
+                       return value;   // Anything
+               }
+               if(propName != "href" && (typeof value == "boolean" || d.isFunction(value))){
+                       // node's property
+                       return value;   // Anything
+               }
+               // node's attribute
+               // we need _hasAttr() here to guard against IE returning a default value
+               return _hasAttr(node, attrName) ? node.getAttribute(attrName) : null; // Anything
+       }
+
+       dojo.removeAttr = function(/*DomNode|String*/ node, /*String*/ name){
+               //      summary:
+               //              Removes an attribute from an HTML element.
+               //      node:
+               //              id or reference to the element to remove the attribute from
+               //      name:
+               //              the name of the attribute to remove
+               byId(node).removeAttribute(_fixAttrName(name));
+       }
+
+       dojo.getNodeProp = function(/*DomNode|String*/ node, /*String*/ name){
+               //      summary:
+               //              Returns an effective value of a property or an attribute.
+               //      node:
+               //              id or reference to the element to remove the attribute from
+               //      name:
+               //              the name of the attribute
+               node = byId(node);
+               var lc = name.toLowerCase(),
+                       propName = _propNames[lc] || name;
+               if((propName in node) && propName != "href"){
+                       // node's property
+                       return node[propName];  // Anything
+               }
+               // node's attribute
+               var attrName = _attrNames[lc] || name;
+               return _hasAttr(node, attrName) ? node.getAttribute(attrName) : null; // Anything
+       }
+
+       dojo.create = function(tag, attrs, refNode, pos){
+               //      summary:
+               //              Create an element, allowing for optional attribute decoration
+               //              and placement.
+               //
+               // description:
+               //              A DOM Element creation function. A shorthand method for creating a node or
+               //              a fragment, and allowing for a convenient optional attribute setting step,
+               //              as well as an optional DOM placement reference.
+               //|
+               //              Attributes are set by passing the optional object through `dojo.attr`.
+               //              See `dojo.attr` for noted caveats and nuances, and API if applicable.
+               //|
+               //              Placement is done via `dojo.place`, assuming the new node to be the action 
+               //              node, passing along the optional reference node and position.
+               //
+               // tag: String|DomNode
+               //              A string of the element to create (eg: "div", "a", "p", "li", "script", "br"),
+               //              or an existing DOM node to process.
+               //
+               // attrs: Object
+               //              An object-hash of attributes to set on the newly created node.
+               //              Can be null, if you don't want to set any attributes/styles.
+               //              See: `dojo.attr` for a description of available attributes.
+               //
+               // refNode: String?|DomNode?
+               //              Optional reference node. Used by `dojo.place` to place the newly created
+               //              node somewhere in the dom relative to refNode. Can be a DomNode reference
+               //              or String ID of a node.
+               //
+               // pos: String?
+               //              Optional positional reference. Defaults to "last" by way of `dojo.place`,
+               //              though can be set to "first","after","before","last", "replace" or "only"
+               //              to further control the placement of the new node relative to the refNode.
+               //              'refNode' is required if a 'pos' is specified.
+               //
+               // returns: DomNode
+               //
+               // example:
+               //      Create a DIV:
+               //      |       var n = dojo.create("div");
+               //
+               // example:
+               //      Create a DIV with content:
+               //      |       var n = dojo.create("div", { innerHTML:"<p>hi</p>" });
+               //
+               // example:
+               //      Place a new DIV in the BODY, with no attributes set
+               //      |       var n = dojo.create("div", null, dojo.body());
+               //
+               // example:
+               //      Create an UL, and populate it with LI's. Place the list as the first-child of a 
+               //      node with id="someId":
+               //      |       var ul = dojo.create("ul", null, "someId", "first");
+               //      |       var items = ["one", "two", "three", "four"];
+               //      |       dojo.forEach(items, function(data){
+               //      |               dojo.create("li", { innerHTML: data }, ul);
+               //      |       });
+               //
+               // example:
+               //      Create an anchor, with an href. Place in BODY:
+               //      |       dojo.create("a", { href:"foo.html", title:"Goto FOO!" }, dojo.body());
+               //
+               // example:
+               //      Create a `dojo.NodeList()` from a new element (for syntatic sugar):
+               //      |       dojo.query(dojo.create('div'))
+               //      |               .addClass("newDiv")
+               //      |               .onclick(function(e){ console.log('clicked', e.target) })
+               //      |               .place("#someNode"); // redundant, but cleaner.
+
+               var doc = d.doc;
+               if(refNode){
+                       refNode = byId(refNode);
+                       doc = refNode.ownerDocument;
+               }
+               if(typeof tag == "string"){ // inline'd type check
+                       tag = doc.createElement(tag);
+               }
+               if(attrs){ d.attr(tag, attrs); }
+               if(refNode){ d.place(tag, refNode, pos); }
+               return tag; // DomNode
+       }
+
+       /*=====
+       dojo.empty = function(node){
+                       //      summary:
+                       //              safely removes all children of the node.
+                       //      node: DOMNode|String
+                       //              a reference to a DOM node or an id.
+                       //      example:
+                       //      Destroy node's children byId:
+                       //      |       dojo.empty("someId");
+                       //
+                       //      example:
+                       //      Destroy all nodes' children in a list by reference:
+                       //      |       dojo.query(".someNode").forEach(dojo.empty);
+       }
+       =====*/
+
+       d.empty =
+                               d.isIE ?  function(node){
+                       node = byId(node);
+                       for(var c; c = node.lastChild;){ // intentional assignment
+                               d.destroy(c);
+                       }
+               } :
+                               function(node){
+                       byId(node).innerHTML = "";
+               };
+
+       /*=====
+       dojo._toDom = function(frag, doc){
+                       //      summary:
+                       //              instantiates an HTML fragment returning the corresponding DOM.
+                       //      frag: String
+                       //              the HTML fragment
+                       //      doc: DocumentNode?
+                       //              optional document to use when creating DOM nodes, defaults to
+                       //              dojo.doc if not specified.
+                       //      returns: DocumentFragment
+                       //
+                       //      example:
+                       //      Create a table row:
+                       //      |       var tr = dojo._toDom("<tr><td>First!</td></tr>");
+       }
+       =====*/
+
+       // support stuff for dojo._toDom
+       var tagWrap = {
+                       option: ["select"],
+                       tbody: ["table"],
+                       thead: ["table"],
+                       tfoot: ["table"],
+                       tr: ["table", "tbody"],
+                       td: ["table", "tbody", "tr"],
+                       th: ["table", "thead", "tr"],
+                       legend: ["fieldset"],
+                       caption: ["table"],
+                       colgroup: ["table"],
+                       col: ["table", "colgroup"],
+                       li: ["ul"]
+               },
+               reTag = /<\s*([\w\:]+)/,
+               masterNode = {}, masterNum = 0,
+               masterName = "__" + d._scopeName + "ToDomId";
+
+       // generate start/end tag strings to use
+       // for the injection for each special tag wrap case.
+       for(var param in tagWrap){
+               var tw = tagWrap[param];
+               tw.pre  = param == "option" ? '<select multiple="multiple">' : "<" + tw.join("><") + ">";
+               tw.post = "</" + tw.reverse().join("></") + ">";
+               // the last line is destructive: it reverses the array,
+               // but we don't care at this point
+       }
+
+       d._toDom = function(frag, doc){
+               //      summary:
+               //              converts HTML string into DOM nodes.
+
+               doc = doc || d.doc;
+               var masterId = doc[masterName];
+               if(!masterId){
+                       doc[masterName] = masterId = ++masterNum + "";
+                       masterNode[masterId] = doc.createElement("div");
+               }
+
+               // make sure the frag is a string.
+               frag += "";
+
+               // find the starting tag, and get node wrapper
+               var match = frag.match(reTag),
+                       tag = match ? match[1].toLowerCase() : "",
+                       master = masterNode[masterId],
+                       wrap, i, fc, df;
+               if(match && tagWrap[tag]){
+                       wrap = tagWrap[tag];
+                       master.innerHTML = wrap.pre + frag + wrap.post;
+                       for(i = wrap.length; i; --i){
+                               master = master.firstChild;
+                       }
+               }else{
+                       master.innerHTML = frag;
+               }
+
+               // one node shortcut => return the node itself
+               if(master.childNodes.length == 1){
+                       return master.removeChild(master.firstChild); // DOMNode
+               }
+
+               // return multiple nodes as a document fragment
+               df = doc.createDocumentFragment();
+               while(fc = master.firstChild){ // intentional assignment
+                       df.appendChild(fc);
+               }
+               return df; // DOMNode
+       }
+
+       // =============================
+       // (CSS) Class Functions
+       // =============================
+       var _className = "className";
+
+       dojo.hasClass = function(/*DomNode|String*/node, /*String*/classStr){
+               //      summary:
+               //              Returns whether or not the specified classes are a portion of the
+               //              class list currently applied to the node.
+               //
+               //      node:
+               //              String ID or DomNode reference to check the class for.
+               //
+               //      classStr:
+               //              A string class name to look for.
+               //
+               //      example:
+               //      Do something if a node with id="someNode" has class="aSillyClassName" present
+               //      |       if(dojo.hasClass("someNode","aSillyClassName")){ ... }
+
+               return ((" "+ byId(node)[_className] +" ").indexOf(" " + classStr + " ") >= 0);  // Boolean
+       };
+
+       var spaces = /\s+/, a1 = [""],
+               str2array = function(s){
+                       if(typeof s == "string" || s instanceof String){
+                               if(s.indexOf(" ") < 0){
+                                       a1[0] = s;
+                                       return a1;
+                               }else{
+                                       return s.split(spaces);
+                               }
+                       }
+                       // assumed to be an array
+                       return s || "";
+               };
+
+       dojo.addClass = function(/*DomNode|String*/node, /*String|Array*/classStr){
+               //      summary:
+               //              Adds the specified classes to the end of the class list on the
+               //              passed node. Will not re-apply duplicate classes.
+               //
+               //      node:
+               //              String ID or DomNode reference to add a class string too
+               //
+               //      classStr:
+               //              A String class name to add, or several space-separated class names,
+               //              or an array of class names.
+               //
+               // example:
+               //      Add a class to some node:
+               //      |       dojo.addClass("someNode", "anewClass");
+               //
+               // example:
+               //      Add two classes at once:
+               //      |       dojo.addClass("someNode", "firstClass secondClass");
+               //
+               // example:
+               //      Add two classes at once (using array):
+               //      |       dojo.addClass("someNode", ["firstClass", "secondClass"]);
+               //
+               // example:
+               //      Available in `dojo.NodeList` for multiple additions
+               //      |       dojo.query("ul > li").addClass("firstLevel");
+
+               node = byId(node);
+               classStr = str2array(classStr);
+               var cls = node[_className], oldLen;
+               cls = cls ? " " + cls + " " : " ";
+               oldLen = cls.length;
+               for(var i = 0, len = classStr.length, c; i < len; ++i){
+                       c = classStr[i];
+                       if(c && cls.indexOf(" " + c + " ") < 0){
+                               cls += c + " ";
+                       }
+               }
+               if(oldLen < cls.length){
+                       node[_className] = cls.substr(1, cls.length - 2);
+               }
+       };
+
+       dojo.removeClass = function(/*DomNode|String*/node, /*String|Array?*/classStr){
+               // summary:
+               //              Removes the specified classes from node. No `dojo.hasClass`
+               //              check is required.
+               //
+               // node:
+               //              String ID or DomNode reference to remove the class from.
+               //
+               // classStr:
+               //              An optional String class name to remove, or several space-separated
+               //              class names, or an array of class names. If omitted, all class names
+               //              will be deleted.
+               //
+               // example:
+               //      Remove a class from some node:
+               //      |       dojo.removeClass("someNode", "firstClass");
+               //
+               // example:
+               //      Remove two classes from some node:
+               //      |       dojo.removeClass("someNode", "firstClass secondClass");
+               //
+               // example:
+               //      Remove two classes from some node (using array):
+               //      |       dojo.removeClass("someNode", ["firstClass", "secondClass"]);
+               //
+               // example:
+               //      Remove all classes from some node:
+               //      |       dojo.removeClass("someNode");
+               //
+               // example:
+               //      Available in `dojo.NodeList()` for multiple removal
+               //      |       dojo.query(".foo").removeClass("foo");
+
+               node = byId(node);
+               var cls;
+               if(classStr !== undefined){
+                       classStr = str2array(classStr);
+                       cls = " " + node[_className] + " ";
+                       for(var i = 0, len = classStr.length; i < len; ++i){
+                               cls = cls.replace(" " + classStr[i] + " ", " ");
+                       }
+                       cls = d.trim(cls);
+               }else{
+                       cls = "";
+               }
+               if(node[_className] != cls){ node[_className] = cls; }
+       };
+
+       dojo.toggleClass = function(/*DomNode|String*/node, /*String|Array*/classStr, /*Boolean?*/condition){
+               //      summary:
+               //              Adds a class to node if not present, or removes if present.
+               //              Pass a boolean condition if you want to explicitly add or remove.
+               //      condition:
+               //              If passed, true means to add the class, false means to remove.
+               //
+               // example:
+               //      |       dojo.toggleClass("someNode", "hovered");
+               //
+               // example:
+               //      Forcefully add a class
+               //      |       dojo.toggleClass("someNode", "hovered", true);
+               //
+               // example:
+               //      Available in `dojo.NodeList()` for multiple toggles
+               //      |       dojo.query(".toggleMe").toggleClass("toggleMe");
+
+               if(condition === undefined){
+                       condition = !d.hasClass(node, classStr);
+               }
+               d[condition ? "addClass" : "removeClass"](node, classStr);
+       };
+
+})();
+
+}
+
+if(!dojo._hasResource["dojo._base.NodeList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.NodeList"] = true;
+dojo.provide("dojo._base.NodeList");
+
+
+
+(function(){
+
+       var d = dojo;
+
+       var ap = Array.prototype, aps = ap.slice, apc = ap.concat;
+
+       var tnl = function(/*Array*/ a, /*dojo.NodeList?*/ parent, /*Function?*/ NodeListCtor){
+               // summary:
+               //              decorate an array to make it look like a `dojo.NodeList`.
+               // a:
+               //              Array of nodes to decorate.
+               // parent:
+               //              An optional parent NodeList that generated the current
+               //              list of nodes. Used to call _stash() so the parent NodeList
+               //              can be accessed via end() later.
+               // NodeListCtor:
+               //              An optional constructor function to use for any
+               //              new NodeList calls. This allows a certain chain of
+               //              NodeList calls to use a different object than dojo.NodeList.
+               if(!a.sort){
+                       // make sure it's a real array before we pass it on to be wrapped
+                       a = aps.call(a, 0);
+               }
+               var ctor = NodeListCtor || this._NodeListCtor || d._NodeListCtor;
+               a.constructor = ctor;
+               dojo._mixin(a, ctor.prototype);
+               a._NodeListCtor = ctor;
+               return parent ? a._stash(parent) : a;
+       };
+
+       var loopBody = function(f, a, o){
+               a = [0].concat(aps.call(a, 0));
+               o = o || d.global;
+               return function(node){
+                       a[0] = node;
+                       return f.apply(o, a);
+               };
+       };
+
+       // adapters
+
+       var adaptAsForEach = function(f, o){
+               //      summary:
+               //              adapts a single node function to be used in the forEach-type
+               //              actions. The initial object is returned from the specialized
+               //              function.
+               //      f: Function
+               //              a function to adapt
+               //      o: Object?
+               //              an optional context for f
+               return function(){
+                       this.forEach(loopBody(f, arguments, o));
+                       return this;    // Object
+               };
+       };
+
+       var adaptAsMap = function(f, o){
+               //      summary:
+               //              adapts a single node function to be used in the map-type
+               //              actions. The return is a new array of values, as via `dojo.map`
+               //      f: Function
+               //              a function to adapt
+               //      o: Object?
+               //              an optional context for f
+               return function(){
+                       return this.map(loopBody(f, arguments, o));
+               };
+       };
+
+       var adaptAsFilter = function(f, o){
+               //      summary:
+               //              adapts a single node function to be used in the filter-type actions
+               //      f: Function
+               //              a function to adapt
+               //      o: Object?
+               //              an optional context for f
+               return function(){
+                       return this.filter(loopBody(f, arguments, o));
+               };
+       };
+
+       var adaptWithCondition = function(f, g, o){
+               //      summary:
+               //              adapts a single node function to be used in the map-type
+               //              actions, behaves like forEach() or map() depending on arguments
+               //      f: Function
+               //              a function to adapt
+               //      g: Function
+               //              a condition function, if true runs as map(), otherwise runs as forEach()
+               //      o: Object?
+               //              an optional context for f and g
+               return function(){
+                       var a = arguments, body = loopBody(f, a, o);
+                       if(g.call(o || d.global, a)){
+                               return this.map(body);  // self
+                       }
+                       this.forEach(body);
+                       return this;    // self
+               };
+       };
+
+       var magicGuard = function(a){
+               //      summary:
+               //              the guard function for dojo.attr() and dojo.style()
+               return a.length == 1 && (typeof a[0] == "string"); // inline'd type check
+       };
+
+       var orphan = function(node){
+               //      summary:
+               //              function to orphan nodes
+               var p = node.parentNode;
+               if(p){
+                       p.removeChild(node);
+               }
+       };
+       // FIXME: should we move orphan() to dojo.html?
+
+       dojo.NodeList = function(){
+               //      summary:
+               //              dojo.NodeList is an of Array subclass which adds syntactic
+               //              sugar for chaining, common iteration operations, animation, and
+               //              node manipulation. NodeLists are most often returned as the
+               //              result of dojo.query() calls.
+               //      description:
+               //              dojo.NodeList instances provide many utilities that reflect
+               //              core Dojo APIs for Array iteration and manipulation, DOM
+               //              manipulation, and event handling. Instead of needing to dig up
+               //              functions in the dojo.* namespace, NodeLists generally make the
+               //              full power of Dojo available for DOM manipulation tasks in a
+               //              simple, chainable way.
+               //      example:
+               //              create a node list from a node
+               //              |       new dojo.NodeList(dojo.byId("foo"));
+               //      example:
+               //              get a NodeList from a CSS query and iterate on it
+               //              |       var l = dojo.query(".thinger");
+               //              |       l.forEach(function(node, index, nodeList){
+               //              |               console.log(index, node.innerHTML);
+               //              |       });
+               //      example:
+               //              use native and Dojo-provided array methods to manipulate a
+               //              NodeList without needing to use dojo.* functions explicitly:
+               //              |       var l = dojo.query(".thinger");
+               //              |       // since NodeLists are real arrays, they have a length
+               //              |       // property that is both readable and writable and
+               //              |       // push/pop/shift/unshift methods
+               //              |       console.log(l.length);
+               //              |       l.push(dojo.create("span"));
+               //              |
+               //              |       // dojo's normalized array methods work too:
+               //              |       console.log( l.indexOf(dojo.byId("foo")) );
+               //              |       // ...including the special "function as string" shorthand
+               //              |       console.log( l.every("item.nodeType == 1") );
+               //              |
+               //              |       // NodeLists can be [..] indexed, or you can use the at()
+               //              |       // function to get specific items wrapped in a new NodeList:
+               //              |       var node = l[3]; // the 4th element
+               //              |       var newList = l.at(1, 3); // the 2nd and 4th elements
+               //      example:
+               //              the style functions you expect are all there too:
+               //              |       // style() as a getter...
+               //              |       var borders = dojo.query(".thinger").style("border");
+               //              |       // ...and as a setter:
+               //              |       dojo.query(".thinger").style("border", "1px solid black");
+               //              |       // class manipulation
+               //              |       dojo.query("li:nth-child(even)").addClass("even");
+               //              |       // even getting the coordinates of all the items
+               //              |       var coords = dojo.query(".thinger").coords();
+               //      example:
+               //              DOM manipulation functions from the dojo.* namespace area also
+               //              available:
+               //              |       // remove all of the elements in the list from their
+               //              |       // parents (akin to "deleting" them from the document)
+               //              |       dojo.query(".thinger").orphan();
+               //              |       // place all elements in the list at the front of #foo
+               //              |       dojo.query(".thinger").place("foo", "first");
+               //      example:
+               //              Event handling couldn't be easier. `dojo.connect` is mapped in,
+               //              and shortcut handlers are provided for most DOM events:
+               //              |       // like dojo.connect(), but with implicit scope
+               //              |       dojo.query("li").connect("onclick", console, "log");
+               //              |
+               //              |       // many common event handlers are already available directly:
+               //              |       dojo.query("li").onclick(console, "log");
+               //              |       var toggleHovered = dojo.hitch(dojo, "toggleClass", "hovered");
+               //              |       dojo.query("p")
+               //              |               .onmouseenter(toggleHovered)
+               //              |               .onmouseleave(toggleHovered);
+               //      example:
+               //              chainability is a key advantage of NodeLists:
+               //              |       dojo.query(".thinger")
+               //              |               .onclick(function(e){ /* ... */ })
+               //              |               .at(1, 3, 8) // get a subset
+               //              |                       .style("padding", "5px")
+               //              |                       .forEach(console.log);
+
+               return tnl(Array.apply(null, arguments));
+       };
+
+       //Allow things that new up a NodeList to use a delegated or alternate NodeList implementation.
+       d._NodeListCtor = d.NodeList;
+
+       var nl = d.NodeList, nlp = nl.prototype;
+
+       // expose adapters and the wrapper as private functions
+
+       nl._wrap = nlp._wrap = tnl;
+       nl._adaptAsMap = adaptAsMap;
+       nl._adaptAsForEach = adaptAsForEach;
+       nl._adaptAsFilter  = adaptAsFilter;
+       nl._adaptWithCondition = adaptWithCondition;
+
+       // mass assignment
+
+       // add array redirectors
+       d.forEach(["slice", "splice"], function(name){
+               var f = ap[name];
+               //Use a copy of the this array via this.slice() to allow .end() to work right in the splice case.
+               // CANNOT apply ._stash()/end() to splice since it currently modifies
+               // the existing this array -- it would break backward compatibility if we copy the array before
+               // the splice so that we can use .end(). So only doing the stash option to this._wrap for slice.
+               nlp[name] = function(){ return this._wrap(f.apply(this, arguments), name == "slice" ? this : null); };
+       });
+       // concat should be here but some browsers with native NodeList have problems with it
+
+       // add array.js redirectors
+       d.forEach(["indexOf", "lastIndexOf", "every", "some"], function(name){
+               var f = d[name];
+               nlp[name] = function(){ return f.apply(d, [this].concat(aps.call(arguments, 0))); };
+       });
+
+       // add conditional methods
+       d.forEach(["attr", "style"], function(name){
+               nlp[name] = adaptWithCondition(d[name], magicGuard);
+       });
+
+       // add forEach actions
+       d.forEach(["connect", "addClass", "removeClass", "toggleClass", "empty", "removeAttr"], function(name){
+               nlp[name] = adaptAsForEach(d[name]);
+       });
+
+       dojo.extend(dojo.NodeList, {
+               _normalize: function(/*String||Element||Object||NodeList*/content, /*DOMNode?*/refNode){
+                       // summary:
+                       //              normalizes data to an array of items to insert.
+                       // description:
+                       //              If content is an object, it can have special properties "template" and
+                       //              "parse". If "template" is defined, then the template value is run through
+                       //              dojo.string.substitute (if dojo.string.substitute has been dojo.required elsewhere),
+                       //              or if templateFunc is a function on the content, that function will be used to
+                       //              transform the template into a final string to be used for for passing to dojo._toDom.
+                       //              If content.parse is true, then it is remembered for later, for when the content
+                       //              nodes are inserted into the DOM. At that point, the nodes will be parsed for widgets
+                       //              (if dojo.parser has been dojo.required elsewhere).
+
+                       //Wanted to just use a DocumentFragment, but for the array/NodeList
+                       //case that meant  using cloneNode, but we may not want that.
+                       //Cloning should only happen if the node operations span
+                       //multiple refNodes. Also, need a real array, not a NodeList from the
+                       //DOM since the node movements could change those NodeLists.
+
+                       var parse = content.parse === true ? true : false;
+
+                       //Do we have an object that needs to be run through a template?
+                       if(typeof content.template == "string"){
+                               var templateFunc = content.templateFunc || (dojo.string && dojo.string.substitute);
+                               content = templateFunc ? templateFunc(content.template, content) : content;
+                       }
+
+                       var type = (typeof content);
+                       if(type == "string" || type == "number"){
+                               content = dojo._toDom(content, (refNode && refNode.ownerDocument));
+                               if(content.nodeType == 11){
+                                       //DocumentFragment. It cannot handle cloneNode calls, so pull out the children.
+                                       content = dojo._toArray(content.childNodes);
+                               }else{
+                                       content = [content];
+                               }
+                       }else if(!dojo.isArrayLike(content)){
+                               content = [content];
+                       }else if(!dojo.isArray(content)){
+                               //To get to this point, content is array-like, but
+                               //not an array, which likely means a DOM NodeList. Convert it now.
+                               content = dojo._toArray(content);
+                       }
+
+                       //Pass around the parse info
+                       if(parse){
+                               content._runParse = true;
+                       }
+                       return content; //Array
+               },
+
+               _cloneNode: function(/*DOMNode*/ node){
+                       // summary:
+                       //              private utiltity to clone a node. Not very interesting in the vanilla
+                       //              dojo.NodeList case, but delegates could do interesting things like
+                       //              clone event handlers if that is derivable from the node.
+                       return node.cloneNode(true);
+               },
+
+               _place: function(/*Array*/ary, /*DOMNode*/refNode, /*String*/position, /*Boolean*/useClone){
+                       // summary:
+                       //              private utility to handle placing an array of nodes relative to another node.
+                       // description:
+                       //              Allows for cloning the nodes in the array, and for
+                       //              optionally parsing widgets, if ary._runParse is true.
+
+                       //Avoid a disallowed operation if trying to do an innerHTML on a non-element node.
+                       if(refNode.nodeType != 1 && position == "only"){
+                               return;
+                       }
+                       var rNode = refNode, tempNode;
+
+                       //Always cycle backwards in case the array is really a
+                       //DOM NodeList and the DOM operations take it out of the live collection.
+                       var length = ary.length;
+                       for(var i = length - 1; i >= 0; i--){
+                               var node = (useClone ? this._cloneNode(ary[i]) : ary[i]);
+
+                               //If need widget parsing, use a temp node, instead of waiting after inserting into
+                               //real DOM because we need to start widget parsing at one node up from current node,
+                               //which could cause some already parsed widgets to be parsed again.
+                               if(ary._runParse && dojo.parser && dojo.parser.parse){
+                                       if(!tempNode){
+                                               tempNode = rNode.ownerDocument.createElement("div");
+                                       }
+                                       tempNode.appendChild(node);
+                                       dojo.parser.parse(tempNode);
+                                       node = tempNode.firstChild;
+                                       while(tempNode.firstChild){
+                                               tempNode.removeChild(tempNode.firstChild);
+                                       }
+                               }
+
+                               if(i == length - 1){
+                                       dojo.place(node, rNode, position);
+                               }else{
+                                       rNode.parentNode.insertBefore(node, rNode);
+                               }
+                               rNode = node;
+                       }
+               },
+
+               _stash: function(parent){
+                       // summary:
+                       //              private function to hold to a parent NodeList. end() to return the parent NodeList.
+                       //
+                       // example:
+                       // How to make a `dojo.NodeList` method that only returns the third node in
+                       // the dojo.NodeList but allows access to the original NodeList by using this._stash:
+                       //      |       dojo.extend(dojo.NodeList, {
+                       //      |               third: function(){
+                       //  |                   var newNodeList = dojo.NodeList(this[2]);
+                       //      |                       return newNodeList._stash(this);
+                       //      |               }
+                       //      |       });
+                       //      |       // then see how _stash applies a sub-list, to be .end()'ed out of
+                       //      |       dojo.query(".foo")
+                       //      |               .third()
+                       //      |                       .addClass("thirdFoo")
+                       //      |               .end()
+                       //      |               // access to the orig .foo list
+                       //      |               .removeClass("foo")
+                       //      |
+                       //
+                       this._parent = parent;
+                       return this; //dojo.NodeList
+               },
+
+               end: function(){
+                       // summary:
+                       //              Ends use of the current `dojo.NodeList` by returning the previous dojo.NodeList
+                       //              that generated the current dojo.NodeList.
+                       // description:
+                       //              Returns the `dojo.NodeList` that generated the current `dojo.NodeList`. If there
+                       //              is no parent dojo.NodeList, an empty dojo.NodeList is returned.
+                       // example:
+                       //      |       dojo.query("a")
+                       //      |               .filter(".disabled")
+                       //      |                       // operate on the anchors that only have a disabled class
+                       //      |                       .style("color", "grey")
+                       //      |               .end()
+                       //      |               // jump back to the list of anchors
+                       //      |               .style(...)
+                       //
+                       if(this._parent){
+                               return this._parent;
+                       }else{
+                               //Just return empy list.
+                               return new this._NodeListCtor();
+                       }
+               },
+
+               // http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array#Methods
+
+               // FIXME: handle return values for #3244
+               //              http://trac.dojotoolkit.org/ticket/3244
+
+               // FIXME:
+               //              need to wrap or implement:
+               //                      join (perhaps w/ innerHTML/outerHTML overload for toString() of items?)
+               //                      reduce
+               //                      reduceRight
+
+               /*=====
+               slice: function(begin, end){
+                       // summary:
+                       //              Returns a new NodeList, maintaining this one in place
+                       // description:
+                       //              This method behaves exactly like the Array.slice method
+                       //              with the caveat that it returns a dojo.NodeList and not a
+                       //              raw Array. For more details, see Mozilla's (slice
+                       //              documentation)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:slice]
+                       // begin: Integer
+                       //              Can be a positive or negative integer, with positive
+                       //              integers noting the offset to begin at, and negative
+                       //              integers denoting an offset from the end (i.e., to the left
+                       //              of the end)
+                       // end: Integer?
+                       //              Optional parameter to describe what position relative to
+                       //              the NodeList's zero index to end the slice at. Like begin,
+                       //              can be positive or negative.
+                       return this._wrap(a.slice.apply(this, arguments));
+               },
+
+               splice: function(index, howmany, item){
+                       // summary:
+                       //              Returns a new NodeList, manipulating this NodeList based on
+                       //              the arguments passed, potentially splicing in new elements
+                       //              at an offset, optionally deleting elements
+                       // description:
+                       //              This method behaves exactly like the Array.splice method
+                       //              with the caveat that it returns a dojo.NodeList and not a
+                       //              raw Array. For more details, see Mozilla's (splice
+                       //              documentation)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:splice]
+                       //              For backwards compatibility, calling .end() on the spliced NodeList
+                       //              does not return the original NodeList -- splice alters the NodeList in place.
+                       // index: Integer
+                       //              begin can be a positive or negative integer, with positive
+                       //              integers noting the offset to begin at, and negative
+                       //              integers denoting an offset from the end (i.e., to the left
+                       //              of the end)
+                       // howmany: Integer?
+                       //              Optional parameter to describe what position relative to
+                       //              the NodeList's zero index to end the slice at. Like begin,
+                       //              can be positive or negative.
+                       // item: Object...?
+                       //              Any number of optional parameters may be passed in to be
+                       //              spliced into the NodeList
+                       // returns:
+                       //              dojo.NodeList
+                       return this._wrap(a.splice.apply(this, arguments));
+               },
+
+               indexOf: function(value, fromIndex){
+                       //      summary:
+                       //              see dojo.indexOf(). The primary difference is that the acted-on 
+                       //              array is implicitly this NodeList
+                       // value: Object:
+                       //              The value to search for.
+                       // fromIndex: Integer?:
+                       //              The loction to start searching from. Optional. Defaults to 0.
+                       //      description:
+                       //              For more details on the behavior of indexOf, see Mozilla's
+                       //              (indexOf
+                       //              docs)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:indexOf]
+                       //      returns:
+                       //              Positive Integer or 0 for a match, -1 of not found.
+                       return d.indexOf(this, value, fromIndex); // Integer
+               },
+
+               lastIndexOf: function(value, fromIndex){
+                       // summary:
+                       //              see dojo.lastIndexOf(). The primary difference is that the
+                       //              acted-on array is implicitly this NodeList
+                       //      description:
+                       //              For more details on the behavior of lastIndexOf, see
+                       //              Mozilla's (lastIndexOf
+                       //              docs)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:lastIndexOf]
+                       // value: Object
+                       //              The value to search for.
+                       // fromIndex: Integer?
+                       //              The loction to start searching from. Optional. Defaults to 0.
+                       // returns:
+                       //              Positive Integer or 0 for a match, -1 of not found.
+                       return d.lastIndexOf(this, value, fromIndex); // Integer
+               },
+
+               every: function(callback, thisObject){
+                       //      summary:
+                       //              see `dojo.every()` and the (Array.every
+                       //              docs)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:every].
+                       //              Takes the same structure of arguments and returns as
+                       //              dojo.every() with the caveat that the passed array is
+                       //              implicitly this NodeList
+                       // callback: Function: the callback
+                       // thisObject: Object?: the context
+                       return d.every(this, callback, thisObject); // Boolean
+               },
+
+               some: function(callback, thisObject){
+                       //      summary:
+                       //              Takes the same structure of arguments and returns as
+                       //              `dojo.some()` with the caveat that the passed array is
+                       //              implicitly this NodeList.  See `dojo.some()` and Mozilla's
+                       //              (Array.some
+                       //              documentation)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:some].
+                       // callback: Function: the callback
+                       // thisObject: Object?: the context
+                       return d.some(this, callback, thisObject); // Boolean
+               },
+               =====*/
+
+               concat: function(item){
+                       // summary:
+                       //              Returns a new NodeList comprised of items in this NodeList
+                       //              as well as items passed in as parameters
+                       // description:
+                       //              This method behaves exactly like the Array.concat method
+                       //              with the caveat that it returns a `dojo.NodeList` and not a
+                       //              raw Array. For more details, see the (Array.concat
+                       //              docs)[http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Array:concat]
+                       // item: Object?
+                       //              Any number of optional parameters may be passed in to be
+                       //              spliced into the NodeList
+                       // returns:
+                       //              dojo.NodeList
+
+                       //return this._wrap(apc.apply(this, arguments));
+                       // the line above won't work for the native NodeList :-(
+
+                       // implementation notes:
+                       // 1) Native NodeList is not an array, and cannot be used directly
+                       // in concat() --- the latter doesn't recognize it as an array, and
+                       // does not inline it, but append as a single entity.
+                       // 2) On some browsers (e.g., Safari) the "constructor" property is
+                       // read-only and cannot be changed. So we have to test for both
+                       // native NodeList and dojo.NodeList in this property to recognize
+                       // the node list.
+
+                       var t = d.isArray(this) ? this : aps.call(this, 0),
+                               m = d.map(arguments, function(a){
+                                       return a && !d.isArray(a) &&
+                                               (typeof NodeList != "undefined" && a.constructor === NodeList || a.constructor === this._NodeListCtor) ?
+                                                       aps.call(a, 0) : a;
+                               });
+                       return this._wrap(apc.apply(t, m), this);       // dojo.NodeList
+               },
+
+               map: function(/*Function*/ func, /*Function?*/ obj){
+                       //      summary:
+                       //              see dojo.map(). The primary difference is that the acted-on
+                       //              array is implicitly this NodeList and the return is a
+                       //              dojo.NodeList (a subclass of Array)
+                       ///return d.map(this, func, obj, d.NodeList); // dojo.NodeList
+                       return this._wrap(d.map(this, func, obj), this); // dojo.NodeList
+               },
+
+               forEach: function(callback, thisObj){
+                       //      summary:
+                       //              see `dojo.forEach()`. The primary difference is that the acted-on 
+                       //              array is implicitly this NodeList. If you want the option to break out
+                       //              of the forEach loop, use every() or some() instead.
+                       d.forEach(this, callback, thisObj);
+                       // non-standard return to allow easier chaining
+                       return this; // dojo.NodeList 
+               },
+
+               /*=====
+               coords: function(){
+                       //      summary:
+                       //              Returns the box objects of all elements in a node list as
+                       //              an Array (*not* a NodeList). Acts like `dojo.coords`, though assumes
+                       //              the node passed is each node in this list.
+
+                       return d.map(this, d.coords); // Array
+               },
+
+               position: function(){
+                       //      summary:
+                       //              Returns border-box objects (x/y/w/h) of all elements in a node list
+                       //              as an Array (*not* a NodeList). Acts like `dojo.position`, though
+                       //              assumes the node passed is each node in this list. 
+
+                       return d.map(this, d.position); // Array
+               },
+
+               attr: function(property, value){
+                       //      summary:
+                       //              gets or sets the DOM attribute for every element in the
+                       //              NodeList. See also `dojo.attr`
+                       //      property: String
+                       //              the attribute to get/set
+                       //      value: String?
+                       //              optional. The value to set the property to
+                       //      returns:
+                       //              if no value is passed, the result is an array of attribute values
+                       //              If a value is passed, the return is this NodeList
+                       //      example:
+                       //              Make all nodes with a particular class focusable:
+                       //      |       dojo.query(".focusable").attr("tabIndex", -1);
+                       //      example:
+                       //              Disable a group of buttons:
+                       //      |       dojo.query("button.group").attr("disabled", true);
+                       //      example:
+                       //              innerHTML can be assigned or retreived as well:
+                       //      |       // get the innerHTML (as an array) for each list item
+                       //      |       var ih = dojo.query("li.replaceable").attr("innerHTML");
+                       return; // dojo.NodeList
+                       return; // Array
+               },
+
+               style: function(property, value){
+                       //      summary:
+                       //              gets or sets the CSS property for every element in the NodeList
+                       //      property: String
+                       //              the CSS property to get/set, in JavaScript notation
+                       //              ("lineHieght" instead of "line-height")
+                       //      value: String?
+                       //              optional. The value to set the property to
+                       //      returns:
+                       //              if no value is passed, the result is an array of strings.
+                       //              If a value is passed, the return is this NodeList
+                       return; // dojo.NodeList
+                       return; // Array
+               },
+
+               addClass: function(className){
+                       //      summary:
+                       //              adds the specified class to every node in the list
+                       //      className: String|Array
+                       //              A String class name to add, or several space-separated class names,
+                       //              or an array of class names.
+                       return; // dojo.NodeList
+               },
+
+               removeClass: function(className){
+                       //      summary:
+                       //              removes the specified class from every node in the list
+                       //      className: String|Array?
+                       //              An optional String class name to remove, or several space-separated
+                       //              class names, or an array of class names. If omitted, all class names
+                       //              will be deleted.
+                       //      returns:
+                       //              dojo.NodeList, this list
+                       return; // dojo.NodeList
+               },
+
+               toggleClass: function(className, condition){
+                       //      summary:
+                       //              Adds a class to node if not present, or removes if present.
+                       //              Pass a boolean condition if you want to explicitly add or remove.
+                       //      condition: Boolean?
+                       //              If passed, true means to add the class, false means to remove.
+                       //      className: String
+                       //              the CSS class to add
+                       return; // dojo.NodeList
+               },
+
+               connect: function(methodName, objOrFunc, funcName){
+                       //      summary:
+                       //              attach event handlers to every item of the NodeList. Uses dojo.connect()
+                       //              so event properties are normalized
+                       //      methodName: String
+                       //              the name of the method to attach to. For DOM events, this should be
+                       //              the lower-case name of the event
+                       //      objOrFunc: Object|Function|String
+                       //              if 2 arguments are passed (methodName, objOrFunc), objOrFunc should
+                       //              reference a function or be the name of the function in the global
+                       //              namespace to attach. If 3 arguments are provided
+                       //              (methodName, objOrFunc, funcName), objOrFunc must be the scope to 
+                       //              locate the bound function in
+                       //      funcName: String?
+                       //              optional. A string naming the function in objOrFunc to bind to the
+                       //              event. May also be a function reference.
+                       //      example:
+                       //              add an onclick handler to every button on the page
+                       //              |       dojo.query("div:nth-child(odd)").connect("onclick", function(e){
+                       //              |               console.log("clicked!");
+                       //              |       });
+                       // example:
+                       //              attach foo.bar() to every odd div's onmouseover
+                       //              |       dojo.query("div:nth-child(odd)").connect("onmouseover", foo, "bar");
+               },
+
+               empty: function(){
+                       //      summary:
+                       //              clears all content from each node in the list. Effectively
+                       //              equivalent to removing all child nodes from every item in
+                       //              the list.
+                       return this.forEach("item.innerHTML='';"); // dojo.NodeList
+                       // FIXME: should we be checking for and/or disposing of widgets below these nodes?
+               },
+               =====*/
+
+               // useful html methods
+               coords: adaptAsMap(d.coords),
+               position: adaptAsMap(d.position),
+
+               // FIXME: connectPublisher()? connectRunOnce()?
+
+               /*
+               destroy: function(){
+                       //      summary:
+                       //              destroys every item in  the list.
+                       this.forEach(d.destroy);
+                       // FIXME: should we be checking for and/or disposing of widgets below these nodes?
+               },
+               */
+
+               place: function(/*String||Node*/ queryOrNode, /*String*/ position){
+                       //      summary:
+                       //              places elements of this node list relative to the first element matched
+                       //              by queryOrNode. Returns the original NodeList. See: `dojo.place`
+                       //      queryOrNode:
+                       //              may be a string representing any valid CSS3 selector or a DOM node.
+                       //              In the selector case, only the first matching element will be used 
+                       //              for relative positioning.
+                       //      position:
+                       //              can be one of:
+                       //              |       "last" (default)
+                       //              |       "first"
+                       //              |       "before"
+                       //              |       "after"
+                       //              |       "only"
+                       //              |       "replace"
+                       //              or an offset in the childNodes property
+                       var item = d.query(queryOrNode)[0];
+                       return this.forEach(function(node){ d.place(node, item, position); }); // dojo.NodeList
+               },
+
+               orphan: function(/*String?*/ simpleFilter){
+                       //      summary:
+                       //              removes elements in this list that match the simple filter
+                       //              from their parents and returns them as a new NodeList.
+                       //      simpleFilter:
+                       //              single-expression CSS rule. For example, ".thinger" or
+                       //              "#someId[attrName='value']" but not "div > span". In short,
+                       //              anything which does not invoke a descent to evaluate but
+                       //              can instead be used to test a single node is acceptable.
+                       //      returns:
+                       //              `dojo.NodeList` containing the orpahned elements 
+                       return (simpleFilter ? d._filterQueryResult(this, simpleFilter) : this).forEach(orphan); // dojo.NodeList
+               },
+
+               adopt: function(/*String||Array||DomNode*/ queryOrListOrNode, /*String?*/ position){
+                       //      summary:
+                       //              places any/all elements in queryOrListOrNode at a
+                       //              position relative to the first element in this list.
+                       //              Returns a dojo.NodeList of the adopted elements.
+                       //      queryOrListOrNode:
+                       //              a DOM node or a query string or a query result.
+                       //              Represents the nodes to be adopted relative to the
+                       //              first element of this NodeList.
+                       //      position:
+                       //              can be one of:
+                       //              |       "last" (default)
+                       //              |       "first"
+                       //              |       "before"
+                       //              |       "after"
+                       //              |       "only"
+                       //              |       "replace"
+                       //              or an offset in the childNodes property
+                       return d.query(queryOrListOrNode).place(this[0], position)._stash(this);        // dojo.NodeList
+               },
+
+               // FIXME: do we need this?
+               query: function(/*String*/ queryStr){
+                       //      summary:
+                       //              Returns a new list whose memebers match the passed query,
+                       //              assuming elements of the current NodeList as the root for
+                       //              each search.
+                       //      example:
+                       //              assume a DOM created by this markup:
+                       //      |       <div id="foo">
+                       //      |               <p>
+                       //      |                       bacon is tasty, <span>dontcha think?</span>
+                       //      |               </p>
+                       //      |       </div>
+                       //      |       <div id="bar">
+                       //      |               <p>great commedians may not be funny <span>in person</span></p>
+                       //      |       </div>
+                       //              If we are presented with the following defintion for a NodeList:
+                       //      |       var l = new dojo.NodeList(dojo.byId("foo"), dojo.byId("bar"));
+                       //              it's possible to find all span elements under paragraphs
+                       //              contained by these elements with this sub-query:
+                       //      |       var spans = l.query("p span");
+
+                       // FIXME: probably slow
+                       if(!queryStr){ return this; }
+                       var ret = this.map(function(node){
+                               // FIXME: why would we ever get undefined here?
+                               return d.query(queryStr, node).filter(function(subNode){ return subNode !== undefined; });
+                       });
+                       return this._wrap(apc.apply([], ret), this);    // dojo.NodeList
+               },
+
+               filter: function(/*String|Function*/ simpleFilter){
+                       //      summary:
+                       //              "masks" the built-in javascript filter() method (supported
+                       //              in Dojo via `dojo.filter`) to support passing a simple
+                       //              string filter in addition to supporting filtering function
+                       //              objects.
+                       //      simpleFilter:
+                       //              If a string, a single-expression CSS rule. For example,
+                       //              ".thinger" or "#someId[attrName='value']" but not "div >
+                       //              span". In short, anything which does not invoke a descent
+                       //              to evaluate but can instead be used to test a single node
+                       //              is acceptable.
+                       //      example:
+                       //              "regular" JS filter syntax as exposed in dojo.filter:
+                       //              |       dojo.query("*").filter(function(item){
+                       //              |               // highlight every paragraph
+                       //              |               return (item.nodeName == "p");
+                       //              |       }).style("backgroundColor", "yellow");
+                       // example:
+                       //              the same filtering using a CSS selector
+                       //              |       dojo.query("*").filter("p").styles("backgroundColor", "yellow");
+
+                       var a = arguments, items = this, start = 0;
+                       if(typeof simpleFilter == "string"){ // inline'd type check
+                               items = d._filterQueryResult(this, a[0]);
+                               if(a.length == 1){
+                                       // if we only got a string query, pass back the filtered results
+                                       return items._stash(this); // dojo.NodeList
+                               }
+                               // if we got a callback, run it over the filtered items
+                               start = 1;
+                       }
+                       return this._wrap(d.filter(items, a[start], a[start + 1]), this);       // dojo.NodeList
+               },
+
+               /*
+               // FIXME: should this be "copyTo" and include parenting info?
+               clone: function(){
+                       // summary:
+                       //              creates node clones of each element of this list
+                       //              and returns a new list containing the clones
+               },
+               */
+
+               addContent: function(/*String||DomNode||Object||dojo.NodeList*/ content, /*String||Integer?*/ position){
+                       //      summary:
+                       //              add a node, NodeList or some HTML as a string to every item in the
+                       //              list.  Returns the original list.
+                       //      description:
+                       //              a copy of the HTML content is added to each item in the
+                       //              list, with an optional position argument. If no position
+                       //              argument is provided, the content is appended to the end of
+                       //              each item.
+                       //      content:
+                       //              DOM node, HTML in string format, a NodeList or an Object. If a DOM node or
+                       //              NodeList, the content will be cloned if the current NodeList has more than one
+                       //              element. Only the DOM nodes are cloned, no event handlers. If it is an Object,
+                       //              it should be an object with at "template" String property that has the HTML string
+                       //              to insert. If dojo.string has already been dojo.required, then dojo.string.substitute
+                       //              will be used on the "template" to generate the final HTML string. Other allowed
+                       //              properties on the object are: "parse" if the HTML
+                       //              string should be parsed for widgets (dojo.require("dojo.parser") to get that
+                       //              option to work), and "templateFunc" if a template function besides dojo.string.substitute
+                       //              should be used to transform the "template".
+                       //      position:
+                       //              can be one of:
+                       //              |       "last"||"end" (default)
+                       //              |       "first||"start"
+                       //              |       "before"
+                       //              |       "after"
+                       //              |       "replace" (replaces nodes in this NodeList with new content)
+                       //              |       "only" (removes other children of the nodes so new content is hte only child)
+                       //              or an offset in the childNodes property
+                       //      example:
+                       //              appends content to the end if the position is ommitted
+                       //      |       dojo.query("h3 > p").addContent("hey there!");
+                       //      example:
+                       //              add something to the front of each element that has a
+                       //              "thinger" property:
+                       //      |       dojo.query("[thinger]").addContent("...", "first");
+                       //      example:
+                       //              adds a header before each element of the list
+                       //      |       dojo.query(".note").addContent("<h4>NOTE:</h4>", "before");
+                       //      example:
+                       //              add a clone of a DOM node to the end of every element in
+                       //              the list, removing it from its existing parent.
+                       //      |       dojo.query(".note").addContent(dojo.byId("foo"));
+                       //  example:
+                       //      Append nodes from a templatized string.
+                       //              dojo.require("dojo.string");
+                       //              dojo.query(".note").addContent({
+                       //              template: '<b>${id}: </b><span>${name}</span>',
+                       //                      id: "user332",
+                       //              name: "Mr. Anderson"
+                       //      });
+                       //  example:
+                       //      Append nodes from a templatized string that also has widgets parsed.
+                       //      dojo.require("dojo.string");
+                       //      dojo.require("dojo.parser");
+                       //      var notes = dojo.query(".note").addContent({
+                       //              template: '<button dojoType="dijit.form.Button">${text}</button>',
+                       //              parse: true,
+                       //              text: "Send"
+                       //      });
+                       content = this._normalize(content, this[0]);
+                       for(var i = 0, node; node = this[i]; i++){
+                               this._place(content, node, position, i > 0);
+                       }
+                       return this; //dojo.NodeList
+               },
+
+               instantiate: function(/*String|Object*/ declaredClass, /*Object?*/ properties){
+                       //      summary:
+                       //              Create a new instance of a specified class, using the
+                       //              specified properties and each node in the nodeList as a
+                       //              srcNodeRef.
+                       //      example:
+                       //              Grabs all buttons in the page and converts them to diji.form.Buttons.
+                       //      |       var buttons = dojo.query("button").instantiate("dijit.form.Button", {showLabel: true});
+                       var c = d.isFunction(declaredClass) ? declaredClass : d.getObject(declaredClass);
+                       properties = properties || {};
+                       return this.forEach(function(node){
+                               new c(properties, node);
+                       });     // dojo.NodeList
+               },
+
+               at: function(/*===== index =====*/){
+                       //      summary:
+                       //              Returns a new NodeList comprised of items in this NodeList
+                       //              at the given index or indices.
+                       //
+                       //      index: Integer...
+                       //              One or more 0-based indices of items in the current
+                       //              NodeList. A negative index will start at the end of the
+                       //              list and go backwards. 
+                       //
+                       //      example:
+                       //      Shorten the list to the first, second, and third elements
+                       //      |       dojo.query("a").at(0, 1, 2).forEach(fn); 
+                       //
+                       //      example:
+                       //      Retrieve the first and last elements of a unordered list:
+                       //      |       dojo.query("ul > li").at(0, -1).forEach(cb);
+                       //
+                       //      example:
+                       //      Do something for the first element only, but end() out back to
+                       //      the original list and continue chaining:
+                       //      |       dojo.query("a").at(0).onclick(fn).end().forEach(function(n){
+                       //      |               console.log(n); // all anchors on the page. 
+                       //      |       })      
+                       //
+                       //      returns:
+                       //              dojo.NodeList
+                       var t = new this._NodeListCtor();
+                       d.forEach(arguments, function(i){ 
+                               if(i < 0){ i = this.length + i }
+                               if(this[i]){ t.push(this[i]); }
+                       }, this);
+                       return t._stash(this); // dojo.NodeList
+               }
+
+       });
+
+       nl.events = [
+               // summary: list of all DOM events used in NodeList
+               "blur", "focus", "change", "click", "error", "keydown", "keypress",
+               "keyup", "load", "mousedown", "mouseenter", "mouseleave", "mousemove",
+               "mouseout", "mouseover", "mouseup", "submit"
+       ];
+       
+       // FIXME: pseudo-doc the above automatically generated on-event functions
+
+       // syntactic sugar for DOM events
+       d.forEach(nl.events, function(evt){
+                       var _oe = "on" + evt;
+                       nlp[_oe] = function(a, b){
+                               return this.connect(_oe, a, b);
+                       }
+                               // FIXME: should these events trigger publishes?
+                               /*
+                               return (a ? this.connect(_oe, a, b) :
+                                                       this.forEach(function(n){
+                                                               // FIXME:
+                                                               //              listeners get buried by
+                                                               //              addEventListener and can't be dug back
+                                                               //              out to be triggered externally.
+                                                               // see:
+                                                               //              http://developer.mozilla.org/en/docs/DOM:element
+
+                                                               console.log(n, evt, _oe);
+
+                                                               // FIXME: need synthetic event support!
+                                                               var _e = { target: n, faux: true, type: evt };
+                                                               // dojo._event_listener._synthesizeEvent({}, { target: n, faux: true, type: evt });
+                                                               try{ n[evt](_e); }catch(e){ console.log(e); }
+                                                               try{ n[_oe](_e); }catch(e){ console.log(e); }
+                                                       })
+                               );
+                               */
+               }
+       );
+
+})();
+
+}
+
+if(!dojo._hasResource["dojo._base.query"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.query"] = true;
+if(typeof dojo != "undefined"){
+       dojo.provide("dojo._base.query");
+       
+       
+
+}
+
+/*
+       dojo.query() architectural overview:
+
+               dojo.query is a relatively full-featured CSS3 query library. It is
+               designed to take any valid CSS3 selector and return the nodes matching
+               the selector. To do this quickly, it processes queries in several
+               steps, applying caching where profitable.
+               
+               The steps (roughly in reverse order of the way they appear in the code):
+                       1.) check to see if we already have a "query dispatcher"
+                               - if so, use that with the given parameterization. Skip to step 4.
+                       2.) attempt to determine which branch to dispatch the query to:
+                               - JS (optimized DOM iteration)
+                               - native (FF3.1+, Safari 3.1+, IE 8+)
+                       3.) tokenize and convert to executable "query dispatcher"
+                               - this is where the lion's share of the complexity in the
+                                 system lies. In the DOM version, the query dispatcher is
+                                 assembled as a chain of "yes/no" test functions pertaining to
+                                 a section of a simple query statement (".blah:nth-child(odd)"
+                                 but not "div div", which is 2 simple statements). Individual
+                                 statement dispatchers are cached (to prevent re-definition)
+                                 as are entire dispatch chains (to make re-execution of the
+                                 same query fast)
+                       4.) the resulting query dispatcher is called in the passed scope
+                           (by default the top-level document)
+                               - for DOM queries, this results in a recursive, top-down
+                                 evaluation of nodes based on each simple query section
+                               - for native implementations, this may mean working around spec
+                                 bugs. So be it.
+                       5.) matched nodes are pruned to ensure they are unique (if necessary)
+*/
+
+;(function(d){
+       // define everything in a closure for compressability reasons. "d" is an
+       // alias to "dojo" (or the toolkit alias object, e.g., "acme").
+
+       ////////////////////////////////////////////////////////////////////////
+       // Toolkit aliases
+       ////////////////////////////////////////////////////////////////////////
+
+       // if you are extracing dojo.query for use in your own system, you will
+       // need to provide these methods and properties. No other porting should be
+       // necessary, save for configuring the system to use a class other than
+       // dojo.NodeList as the return instance instantiator
+       var trim =                      d.trim;
+       var each =                      d.forEach;
+       //                                      d.isIE; // float
+       //                                      d.isSafari; // float
+       //                                      d.isOpera; // float
+       //                                      d.isWebKit; // float
+       //                                      d.doc ; // document element
+       var qlc = d._NodeListCtor =             d.NodeList;
+
+       var getDoc = function(){ return d.doc; };
+       // NOTE(alex): the spec is idiotic. CSS queries should ALWAYS be case-sensitive, but nooooooo
+       var cssCaseBug = ((d.isWebKit||d.isMozilla) && ((getDoc().compatMode) == "BackCompat"));
+
+       ////////////////////////////////////////////////////////////////////////
+       // Global utilities
+       ////////////////////////////////////////////////////////////////////////
+
+
+       // on browsers that support the "children" collection we can avoid a lot of
+       // iteration on chaff (non-element) nodes.
+       // why.
+       var childNodesName = !!getDoc().firstChild["children"] ? "children" : "childNodes";
+
+       var specials = ">~+";
+
+       // global thunk to determine whether we should treat the current query as
+       // case sensitive or not. This switch is flipped by the query evaluator
+       // based on the document passed as the context to search.
+       var caseSensitive = false;
+
+       // how high?
+       var yesman = function(){ return true; };
+
+       ////////////////////////////////////////////////////////////////////////
+       // Tokenizer
+       ////////////////////////////////////////////////////////////////////////
+
+       var getQueryParts = function(query){
+               //      summary: 
+               //              state machine for query tokenization
+               //      description:
+               //              instead of using a brittle and slow regex-based CSS parser,
+               //              dojo.query implements an AST-style query representation. This
+               //              representation is only generated once per query. For example,
+               //              the same query run multiple times or under different root nodes
+               //              does not re-parse the selector expression but instead uses the
+               //              cached data structure. The state machine implemented here
+               //              terminates on the last " " (space) charachter and returns an
+               //              ordered array of query component structures (or "parts"). Each
+               //              part represents an operator or a simple CSS filtering
+               //              expression. The structure for parts is documented in the code
+               //              below.
+
+
+               // NOTE: 
+               //              this code is designed to run fast and compress well. Sacrifices
+               //              to readibility and maintainability have been made.  Your best
+               //              bet when hacking the tokenizer is to put The Donnas on *really*
+               //              loud (may we recommend their "Spend The Night" release?) and
+               //              just assume you're gonna make mistakes. Keep the unit tests
+               //              open and run them frequently. Knowing is half the battle ;-)
+               if(specials.indexOf(query.slice(-1)) >= 0){
+                       // if we end with a ">", "+", or "~", that means we're implicitly
+                       // searching all children, so make it explicit
+                       query += " * "
+               }else{
+                       // if you have not provided a terminator, one will be provided for
+                       // you...
+                       query += " ";
+               }
+
+               var ts = function(/*Integer*/ s, /*Integer*/ e){
+                       // trim and slice. 
+
+                       // take an index to start a string slice from and an end position
+                       // and return a trimmed copy of that sub-string
+                       return trim(query.slice(s, e));
+               }
+
+               // the overall data graph of the full query, as represented by queryPart objects
+               var queryParts = []; 
+
+
+               // state keeping vars
+               var inBrackets = -1, inParens = -1, inMatchFor = -1, 
+                       inPseudo = -1, inClass = -1, inId = -1, inTag = -1, 
+                       lc = "", cc = "", pStart;
+
+               // iteration vars
+               var x = 0, // index in the query
+                       ql = query.length,
+                       currentPart = null, // data structure representing the entire clause
+                       _cp = null; // the current pseudo or attr matcher
+
+               // several temporary variables are assigned to this structure durring a
+               // potential sub-expression match:
+               //              attr:
+               //                      a string representing the current full attribute match in a
+               //                      bracket expression
+               //              type:
+               //                      if there's an operator in a bracket expression, this is
+               //                      used to keep track of it
+               //              value:
+               //                      the internals of parenthetical expression for a pseudo. for
+               //                      :nth-child(2n+1), value might be "2n+1"
+
+               var endTag = function(){
+                       // called when the tokenizer hits the end of a particular tag name.
+                       // Re-sets state variables for tag matching and sets up the matcher
+                       // to handle the next type of token (tag or operator).
+                       if(inTag >= 0){
+                               var tv = (inTag == x) ? null : ts(inTag, x); // .toLowerCase();
+                               currentPart[ (specials.indexOf(tv) < 0) ? "tag" : "oper" ] = tv;
+                               inTag = -1;
+                       }
+               }
+
+               var endId = function(){
+                       // called when the tokenizer might be at the end of an ID portion of a match
+                       if(inId >= 0){
+                               currentPart.id = ts(inId, x).replace(/\\/g, "");
+                               inId = -1;
+                       }
+               }
+
+               var endClass = function(){
+                       // called when the tokenizer might be at the end of a class name
+                       // match. CSS allows for multiple classes, so we augment the
+                       // current item with another class in its list
+                       if(inClass >= 0){
+                               currentPart.classes.push(ts(inClass+1, x).replace(/\\/g, ""));
+                               inClass = -1;
+                       }
+               }
+
+               var endAll = function(){
+                       // at the end of a simple fragment, so wall off the matches
+                       endId(); endTag(); endClass();
+               }
+
+               var endPart = function(){
+                       endAll();
+                       if(inPseudo >= 0){
+                               currentPart.pseudos.push({ name: ts(inPseudo+1, x) });
+                       }
+                       // hint to the selector engine to tell it whether or not it
+                       // needs to do any iteration. Many simple selectors don't, and
+                       // we can avoid significant construction-time work by advising
+                       // the system to skip them
+                       currentPart.loops = (   
+                                       currentPart.pseudos.length || 
+                                       currentPart.attrs.length || 
+                                       currentPart.classes.length      );
+
+                       currentPart.oquery = currentPart.query = ts(pStart, x); // save the full expression as a string
+
+
+                       // otag/tag are hints to suggest to the system whether or not
+                       // it's an operator or a tag. We save a copy of otag since the
+                       // tag name is cast to upper-case in regular HTML matches. The
+                       // system has a global switch to figure out if the current
+                       // expression needs to be case sensitive or not and it will use
+                       // otag or tag accordingly
+                       currentPart.otag = currentPart.tag = (currentPart["oper"]) ? null : (currentPart.tag || "*");
+
+                       if(currentPart.tag){
+                               // if we're in a case-insensitive HTML doc, we likely want
+                               // the toUpperCase when matching on element.tagName. If we
+                               // do it here, we can skip the string op per node
+                               // comparison
+                               currentPart.tag = currentPart.tag.toUpperCase();
+                       }
+
+                       // add the part to the list
+                       if(queryParts.length && (queryParts[queryParts.length-1].oper)){
+                               // operators are always infix, so we remove them from the
+                               // list and attach them to the next match. The evaluator is
+                               // responsible for sorting out how to handle them.
+                               currentPart.infixOper = queryParts.pop();
+                               currentPart.query = currentPart.infixOper.query + " " + currentPart.query;
+                               /*
+                               console.debug(  "swapping out the infix", 
+                                                               currentPart.infixOper, 
+                                                               "and attaching it to", 
+                                                               currentPart);
+                               */
+                       }
+                       queryParts.push(currentPart);
+
+                       currentPart = null;
+               }
+
+               // iterate over the query, charachter by charachter, building up a 
+               // list of query part objects
+               for(; lc=cc, cc=query.charAt(x), x < ql; x++){
+                       //              cc: the current character in the match
+                       //              lc: the last charachter (if any)
+
+                       // someone is trying to escape something, so don't try to match any
+                       // fragments. We assume we're inside a literal.
+                       if(lc == "\\"){ continue; } 
+                       if(!currentPart){ // a part was just ended or none has yet been created
+                               // NOTE: I hate all this alloc, but it's shorter than writing tons of if's
+                               pStart = x;
+                               //      rules describe full CSS sub-expressions, like:
+                               //              #someId
+                               //              .className:first-child
+                               //      but not:
+                               //              thinger > div.howdy[type=thinger]
+                               //      the indidual components of the previous query would be
+                               //      split into 3 parts that would be represented a structure
+                               //      like:
+                               //              [
+                               //                      {
+                               //                              query: "thinger",
+                               //                              tag: "thinger",
+                               //                      },
+                               //                      {
+                               //                              query: "div.howdy[type=thinger]",
+                               //                              classes: ["howdy"],
+                               //                              infixOper: {
+                               //                                      query: ">",
+                               //                                      oper: ">",
+                               //                              }
+                               //                      },
+                               //              ]
+                               currentPart = {
+                                       query: null, // the full text of the part's rule
+                                       pseudos: [], // CSS supports multiple pseud-class matches in a single rule
+                                       attrs: [],      // CSS supports multi-attribute match, so we need an array
+                                       classes: [], // class matches may be additive, e.g.: .thinger.blah.howdy
+                                       tag: null,      // only one tag...
+                                       oper: null, // ...or operator per component. Note that these wind up being exclusive.
+                                       id: null,       // the id component of a rule
+                                       getTag: function(){
+                                               return (caseSensitive) ? this.otag : this.tag;
+                                       }
+                               };
+
+                               // if we don't have a part, we assume we're going to start at
+                               // the beginning of a match, which should be a tag name. This
+                               // might fault a little later on, but we detect that and this
+                               // iteration will still be fine.
+                               inTag = x; 
+                       }
+
+                       if(inBrackets >= 0){
+                               // look for a the close first
+                               if(cc == "]"){ // if we're in a [...] clause and we end, do assignment
+                                       if(!_cp.attr){
+                                               // no attribute match was previously begun, so we
+                                               // assume this is an attribute existance match in the
+                                               // form of [someAttributeName]
+                                               _cp.attr = ts(inBrackets+1, x);
+                                       }else{
+                                               // we had an attribute already, so we know that we're
+                                               // matching some sort of value, as in [attrName=howdy]
+                                               _cp.matchFor = ts((inMatchFor||inBrackets+1), x);
+                                       }
+                                       var cmf = _cp.matchFor;
+                                       if(cmf){
+                                               // try to strip quotes from the matchFor value. We want
+                                               // [attrName=howdy] to match the same 
+                                               //      as [attrName = 'howdy' ]
+                                               if(     (cmf.charAt(0) == '"') || (cmf.charAt(0)  == "'") ){
+                                                       _cp.matchFor = cmf.slice(1, -1);
+                                               }
+                                       }
+                                       // end the attribute by adding it to the list of attributes. 
+                                       currentPart.attrs.push(_cp);
+                                       _cp = null; // necessary?
+                                       inBrackets = inMatchFor = -1;
+                               }else if(cc == "="){
+                                       // if the last char was an operator prefix, make sure we
+                                       // record it along with the "=" operator. 
+                                       var addToCc = ("|~^$*".indexOf(lc) >=0 ) ? lc : "";
+                                       _cp.type = addToCc+cc;
+                                       _cp.attr = ts(inBrackets+1, x-addToCc.length);
+                                       inMatchFor = x+1;
+                               }
+                               // now look for other clause parts
+                       }else if(inParens >= 0){
+                               // if we're in a parenthetical expression, we need to figure
+                               // out if it's attached to a pseduo-selector rule like
+                               // :nth-child(1)
+                               if(cc == ")"){
+                                       if(inPseudo >= 0){
+                                               _cp.value = ts(inParens+1, x);
+                                       }
+                                       inPseudo = inParens = -1;
+                               }
+                       }else if(cc == "#"){
+                               // start of an ID match
+                               endAll();
+                               inId = x+1;
+                       }else if(cc == "."){
+                               // start of a class match
+                               endAll();
+                               inClass = x;
+                       }else if(cc == ":"){
+                               // start of a pseudo-selector match
+                               endAll();
+                               inPseudo = x;
+                       }else if(cc == "["){
+                               // start of an attribute match. 
+                               endAll();
+                               inBrackets = x;
+                               // provide a new structure for the attribute match to fill-in
+                               _cp = {
+                                       /*=====
+                                       attr: null, type: null, matchFor: null
+                                       =====*/
+                               };
+                       }else if(cc == "("){
+                               // we really only care if we've entered a parenthetical
+                               // expression if we're already inside a pseudo-selector match
+                               if(inPseudo >= 0){
+                                       // provide a new structure for the pseudo match to fill-in
+                                       _cp = { 
+                                               name: ts(inPseudo+1, x), 
+                                               value: null
+                                       }
+                                       currentPart.pseudos.push(_cp);
+                               }
+                               inParens = x;
+                       }else if(
+                               (cc == " ") && 
+                               // if it's a space char and the last char is too, consume the
+                               // current one without doing more work
+                               (lc != cc)
+                       ){
+                               endPart();
+                       }
+               }
+               return queryParts;
+       };
+       
+
+       ////////////////////////////////////////////////////////////////////////
+       // DOM query infrastructure
+       ////////////////////////////////////////////////////////////////////////
+
+       var agree = function(first, second){
+               // the basic building block of the yes/no chaining system. agree(f1,
+               // f2) generates a new function which returns the boolean results of
+               // both of the passed functions to a single logical-anded result. If
+               // either are not possed, the other is used exclusively.
+               if(!first){ return second; }
+               if(!second){ return first; }
+
+               return function(){
+                       return first.apply(window, arguments) && second.apply(window, arguments);
+               }
+       };
+
+       var getArr = function(i, arr){
+               // helps us avoid array alloc when we don't need it
+               var r = arr||[]; // FIXME: should this be 'new d._NodeListCtor()' ?
+               if(i){ r.push(i); }
+               return r;
+       };
+
+       var _isElement = function(n){ return (1 == n.nodeType); };
+
+       // FIXME: need to coalesce _getAttr with defaultGetter
+       var blank = "";
+       var _getAttr = function(elem, attr){
+               if(!elem){ return blank; }
+               if(attr == "class"){
+                       return elem.className || blank;
+               }
+               if(attr == "for"){
+                       return elem.htmlFor || blank;
+               }
+               if(attr == "style"){
+                       return elem.style.cssText || blank;
+               }
+               return (caseSensitive ? elem.getAttribute(attr) : elem.getAttribute(attr, 2)) || blank;
+       };
+
+       var attrs = {
+               "*=": function(attr, value){
+                       return function(elem){
+                               // E[foo*="bar"]
+                               //              an E element whose "foo" attribute value contains
+                               //              the substring "bar"
+                               return (_getAttr(elem, attr).indexOf(value)>=0);
+                       }
+               },
+               "^=": function(attr, value){
+                       // E[foo^="bar"]
+                       //              an E element whose "foo" attribute value begins exactly
+                       //              with the string "bar"
+                       return function(elem){
+                               return (_getAttr(elem, attr).indexOf(value)==0);
+                       }
+               },
+               "$=": function(attr, value){
+                       // E[foo$="bar"]        
+                       //              an E element whose "foo" attribute value ends exactly
+                       //              with the string "bar"
+                       var tval = " "+value;
+                       return function(elem){
+                               var ea = " "+_getAttr(elem, attr);
+                               return (ea.lastIndexOf(value)==(ea.length-value.length));
+                       }
+               },
+               "~=": function(attr, value){
+                       // E[foo~="bar"]        
+                       //              an E element whose "foo" attribute value is a list of
+                       //              space-separated values, one of which is exactly equal
+                       //              to "bar"
+
+                       // return "[contains(concat(' ',@"+attr+",' '), ' "+ value +" ')]";
+                       var tval = " "+value+" ";
+                       return function(elem){
+                               var ea = " "+_getAttr(elem, attr)+" ";
+                               return (ea.indexOf(tval)>=0);
+                       }
+               },
+               "|=": function(attr, value){
+                       // E[hreflang|="en"]
+                       //              an E element whose "hreflang" attribute has a
+                       //              hyphen-separated list of values beginning (from the
+                       //              left) with "en"
+                       var valueDash = " "+value+"-";
+                       return function(elem){
+                               var ea = " "+_getAttr(elem, attr);
+                               return (
+                                       (ea == value) ||
+                                       (ea.indexOf(valueDash)==0)
+                               );
+                       }
+               },
+               "=": function(attr, value){
+                       return function(elem){
+                               return (_getAttr(elem, attr) == value);
+                       }
+               }
+       };
+
+       // avoid testing for node type if we can. Defining this in the negative
+       // here to avoid negation in the fast path.
+       var _noNES = (typeof getDoc().firstChild.nextElementSibling == "undefined");
+       var _ns = !_noNES ? "nextElementSibling" : "nextSibling";
+       var _ps = !_noNES ? "previousElementSibling" : "previousSibling";
+       var _simpleNodeTest = (_noNES ? _isElement : yesman);
+
+       var _lookLeft = function(node){
+               // look left
+               while(node = node[_ps]){
+                       if(_simpleNodeTest(node)){ return false; }
+               }
+               return true;
+       };
+
+       var _lookRight = function(node){
+               // look right
+               while(node = node[_ns]){
+                       if(_simpleNodeTest(node)){ return false; }
+               }
+               return true;
+       };
+
+       var getNodeIndex = function(node){
+               var root = node.parentNode;
+               var i = 0,
+                       tret = root[childNodesName],
+                       ci = (node["_i"]||-1),
+                       cl = (root["_l"]||-1);
+
+               if(!tret){ return -1; }
+               var l = tret.length;
+
+               // we calcuate the parent length as a cheap way to invalidate the
+               // cache. It's not 100% accurate, but it's much more honest than what
+               // other libraries do
+               if( cl == l && ci >= 0 && cl >= 0 ){
+                       // if it's legit, tag and release
+                       return ci;
+               }
+
+               // else re-key things
+               root["_l"] = l;
+               ci = -1;
+               for(var te = root["firstElementChild"]||root["firstChild"]; te; te = te[_ns]){
+                       if(_simpleNodeTest(te)){ 
+                               te["_i"] = ++i;
+                               if(node === te){ 
+                                       // NOTE:
+                                       //      shortcuting the return at this step in indexing works
+                                       //      very well for benchmarking but we avoid it here since
+                                       //      it leads to potential O(n^2) behavior in sequential
+                                       //      getNodexIndex operations on a previously un-indexed
+                                       //      parent. We may revisit this at a later time, but for
+                                       //      now we just want to get the right answer more often
+                                       //      than not.
+                                       ci = i;
+                               }
+                       }
+               }
+               return ci;
+       };
+
+       var isEven = function(elem){
+               return !((getNodeIndex(elem)) % 2);
+       };
+
+       var isOdd = function(elem){
+               return ((getNodeIndex(elem)) % 2);
+       };
+
+       var pseudos = {
+               "checked": function(name, condition){
+                       return function(elem){
+                               return !!("checked" in elem ? elem.checked : elem.selected);
+                       }
+               },
+               "first-child": function(){ return _lookLeft; },
+               "last-child": function(){ return _lookRight; },
+               "only-child": function(name, condition){
+                       return function(node){ 
+                               if(!_lookLeft(node)){ return false; }
+                               if(!_lookRight(node)){ return false; }
+                               return true;
+                       };
+               },
+               "empty": function(name, condition){
+                       return function(elem){
+                               // DomQuery and jQuery get this wrong, oddly enough.
+                               // The CSS 3 selectors spec is pretty explicit about it, too.
+                               var cn = elem.childNodes;
+                               var cnl = elem.childNodes.length;
+                               // if(!cnl){ return true; }
+                               for(var x=cnl-1; x >= 0; x--){
+                                       var nt = cn[x].nodeType;
+                                       if((nt === 1)||(nt == 3)){ return false; }
+                               }
+                               return true;
+                       }
+               },
+               "contains": function(name, condition){
+                       var cz = condition.charAt(0);
+                       if( cz == '"' || cz == "'" ){ //remove quote
+                               condition = condition.slice(1, -1);
+                       }
+                       return function(elem){
+                               return (elem.innerHTML.indexOf(condition) >= 0);
+                       }
+               },
+               "not": function(name, condition){
+                       var p = getQueryParts(condition)[0];
+                       var ignores = { el: 1 }; 
+                       if(p.tag != "*"){
+                               ignores.tag = 1;
+                       }
+                       if(!p.classes.length){
+                               ignores.classes = 1;
+                       }
+                       var ntf = getSimpleFilterFunc(p, ignores);
+                       return function(elem){
+                               return (!ntf(elem));
+                       }
+               },
+               "nth-child": function(name, condition){
+                       var pi = parseInt;
+                       // avoid re-defining function objects if we can
+                       if(condition == "odd"){
+                               return isOdd;
+                       }else if(condition == "even"){
+                               return isEven;
+                       }
+                       // FIXME: can we shorten this?
+                       if(condition.indexOf("n") != -1){
+                               var tparts = condition.split("n", 2);
+                               var pred = tparts[0] ? ((tparts[0] == '-') ? -1 : pi(tparts[0])) : 1;
+                               var idx = tparts[1] ? pi(tparts[1]) : 0;
+                               var lb = 0, ub = -1;
+                               if(pred > 0){
+                                       if(idx < 0){
+                                               idx = (idx % pred) && (pred + (idx % pred));
+                                       }else if(idx>0){
+                                               if(idx >= pred){
+                                                       lb = idx - idx % pred;
+                                               }
+                                               idx = idx % pred;
+                                       }
+                               }else if(pred<0){
+                                       pred *= -1;
+                                       // idx has to be greater than 0 when pred is negative;
+                                       // shall we throw an error here?
+                                       if(idx > 0){
+                                               ub = idx;
+                                               idx = idx % pred;
+                                       }
+                               }
+                               if(pred > 0){
+                                       return function(elem){
+                                               var i = getNodeIndex(elem);
+                                               return (i>=lb) && (ub<0 || i<=ub) && ((i % pred) == idx);
+                                       }
+                               }else{
+                                       condition = idx;
+                               }
+                       }
+                       var ncount = pi(condition);
+                       return function(elem){
+                               return (getNodeIndex(elem) == ncount);
+                       }
+               }
+       };
+
+       var defaultGetter = (d.isIE) ? function(cond){
+               var clc = cond.toLowerCase();
+               if(clc == "class"){ cond = "className"; }
+               return function(elem){
+                       return (caseSensitive ? elem.getAttribute(cond) : elem[cond]||elem[clc]);
+               }
+       } : function(cond){
+               return function(elem){
+                       return (elem && elem.getAttribute && elem.hasAttribute(cond));
+               }
+       };
+
+       var getSimpleFilterFunc = function(query, ignores){
+               // generates a node tester function based on the passed query part. The
+               // query part is one of the structures generatd by the query parser
+               // when it creates the query AST. The "ignores" object specifies which
+               // (if any) tests to skip, allowing the system to avoid duplicating
+               // work where it may have already been taken into account by other
+               // factors such as how the nodes to test were fetched in the first
+               // place
+               if(!query){ return yesman; }
+               ignores = ignores||{};
+
+               var ff = null;
+
+               if(!("el" in ignores)){
+                       ff = agree(ff, _isElement);
+               }
+
+               if(!("tag" in ignores)){
+                       if(query.tag != "*"){
+                               ff = agree(ff, function(elem){
+                                       return (elem && (elem.tagName == query.getTag()));
+                               });
+                       }
+               }
+
+               if(!("classes" in ignores)){
+                       each(query.classes, function(cname, idx, arr){
+                               // get the class name
+                               /*
+                               var isWildcard = cname.charAt(cname.length-1) == "*";
+                               if(isWildcard){
+                                       cname = cname.substr(0, cname.length-1);
+                               }
+                               // I dislike the regex thing, even if memozied in a cache, but it's VERY short
+                               var re = new RegExp("(?:^|\\s)" + cname + (isWildcard ? ".*" : "") + "(?:\\s|$)");
+                               */
+                               var re = new RegExp("(?:^|\\s)" + cname + "(?:\\s|$)");
+                               ff = agree(ff, function(elem){
+                                       return re.test(elem.className);
+                               });
+                               ff.count = idx;
+                       });
+               }
+
+               if(!("pseudos" in ignores)){
+                       each(query.pseudos, function(pseudo){
+                               var pn = pseudo.name;
+                               if(pseudos[pn]){
+                                       ff = agree(ff, pseudos[pn](pn, pseudo.value));
+                               }
+                       });
+               }
+
+               if(!("attrs" in ignores)){
+                       each(query.attrs, function(attr){
+                               var matcher;
+                               var a = attr.attr;
+                               // type, attr, matchFor
+                               if(attr.type && attrs[attr.type]){
+                                       matcher = attrs[attr.type](a, attr.matchFor);
+                               }else if(a.length){
+                                       matcher = defaultGetter(a);
+                               }
+                               if(matcher){
+                                       ff = agree(ff, matcher);
+                               }
+                       });
+               }
+
+               if(!("id" in ignores)){
+                       if(query.id){
+                               ff = agree(ff, function(elem){ 
+                                       return (!!elem && (elem.id == query.id));
+                               });
+                       }
+               }
+
+               if(!ff){
+                       if(!("default" in ignores)){
+                               ff = yesman; 
+                       }
+               }
+               return ff;
+       };
+
+       var _nextSibling = function(filterFunc){
+               return function(node, ret, bag){
+                       while(node = node[_ns]){
+                               if(_noNES && (!_isElement(node))){ continue; }
+                               if(
+                                       (!bag || _isUnique(node, bag)) &&
+                                       filterFunc(node)
+                               ){
+                                       ret.push(node);
+                               }
+                               break;
+                       }
+                       return ret;
+               }
+       };
+
+       var _nextSiblings = function(filterFunc){
+               return function(root, ret, bag){
+                       var te = root[_ns];
+                       while(te){
+                               if(_simpleNodeTest(te)){
+                                       if(bag && !_isUnique(te, bag)){
+                                               break;
+                                       }
+                                       if(filterFunc(te)){
+                                               ret.push(te);
+                                       }
+                               }
+                               te = te[_ns];
+                       }
+                       return ret;
+               }
+       };
+
+       // get an array of child *elements*, skipping text and comment nodes
+       var _childElements = function(filterFunc){
+               filterFunc = filterFunc||yesman;
+               return function(root, ret, bag){
+                       // get an array of child elements, skipping text and comment nodes
+                       var te, x = 0, tret = root[childNodesName];
+                       while(te = tret[x++]){
+                               if(
+                                       _simpleNodeTest(te) &&
+                                       (!bag || _isUnique(te, bag)) &&
+                                       (filterFunc(te, x))
+                               ){ 
+                                       ret.push(te);
+                               }
+                       }
+                       return ret;
+               };
+       };
+       
+       /*
+       // thanks, Dean!
+       var itemIsAfterRoot = d.isIE ? function(item, root){
+               return (item.sourceIndex > root.sourceIndex);
+       } : function(item, root){
+               return (item.compareDocumentPosition(root) == 2);
+       };
+       */
+
+       // test to see if node is below root
+       var _isDescendant = function(node, root){
+               var pn = node.parentNode;
+               while(pn){
+                       if(pn == root){
+                               break;
+                       }
+                       pn = pn.parentNode;
+               }
+               return !!pn;
+       };
+
+       var _getElementsFuncCache = {};
+
+       var getElementsFunc = function(query){
+               var retFunc = _getElementsFuncCache[query.query];
+               // if we've got a cached dispatcher, just use that
+               if(retFunc){ return retFunc; }
+               // else, generate a new on
+
+               // NOTE:
+               //              this function returns a function that searches for nodes and
+               //              filters them.  The search may be specialized by infix operators
+               //              (">", "~", or "+") else it will default to searching all
+               //              descendants (the " " selector). Once a group of children is
+               //              founde, a test function is applied to weed out the ones we
+               //              don't want. Many common cases can be fast-pathed. We spend a
+               //              lot of cycles to create a dispatcher that doesn't do more work
+               //              than necessary at any point since, unlike this function, the
+               //              dispatchers will be called every time. The logic of generating
+               //              efficient dispatchers looks like this in pseudo code:
+               //
+               //              # if it's a purely descendant query (no ">", "+", or "~" modifiers)
+               //              if infixOperator == " ":
+               //                      if only(id):
+               //                              return def(root):
+               //                                      return d.byId(id, root);
+               //
+               //                      elif id:
+               //                              return def(root):
+               //                                      return filter(d.byId(id, root));
+               //
+               //                      elif cssClass && getElementsByClassName:
+               //                              return def(root):
+               //                                      return filter(root.getElementsByClassName(cssClass));
+               //
+               //                      elif only(tag):
+               //                              return def(root):
+               //                                      return root.getElementsByTagName(tagName);
+               //
+               //                      else:
+               //                              # search by tag name, then filter
+               //                              return def(root):
+               //                                      return filter(root.getElementsByTagName(tagName||"*"));
+               //
+               //              elif infixOperator == ">":
+               //                      # search direct children
+               //                      return def(root):
+               //                              return filter(root.children);
+               //
+               //              elif infixOperator == "+":
+               //                      # search next sibling
+               //                      return def(root):
+               //                              return filter(root.nextElementSibling);
+               //
+               //              elif infixOperator == "~":
+               //                      # search rightward siblings
+               //                      return def(root):
+               //                              return filter(nextSiblings(root));
+
+               var io = query.infixOper;
+               var oper = (io ? io.oper : "");
+               // the default filter func which tests for all conditions in the query
+               // part. This is potentially inefficient, so some optimized paths may
+               // re-define it to test fewer things.
+               var filterFunc = getSimpleFilterFunc(query, { el: 1 });
+               var qt = query.tag;
+               var wildcardTag = ("*" == qt);
+               var ecs = getDoc()["getElementsByClassName"]; 
+
+               if(!oper){
+                       // if there's no infix operator, then it's a descendant query. ID
+                       // and "elements by class name" variants can be accelerated so we
+                       // call them out explicitly:
+                       if(query.id){
+                               // testing shows that the overhead of yesman() is acceptable
+                               // and can save us some bytes vs. re-defining the function
+                               // everywhere.
+                               filterFunc = (!query.loops && wildcardTag) ? 
+                                       yesman : 
+                                       getSimpleFilterFunc(query, { el: 1, id: 1 });
+
+                               retFunc = function(root, arr){
+                                       var te = d.byId(query.id, (root.ownerDocument||root));
+                                       if(!te || !filterFunc(te)){ return; }
+                                       if(9 == root.nodeType){ // if root's a doc, we just return directly
+                                               return getArr(te, arr);
+                                       }else{ // otherwise check ancestry
+                                               if(_isDescendant(te, root)){
+                                                       return getArr(te, arr);
+                                               }
+                                       }
+                               }
+                       }else if(
+                               ecs && 
+                               // isAlien check. Workaround for Prototype.js being totally evil/dumb.
+                               /\{\s*\[native code\]\s*\}/.test(String(ecs)) && 
+                               query.classes.length &&
+                               !cssCaseBug
+                       ){
+                               // it's a class-based query and we've got a fast way to run it.
+
+                               // ignore class and ID filters since we will have handled both
+                               filterFunc = getSimpleFilterFunc(query, { el: 1, classes: 1, id: 1 });
+                               var classesString = query.classes.join(" ");
+                               retFunc = function(root, arr, bag){
+                                       var ret = getArr(0, arr), te, x=0;
+                                       var tret = root.getElementsByClassName(classesString);
+                                       while((te = tret[x++])){
+                                               if(filterFunc(te, root) && _isUnique(te, bag)){
+                                                       ret.push(te);
+                                               }
+                                       }
+                                       return ret;
+                               };
+
+                       }else if(!wildcardTag && !query.loops){
+                               // it's tag only. Fast-path it.
+                               retFunc = function(root, arr, bag){
+                                       var ret = getArr(0, arr), te, x=0;
+                                       var tret = root.getElementsByTagName(query.getTag());
+                                       while((te = tret[x++])){
+                                               if(_isUnique(te, bag)){
+                                                       ret.push(te);
+                                               }
+                                       }
+                                       return ret;
+                               };
+                       }else{
+                               // the common case:
+                               //              a descendant selector without a fast path. By now it's got
+                               //              to have a tag selector, even if it's just "*" so we query
+                               //              by that and filter
+                               filterFunc = getSimpleFilterFunc(query, { el: 1, tag: 1, id: 1 });
+                               retFunc = function(root, arr, bag){
+                                       var ret = getArr(0, arr), te, x=0;
+                                       // we use getTag() to avoid case sensitivity issues
+                                       var tret = root.getElementsByTagName(query.getTag());
+                                       while((te = tret[x++])){
+                                               if(filterFunc(te, root) && _isUnique(te, bag)){
+                                                       ret.push(te);
+                                               }
+                                       }
+                                       return ret;
+                               };
+                       }
+               }else{
+                       // the query is scoped in some way. Instead of querying by tag we
+                       // use some other collection to find candidate nodes
+                       var skipFilters = { el: 1 };
+                       if(wildcardTag){
+                               skipFilters.tag = 1;
+                       }
+                       filterFunc = getSimpleFilterFunc(query, skipFilters);
+                       if("+" == oper){
+                               retFunc = _nextSibling(filterFunc);
+                       }else if("~" == oper){
+                               retFunc = _nextSiblings(filterFunc);
+                       }else if(">" == oper){
+                               retFunc = _childElements(filterFunc);
+                       }
+               }
+               // cache it and return
+               return _getElementsFuncCache[query.query] = retFunc;
+       };
+
+       var filterDown = function(root, queryParts){
+               // NOTE:
+               //              this is the guts of the DOM query system. It takes a list of
+               //              parsed query parts and a root and finds children which match
+               //              the selector represented by the parts
+               var candidates = getArr(root), qp, x, te, qpl = queryParts.length, bag, ret;
+
+               for(var i = 0; i < qpl; i++){
+                       ret = [];
+                       qp = queryParts[i];
+                       x = candidates.length - 1;
+                       if(x > 0){
+                               // if we have more than one root at this level, provide a new
+                               // hash to use for checking group membership but tell the
+                               // system not to post-filter us since we will already have been
+                               // gauranteed to be unique
+                               bag = {};
+                               ret.nozip = true;
+                       }
+                       var gef = getElementsFunc(qp);
+                       for(var j = 0; (te = candidates[j]); j++){
+                               // for every root, get the elements that match the descendant
+                               // selector, adding them to the "ret" array and filtering them
+                               // via membership in this level's bag. If there are more query
+                               // parts, then this level's return will be used as the next
+                               // level's candidates
+                               gef(te, ret, bag);
+                       }
+                       if(!ret.length){ break; }
+                       candidates = ret;
+               }
+               return ret;
+       };
+
+       ////////////////////////////////////////////////////////////////////////
+       // the query runner
+       ////////////////////////////////////////////////////////////////////////
+
+       // these are the primary caches for full-query results. The query
+       // dispatcher functions are generated then stored here for hash lookup in
+       // the future
+       var _queryFuncCacheDOM = {},
+               _queryFuncCacheQSA = {};
+
+       // this is the second level of spliting, from full-length queries (e.g.,
+       // "div.foo .bar") into simple query expressions (e.g., ["div.foo",
+       // ".bar"])
+       var getStepQueryFunc = function(query){
+               var qparts = getQueryParts(trim(query));
+
+               // if it's trivial, avoid iteration and zipping costs
+               if(qparts.length == 1){
+                       // we optimize this case here to prevent dispatch further down the
+                       // chain, potentially slowing things down. We could more elegantly
+                       // handle this in filterDown(), but it's slower for simple things
+                       // that need to be fast (e.g., "#someId").
+                       var tef = getElementsFunc(qparts[0]);
+                       return function(root){
+                               var r = tef(root, new qlc());
+                               if(r){ r.nozip = true; }
+                               return r;
+                       }
+               }
+
+               // otherwise, break it up and return a runner that iterates over the parts recursively
+               return function(root){
+                       return filterDown(root, qparts);
+               }
+       };
+
+       // NOTES:
+       //      * we can't trust QSA for anything but document-rooted queries, so
+       //        caching is split into DOM query evaluators and QSA query evaluators
+       //      * caching query results is dirty and leak-prone (or, at a minimum,
+       //        prone to unbounded growth). Other toolkits may go this route, but
+       //        they totally destroy their own ability to manage their memory
+       //        footprint. If we implement it, it should only ever be with a fixed
+       //        total element reference # limit and an LRU-style algorithm since JS
+       //        has no weakref support. Caching compiled query evaluators is also
+       //        potentially problematic, but even on large documents the size of the
+       //        query evaluators is often < 100 function objects per evaluator (and
+       //        LRU can be applied if it's ever shown to be an issue).
+       //      * since IE's QSA support is currently only for HTML documents and even
+       //        then only in IE 8's "standards mode", we have to detect our dispatch
+       //        route at query time and keep 2 separate caches. Ugg.
+
+       // we need to determine if we think we can run a given query via
+       // querySelectorAll or if we'll need to fall back on DOM queries to get
+       // there. We need a lot of information about the environment and the query
+       // to make the determiniation (e.g. does it support QSA, does the query in
+       // question work in the native QSA impl, etc.).
+       var nua = navigator.userAgent;
+       // some versions of Safari provided QSA, but it was buggy and crash-prone.
+       // We need te detect the right "internal" webkit version to make this work.
+       var wk = "WebKit/";
+       var is525 = (
+               d.isWebKit && 
+               (nua.indexOf(wk) > 0) && 
+               (parseFloat(nua.split(wk)[1]) > 528)
+       );
+
+       // IE QSA queries may incorrectly include comment nodes, so we throw the
+       // zipping function into "remove" comments mode instead of the normal "skip
+       // it" which every other QSA-clued browser enjoys
+       var noZip = d.isIE ? "commentStrip" : "nozip";
+
+       var qsa = "querySelectorAll";
+       var qsaAvail = (
+               !!getDoc()[qsa] && 
+               // see #5832
+               (!d.isSafari || (d.isSafari > 3.1) || is525 )
+       );
+
+       //Don't bother with n+3 type of matches, IE complains if we modify those.
+       var infixSpaceRe = /n\+\d|([^ ])?([>~+])([^ =])?/g;
+       var infixSpaceFunc = function(match, pre, ch, post) {
+               return ch ? (pre ? pre + " " : "") + ch + (post ? " " + post : "") : /*n+3*/ match;
+       };
+
+       var getQueryFunc = function(query, forceDOM){
+               //Normalize query. The CSS3 selectors spec allows for omitting spaces around
+               //infix operators, >, ~ and +
+               //Do the work here since detection for spaces is used as a simple "not use QSA"
+               //test below.
+               query = query.replace(infixSpaceRe, infixSpaceFunc);
+
+               if(qsaAvail){
+                       // if we've got a cached variant and we think we can do it, run it!
+                       var qsaCached = _queryFuncCacheQSA[query];
+                       if(qsaCached && !forceDOM){ return qsaCached; }
+               }
+
+               // else if we've got a DOM cached variant, assume that we already know
+               // all we need to and use it
+               var domCached = _queryFuncCacheDOM[query];
+               if(domCached){ return domCached; }
+
+               // TODO: 
+               //              today we're caching DOM and QSA branches separately so we
+               //              recalc useQSA every time. If we had a way to tag root+query
+               //              efficiently, we'd be in good shape to do a global cache.
+
+               var qcz = query.charAt(0);
+               var nospace = (-1 == query.indexOf(" "));
+
+               // byId searches are wicked fast compared to QSA, even when filtering
+               // is required
+               if( (query.indexOf("#") >= 0) && (nospace) ){
+                       forceDOM = true;
+               }
+
+               var useQSA = ( 
+                       qsaAvail && (!forceDOM) &&
+                       // as per CSS 3, we can't currently start w/ combinator:
+                       //              http://www.w3.org/TR/css3-selectors/#w3cselgrammar
+                       (specials.indexOf(qcz) == -1) && 
+                       // IE's QSA impl sucks on pseudos
+                       (!d.isIE || (query.indexOf(":") == -1)) &&
+
+                       (!(cssCaseBug && (query.indexOf(".") >= 0))) &&
+
+                       // FIXME:
+                       //              need to tighten up browser rules on ":contains" and "|=" to
+                       //              figure out which aren't good
+                       //              Latest webkit (around 531.21.8) does not seem to do well with :checked on option
+                       //              elements, even though according to spec, selected options should
+                       //              match :checked. So go nonQSA for it:
+                       //              http://bugs.dojotoolkit.org/ticket/5179
+                       (query.indexOf(":contains") == -1) && (query.indexOf(":checked") == -1) && 
+                       (query.indexOf("|=") == -1) // some browsers don't grok it
+               );
+
+               // TODO: 
+               //              if we've got a descendant query (e.g., "> .thinger" instead of
+               //              just ".thinger") in a QSA-able doc, but are passed a child as a
+               //              root, it should be possible to give the item a synthetic ID and
+               //              trivially rewrite the query to the form "#synid > .thinger" to
+               //              use the QSA branch
+
+
+               if(useQSA){
+                       var tq = (specials.indexOf(query.charAt(query.length-1)) >= 0) ? 
+                                               (query + " *") : query;
+                       return _queryFuncCacheQSA[query] = function(root){
+                               try{
+                                       // the QSA system contains an egregious spec bug which
+                                       // limits us, effectively, to only running QSA queries over
+                                       // entire documents.  See:
+                                       //              http://ejohn.org/blog/thoughts-on-queryselectorall/
+                                       //      despite this, we can also handle QSA runs on simple
+                                       //      selectors, but we don't want detection to be expensive
+                                       //      so we're just checking for the presence of a space char
+                                       //      right now. Not elegant, but it's cheaper than running
+                                       //      the query parser when we might not need to
+                                       if(!((9 == root.nodeType) || nospace)){ throw ""; }
+                                       var r = root[qsa](tq);
+                                       // skip expensive duplication checks and just wrap in a NodeList
+                                       r[noZip] = true;
+                                       return r;
+                               }catch(e){
+                                       // else run the DOM branch on this query, ensuring that we
+                                       // default that way in the future
+                                       return getQueryFunc(query, true)(root);
+                               }
+                       }
+               }else{
+                       // DOM branch
+                       var parts = query.split(/\s*,\s*/);
+                       return _queryFuncCacheDOM[query] = ((parts.length < 2) ? 
+                               // if not a compound query (e.g., ".foo, .bar"), cache and return a dispatcher
+                               getStepQueryFunc(query) : 
+                               // if it *is* a complex query, break it up into its
+                               // constituent parts and return a dispatcher that will
+                               // merge the parts when run
+                               function(root){
+                                       var pindex = 0, // avoid array alloc for every invocation
+                                               ret = [],
+                                               tp;
+                                       while((tp = parts[pindex++])){
+                                               ret = ret.concat(getStepQueryFunc(tp)(root));
+                                       }
+                                       return ret;
+                               }
+                       );
+               }
+       };
+
+       var _zipIdx = 0;
+
+       // NOTE:
+       //              this function is Moo inspired, but our own impl to deal correctly
+       //              with XML in IE
+       var _nodeUID = d.isIE ? function(node){
+               if(caseSensitive){
+                       // XML docs don't have uniqueID on their nodes
+                       return (node.getAttribute("_uid") || node.setAttribute("_uid", ++_zipIdx) || _zipIdx);
+
+               }else{
+                       return node.uniqueID;
+               }
+       } : 
+       function(node){
+               return (node._uid || (node._uid = ++_zipIdx));
+       };
+
+       // determine if a node in is unique in a "bag". In this case we don't want
+       // to flatten a list of unique items, but rather just tell if the item in
+       // question is already in the bag. Normally we'd just use hash lookup to do
+       // this for us but IE's DOM is busted so we can't really count on that. On
+       // the upside, it gives us a built in unique ID function. 
+       var _isUnique = function(node, bag){
+               if(!bag){ return 1; }
+               var id = _nodeUID(node);
+               if(!bag[id]){ return bag[id] = 1; }
+               return 0;
+       };
+
+       // attempt to efficiently determine if an item in a list is a dupe,
+       // returning a list of "uniques", hopefully in doucment order
+       var _zipIdxName = "_zipIdx";
+       var _zip = function(arr){
+               if(arr && arr.nozip){ 
+                       return (qlc._wrap) ? qlc._wrap(arr) : arr;
+               }
+               // var ret = new d._NodeListCtor();
+               var ret = new qlc();
+               if(!arr || !arr.length){ return ret; }
+               if(arr[0]){
+                       ret.push(arr[0]);
+               }
+               if(arr.length < 2){ return ret; }
+
+               _zipIdx++;
+               
+               // we have to fork here for IE and XML docs because we can't set
+               // expandos on their nodes (apparently). *sigh*
+               if(d.isIE && caseSensitive){
+                       var szidx = _zipIdx+"";
+                       arr[0].setAttribute(_zipIdxName, szidx);
+                       for(var x = 1, te; te = arr[x]; x++){
+                               if(arr[x].getAttribute(_zipIdxName) != szidx){ 
+                                       ret.push(te);
+                               }
+                               te.setAttribute(_zipIdxName, szidx);
+                       }
+               }else if(d.isIE && arr.commentStrip){
+                       try{
+                               for(var x = 1, te; te = arr[x]; x++){
+                                       if(_isElement(te)){ 
+                                               ret.push(te);
+                                       }
+                               }
+                       }catch(e){ /* squelch */ }
+               }else{
+                       if(arr[0]){ arr[0][_zipIdxName] = _zipIdx; }
+                       for(var x = 1, te; te = arr[x]; x++){
+                               if(arr[x][_zipIdxName] != _zipIdx){ 
+                                       ret.push(te);
+                               }
+                               te[_zipIdxName] = _zipIdx;
+                       }
+               }
+               return ret;
+       };
+
+       // the main executor
+       d.query = function(/*String*/ query, /*String|DOMNode?*/ root){
+               //      summary:
+               //              Returns nodes which match the given CSS3 selector, searching the
+               //              entire document by default but optionally taking a node to scope
+               //              the search by. Returns an instance of dojo.NodeList.
+               //      description:
+               //              dojo.query() is the swiss army knife of DOM node manipulation in
+               //              Dojo. Much like Prototype's "$$" (bling-bling) function or JQuery's
+               //              "$" function, dojo.query provides robust, high-performance
+               //              CSS-based node selector support with the option of scoping searches
+               //              to a particular sub-tree of a document.
+               //
+               //              Supported Selectors:
+               //              --------------------
+               //
+               //              dojo.query() supports a rich set of CSS3 selectors, including:
+               //
+               //                      * class selectors (e.g., `.foo`)
+               //                      * node type selectors like `span`
+               //                      * ` ` descendant selectors
+               //                      * `>` child element selectors 
+               //                      * `#foo` style ID selectors
+               //                      * `*` universal selector
+               //                      * `~`, the immediately preceeded-by sibling selector
+               //                      * `+`, the preceeded-by sibling selector
+               //                      * attribute queries:
+               //                      |       * `[foo]` attribute presence selector
+               //                      |       * `[foo='bar']` attribute value exact match
+               //                      |       * `[foo~='bar']` attribute value list item match
+               //                      |       * `[foo^='bar']` attribute start match
+               //                      |       * `[foo$='bar']` attribute end match
+               //                      |       * `[foo*='bar']` attribute substring match
+               //                      * `:first-child`, `:last-child`, and `:only-child` positional selectors
+               //                      * `:empty` content emtpy selector
+               //                      * `:checked` pseudo selector
+               //                      * `:nth-child(n)`, `:nth-child(2n+1)` style positional calculations
+               //                      * `:nth-child(even)`, `:nth-child(odd)` positional selectors
+               //                      * `:not(...)` negation pseudo selectors
+               //
+               //              Any legal combination of these selectors will work with
+               //              `dojo.query()`, including compound selectors ("," delimited).
+               //              Very complex and useful searches can be constructed with this
+               //              palette of selectors and when combined with functions for
+               //              manipulation presented by dojo.NodeList, many types of DOM
+               //              manipulation operations become very straightforward.
+               //              
+               //              Unsupported Selectors:
+               //              ----------------------
+               //
+               //              While dojo.query handles many CSS3 selectors, some fall outside of
+               //              what's resaonable for a programmatic node querying engine to
+               //              handle. Currently unsupported selectors include:
+               //              
+               //                      * namespace-differentiated selectors of any form
+               //                      * all `::` pseduo-element selectors
+               //                      * certain pseduo-selectors which don't get a lot of day-to-day use:
+               //                      |       * `:root`, `:lang()`, `:target`, `:focus`
+               //                      * all visual and state selectors:
+               //                      |       * `:root`, `:active`, `:hover`, `:visisted`, `:link`,
+               //                                `:enabled`, `:disabled`
+               //                      * `:*-of-type` pseudo selectors
+               //              
+               //              dojo.query and XML Documents:
+               //              -----------------------------
+               //              
+               //              `dojo.query` (as of dojo 1.2) supports searching XML documents
+               //              in a case-sensitive manner. If an HTML document is served with
+               //              a doctype that forces case-sensitivity (e.g., XHTML 1.1
+               //              Strict), dojo.query() will detect this and "do the right
+               //              thing". Case sensitivity is dependent upon the document being
+               //              searched and not the query used. It is therefore possible to
+               //              use case-sensitive queries on strict sub-documents (iframes,
+               //              etc.) or XML documents while still assuming case-insensitivity
+               //              for a host/root document.
+               //
+               //              Non-selector Queries:
+               //              ---------------------
+               //
+               //              If something other than a String is passed for the query,
+               //              `dojo.query` will return a new `dojo.NodeList` instance
+               //              constructed from that parameter alone and all further
+               //              processing will stop. This means that if you have a reference
+               //              to a node or NodeList, you can quickly construct a new NodeList
+               //              from the original by calling `dojo.query(node)` or
+               //              `dojo.query(list)`.
+               //
+               //      query:
+               //              The CSS3 expression to match against. For details on the syntax of
+               //              CSS3 selectors, see <http://www.w3.org/TR/css3-selectors/#selectors>
+               //      root:
+               //              A DOMNode (or node id) to scope the search from. Optional.
+               //      returns: dojo.NodeList
+               //              An instance of `dojo.NodeList`. Many methods are available on
+               //              NodeLists for searching, iterating, manipulating, and handling
+               //              events on the matched nodes in the returned list.
+               //      example:
+               //              search the entire document for elements with the class "foo":
+               //      |       dojo.query(".foo");
+               //              these elements will match:
+               //      |       <span class="foo"></span>
+               //      |       <span class="foo bar"></span>
+               //      |       <p class="thud foo"></p>
+               //      example:
+               //              search the entire document for elements with the classes "foo" *and* "bar":
+               //      |       dojo.query(".foo.bar");
+               //              these elements will match:
+               //      |       <span class="foo bar"></span>
+               //              while these will not:
+               //      |       <span class="foo"></span>
+               //      |       <p class="thud foo"></p>
+               //      example:
+               //              find `<span>` elements which are descendants of paragraphs and
+               //              which have a "highlighted" class:
+               //      |       dojo.query("p span.highlighted");
+               //              the innermost span in this fragment matches:
+               //      |       <p class="foo">
+               //      |               <span>...
+               //      |                       <span class="highlighted foo bar">...</span>
+               //      |               </span>
+               //      |       </p>
+               //      example:
+               //              set an "odd" class on all odd table rows inside of the table
+               //              `#tabular_data`, using the `>` (direct child) selector to avoid
+               //              affecting any nested tables:
+               //      |       dojo.query("#tabular_data > tbody > tr:nth-child(odd)").addClass("odd");
+               //      example:
+               //              remove all elements with the class "error" from the document
+               //              and store them in a list:
+               //      |       var errors = dojo.query(".error").orphan();
+               //      example:
+               //              add an onclick handler to every submit button in the document
+               //              which causes the form to be sent via Ajax instead:
+               //      |       dojo.query("input[type='submit']").onclick(function(e){
+               //      |               dojo.stopEvent(e); // prevent sending the form
+               //      |               var btn = e.target;
+               //      |               dojo.xhrPost({
+               //      |                       form: btn.form,
+               //      |                       load: function(data){
+               //      |                               // replace the form with the response
+               //      |                               var div = dojo.doc.createElement("div");
+               //      |                               dojo.place(div, btn.form, "after");
+               //      |                               div.innerHTML = data;
+               //      |                               dojo.style(btn.form, "display", "none");
+               //      |                       }
+               //      |               });
+               //      |       });
+
+               //Set list constructor to desired value. This can change
+               //between calls, so always re-assign here.
+               qlc = d._NodeListCtor;
+
+               if(!query){
+                       return new qlc();
+               }
+
+               if(query.constructor == qlc){
+                       return query;
+               }
+               if(typeof query != "string"){ // inline'd type check
+                       return new qlc(query); // dojo.NodeList
+               }
+               if(typeof root == "string"){ // inline'd type check
+                       root = d.byId(root);
+                       if(!root){ return new qlc(); }
+               }
+
+               root = root||getDoc();
+               var od = root.ownerDocument||root.documentElement;
+
+               // throw the big case sensitivity switch
+
+               // NOTE:
+               //              Opera in XHTML mode doesn't detect case-sensitivity correctly
+               //              and it's not clear that there's any way to test for it
+               caseSensitive = (root.contentType && root.contentType=="application/xml") || 
+                                               (d.isOpera && (root.doctype || od.toString() == "[object XMLDocument]")) ||
+                                               (!!od) && 
+                                               (d.isIE ? od.xml : (root.xmlVersion||od.xmlVersion));
+
+               // NOTE: 
+               //              adding "true" as the 2nd argument to getQueryFunc is useful for
+               //              testing the DOM branch without worrying about the
+               //              behavior/performance of the QSA branch.
+               var r = getQueryFunc(query)(root);
+
+               // FIXME:
+               //              need to investigate this branch WRT #8074 and #8075
+               if(r && r.nozip && !qlc._wrap){
+                       return r;
+               }
+               return _zip(r); // dojo.NodeList
+       }
+
+       // FIXME: need to add infrastructure for post-filtering pseudos, ala :last
+       d.query.pseudos = pseudos;
+
+       // one-off function for filtering a NodeList based on a simple selector
+       d._filterQueryResult = function(nodeList, simpleFilter){
+               var tmpNodeList = new d._NodeListCtor();
+               var filterFunc = getSimpleFilterFunc(getQueryParts(simpleFilter)[0]);
+               for(var x = 0, te; te = nodeList[x]; x++){
+                       if(filterFunc(te)){ tmpNodeList.push(te); }
+               }
+               return tmpNodeList;
+       }
+})(this["queryPortability"]||this["acme"]||dojo);
+
+/*
+*/
+
+}
+
+if(!dojo._hasResource["dojo._base.xhr"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.xhr"] = true;
+dojo.provide("dojo._base.xhr");
+
+
+
+
+
+(function(){
+       var _d = dojo, cfg = _d.config;
+
+       function setValue(/*Object*/obj, /*String*/name, /*String*/value){
+               //summary:
+               //              For the named property in object, set the value. If a value
+               //              already exists and it is a string, convert the value to be an
+               //              array of values.
+
+               //Skip it if there is no value
+               if(value === null){
+                       return;
+               }
+
+               var val = obj[name];
+               if(typeof val == "string"){ // inline'd type check
+                       obj[name] = [val, value];
+               }else if(_d.isArray(val)){
+                       val.push(value);
+               }else{
+                       obj[name] = value;
+               }
+       }
+       
+       dojo.fieldToObject = function(/*DOMNode||String*/ inputNode){
+               // summary:
+               //              Serialize a form field to a JavaScript object.
+               //
+               // description:
+               //              Returns the value encoded in a form field as
+               //              as a string or an array of strings. Disabled form elements
+               //              and unchecked radio and checkboxes are skipped. Multi-select
+               //              elements are returned as an array of string values.
+               var ret = null;
+               var item = _d.byId(inputNode);
+               if(item){
+                       var _in = item.name;
+                       var type = (item.type||"").toLowerCase();
+                       if(_in && type && !item.disabled){
+                               if(type == "radio" || type == "checkbox"){
+                                       if(item.checked){ ret = item.value }
+                               }else if(item.multiple){
+                                       ret = [];
+                                       _d.query("option", item).forEach(function(opt){
+                                               if(opt.selected){
+                                                       ret.push(opt.value);
+                                               }
+                                       });
+                               }else{
+                                       ret = item.value;
+                               }
+                       }
+               }
+               return ret; // Object
+       }
+
+       dojo.formToObject = function(/*DOMNode||String*/ formNode){
+               // summary:
+               //              Serialize a form node to a JavaScript object.
+               // description:
+               //              Returns the values encoded in an HTML form as
+               //              string properties in an object which it then returns. Disabled form
+               //              elements, buttons, and other non-value form elements are skipped.
+               //              Multi-select elements are returned as an array of string values.
+               //
+               // example:
+               //              This form:
+               //              |       <form id="test_form">
+               //              |               <input type="text" name="blah" value="blah">
+               //              |               <input type="text" name="no_value" value="blah" disabled>
+               //              |               <input type="button" name="no_value2" value="blah">
+               //              |               <select type="select" multiple name="multi" size="5">
+               //              |                       <option value="blah">blah</option>
+               //              |                       <option value="thud" selected>thud</option>
+               //              |                       <option value="thonk" selected>thonk</option>
+               //              |               </select>
+               //              |       </form>
+               //
+               //              yields this object structure as the result of a call to
+               //              formToObject():
+               //
+               //              |       { 
+               //              |               blah: "blah",
+               //              |               multi: [
+               //              |                       "thud",
+               //              |                       "thonk"
+               //              |               ]
+               //              |       };
+
+               var ret = {};
+               var exclude = "file|submit|image|reset|button|";
+               _d.forEach(dojo.byId(formNode).elements, function(item){
+                       var _in = item.name;
+                       var type = (item.type||"").toLowerCase();
+                       if(_in && type && exclude.indexOf(type) == -1 && !item.disabled){
+                               setValue(ret, _in, _d.fieldToObject(item));
+                               if(type == "image"){
+                                       ret[_in+".x"] = ret[_in+".y"] = ret[_in].x = ret[_in].y = 0;
+                               }
+                       }
+               });
+               return ret; // Object
+       }
+
+       dojo.objectToQuery = function(/*Object*/ map){
+               //      summary:
+               //              takes a name/value mapping object and returns a string representing
+               //              a URL-encoded version of that object.
+               //      example:
+               //              this object:
+               //
+               //              |       { 
+               //              |               blah: "blah",
+               //              |               multi: [
+               //              |                       "thud",
+               //              |                       "thonk"
+               //              |               ]
+               //              |       };
+               //
+               //      yields the following query string:
+               //      
+               //      |       "blah=blah&multi=thud&multi=thonk"
+
+               // FIXME: need to implement encodeAscii!!
+               var enc = encodeURIComponent;
+               var pairs = [];
+               var backstop = {};
+               for(var name in map){
+                       var value = map[name];
+                       if(value != backstop[name]){
+                               var assign = enc(name) + "=";
+                               if(_d.isArray(value)){
+                                       for(var i=0; i < value.length; i++){
+                                               pairs.push(assign + enc(value[i]));
+                                       }
+                               }else{
+                                       pairs.push(assign + enc(value));
+                               }
+                       }
+               }
+               return pairs.join("&"); // String
+       }
+
+       dojo.formToQuery = function(/*DOMNode||String*/ formNode){
+               // summary:
+               //              Returns a URL-encoded string representing the form passed as either a
+               //              node or string ID identifying the form to serialize
+               return _d.objectToQuery(_d.formToObject(formNode)); // String
+       }
+
+       dojo.formToJson = function(/*DOMNode||String*/ formNode, /*Boolean?*/prettyPrint){
+               // summary:
+               //              Create a serialized JSON string from a form node or string
+               //              ID identifying the form to serialize
+               return _d.toJson(_d.formToObject(formNode), prettyPrint); // String
+       }
+
+       dojo.queryToObject = function(/*String*/ str){
+               // summary:
+               //              Create an object representing a de-serialized query section of a
+               //              URL. Query keys with multiple values are returned in an array.
+               //
+               // example:
+               //              This string:
+               //
+               //      |               "foo=bar&foo=baz&thinger=%20spaces%20=blah&zonk=blarg&"
+               //              
+               //              results in this object structure:
+               //
+               //      |               {
+               //      |                       foo: [ "bar", "baz" ],
+               //      |                       thinger: " spaces =blah",
+               //      |                       zonk: "blarg"
+               //      |               }
+               //      
+               //              Note that spaces and other urlencoded entities are correctly
+               //              handled.
+
+               // FIXME: should we grab the URL string if we're not passed one?
+               var ret = {};
+               var qp = str.split("&");
+               var dec = decodeURIComponent;
+               _d.forEach(qp, function(item){
+                       if(item.length){
+                               var parts = item.split("=");
+                               var name = dec(parts.shift());
+                               var val = dec(parts.join("="));
+                               if(typeof ret[name] == "string"){ // inline'd type check
+                                       ret[name] = [ret[name]];
+                               }
+
+                               if(_d.isArray(ret[name])){
+                                       ret[name].push(val);
+                               }else{
+                                       ret[name] = val;
+                               }
+                       }
+               });
+               return ret; // Object
+       }
+
+       // need to block async callbacks from snatching this thread as the result
+       // of an async callback might call another sync XHR, this hangs khtml forever
+       // must checked by watchInFlight()
+
+       dojo._blockAsync = false;
+
+       // MOW: remove dojo._contentHandlers alias in 2.0
+       var handlers = _d._contentHandlers = dojo.contentHandlers = {
+               // summary: 
+               //              A map of availble XHR transport handle types. Name matches the
+               //              `handleAs` attribute passed to XHR calls.
+               //
+               // description:
+               //              A map of availble XHR transport handle types. Name matches the
+               //              `handleAs` attribute passed to XHR calls. Each contentHandler is
+               //              called, passing the xhr object for manipulation. The return value
+               //              from the contentHandler will be passed to the `load` or `handle` 
+               //              functions defined in the original xhr call. 
+               //              
+               // example:
+               //              Creating a custom content-handler:
+               //      |       dojo.contentHandlers.makeCaps = function(xhr){
+               //      |               return xhr.responseText.toUpperCase();
+               //      |       }
+               //      |       // and later:
+               //      |       dojo.xhrGet({ 
+               //      |               url:"foo.txt",
+               //      |               handleAs:"makeCaps",
+               //      |               load: function(data){ /* data is a toUpper version of foo.txt */ }
+               //      |       });
+
+               text: function(xhr){ 
+                       // summary: A contentHandler which simply returns the plaintext response data
+                       return xhr.responseText; 
+               },
+               json: function(xhr){
+                       // summary: A contentHandler which returns a JavaScript object created from the response data
+                       return _d.fromJson(xhr.responseText || null);
+               },
+               "json-comment-filtered": function(xhr){ 
+                       // summary: A contentHandler which expects comment-filtered JSON. 
+                       // description: 
+                       //              A contentHandler which expects comment-filtered JSON. 
+                       //              the json-comment-filtered option was implemented to prevent
+                       //              "JavaScript Hijacking", but it is less secure than standard JSON. Use
+                       //              standard JSON instead. JSON prefixing can be used to subvert hijacking.
+                       //              
+                       //              Will throw a notice suggesting to use application/json mimetype, as
+                       //              json-commenting can introduce security issues. To decrease the chances of hijacking,
+                       //              use the standard `json` contentHandler, and prefix your "JSON" with: {}&& 
+                       //              
+                       //              use djConfig.useCommentedJson = true to turn off the notice
+                       if(!dojo.config.useCommentedJson){
+                               console.warn("Consider using the standard mimetype:application/json."
+                                       + " json-commenting can introduce security issues. To"
+                                       + " decrease the chances of hijacking, use the standard the 'json' handler and"
+                                       + " prefix your json with: {}&&\n"
+                                       + "Use djConfig.useCommentedJson=true to turn off this message.");
+                       }
+
+                       var value = xhr.responseText;
+                       var cStartIdx = value.indexOf("\/*");
+                       var cEndIdx = value.lastIndexOf("*\/");
+                       if(cStartIdx == -1 || cEndIdx == -1){
+                               throw new Error("JSON was not comment filtered");
+                       }
+                       return _d.fromJson(value.substring(cStartIdx+2, cEndIdx));
+               },
+               javascript: function(xhr){ 
+                       // summary: A contentHandler which evaluates the response data, expecting it to be valid JavaScript
+
+                       // FIXME: try Moz and IE specific eval variants?
+                       return _d.eval(xhr.responseText);
+               },
+               xml: function(xhr){
+                       // summary: A contentHandler returning an XML Document parsed from the response data
+                       var result = xhr.responseXML;
+                                               if(_d.isIE && (!result || !result.documentElement)){
+                               //WARNING: this branch used by the xml handling in dojo.io.iframe,
+                               //so be sure to test dojo.io.iframe if making changes below.
+                               var ms = function(n){ return "MSXML" + n + ".DOMDocument"; }
+                               var dp = ["Microsoft.XMLDOM", ms(6), ms(4), ms(3), ms(2)];
+                               _d.some(dp, function(p){
+                                       try{
+                                               var dom = new ActiveXObject(p);
+                                               dom.async = false;
+                                               dom.loadXML(xhr.responseText);
+                                               result = dom;
+                                       }catch(e){ return false; }
+                                       return true;
+                               });
+                       }
+                                               return result; // DOMDocument
+               },
+               "json-comment-optional": function(xhr){
+                       // summary: A contentHandler which checks the presence of comment-filtered JSON and 
+                       //              alternates between the `json` and `json-comment-filtered` contentHandlers.
+                       if(xhr.responseText && /^[^{\[]*\/\*/.test(xhr.responseText)){
+                               return handlers["json-comment-filtered"](xhr);
+                       }else{
+                               return handlers["json"](xhr);
+                       }
+               }
+       };
+
+       /*=====
+       dojo.__IoArgs = function(){
+               //      url: String
+               //              URL to server endpoint.
+               //      content: Object?
+               //              Contains properties with string values. These
+               //              properties will be serialized as name1=value2 and
+               //              passed in the request.
+               //      timeout: Integer?
+               //              Milliseconds to wait for the response. If this time
+               //              passes, the then error callbacks are called.
+               //      form: DOMNode?
+               //              DOM node for a form. Used to extract the form values
+               //              and send to the server.
+               //      preventCache: Boolean?
+               //              Default is false. If true, then a
+               //              "dojo.preventCache" parameter is sent in the request
+               //              with a value that changes with each request
+               //              (timestamp). Useful only with GET-type requests.
+               //      handleAs: String?
+               //              Acceptable values depend on the type of IO
+               //              transport (see specific IO calls for more information).
+               //      rawBody: String?
+               //              Sets the raw body for an HTTP request. If this is used, then the content
+               //              property is ignored. This is mostly useful for HTTP methods that have
+               //              a body to their requests, like PUT or POST. This property can be used instead
+               //              of postData and putData for dojo.rawXhrPost and dojo.rawXhrPut respectively.
+               //      ioPublish: Boolean?
+               //              Set this explicitly to false to prevent publishing of topics related to
+               //              IO operations. Otherwise, if djConfig.ioPublish is set to true, topics
+               //              will be published via dojo.publish for different phases of an IO operation.
+               //              See dojo.__IoPublish for a list of topics that are published.
+               //      load: Function?
+               //              This function will be
+               //              called on a successful HTTP response code.
+               //      error: Function?
+               //              This function will
+               //              be called when the request fails due to a network or server error, the url
+               //              is invalid, etc. It will also be called if the load or handle callback throws an
+               //              exception, unless djConfig.debugAtAllCosts is true.  This allows deployed applications
+               //              to continue to run even when a logic error happens in the callback, while making
+               //              it easier to troubleshoot while in debug mode.
+               //      handle: Function?
+               //              This function will
+               //              be called at the end of every request, whether or not an error occurs.
+               this.url = url;
+               this.content = content;
+               this.timeout = timeout;
+               this.form = form;
+               this.preventCache = preventCache;
+               this.handleAs = handleAs;
+               this.ioPublish = ioPublish;
+               this.load = function(response, ioArgs){
+                       // ioArgs: dojo.__IoCallbackArgs
+                       //              Provides additional information about the request.
+                       // response: Object
+                       //              The response in the format as defined with handleAs.
+               }
+               this.error = function(response, ioArgs){
+                       // ioArgs: dojo.__IoCallbackArgs
+                       //              Provides additional information about the request.
+                       // response: Object
+                       //              The response in the format as defined with handleAs.
+               }
+               this.handle = function(loadOrError, response, ioArgs){
+                       // loadOrError: String
+                       //              Provides a string that tells you whether this function
+                       //              was called because of success (load) or failure (error).
+                       // response: Object
+                       //              The response in the format as defined with handleAs.
+                       // ioArgs: dojo.__IoCallbackArgs
+                       //              Provides additional information about the request.
+               }
+       }
+       =====*/
+
+       /*=====
+       dojo.__IoCallbackArgs = function(args, xhr, url, query, handleAs, id, canDelete, json){
+               //      args: Object
+               //              the original object argument to the IO call.
+               //      xhr: XMLHttpRequest
+               //              For XMLHttpRequest calls only, the
+               //              XMLHttpRequest object that was used for the
+               //              request.
+               //      url: String
+               //              The final URL used for the call. Many times it
+               //              will be different than the original args.url
+               //              value.
+               //      query: String
+               //              For non-GET requests, the
+               //              name1=value1&name2=value2 parameters sent up in
+               //              the request.
+               //      handleAs: String
+               //              The final indicator on how the response will be
+               //              handled.
+               //      id: String
+               //              For dojo.io.script calls only, the internal
+               //              script ID used for the request.
+               //      canDelete: Boolean
+               //              For dojo.io.script calls only, indicates
+               //              whether the script tag that represents the
+               //              request can be deleted after callbacks have
+               //              been called. Used internally to know when
+               //              cleanup can happen on JSONP-type requests.
+               //      json: Object
+               //              For dojo.io.script calls only: holds the JSON
+               //              response for JSONP-type requests. Used
+               //              internally to hold on to the JSON responses.
+               //              You should not need to access it directly --
+               //              the same object should be passed to the success
+               //              callbacks directly.
+               this.args = args;
+               this.xhr = xhr;
+               this.url = url;
+               this.query = query;
+               this.handleAs = handleAs;
+               this.id = id;
+               this.canDelete = canDelete;
+               this.json = json;
+       }
+       =====*/
+
+
+       /*=====
+       dojo.__IoPublish = function(){
+               //      summary:
+               //              This is a list of IO topics that can be published
+               //              if djConfig.ioPublish is set to true. IO topics can be
+               //              published for any Input/Output, network operation. So,
+               //              dojo.xhr, dojo.io.script and dojo.io.iframe can all
+               //              trigger these topics to be published.
+               //      start: String
+               //              "/dojo/io/start" is sent when there are no outstanding IO
+               //              requests, and a new IO request is started. No arguments
+               //              are passed with this topic.
+               //      send: String
+               //              "/dojo/io/send" is sent whenever a new IO request is started.
+               //              It passes the dojo.Deferred for the request with the topic.
+               //      load: String
+               //              "/dojo/io/load" is sent whenever an IO request has loaded
+               //              successfully. It passes the response and the dojo.Deferred
+               //              for the request with the topic.
+               //      error: String
+               //              "/dojo/io/error" is sent whenever an IO request has errored.
+               //              It passes the error and the dojo.Deferred
+               //              for the request with the topic.
+               //      done: String
+               //              "/dojo/io/done" is sent whenever an IO request has completed,
+               //              either by loading or by erroring. It passes the error and
+               //              the dojo.Deferred for the request with the topic.
+               //      stop: String
+               //              "/dojo/io/stop" is sent when all outstanding IO requests have
+               //              finished. No arguments are passed with this topic.
+               this.start = "/dojo/io/start";
+               this.send = "/dojo/io/send";
+               this.load = "/dojo/io/load";
+               this.error = "/dojo/io/error";
+               this.done = "/dojo/io/done";
+               this.stop = "/dojo/io/stop";
+       }
+       =====*/
+
+
+       dojo._ioSetArgs = function(/*dojo.__IoArgs*/args,
+                       /*Function*/canceller,
+                       /*Function*/okHandler,
+                       /*Function*/errHandler){
+               //      summary: 
+               //              sets up the Deferred and ioArgs property on the Deferred so it
+               //              can be used in an io call.
+               //      args:
+               //              The args object passed into the public io call. Recognized properties on
+               //              the args object are:
+               //      canceller:
+               //              The canceller function used for the Deferred object. The function
+               //              will receive one argument, the Deferred object that is related to the
+               //              canceller.
+               //      okHandler:
+               //              The first OK callback to be registered with Deferred. It has the opportunity
+               //              to transform the OK response. It will receive one argument -- the Deferred
+               //              object returned from this function.
+               //      errHandler:
+               //              The first error callback to be registered with Deferred. It has the opportunity
+               //              to do cleanup on an error. It will receive two arguments: error (the 
+               //              Error object) and dfd, the Deferred object returned from this function.
+
+               var ioArgs = {args: args, url: args.url};
+
+               //Get values from form if requestd.
+               var formObject = null;
+               if(args.form){ 
+                       var form = _d.byId(args.form);
+                       //IE requires going through getAttributeNode instead of just getAttribute in some form cases, 
+                       //so use it for all.  See #2844
+                       var actnNode = form.getAttributeNode("action");
+                       ioArgs.url = ioArgs.url || (actnNode ? actnNode.value : null); 
+                       formObject = _d.formToObject(form);
+               }
+
+               // set up the query params
+               var miArgs = [{}];
+       
+               if(formObject){
+                       // potentially over-ride url-provided params w/ form values
+                       miArgs.push(formObject);
+               }
+               if(args.content){
+                       // stuff in content over-rides what's set by form
+                       miArgs.push(args.content);
+               }
+               if(args.preventCache){
+                       miArgs.push({"dojo.preventCache": new Date().valueOf()});
+               }
+               ioArgs.query = _d.objectToQuery(_d.mixin.apply(null, miArgs));
+       
+               // .. and the real work of getting the deferred in order, etc.
+               ioArgs.handleAs = args.handleAs || "text";
+               var d = new _d.Deferred(canceller);
+               d.addCallbacks(okHandler, function(error){
+                       return errHandler(error, d);
+               });
+
+               //Support specifying load, error and handle callback functions from the args.
+               //For those callbacks, the "this" object will be the args object.
+               //The callbacks will get the deferred result value as the
+               //first argument and the ioArgs object as the second argument.
+               var ld = args.load;
+               if(ld && _d.isFunction(ld)){
+                       d.addCallback(function(value){
+                               return ld.call(args, value, ioArgs);
+                       });
+               }
+               var err = args.error;
+               if(err && _d.isFunction(err)){
+                       d.addErrback(function(value){
+                               return err.call(args, value, ioArgs);
+                       });
+               }
+               var handle = args.handle;
+               if(handle && _d.isFunction(handle)){
+                       d.addBoth(function(value){
+                               return handle.call(args, value, ioArgs);
+                       });
+               }
+
+               //Plug in topic publishing, if dojo.publish is loaded.
+               if(cfg.ioPublish && _d.publish && ioArgs.args.ioPublish !== false){
+                       d.addCallbacks(
+                               function(res){
+                                       _d.publish("/dojo/io/load", [d, res]);
+                                       return res;
+                               },
+                               function(res){
+                                       _d.publish("/dojo/io/error", [d, res]);
+                                       return res;
+                               }
+                       );
+                       d.addBoth(function(res){
+                               _d.publish("/dojo/io/done", [d, res]);
+                               return res;
+                       });
+               }
+
+               d.ioArgs = ioArgs;
+       
+               // FIXME: need to wire up the xhr object's abort method to something
+               // analagous in the Deferred
+               return d;
+       }
+
+       var _deferredCancel = function(/*Deferred*/dfd){
+               // summary: canceller function for dojo._ioSetArgs call.
+               
+               dfd.canceled = true;
+               var xhr = dfd.ioArgs.xhr;
+               var _at = typeof xhr.abort;
+               if(_at == "function" || _at == "object" || _at == "unknown"){
+                       xhr.abort();
+               }
+               var err = dfd.ioArgs.error;
+               if(!err){
+                       err = new Error("xhr cancelled");
+                       err.dojoType="cancel";
+               }
+               return err;
+       }
+       var _deferredOk = function(/*Deferred*/dfd){
+               // summary: okHandler function for dojo._ioSetArgs call.
+
+               var ret = handlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);
+               return ret === undefined ? null : ret;
+       }
+       var _deferError = function(/*Error*/error, /*Deferred*/dfd){
+               // summary: errHandler function for dojo._ioSetArgs call.
+
+               if(!dfd.ioArgs.args.failOk){
+                       console.error(error);
+               }
+               return error;
+       }
+
+       // avoid setting a timer per request. It degrades performance on IE
+       // something fierece if we don't use unified loops.
+       var _inFlightIntvl = null;
+       var _inFlight = [];
+       
+       
+       //Use a separate count for knowing if we are starting/stopping io calls.
+       //Cannot use _inFlight.length since it can change at a different time than
+       //when we want to do this kind of test. We only want to decrement the count
+       //after a callback/errback has finished, since the callback/errback should be
+       //considered as part of finishing a request.
+       var _pubCount = 0;
+       var _checkPubCount = function(dfd){
+               if(_pubCount <= 0){
+                       _pubCount = 0;
+                       if(cfg.ioPublish && _d.publish && (!dfd || dfd && dfd.ioArgs.args.ioPublish !== false)){
+                               _d.publish("/dojo/io/stop");
+                       }
+               }
+       };
+
+       var _watchInFlight = function(){
+               //summary: 
+               //              internal method that checks each inflight XMLHttpRequest to see
+               //              if it has completed or if the timeout situation applies.
+               
+               var now = (new Date()).getTime();
+               // make sure sync calls stay thread safe, if this callback is called
+               // during a sync call and this results in another sync call before the
+               // first sync call ends the browser hangs
+               if(!_d._blockAsync){
+                       // we need manual loop because we often modify _inFlight (and therefore 'i') while iterating
+                       // note: the second clause is an assigment on purpose, lint may complain
+                       for(var i = 0, tif; i < _inFlight.length && (tif = _inFlight[i]); i++){
+                               var dfd = tif.dfd;
+                               var func = function(){
+                                       if(!dfd || dfd.canceled || !tif.validCheck(dfd)){
+                                               _inFlight.splice(i--, 1); 
+                                               _pubCount -= 1;
+                                       }else if(tif.ioCheck(dfd)){
+                                               _inFlight.splice(i--, 1);
+                                               tif.resHandle(dfd);
+                                               _pubCount -= 1;
+                                       }else if(dfd.startTime){
+                                               //did we timeout?
+                                               if(dfd.startTime + (dfd.ioArgs.args.timeout || 0) < now){
+                                                       _inFlight.splice(i--, 1);
+                                                       var err = new Error("timeout exceeded");
+                                                       err.dojoType = "timeout";
+                                                       dfd.errback(err);
+                                                       //Cancel the request so the io module can do appropriate cleanup.
+                                                       dfd.cancel();
+                                                       _pubCount -= 1;
+                                               }
+                                       }
+                               };
+                               if(dojo.config.debugAtAllCosts){
+                                       func.call(this);
+                               }else{
+                                       try{
+                                               func.call(this);
+                                       }catch(e){
+                                               dfd.errback(e);
+                                       }
+                               }
+                       }
+               }
+
+               _checkPubCount(dfd);
+
+               if(!_inFlight.length){
+                       clearInterval(_inFlightIntvl);
+                       _inFlightIntvl = null;
+                       return;
+               }
+       }
+
+       dojo._ioCancelAll = function(){
+               //summary: Cancels all pending IO requests, regardless of IO type
+               //(xhr, script, iframe).
+               try{
+                       _d.forEach(_inFlight, function(i){
+                               try{
+                                       i.dfd.cancel();
+                               }catch(e){/*squelch*/}
+                       });
+               }catch(e){/*squelch*/}
+       }
+
+       //Automatically call cancel all io calls on unload
+       //in IE for trac issue #2357.
+               if(_d.isIE){
+               _d.addOnWindowUnload(_d._ioCancelAll);
+       }
+       
+       _d._ioNotifyStart = function(/*Deferred*/dfd){
+               // summary:
+               //              If dojo.publish is available, publish topics
+               //              about the start of a request queue and/or the
+               //              the beginning of request.
+               // description:
+               //              Used by IO transports. An IO transport should
+               //              call this method before making the network connection.
+               if(cfg.ioPublish && _d.publish && dfd.ioArgs.args.ioPublish !== false){
+                       if(!_pubCount){
+                               _d.publish("/dojo/io/start");
+                       }
+                       _pubCount += 1;
+                       _d.publish("/dojo/io/send", [dfd]);
+               }
+       }
+
+       _d._ioWatch = function(dfd, validCheck, ioCheck, resHandle){
+               // summary: 
+               //              Watches the io request represented by dfd to see if it completes.
+               // dfd: Deferred
+               //              The Deferred object to watch.
+               // validCheck: Function
+               //              Function used to check if the IO request is still valid. Gets the dfd
+               //              object as its only argument.
+               // ioCheck: Function
+               //              Function used to check if basic IO call worked. Gets the dfd
+               //              object as its only argument.
+               // resHandle: Function
+               //              Function used to process response. Gets the dfd
+               //              object as its only argument.
+               var args = dfd.ioArgs.args;
+               if(args.timeout){
+                       dfd.startTime = (new Date()).getTime();
+               }
+               
+               _inFlight.push({dfd: dfd, validCheck: validCheck, ioCheck: ioCheck, resHandle: resHandle});
+               if(!_inFlightIntvl){
+                       _inFlightIntvl = setInterval(_watchInFlight, 50);
+               }
+               // handle sync requests
+               //A weakness: async calls in flight
+               //could have their handlers called as part of the
+               //_watchInFlight call, before the sync's callbacks
+               // are called.
+               if(args.sync){
+                       _watchInFlight();
+               }
+       }
+
+       var _defaultContentType = "application/x-www-form-urlencoded";
+
+       var _validCheck = function(/*Deferred*/dfd){
+               return dfd.ioArgs.xhr.readyState; //boolean
+       }
+       var _ioCheck = function(/*Deferred*/dfd){
+               return 4 == dfd.ioArgs.xhr.readyState; //boolean
+       }
+       var _resHandle = function(/*Deferred*/dfd){
+               var xhr = dfd.ioArgs.xhr;
+               if(_d._isDocumentOk(xhr)){
+                       dfd.callback(dfd);
+               }else{
+                       var err = new Error("Unable to load " + dfd.ioArgs.url + " status:" + xhr.status);
+                       err.status = xhr.status;
+                       err.responseText = xhr.responseText;
+                       dfd.errback(err);
+               }
+       }
+
+       dojo._ioAddQueryToUrl = function(/*dojo.__IoCallbackArgs*/ioArgs){
+               //summary: Adds query params discovered by the io deferred construction to the URL.
+               //Only use this for operations which are fundamentally GET-type operations.
+               if(ioArgs.query.length){
+                       ioArgs.url += (ioArgs.url.indexOf("?") == -1 ? "?" : "&") + ioArgs.query;
+                       ioArgs.query = null;
+               }               
+       }
+
+       /*=====
+       dojo.declare("dojo.__XhrArgs", dojo.__IoArgs, {
+               constructor: function(){
+                       //      summary:
+                       //              In addition to the properties listed for the dojo._IoArgs type,
+                       //              the following properties are allowed for dojo.xhr* methods.
+                       //      handleAs: String?
+                       //              Acceptable values are: text (default), json, json-comment-optional,
+                       //              json-comment-filtered, javascript, xml. See `dojo.contentHandlers`
+                       //      sync: Boolean?
+                       //              false is default. Indicates whether the request should
+                       //              be a synchronous (blocking) request.
+                       //      headers: Object?
+                       //              Additional HTTP headers to send in the request.
+                       //      failOk: Boolean?
+                       //              false is default. Indicates whether a request should be
+                       //              allowed to fail (and therefore no console error message in
+                       //              the event of a failure)
+                       this.handleAs = handleAs;
+                       this.sync = sync;
+                       this.headers = headers;
+                       this.failOk = failOk;
+               }
+       });
+       =====*/
+
+       dojo.xhr = function(/*String*/ method, /*dojo.__XhrArgs*/ args, /*Boolean?*/ hasBody){
+               //      summary:
+               //              Sends an HTTP request with the given method.
+               //      description:
+               //              Sends an HTTP request with the given method.
+               //              See also dojo.xhrGet(), xhrPost(), xhrPut() and dojo.xhrDelete() for shortcuts
+               //              for those HTTP methods. There are also methods for "raw" PUT and POST methods
+               //              via dojo.rawXhrPut() and dojo.rawXhrPost() respectively.
+               //      method:
+               //              HTTP method to be used, such as GET, POST, PUT, DELETE.  Should be uppercase.
+               //      hasBody:
+               //              If the request has an HTTP body, then pass true for hasBody.
+
+               //Make the Deferred object for this xhr request.
+               var dfd = _d._ioSetArgs(args, _deferredCancel, _deferredOk, _deferError);
+               var ioArgs = dfd.ioArgs;
+
+               //Pass the args to _xhrObj, to allow alternate XHR calls based specific calls, like
+               //the one used for iframe proxies.
+               var xhr = ioArgs.xhr = _d._xhrObj(ioArgs.args);
+               //If XHR factory fails, cancel the deferred.
+               if(!xhr){
+                       dfd.cancel();
+                       return dfd;
+               }
+
+               //Allow for specifying the HTTP body completely.
+               if("postData" in args){
+                       ioArgs.query = args.postData;
+               }else if("putData" in args){
+                       ioArgs.query = args.putData;
+               }else if("rawBody" in args){
+                       ioArgs.query = args.rawBody;
+               }else if((arguments.length > 2 && !hasBody) || "POST|PUT".indexOf(method.toUpperCase()) == -1){
+                       //Check for hasBody being passed. If no hasBody,
+                       //then only append query string if not a POST or PUT request.
+                       _d._ioAddQueryToUrl(ioArgs);
+               }
+
+               // IE 6 is a steaming pile. It won't let you call apply() on the native function (xhr.open).
+               // workaround for IE6's apply() "issues"
+               xhr.open(method, ioArgs.url, args.sync !== true, args.user || undefined, args.password || undefined);
+               if(args.headers){
+                       for(var hdr in args.headers){
+                               if(hdr.toLowerCase() === "content-type" && !args.contentType){
+                                       args.contentType = args.headers[hdr];
+                               }else if(args.headers[hdr]){
+                                       //Only add header if it has a value. This allows for instnace, skipping
+                                       //insertion of X-Requested-With by specifying empty value.
+                                       xhr.setRequestHeader(hdr, args.headers[hdr]);
+                               }
+                       }
+               }
+               // FIXME: is this appropriate for all content types?
+               xhr.setRequestHeader("Content-Type", args.contentType || _defaultContentType);
+               if(!args.headers || !("X-Requested-With" in args.headers)){
+                       xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+               }
+               // FIXME: set other headers here!
+               _d._ioNotifyStart(dfd);
+               if(dojo.config.debugAtAllCosts){
+                       xhr.send(ioArgs.query);
+               }else{
+                       try{
+                               xhr.send(ioArgs.query);
+                       }catch(e){
+                               ioArgs.error = e;
+                               dfd.cancel();
+                       }
+               }
+               _d._ioWatch(dfd, _validCheck, _ioCheck, _resHandle);
+               xhr = null;
+               return dfd; // dojo.Deferred
+       }
+
+       dojo.xhrGet = function(/*dojo.__XhrArgs*/ args){
+               //      summary: 
+               //              Sends an HTTP GET request to the server.
+               return _d.xhr("GET", args); // dojo.Deferred
+       }
+
+       dojo.rawXhrPost = dojo.xhrPost = function(/*dojo.__XhrArgs*/ args){
+               //      summary:
+               //              Sends an HTTP POST request to the server. In addtion to the properties
+               //              listed for the dojo.__XhrArgs type, the following property is allowed:
+               //      postData:
+               //              String. Send raw data in the body of the POST request.
+               return _d.xhr("POST", args, true); // dojo.Deferred
+       }
+
+       dojo.rawXhrPut = dojo.xhrPut = function(/*dojo.__XhrArgs*/ args){
+               //      summary:
+               //              Sends an HTTP PUT request to the server. In addtion to the properties
+               //              listed for the dojo.__XhrArgs type, the following property is allowed:
+               //      putData:
+               //              String. Send raw data in the body of the PUT request.
+               return _d.xhr("PUT", args, true); // dojo.Deferred
+       }
+
+       dojo.xhrDelete = function(/*dojo.__XhrArgs*/ args){
+               //      summary:
+               //              Sends an HTTP DELETE request to the server.
+               return _d.xhr("DELETE", args); //dojo.Deferred
+       }
+
+       /*
+       dojo.wrapForm = function(formNode){
+               //summary:
+               //              A replacement for FormBind, but not implemented yet.
+
+               // FIXME: need to think harder about what extensions to this we might
+               // want. What should we allow folks to do w/ this? What events to
+               // set/send?
+               throw new Error("dojo.wrapForm not yet implemented");
+       }
+       */
+})();
+
+}
+
+if(!dojo._hasResource["dojo._base.fx"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.fx"] = true;
+dojo.provide("dojo._base.fx");
+
+
+
+
+
+/*
+       Animation loosely package based on Dan Pupius' work, contributed under CLA:
+               http://pupius.co.uk/js/Toolkit.Drawing.js
+*/
+(function(){
+       var d = dojo;
+       var _mixin = d._mixin;
+
+       dojo._Line = function(/*int*/ start, /*int*/ end){
+               //      summary:
+               //              dojo._Line is the object used to generate values from a start value
+               //              to an end value
+               //      start: int
+               //              Beginning value for range
+               //      end: int
+               //              Ending value for range
+               this.start = start;
+               this.end = end;
+       };
+
+       dojo._Line.prototype.getValue = function(/*float*/ n){
+               //      summary: Returns the point on the line
+               //      n: a floating point number greater than 0 and less than 1
+               return ((this.end - this.start) * n) + this.start; // Decimal
+       };
+
+       dojo.Animation = function(args){
+               //      summary:
+               //              A generic animation class that fires callbacks into its handlers
+               //              object at various states.
+               //      description:
+               //              A generic animation class that fires callbacks into its handlers
+               //              object at various states. Nearly all dojo animation functions
+               //              return an instance of this method, usually without calling the
+               //              .play() method beforehand. Therefore, you will likely need to
+               //              call .play() on instances of `dojo.Animation` when one is
+               //              returned.
+               // args: Object
+               //              The 'magic argument', mixing all the properties into this
+               //              animation instance.
+
+               _mixin(this, args);
+               if(d.isArray(this.curve)){
+                       this.curve = new d._Line(this.curve[0], this.curve[1]);
+               }
+
+       };
+
+       // Alias to drop come 2.0:
+       d._Animation = d.Animation;
+
+       d.extend(dojo.Animation, {
+               // duration: Integer
+               //              The time in milliseonds the animation will take to run
+               duration: 350,
+
+       /*=====
+               // curve: dojo._Line|Array
+               //              A two element array of start and end values, or a `dojo._Line` instance to be
+               //              used in the Animation.
+               curve: null,
+
+               // easing: Function?
+               //              A Function to adjust the acceleration (or deceleration) of the progress
+               //              across a dojo._Line
+               easing: null,
+       =====*/
+
+               // repeat: Integer?
+               //              The number of times to loop the animation
+               repeat: 0,
+
+               // rate: Integer?
+               //              the time in milliseconds to wait before advancing to next frame
+               //              (used as a fps timer: 1000/rate = fps)
+               rate: 20 /* 50 fps */,
+
+       /*=====
+               // delay: Integer?
+               //              The time in milliseconds to wait before starting animation after it
+               //              has been .play()'ed
+               delay: null,
+
+               // beforeBegin: Event?
+               //              Synthetic event fired before a dojo.Animation begins playing (synchronous)
+               beforeBegin: null,
+
+               // onBegin: Event?
+               //              Synthetic event fired as a dojo.Animation begins playing (useful?)
+               onBegin: null,
+
+               // onAnimate: Event?
+               //              Synthetic event fired at each interval of a `dojo.Animation`
+               onAnimate: null,
+
+               // onEnd: Event?
+               //              Synthetic event fired after the final frame of a `dojo.Animation`
+               onEnd: null,
+
+               // onPlay: Event?
+               //              Synthetic event fired any time a `dojo.Animation` is play()'ed
+               onPlay: null,
+
+               // onPause: Event?
+               //              Synthetic event fired when a `dojo.Animation` is paused
+               onPause: null,
+
+               // onStop: Event
+               //              Synthetic event fires when a `dojo.Animation` is stopped
+               onStop: null,
+
+       =====*/
+
+               _percent: 0,
+               _startRepeatCount: 0,
+
+               _getStep: function(){
+                       var _p = this._percent,
+                               _e = this.easing
+                       ;
+                       return _e ? _e(_p) : _p;
+               },
+               _fire: function(/*Event*/ evt, /*Array?*/ args){
+                       //      summary:
+                       //              Convenience function.  Fire event "evt" and pass it the
+                       //              arguments specified in "args".
+                       //      description:
+                       //              Convenience function.  Fire event "evt" and pass it the
+                       //              arguments specified in "args".
+                       //              Fires the callback in the scope of the `dojo.Animation`
+                       //              instance.
+                       //      evt:
+                       //              The event to fire.
+                       //      args:
+                       //              The arguments to pass to the event.
+                       var a = args||[];
+                       if(this[evt]){
+                               if(d.config.debugAtAllCosts){
+                                       this[evt].apply(this, a);
+                               }else{
+                                       try{
+                                               this[evt].apply(this, a);
+                                       }catch(e){
+                                               // squelch and log because we shouldn't allow exceptions in
+                                               // synthetic event handlers to cause the internal timer to run
+                                               // amuck, potentially pegging the CPU. I'm not a fan of this
+                                               // squelch, but hopefully logging will make it clear what's
+                                               // going on
+                                               console.error("exception in animation handler for:", evt);
+                                               console.error(e);
+                                       }
+                               }
+                       }
+                       return this; // dojo.Animation
+               },
+
+               play: function(/*int?*/ delay, /*Boolean?*/ gotoStart){
+                       // summary:
+                       //              Start the animation.
+                       // delay:
+                       //              How many milliseconds to delay before starting.
+                       // gotoStart:
+                       //              If true, starts the animation from the beginning; otherwise,
+                       //              starts it from its current position.
+                       // returns: dojo.Animation
+                       //              The instance to allow chaining.
+
+                       var _t = this;
+                       if(_t._delayTimer){ _t._clearTimer(); }
+                       if(gotoStart){
+                               _t._stopTimer();
+                               _t._active = _t._paused = false;
+                               _t._percent = 0;
+                       }else if(_t._active && !_t._paused){
+                               return _t;
+                       }
+
+                       _t._fire("beforeBegin", [_t.node]);
+
+                       var de = delay || _t.delay,
+                               _p = dojo.hitch(_t, "_play", gotoStart);
+
+                       if(de > 0){
+                               _t._delayTimer = setTimeout(_p, de);
+                               return _t;
+                       }
+                       _p();
+                       return _t;
+               },
+
+               _play: function(gotoStart){
+                       var _t = this;
+                       if(_t._delayTimer){ _t._clearTimer(); }
+                       _t._startTime = new Date().valueOf();
+                       if(_t._paused){
+                               _t._startTime -= _t.duration * _t._percent;
+                       }
+
+                       _t._active = true;
+                       _t._paused = false;
+                       var value = _t.curve.getValue(_t._getStep());
+                       if(!_t._percent){
+                               if(!_t._startRepeatCount){
+                                       _t._startRepeatCount = _t.repeat;
+                               }
+                               _t._fire("onBegin", [value]);
+                       }
+
+                       _t._fire("onPlay", [value]);
+
+                       _t._cycle();
+                       return _t; // dojo.Animation
+               },
+
+               pause: function(){
+                       // summary: Pauses a running animation.
+                       var _t = this;
+                       if(_t._delayTimer){ _t._clearTimer(); }
+                       _t._stopTimer();
+                       if(!_t._active){ return _t; /*dojo.Animation*/ }
+                       _t._paused = true;
+                       _t._fire("onPause", [_t.curve.getValue(_t._getStep())]);
+                       return _t; // dojo.Animation
+               },
+
+               gotoPercent: function(/*Decimal*/ percent, /*Boolean?*/ andPlay){
+                       //      summary:
+                       //              Sets the progress of the animation.
+                       //      percent:
+                       //              A percentage in decimal notation (between and including 0.0 and 1.0).
+                       //      andPlay:
+                       //              If true, play the animation after setting the progress.
+                       var _t = this;
+                       _t._stopTimer();
+                       _t._active = _t._paused = true;
+                       _t._percent = percent;
+                       if(andPlay){ _t.play(); }
+                       return _t; // dojo.Animation
+               },
+
+               stop: function(/*boolean?*/ gotoEnd){
+                       // summary: Stops a running animation.
+                       // gotoEnd: If true, the animation will end.
+                       var _t = this;
+                       if(_t._delayTimer){ _t._clearTimer(); }
+                       if(!_t._timer){ return _t; /* dojo.Animation */ }
+                       _t._stopTimer();
+                       if(gotoEnd){
+                               _t._percent = 1;
+                       }
+                       _t._fire("onStop", [_t.curve.getValue(_t._getStep())]);
+                       _t._active = _t._paused = false;
+                       return _t; // dojo.Animation
+               },
+
+               status: function(){
+                       // summary:
+                       //              Returns a string token representation of the status of
+                       //              the animation, one of: "paused", "playing", "stopped"
+                       if(this._active){
+                               return this._paused ? "paused" : "playing"; // String
+                       }
+                       return "stopped"; // String
+               },
+
+               _cycle: function(){
+                       var _t = this;
+                       if(_t._active){
+                               var curr = new Date().valueOf();
+                               var step = (curr - _t._startTime) / (_t.duration);
+
+                               if(step >= 1){
+                                       step = 1;
+                               }
+                               _t._percent = step;
+
+                               // Perform easing
+                               if(_t.easing){
+                                       step = _t.easing(step);
+                               }
+
+                               _t._fire("onAnimate", [_t.curve.getValue(step)]);
+
+                               if(_t._percent < 1){
+                                       _t._startTimer();
+                               }else{
+                                       _t._active = false;
+
+                                       if(_t.repeat > 0){
+                                               _t.repeat--;
+                                               _t.play(null, true);
+                                       }else if(_t.repeat == -1){
+                                               _t.play(null, true);
+                                       }else{
+                                               if(_t._startRepeatCount){
+                                                       _t.repeat = _t._startRepeatCount;
+                                                       _t._startRepeatCount = 0;
+                                               }
+                                       }
+                                       _t._percent = 0;
+                                       _t._fire("onEnd", [_t.node]);
+                                       !_t.repeat && _t._stopTimer();
+                               }
+                       }
+                       return _t; // dojo.Animation
+               },
+
+               _clearTimer: function(){
+                       // summary: Clear the play delay timer
+                       clearTimeout(this._delayTimer);
+                       delete this._delayTimer;
+               }
+
+       });
+
+       // the local timer, stubbed into all Animation instances
+       var ctr = 0,
+               timer = null,
+               runner = {
+                       run: function(){}
+               };
+
+       d.extend(d.Animation, {
+
+               _startTimer: function(){
+                       if(!this._timer){
+                               this._timer = d.connect(runner, "run", this, "_cycle");
+                               ctr++;
+                       }
+                       if(!timer){
+                               timer = setInterval(d.hitch(runner, "run"), this.rate);
+                       }
+               },
+
+               _stopTimer: function(){
+                       if(this._timer){
+                               d.disconnect(this._timer);
+                               this._timer = null;
+                               ctr--;
+                       }
+                       if(ctr <= 0){
+                               clearInterval(timer);
+                               timer = null;
+                               ctr = 0;
+                       }
+               }
+
+       });
+
+       var _makeFadeable =
+                               d.isIE ? function(node){
+                       // only set the zoom if the "tickle" value would be the same as the
+                       // default
+                       var ns = node.style;
+                       // don't set the width to auto if it didn't already cascade that way.
+                       // We don't want to f anyones designs
+                       if(!ns.width.length && d.style(node, "width") == "auto"){
+                               ns.width = "auto";
+                       }
+               } :
+                               function(){};
+
+       dojo._fade = function(/*Object*/ args){
+               //      summary:
+               //              Returns an animation that will fade the node defined by
+               //              args.node from the start to end values passed (args.start
+               //              args.end) (end is mandatory, start is optional)
+
+               args.node = d.byId(args.node);
+               var fArgs = _mixin({ properties: {} }, args),
+                       props = (fArgs.properties.opacity = {});
+
+               props.start = !("start" in fArgs) ?
+                       function(){
+                               return +d.style(fArgs.node, "opacity")||0;
+                       } : fArgs.start;
+               props.end = fArgs.end;
+
+               var anim = d.animateProperty(fArgs);
+               d.connect(anim, "beforeBegin", d.partial(_makeFadeable, fArgs.node));
+
+               return anim; // dojo.Animation
+       };
+
+       /*=====
+       dojo.__FadeArgs = function(node, duration, easing){
+               //      node: DOMNode|String
+               //              The node referenced in the animation
+               //      duration: Integer?
+               //              Duration of the animation in milliseconds.
+               //      easing: Function?
+               //              An easing function.
+               this.node = node;
+               this.duration = duration;
+               this.easing = easing;
+       }
+       =====*/
+
+       dojo.fadeIn = function(/*dojo.__FadeArgs*/ args){
+               // summary:
+               //              Returns an animation that will fade node defined in 'args' from
+               //              its current opacity to fully opaque.
+               return d._fade(_mixin({ end: 1 }, args)); // dojo.Animation
+       };
+
+       dojo.fadeOut = function(/*dojo.__FadeArgs*/  args){
+               // summary:
+               //              Returns an animation that will fade node defined in 'args'
+               //              from its current opacity to fully transparent.
+               return d._fade(_mixin({ end: 0 }, args)); // dojo.Animation
+       };
+
+       dojo._defaultEasing = function(/*Decimal?*/ n){
+               // summary: The default easing function for dojo.Animation(s)
+               return 0.5 + ((Math.sin((n + 1.5) * Math.PI)) / 2);
+       };
+
+       var PropLine = function(properties){
+               // PropLine is an internal class which is used to model the values of
+               // an a group of CSS properties across an animation lifecycle. In
+               // particular, the "getValue" function handles getting interpolated
+               // values between start and end for a particular CSS value.
+               this._properties = properties;
+               for(var p in properties){
+                       var prop = properties[p];
+                       if(prop.start instanceof d.Color){
+                               // create a reusable temp color object to keep intermediate results
+                               prop.tempColor = new d.Color();
+                       }
+               }
+       };
+
+       PropLine.prototype.getValue = function(r){
+               var ret = {};
+               for(var p in this._properties){
+                       var prop = this._properties[p],
+                               start = prop.start;
+                       if(start instanceof d.Color){
+                               ret[p] = d.blendColors(start, prop.end, r, prop.tempColor).toCss();
+                       }else if(!d.isArray(start)){
+                               ret[p] = ((prop.end - start) * r) + start + (p != "opacity" ? prop.units || "px" : 0);
+                       }
+               }
+               return ret;
+       };
+
+       /*=====
+       dojo.declare("dojo.__AnimArgs", [dojo.__FadeArgs], {
+               // Properties: Object?
+               //      A hash map of style properties to Objects describing the transition,
+               //      such as the properties of dojo._Line with an additional 'units' property
+               properties: {}
+
+               //TODOC: add event callbacks
+       });
+       =====*/
+
+       dojo.animateProperty = function(/*dojo.__AnimArgs*/ args){
+               // summary:
+               //              Returns an animation that will transition the properties of
+               //              node defined in `args` depending how they are defined in
+               //              `args.properties`
+               //
+               // description:
+               //              `dojo.animateProperty` is the foundation of most `dojo.fx`
+               //              animations. It takes an object of "properties" corresponding to
+               //              style properties, and animates them in parallel over a set
+               //              duration.
+               //
+               // example:
+               //              A simple animation that changes the width of the specified node.
+               //      |       dojo.animateProperty({
+               //      |               node: "nodeId",
+               //      |               properties: { width: 400 },
+               //      |       }).play();
+               //              Dojo figures out the start value for the width and converts the
+               //              integer specified for the width to the more expressive but
+               //              verbose form `{ width: { end: '400', units: 'px' } }` which you
+               //              can also specify directly. Defaults to 'px' if ommitted.
+               //
+               // example:
+               //              Animate width, height, and padding over 2 seconds... the
+               //              pedantic way:
+               //      |       dojo.animateProperty({ node: node, duration:2000,
+               //      |               properties: {
+               //      |                       width: { start: '200', end: '400', units:"px" },
+               //      |                       height: { start:'200', end: '400', units:"px" },
+               //      |                       paddingTop: { start:'5', end:'50', units:"px" }
+               //      |               }
+               //      |       }).play();
+               //              Note 'paddingTop' is used over 'padding-top'. Multi-name CSS properties
+               //              are written using "mixed case", as the hyphen is illegal as an object key.
+               //
+               // example:
+               //              Plug in a different easing function and register a callback for
+               //              when the animation ends. Easing functions accept values between
+               //              zero and one and return a value on that basis. In this case, an
+               //              exponential-in curve.
+               //      |       dojo.animateProperty({
+               //      |               node: "nodeId",
+               //      |               // dojo figures out the start value
+               //      |               properties: { width: { end: 400 } },
+               //      |               easing: function(n){
+               //      |                       return (n==0) ? 0 : Math.pow(2, 10 * (n - 1));
+               //      |               },
+               //      |               onEnd: function(node){
+               //      |                       // called when the animation finishes. The animation
+               //      |                       // target is passed to this function
+               //      |               }
+               //      |       }).play(500); // delay playing half a second
+               //
+               // example:
+               //              Like all `dojo.Animation`s, animateProperty returns a handle to the
+               //              Animation instance, which fires the events common to Dojo FX. Use `dojo.connect`
+               //              to access these events outside of the Animation definiton:
+               //      |       var anim = dojo.animateProperty({
+               //      |               node:"someId",
+               //      |               properties:{
+               //      |                       width:400, height:500
+               //      |               }
+               //      |       });
+               //      |       dojo.connect(anim,"onEnd", function(){
+               //      |               console.log("animation ended");
+               //      |       });
+               //      |       // play the animation now:
+               //      |       anim.play();
+               //
+               // example:
+               //              Each property can be a function whose return value is substituted along.
+               //              Additionally, each measurement (eg: start, end) can be a function. The node
+               //              reference is passed direcly to callbacks.
+               //      |       dojo.animateProperty({
+               //      |               node:"mine",
+               //      |               properties:{
+               //      |                       height:function(node){
+               //      |                               // shrink this node by 50%
+               //      |                               return dojo.position(node).h / 2
+               //      |                       },
+               //      |                       width:{
+               //      |                               start:function(node){ return 100; },
+               //      |                               end:function(node){ return 200; }
+               //      |                       }
+               //      |               }
+               //      |       }).play();
+               //
+
+               var n = args.node = d.byId(args.node);
+               if(!args.easing){ args.easing = d._defaultEasing; }
+
+               var anim = new d.Animation(args);
+               d.connect(anim, "beforeBegin", anim, function(){
+                       var pm = {};
+                       for(var p in this.properties){
+                               // Make shallow copy of properties into pm because we overwrite
+                               // some values below. In particular if start/end are functions
+                               // we don't want to overwrite them or the functions won't be
+                               // called if the animation is reused.
+                               if(p == "width" || p == "height"){
+                                       this.node.display = "block";
+                               }
+                               var prop = this.properties[p];
+                               if(d.isFunction(prop)){
+                                       prop = prop(n);
+                               }
+                               prop = pm[p] = _mixin({}, (d.isObject(prop) ? prop: { end: prop }));
+
+                               if(d.isFunction(prop.start)){
+                                       prop.start = prop.start(n);
+                               }
+                               if(d.isFunction(prop.end)){
+                                       prop.end = prop.end(n);
+                               }
+                               var isColor = (p.toLowerCase().indexOf("color") >= 0);
+                               function getStyle(node, p){
+                                       // dojo.style(node, "height") can return "auto" or "" on IE; this is more reliable:
+                                       var v = { height: node.offsetHeight, width: node.offsetWidth }[p];
+                                       if(v !== undefined){ return v; }
+                                       v = d.style(node, p);
+                                       return (p == "opacity") ? +v : (isColor ? v : parseFloat(v));
+                               }
+                               if(!("end" in prop)){
+                                       prop.end = getStyle(n, p);
+                               }else if(!("start" in prop)){
+                                       prop.start = getStyle(n, p);
+                               }
+
+                               if(isColor){
+                                       prop.start = new d.Color(prop.start);
+                                       prop.end = new d.Color(prop.end);
+                               }else{
+                                       prop.start = (p == "opacity") ? +prop.start : parseFloat(prop.start);
+                               }
+                       }
+                       this.curve = new PropLine(pm);
+               });
+               d.connect(anim, "onAnimate", d.hitch(d, "style", anim.node));
+               return anim; // dojo.Animation
+       };
+
+       dojo.anim = function(   /*DOMNode|String*/      node,
+                                                       /*Object*/                      properties,
+                                                       /*Integer?*/            duration,
+                                                       /*Function?*/           easing,
+                                                       /*Function?*/           onEnd,
+                                                       /*Integer?*/            delay){
+               //      summary:
+               //              A simpler interface to `dojo.animateProperty()`, also returns
+               //              an instance of `dojo.Animation` but begins the animation
+               //              immediately, unlike nearly every other Dojo animation API.
+               //      description:
+               //              `dojo.anim` is a simpler (but somewhat less powerful) version
+               //              of `dojo.animateProperty`.  It uses defaults for many basic properties
+               //              and allows for positional parameters to be used in place of the
+               //              packed "property bag" which is used for other Dojo animation
+               //              methods.
+               //
+               //              The `dojo.Animation` object returned from `dojo.anim` will be
+               //              already playing when it is returned from this function, so
+               //              calling play() on it again is (usually) a no-op.
+               //      node:
+               //              a DOM node or the id of a node to animate CSS properties on
+               //      duration:
+               //              The number of milliseconds over which the animation
+               //              should run. Defaults to the global animation default duration
+               //              (350ms).
+               //      easing:
+               //              An easing function over which to calculate acceleration
+               //              and deceleration of the animation through its duration.
+               //              A default easing algorithm is provided, but you may
+               //              plug in any you wish. A large selection of easing algorithms
+               //              are available in `dojo.fx.easing`.
+               //      onEnd:
+               //              A function to be called when the animation finishes
+               //              running.
+               //      delay:
+               //              The number of milliseconds to delay beginning the
+               //              animation by. The default is 0.
+               //      example:
+               //              Fade out a node
+               //      |       dojo.anim("id", { opacity: 0 });
+               //      example:
+               //              Fade out a node over a full second
+               //      |       dojo.anim("id", { opacity: 0 }, 1000);
+               return d.animateProperty({ // dojo.Animation
+                       node: node,
+                       duration: duration || d.Animation.prototype.duration,
+                       properties: properties,
+                       easing: easing,
+                       onEnd: onEnd
+               }).play(delay || 0);
+       };
+})();
+
+}
+
+if(!dojo._hasResource["dojo._base.browser"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo._base.browser"] = true;
+dojo.provide("dojo._base.browser");
+
+
+
+
+
+
+
+
+
+
+//Need this to be the last code segment in base, so do not place any
+//dojo.requireIf calls in this file. Otherwise, due to how the build system
+//puts all requireIf dependencies after the current file, the require calls
+//could be called before all of base is defined.
+dojo.forEach(dojo.config.require, function(i){
+       dojo["require"](i);
+});
+
+}
+
+       //INSERT dojo.i18n._preloadLocalizations HERE
+
+       //Check if document already complete, and if so, just trigger page load
+       //listeners. NOTE: does not work with Firefox before 3.6. To support
+       //those browsers, set djConfig.afterOnLoad = true when you know Dojo is added
+       //after page load. Using a timeout so the rest of this
+       //script gets evaluated properly. This work needs to happen after the
+       //dojo.config.require work done in dojo._base.
+       if(dojo.isBrowser && (document.readyState === "complete" || dojo.config.afterOnLoad)){
+               window.setTimeout(dojo._loadInit, 100);
+       }
+})();
+
diff --git a/lib/dojo/fx.js b/lib/dojo/fx.js
new file mode 100644 (file)
index 0000000..39ae253
--- /dev/null
@@ -0,0 +1,252 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.fx"]){
+dojo._hasResource["dojo.fx"]=true;
+dojo.provide("dojo.fx");
+dojo.require("dojo.fx.Toggler");
+(function(){
+var d=dojo,_1={_fire:function(_2,_3){
+if(this[_2]){
+this[_2].apply(this,_3||[]);
+}
+return this;
+}};
+var _4=function(_5){
+this._index=-1;
+this._animations=_5||[];
+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(_4,{_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(_6,_7){
+if(!this._current){
+this._current=this._animations[this._index=0];
+}
+if(!_7&&this._current.status()=="playing"){
+return this;
+}
+var _8=d.connect(this._current,"beforeBegin",this,function(){
+this._fire("beforeBegin");
+}),_9=d.connect(this._current,"onBegin",this,function(_a){
+this._fire("onBegin",arguments);
+}),_b=d.connect(this._current,"onPlay",this,function(_c){
+this._fire("onPlay",arguments);
+d.disconnect(_8);
+d.disconnect(_9);
+d.disconnect(_b);
+});
+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(_d){
+this._fire("onPause",arguments);
+d.disconnect(e);
+});
+this._current.pause();
+}
+return this;
+},gotoPercent:function(_e,_f){
+this.pause();
+var _10=this.duration*_e;
+this._current=null;
+d.some(this._animations,function(a){
+if(a.duration<=_10){
+this._current=a;
+return true;
+}
+_10-=a.duration;
+return false;
+});
+if(this._current){
+this._current.gotoPercent(_10/this._current.duration,_f);
+}
+return this;
+},stop:function(_11){
+if(this._current){
+if(_11){
+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(_4,_1);
+dojo.fx.chain=function(_12){
+return new _4(_12);
+};
+var _13=function(_14){
+this._animations=_14||[];
+this._connects=[];
+this._finished=0;
+this.duration=0;
+d.forEach(_14,function(a){
+var _15=a.duration;
+if(a.delay){
+_15+=a.delay;
+}
+if(this.duration<_15){
+this.duration=_15;
+}
+this._connects.push(d.connect(a,"onEnd",this,"_onEnd"));
+},this);
+this._pseudoAnimation=new d.Animation({curve:[0,1],duration:this.duration});
+var _16=this;
+d.forEach(["beforeBegin","onBegin","onPlay","onAnimate","onPause","onStop","onEnd"],function(evt){
+_16._connects.push(d.connect(_16._pseudoAnimation,evt,function(){
+_16._fire(evt,arguments);
+}));
+});
+};
+d.extend(_13,{_doAction:function(_17,_18){
+d.forEach(this._animations,function(a){
+a[_17].apply(a,_18);
+});
+return this;
+},_onEnd:function(){
+if(++this._finished>this._animations.length){
+this._fire("onEnd");
+}
+},_call:function(_19,_1a){
+var t=this._pseudoAnimation;
+t[_19].apply(t,_1a);
+},play:function(_1b,_1c){
+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(_1d,_1e){
+var ms=this.duration*_1d;
+d.forEach(this._animations,function(a){
+a.gotoPercent(a.duration<ms?1:(ms/a.duration),_1e);
+});
+this._call("gotoPercent",arguments);
+return this;
+},stop:function(_1f){
+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(_13,_1);
+dojo.fx.combine=function(_20){
+return new _13(_20);
+};
+dojo.fx.wipeIn=function(_21){
+var _22=_21.node=d.byId(_21.node),s=_22.style,o;
+var _23=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 _24=d.style(_22,"height");
+return Math.max(_24,1);
+}
+},end:function(){
+return _22.scrollHeight;
+}}}},_21));
+d.connect(_23,"onEnd",function(){
+s.height="auto";
+s.overflow=o;
+});
+return _23;
+};
+dojo.fx.wipeOut=function(_25){
+var _26=_25.node=d.byId(_25.node),s=_26.style,o;
+var _27=d.animateProperty(d.mixin({properties:{height:{end:1}}},_25));
+d.connect(_27,"beforeBegin",function(){
+o=s.overflow;
+s.overflow="hidden";
+s.display="";
+});
+d.connect(_27,"onEnd",function(){
+s.overflow=o;
+s.height="auto";
+s.display="none";
+});
+return _27;
+};
+dojo.fx.slideTo=function(_28){
+var _29=_28.node=d.byId(_28.node),top=null,_2a=null;
+var _2b=(function(n){
+return function(){
+var cs=d.getComputedStyle(n);
+var pos=cs.position;
+top=(pos=="absolute"?n.offsetTop:parseInt(cs.top)||0);
+_2a=(pos=="absolute"?n.offsetLeft:parseInt(cs.left)||0);
+if(pos!="absolute"&&pos!="relative"){
+var ret=d.position(n,true);
+top=ret.y;
+_2a=ret.x;
+n.style.position="absolute";
+n.style.top=top+"px";
+n.style.left=_2a+"px";
+}
+};
+})(_29);
+_2b();
+var _2c=d.animateProperty(d.mixin({properties:{top:_28.top||0,left:_28.left||0}},_28));
+d.connect(_2c,"beforeBegin",_2c,_2b);
+return _2c;
+};
+})();
+}
diff --git a/lib/dojo/fx/Toggler.js b/lib/dojo/fx/Toggler.js
new file mode 100644 (file)
index 0000000..b8bc639
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+       Copyright (c) 2004-2010, 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["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(_1){
+var _2=this;
+dojo.mixin(_2,_1);
+_2.node=_1.node;
+_2._showArgs=dojo.mixin({},_1);
+_2._showArgs.node=_2.node;
+_2._showArgs.duration=_2.showDuration;
+_2.showAnim=_2.showFunc(_2._showArgs);
+_2._hideArgs=dojo.mixin({},_1);
+_2._hideArgs.node=_2.node;
+_2._hideArgs.duration=_2.hideDuration;
+_2.hideAnim=_2.hideFunc(_2._hideArgs);
+dojo.connect(_2.showAnim,"beforeBegin",dojo.hitch(_2.hideAnim,"stop",true));
+dojo.connect(_2.hideAnim,"beforeBegin",dojo.hitch(_2.showAnim,"stop",true));
+},show:function(_3){
+return this.showAnim.play(_3||0);
+},hide:function(_4){
+return this.hideAnim.play(_4||0);
+}});
+}
diff --git a/lib/dojo/fx/easing.js b/lib/dojo/fx/easing.js
new file mode 100644 (file)
index 0000000..0de5d5e
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.fx.easing"]){
+dojo._hasResource["dojo.fx.easing"]=true;
+dojo.provide("dojo.fx.easing");
+dojo.fx.easing={linear:function(n){
+return n;
+},quadIn:function(n){
+return Math.pow(n,2);
+},quadOut:function(n){
+return n*(n-2)*-1;
+},quadInOut:function(n){
+n=n*2;
+if(n<1){
+return Math.pow(n,2)/2;
+}
+return -1*((--n)*(n-2)-1)/2;
+},cubicIn:function(n){
+return Math.pow(n,3);
+},cubicOut:function(n){
+return Math.pow(n-1,3)+1;
+},cubicInOut:function(n){
+n=n*2;
+if(n<1){
+return Math.pow(n,3)/2;
+}
+n-=2;
+return (Math.pow(n,3)+2)/2;
+},quartIn:function(n){
+return Math.pow(n,4);
+},quartOut:function(n){
+return -1*(Math.pow(n-1,4)-1);
+},quartInOut:function(n){
+n=n*2;
+if(n<1){
+return Math.pow(n,4)/2;
+}
+n-=2;
+return -1/2*(Math.pow(n,4)-2);
+},quintIn:function(n){
+return Math.pow(n,5);
+},quintOut:function(n){
+return Math.pow(n-1,5)+1;
+},quintInOut:function(n){
+n=n*2;
+if(n<1){
+return Math.pow(n,5)/2;
+}
+n-=2;
+return (Math.pow(n,5)+2)/2;
+},sineIn:function(n){
+return -1*Math.cos(n*(Math.PI/2))+1;
+},sineOut:function(n){
+return Math.sin(n*(Math.PI/2));
+},sineInOut:function(n){
+return -1*(Math.cos(Math.PI*n)-1)/2;
+},expoIn:function(n){
+return (n==0)?0:Math.pow(2,10*(n-1));
+},expoOut:function(n){
+return (n==1)?1:(-1*Math.pow(2,-10*n)+1);
+},expoInOut:function(n){
+if(n==0){
+return 0;
+}
+if(n==1){
+return 1;
+}
+n=n*2;
+if(n<1){
+return Math.pow(2,10*(n-1))/2;
+}
+--n;
+return (-1*Math.pow(2,-10*n)+2)/2;
+},circIn:function(n){
+return -1*(Math.sqrt(1-Math.pow(n,2))-1);
+},circOut:function(n){
+n=n-1;
+return Math.sqrt(1-Math.pow(n,2));
+},circInOut:function(n){
+n=n*2;
+if(n<1){
+return -1/2*(Math.sqrt(1-Math.pow(n,2))-1);
+}
+n-=2;
+return 1/2*(Math.sqrt(1-Math.pow(n,2))+1);
+},backIn:function(n){
+var s=1.70158;
+return Math.pow(n,2)*((s+1)*n-s);
+},backOut:function(n){
+n=n-1;
+var s=1.70158;
+return Math.pow(n,2)*((s+1)*n+s)+1;
+},backInOut:function(n){
+var s=1.70158*1.525;
+n=n*2;
+if(n<1){
+return (Math.pow(n,2)*((s+1)*n-s))/2;
+}
+n-=2;
+return (Math.pow(n,2)*((s+1)*n+s)+2)/2;
+},elasticIn:function(n){
+if(n==0||n==1){
+return n;
+}
+var p=0.3;
+var s=p/4;
+n=n-1;
+return -1*Math.pow(2,10*n)*Math.sin((n-s)*(2*Math.PI)/p);
+},elasticOut:function(n){
+if(n==0||n==1){
+return n;
+}
+var p=0.3;
+var s=p/4;
+return Math.pow(2,-10*n)*Math.sin((n-s)*(2*Math.PI)/p)+1;
+},elasticInOut:function(n){
+if(n==0){
+return 0;
+}
+n=n*2;
+if(n==2){
+return 1;
+}
+var p=0.3*1.5;
+var s=p/4;
+if(n<1){
+n-=1;
+return -0.5*(Math.pow(2,10*n)*Math.sin((n-s)*(2*Math.PI)/p));
+}
+n-=1;
+return 0.5*(Math.pow(2,-10*n)*Math.sin((n-s)*(2*Math.PI)/p))+1;
+},bounceIn:function(n){
+return (1-dojo.fx.easing.bounceOut(1-n));
+},bounceOut:function(n){
+var s=7.5625;
+var p=2.75;
+var l;
+if(n<(1/p)){
+l=s*Math.pow(n,2);
+}else{
+if(n<(2/p)){
+n-=(1.5/p);
+l=s*Math.pow(n,2)+0.75;
+}else{
+if(n<(2.5/p)){
+n-=(2.25/p);
+l=s*Math.pow(n,2)+0.9375;
+}else{
+n-=(2.625/p);
+l=s*Math.pow(n,2)+0.984375;
+}
+}
+}
+return l;
+},bounceInOut:function(n){
+if(n<0.5){
+return dojo.fx.easing.bounceIn(n*2)/2;
+}
+return (dojo.fx.easing.bounceOut(n*2-1)/2)+0.5;
+}};
+}
diff --git a/lib/dojo/gears.js b/lib/dojo/gears.js
new file mode 100644 (file)
index 0000000..4b70c14
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.gears"]){
+dojo._hasResource["dojo.gears"]=true;
+dojo.provide("dojo.gears");
+dojo.gears._gearsObject=function(){
+var _1;
+var _2;
+var _3=dojo.getObject("google.gears");
+if(_3){
+return _3;
+}
+if(typeof GearsFactory!="undefined"){
+_1=new GearsFactory();
+}else{
+if(dojo.isIE){
+try{
+_1=new ActiveXObject("Gears.Factory");
+}
+catch(e){
+}
+}else{
+if(navigator.mimeTypes["application/x-googlegears"]){
+_1=document.createElement("object");
+_1.setAttribute("type","application/x-googlegears");
+_1.setAttribute("width",0);
+_1.setAttribute("height",0);
+_1.style.display="none";
+document.documentElement.appendChild(_1);
+}
+}
+}
+if(!_1){
+return null;
+}
+dojo.setObject("google.gears.factory",_1);
+return dojo.getObject("google.gears");
+};
+dojo.gears.available=(!!dojo.gears._gearsObject())||0;
+}
diff --git a/lib/dojo/hash.js b/lib/dojo/hash.js
new file mode 100644 (file)
index 0000000..b73d370
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.hash"]){
+dojo._hasResource["dojo.hash"]=true;
+dojo.provide("dojo.hash");
+(function(){
+dojo.hash=function(_1,_2){
+if(!arguments.length){
+return _3();
+}
+if(_1.charAt(0)=="#"){
+_1=_1.substring(1);
+}
+if(_2){
+_4(_1);
+}else{
+location.href="#"+_1;
+}
+return _1;
+};
+var _5=null,_6=null,_7=dojo.config.hashPollFrequency||100;
+function _8(_9,_a){
+var i=_9.indexOf(_a);
+return (i>=0)?_9.substring(i+1):"";
+};
+function _3(){
+return _8(location.href,"#");
+};
+function _b(){
+dojo.publish("/dojo/hashchange",[_3()]);
+};
+function _c(){
+if(_3()===_5){
+return;
+}
+_5=_3();
+_b();
+};
+function _4(_d){
+if(_6){
+if(_6.isTransitioning()){
+setTimeout(dojo.hitch(null,_4,_d),_7);
+return;
+}
+var _e=_6.iframe.location.href;
+var _f=_e.indexOf("?");
+_6.iframe.location.replace(_e.substring(0,_f)+"?"+_d);
+return;
+}
+location.replace("#"+_d);
+_c();
+};
+function _10(){
+var ifr=document.createElement("iframe"),_11="dojo-hash-iframe",_12=dojo.config.dojoBlankHtmlUrl||dojo.moduleUrl("dojo","resources/blank.html");
+ifr.id=_11;
+ifr.src=_12+"?"+_3();
+ifr.style.display="none";
+document.body.appendChild(ifr);
+this.iframe=dojo.global[_11];
+var _13,_14,_15,_16,_17,_18=this.iframe.location;
+function _19(){
+_5=_3();
+_13=_17?_5:_8(_18.href,"?");
+_14=false;
+_15=null;
+};
+this.isTransitioning=function(){
+return _14;
+};
+this.pollLocation=function(){
+if(!_17){
+try{
+var _1a=_8(_18.href,"?");
+if(document.title!=_16){
+_16=this.iframe.document.title=document.title;
+}
+}
+catch(e){
+_17=true;
+console.error("dojo.hash: Error adding history entry. Server unreachable.");
+}
+}
+var _1b=_3();
+if(_14&&_5===_1b){
+if(_17||_1a===_15){
+_19();
+_b();
+}else{
+setTimeout(dojo.hitch(this,this.pollLocation),0);
+return;
+}
+}else{
+if(_5===_1b&&(_17||_13===_1a)){
+}else{
+if(_5!==_1b){
+_5=_1b;
+_14=true;
+_15=_1b;
+ifr.src=_12+"?"+_15;
+_17=false;
+setTimeout(dojo.hitch(this,this.pollLocation),0);
+return;
+}else{
+if(!_17){
+location.href="#"+_18.search.substring(1);
+_19();
+_b();
+}
+}
+}
+}
+setTimeout(dojo.hitch(this,this.pollLocation),_7);
+};
+_19();
+setTimeout(dojo.hitch(this,this.pollLocation),_7);
+};
+dojo.addOnLoad(function(){
+if("onhashchange" in dojo.global&&(!dojo.isIE||(dojo.isIE>=8&&document.compatMode!="BackCompat"))){
+dojo.connect(dojo.global,"onhashchange",_b);
+}else{
+if(document.addEventListener){
+_5=_3();
+setInterval(_c,_7);
+}else{
+if(document.attachEvent){
+_6=new _10();
+}
+}
+}
+});
+})();
+}
diff --git a/lib/dojo/html.js b/lib/dojo/html.js
new file mode 100644 (file)
index 0000000..7c15e58
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.html"]){
+dojo._hasResource["dojo.html"]=true;
+dojo.provide("dojo.html");
+dojo.require("dojo.parser");
+(function(){
+var _1=0,d=dojo;
+dojo.html._secureForInnerHtml=function(_2){
+return _2.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"");
+};
+dojo.html._emptyNode=dojo.empty;
+dojo.html._setNodeContent=function(_3,_4){
+d.empty(_3);
+if(_4){
+if(typeof _4=="string"){
+_4=d._toDom(_4,_3.ownerDocument);
+}
+if(!_4.nodeType&&d.isArrayLike(_4)){
+for(var _5=_4.length,i=0;i<_4.length;i=_5==_4.length?i+1:0){
+d.place(_4[i],_3,"last");
+}
+}else{
+d.place(_4,_3,"last");
+}
+}
+return _3;
+};
+dojo.declare("dojo.html._ContentSetter",null,{node:"",content:"",id:"",cleanContent:false,extractContent:false,parseContent:false,constructor:function(_6,_7){
+dojo.mixin(this,_6||{});
+_7=this.node=dojo.byId(this.node||_7);
+if(!this.id){
+this.id=["Setter",(_7)?_7.id||_7.tagName:"",_1++].join("_");
+}
+},set:function(_8,_9){
+if(undefined!==_8){
+this.content=_8;
+}
+if(_9){
+this._mixin(_9);
+}
+this.onBegin();
+this.setContent();
+this.onEnd();
+return this.node;
+},setContent:function(){
+var _a=this.node;
+if(!_a){
+throw new Error(this.declaredClass+": setContent given no node");
+}
+try{
+_a=dojo.html._setNodeContent(_a,this.content);
+}
+catch(e){
+var _b=this.onContentError(e);
+try{
+_a.innerHTML=_b;
+}
+catch(e){
+console.error("Fatal "+this.declaredClass+".setContent could not change content due to "+e.message,e);
+}
+}
+this.node=_a;
+},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 _c=this.content;
+if(dojo.isString(_c)){
+if(this.cleanContent){
+_c=dojo.html._secureForInnerHtml(_c);
+}
+if(this.extractContent){
+var _d=_c.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);
+if(_d){
+_c=_d[1];
+}
+}
+}
+this.empty();
+this.content=_c;
+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(_e){
+return "Error occured setting content: "+_e;
+},_mixin:function(_f){
+var _10={},key;
+for(key in _f){
+if(key in _10){
+continue;
+}
+this[key]=_f[key];
+}
+},_parse:function(){
+var _11=this.node;
+try{
+this.parseResults=dojo.parser.parse({rootNode:_11,dir:this.dir,lang:this.lang});
+}
+catch(e){
+this._onError("Content",e,"Error parsing in _ContentSetter#"+this.id);
+}
+},_onError:function(_12,err,_13){
+var _14=this["on"+_12+"Error"].call(this,err);
+if(_13){
+console.error(_13,err);
+}else{
+if(_14){
+dojo.html._setNodeContent(this.node,_14,true);
+}
+}
+}});
+dojo.html.set=function(_15,_16,_17){
+if(undefined==_16){
+console.warn("dojo.html.set: no cont argument provided, using empty string");
+_16="";
+}
+if(!_17){
+return dojo.html._setNodeContent(_15,_16,true);
+}else{
+var op=new dojo.html._ContentSetter(dojo.mixin(_17,{content:_16,node:_15}));
+return op.set();
+}
+};
+})();
+}
diff --git a/lib/dojo/i18n.js b/lib/dojo/i18n.js
new file mode 100644 (file)
index 0000000..e914392
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.i18n"]){
+dojo._hasResource["dojo.i18n"]=true;
+dojo.provide("dojo.i18n");
+dojo.i18n.getLocalization=function(_1,_2,_3){
+_3=dojo.i18n.normalizeLocale(_3);
+var _4=_3.split("-");
+var _5=[_1,"nls",_2].join(".");
+var _6=dojo._loadedModules[_5];
+if(_6){
+var _7;
+for(var i=_4.length;i>0;i--){
+var _8=_4.slice(0,i).join("_");
+if(_6[_8]){
+_7=_6[_8];
+break;
+}
+}
+if(!_7){
+_7=_6.ROOT;
+}
+if(_7){
+var _9=function(){
+};
+_9.prototype=_7;
+return new _9();
+}
+}
+throw new Error("Bundle not found: "+_2+" in "+_1+" , locale="+_3);
+};
+dojo.i18n.normalizeLocale=function(_a){
+var _b=_a?_a.toLowerCase():dojo.locale;
+if(_b=="root"){
+_b="ROOT";
+}
+return _b;
+};
+dojo.i18n._requireLocalization=function(_c,_d,_e,_f){
+var _10=dojo.i18n.normalizeLocale(_e);
+var _11=[_c,"nls",_d].join(".");
+var _12="";
+if(_f){
+var _13=_f.split(",");
+for(var i=0;i<_13.length;i++){
+if(_10["indexOf"](_13[i])==0){
+if(_13[i].length>_12.length){
+_12=_13[i];
+}
+}
+}
+if(!_12){
+_12="ROOT";
+}
+}
+var _14=_f?_12:_10;
+var _15=dojo._loadedModules[_11];
+var _16=null;
+if(_15){
+if(dojo.config.localizationComplete&&_15._built){
+return;
+}
+var _17=_14.replace(/-/g,"_");
+var _18=_11+"."+_17;
+_16=dojo._loadedModules[_18];
+}
+if(!_16){
+_15=dojo["provide"](_11);
+var _19=dojo._getModuleSymbols(_c);
+var _1a=_19.concat("nls").join("/");
+var _1b;
+dojo.i18n._searchLocalePath(_14,_f,function(loc){
+var _1c=loc.replace(/-/g,"_");
+var _1d=_11+"."+_1c;
+var _1e=false;
+if(!dojo._loadedModules[_1d]){
+dojo["provide"](_1d);
+var _1f=[_1a];
+if(loc!="ROOT"){
+_1f.push(loc);
+}
+_1f.push(_d);
+var _20=_1f.join("/")+".js";
+_1e=dojo._loadPath(_20,null,function(_21){
+var _22=function(){
+};
+_22.prototype=_1b;
+_15[_1c]=new _22();
+for(var j in _21){
+_15[_1c][j]=_21[j];
+}
+});
+}else{
+_1e=true;
+}
+if(_1e&&_15[_1c]){
+_1b=_15[_1c];
+}else{
+_15[_1c]=_1b;
+}
+if(_f){
+return true;
+}
+});
+}
+if(_f&&_10!=_12){
+_15[_10.replace(/-/g,"_")]=_15[_12.replace(/-/g,"_")];
+}
+};
+(function(){
+var _23=dojo.config.extraLocale;
+if(_23){
+if(!_23 instanceof Array){
+_23=[_23];
+}
+var req=dojo.i18n._requireLocalization;
+dojo.i18n._requireLocalization=function(m,b,_24,_25){
+req(m,b,_24,_25);
+if(_24){
+return;
+}
+for(var i=0;i<_23.length;i++){
+req(m,b,_23[i],_25);
+}
+};
+}
+})();
+dojo.i18n._searchLocalePath=function(_26,_27,_28){
+_26=dojo.i18n.normalizeLocale(_26);
+var _29=_26.split("-");
+var _2a=[];
+for(var i=_29.length;i>0;i--){
+_2a.push(_29.slice(0,i).join("-"));
+}
+_2a.push(false);
+if(_27){
+_2a.reverse();
+}
+for(var j=_2a.length-1;j>=0;j--){
+var loc=_2a[j]||"ROOT";
+var _2b=_28(loc);
+if(_2b){
+break;
+}
+}
+};
+dojo.i18n._preloadLocalizations=function(_2c,_2d){
+function _2e(_2f){
+_2f=dojo.i18n.normalizeLocale(_2f);
+dojo.i18n._searchLocalePath(_2f,true,function(loc){
+for(var i=0;i<_2d.length;i++){
+if(_2d[i]==loc){
+dojo["require"](_2c+"_"+loc);
+return true;
+}
+}
+return false;
+});
+};
+_2e();
+var _30=dojo.config.extraLocale||[];
+for(var i=0;i<_30.length;i++){
+_2e(_30[i]);
+}
+};
+}
diff --git a/lib/dojo/io/iframe.js b/lib/dojo/io/iframe.js
new file mode 100644 (file)
index 0000000..105af16
--- /dev/null
@@ -0,0 +1,265 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.io.iframe"]){
+dojo._hasResource["dojo.io.iframe"]=true;
+dojo.provide("dojo.io.iframe");
+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 _6=dojo.isIE?"<iframe name=\""+_1+"\" src=\""+_5+"\" onload=\""+_2+"\">":"iframe";
+_4=dojo.doc.createElement(_6);
+with(_4){
+name=_1;
+setAttribute("name",_1);
+id=_1;
+}
+dojo.body().appendChild(_4);
+window[_1]=_4;
+with(_4.style){
+if(!(dojo.isSafari<3)){
+position="absolute";
+}
+left=top="1px";
+height=width="1px";
+visibility="hidden";
+}
+if(!dojo.isIE){
+this.setSrc(_4,_5,true);
+_4.onload=new Function(_2);
+}
+return _4;
+},setSrc:function(_7,_8,_9){
+try{
+if(!_9){
+if(dojo.isWebKit){
+_7.location=_8;
+}else{
+frames[_7.name].location=_8;
+}
+}else{
+var _a;
+if(dojo.isIE||dojo.isWebKit>521){
+_a=_7.contentWindow.document;
+}else{
+if(dojo.isSafari){
+_a=_7.document;
+}else{
+_a=_7.contentWindow;
+}
+}
+if(!_a){
+_7.location=_8;
+return;
+}else{
+_a.location.replace(_8);
+}
+}
+}
+catch(e){
+}
+},doc:function(_b){
+var _c=_b.contentDocument||(((_b.name)&&(_b.document)&&(dojo.doc.getElementsByTagName("iframe")[_b.name].contentWindow)&&(dojo.doc.getElementsByTagName("iframe")[_b.name].contentWindow.document)))||((_b.name)&&(dojo.doc.frames[_b.name])&&(dojo.doc.frames[_b.name].document))||null;
+return _c;
+},send:function(_d){
+if(!this["_frame"]){
+this._frame=this.create(this._iframeName,dojo._scopeName+".io.iframe._iframeOnload();");
+}
+var _e=dojo._ioSetArgs(_d,function(_f){
+_f.canceled=true;
+_f.ioArgs._callNext();
+},function(dfd){
+var _10=null;
+try{
+var _11=dfd.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){
+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;
+});
+_e.ioArgs._callNext=function(){
+if(!this["_calledNext"]){
+this._calledNext=true;
+dojo.io.iframe._currentDfd=null;
+dojo.io.iframe._fireNextRequest();
+}
+};
+this._dfdQueue.push(_e);
+this._fireNextRequest();
+dojo._ioWatch(_e,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 _e;
+},_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){
+var tn;
+if(dojo.isIE){
+tn=dojo.doc.createElement("<input type='hidden' name='"+_1a+"'>");
+}else{
+tn=dojo.doc.createElement("input");
+tn.type="hidden";
+tn.name=_1a;
+}
+tn.value=_1b;
+fn.appendChild(tn);
+_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;
+}};
+}
diff --git a/lib/dojo/io/script.js b/lib/dojo/io/script.js
new file mode 100644 (file)
index 0000000..9a94063
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.io.script"]){
+dojo._hasResource["dojo.io.script"]=true;
+dojo.provide("dojo.io.script");
+(function(){
+var _1=dojo.isIE?"onreadystatechange":"load",_2=/complete|loaded/;
+dojo.io.script={get:function(_3){
+var _4=this._makeScriptDeferred(_3);
+var _5=_4.ioArgs;
+dojo._ioAddQueryToUrl(_5);
+dojo._ioNotifyStart(_4);
+if(this._canAttach(_5)){
+var _6=this.attach(_5.id,_5.url,_3.frameDoc);
+if(!_5.jsonp&&!_5.args.checkString){
+var _7=dojo.connect(_6,_1,function(_8){
+if(_8.type=="load"||_2.test(_6.readyState)){
+dojo.disconnect(_7);
+_5.scriptLoaded=_8;
+}
+});
+}
+}
+dojo._ioWatch(_4,this._validCheck,this._ioCheck,this._resHandle);
+return _4;
+},attach:function(id,_9,_a){
+var _b=(_a||dojo.doc);
+var _c=_b.createElement("script");
+_c.type="text/javascript";
+_c.src=_9;
+_c.id=id;
+_c.charset="utf-8";
+return _b.getElementsByTagName("head")[0].appendChild(_c);
+},remove:function(id,_d){
+dojo.destroy(dojo.byId(id,_d));
+if(this["jsonp_"+id]){
+delete this["jsonp_"+id];
+}
+},_makeScriptDeferred:function(_e){
+var _f=dojo._ioSetArgs(_e,this._deferredCancel,this._deferredOk,this._deferredError);
+var _10=_f.ioArgs;
+_10.id=dojo._scopeName+"IoScript"+(this._counter++);
+_10.canDelete=false;
+_10.jsonp=_e.callbackParamName||_e.jsonp;
+if(_10.jsonp){
+_10.query=_10.query||"";
+if(_10.query.length>0){
+_10.query+="&";
+}
+_10.query+=_10.jsonp+"="+(_e.frameDoc?"parent.":"")+dojo._scopeName+".io.script.jsonp_"+_10.id+"._jsonpCallback";
+_10.frameDoc=_e.frameDoc;
+_10.canDelete=true;
+_f._jsonpCallback=this._jsonpCallback;
+this["jsonp_"+_10.id]=_f;
+}
+return _f;
+},_deferredCancel:function(dfd){
+dfd.canceled=true;
+if(dfd.ioArgs.canDelete){
+dojo.io.script._addDeadScript(dfd.ioArgs);
+}
+},_deferredOk:function(dfd){
+var _11=dfd.ioArgs;
+if(_11.canDelete){
+dojo.io.script._addDeadScript(_11);
+}
+return _11.json||_11.scriptLoaded||_11;
+},_deferredError:function(_12,dfd){
+if(dfd.ioArgs.canDelete){
+if(_12.dojoType=="timeout"){
+dojo.io.script.remove(dfd.ioArgs.id,dfd.ioArgs.frameDoc);
+}else{
+dojo.io.script._addDeadScript(dfd.ioArgs);
+}
+}
+return _12;
+},_deadScripts:[],_counter:1,_addDeadScript:function(_13){
+dojo.io.script._deadScripts.push({id:_13.id,frameDoc:_13.frameDoc});
+_13.frameDoc=null;
+},_validCheck:function(dfd){
+var _14=dojo.io.script;
+var _15=_14._deadScripts;
+if(_15&&_15.length>0){
+for(var i=0;i<_15.length;i++){
+_14.remove(_15[i].id,_15[i].frameDoc);
+_15[i].frameDoc=null;
+}
+dojo.io.script._deadScripts=[];
+}
+return true;
+},_ioCheck:function(dfd){
+var _16=dfd.ioArgs;
+if(_16.json||(_16.scriptLoaded&&!_16.args.checkString)){
+return true;
+}
+var _17=_16.args.checkString;
+if(_17&&eval("typeof("+_17+") != 'undefined'")){
+return true;
+}
+return false;
+},_resHandle:function(dfd){
+if(dojo.io.script._ioCheck(dfd)){
+dfd.callback(dfd);
+}else{
+dfd.errback(new Error("inconceivable dojo.io.script._resHandle error"));
+}
+},_canAttach:function(_18){
+return true;
+},_jsonpCallback:function(_19){
+this.ioArgs.json=_19;
+}};
+})();
+}
diff --git a/lib/dojo/jaxer.js b/lib/dojo/jaxer.js
new file mode 100644 (file)
index 0000000..b9cf0df
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.jaxer"]){
+dojo._hasResource["dojo.jaxer"]=true;
+dojo.provide("dojo.jaxer");
+if(typeof print=="function"){
+console.debug=Jaxer.Log.debug;
+console.warn=Jaxer.Log.warn;
+console.error=Jaxer.Log.error;
+console.info=Jaxer.Log.info;
+console.log=Jaxer.Log.warn;
+}
+onserverload=dojo._loadInit;
+}
diff --git a/lib/dojo/nls/ar/colors.js b/lib/dojo/nls/ar/colors.js
new file mode 100644 (file)
index 0000000..50e4a12
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"أزرق معدني فاتح","orangered":"أحمر مائل للبرتقالي","midnightblue":"أزرق بحري","cadetblue":"أزرق ملون بالرمادي","seashell":"أبيض مائل للأصفر فاتح","slategrey":"رمادي اردوازي","coral":"مرجاني","darkturquoise":"تركواز داكن","antiquewhite":"أبيض عتيق","mediumspringgreen":"أخضر ربيعي متوسط","salmon":"برتقالي وردي شاحب","darkgrey":"رمادي داكن","ivory":"عاجي","greenyellow":"أخضر مائل للأصفر","mistyrose":"وردي","lightsalmon":"فضي فاتح","silver":"فضي","dimgrey":"رمادي شاحب","orange":"برتقالي","white":"أبيض","navajowhite":"أبيض ملاحي","royalblue":"أزرق ملكي","deeppink":"أحمر وردي غامق","lime":"ليموني","oldlace":"برتقالي مائل للأصفر شاحب","chartreuse":"أخضر مائل للصفرة","darkcyan":"أزرق سماوي داكن","yellow":"أصفر","linen":"كتاني","olive":"أخضر زيتوني داكن","gold":"ذهبي","lawngreen":"أخضر بلون العشب","lightyellow":"أصفر فاتح","tan":"خمري","darkviolet":"بنفسجي داكن","lightslategrey":"رمادي اردوازي فاتح","grey":"رمادي","darkkhaki":"كاكي داكن","green":"أخضر","deepskyblue":"أزرق سماوي غامق","aqua":"أزرق مائي","sienna":"بني محروق","mintcream":"أصفر شاحب مائل للأخضر الزرعي","rosybrown":"بني وردي","mediumslateblue":"أزرق اردوازي متوسط","magenta":"أحمر قرمزي","lightseagreen":"أخضر مائل للأزرق فاتح","cyan":"أزرق سماوي","olivedrab":"أسود فاتح","darkgoldenrod":"أصفر ذهبي داكن","slateblue":"أزرق اردوازي","mediumaquamarine":"أزرق مائل للأخضر (زبرجد) متوسط","lavender":"أرجواني شاحب","mediumseagreen":"أخضر مائل للأزرق متوسط","maroon":"أحمر داكن","darkslategray":"رمادي اردوازي داكن","mediumturquoise":"تركواز متوسط","ghostwhite":"أبيض شفاف","darkblue":"أزرق داكن","mediumvioletred":"أحمر-بنفسجي متوسط","brown":"بني","lightgray":"رمادي فاتح","sandybrown":"بني مائل للصفرة","pink":"وردي","firebrick":"أصفر زاهي","indigo":"نيلي","snow":"أبيض ثلجي","darkorchid":"أرجواني داكن","turquoise":"تركواز","chocolate":"بني غامق","springgreen":"أخضر ربيعي","moccasin":"نحاسي أحمر","navy":"أزرق داكن","lemonchiffon":"أصفر شفاف","teal":"بترولي","floralwhite":"أبيض زهري","cornflowerblue":"أزرق عنبري","paleturquoise":"تركواز شاحب","purple":"ارجواني","gainsboro":"رمادي مائل للأزرق فاتح","plum":"أرجواني داكن","red":"أحمر","blue":"أزرق","forestgreen":"أخضر بلون أشجار الغابات","darkgreen":"أخضر داكن","honeydew":"أبيض مائل للأخضر","darkseagreen":"أخضر مائل للأزرق داكن","lightcoral":"مرجاني فاتح","palevioletred":"أحمر-بنفسجي شاحب","mediumpurple":"قرمزي متوسط","saddlebrown":"بني فاتح","darkmagenta":"قرمزي داكن","thistle":"ارجواني شاحب","whitesmoke":"دخان أبيض","wheat":"أخضر قمحي","violet":"بنفسجي","lightskyblue":"أزرق سماوي فاتح","goldenrod":"أصفر ذهبي","mediumblue":"أزرق متوسط","skyblue":"أزرق سماوي","crimson":"قرمزي","darksalmon":"فضي داكن","darkred":"أحمر داكن","darkslategrey":"رمادي اردوازي داكن","peru":"بني جملي","lightgrey":"رمادي فاتح","lightgoldenrodyellow":"أصفر ذهبي فاتح","blanchedalmond":"أخضر مائل للبياض","aliceblue":"أزرق فاتح","bisque":"أصفر برتقالي الى رمادي مصفر","slategray":"رمادي اردوازي","palegoldenrod":"أصفر ذهبي شاحب","darkorange":"برتقالي داكن","aquamarine":"أزرق مائل للأخضر (زبرجد)","lightgreen":"أخضر فاتح","burlywood":"خشبي","dodgerblue":"أزرق عنبري","darkgray":"رمادي داكن","lightcyan":"سماوي فاتح","powderblue":"أزرق مائل للأصفر","blueviolet":"أزرق-بنفسجي","orchid":"أرجواني فاتح","dimgray":"رمادي شاحب","beige":"بيج","fuchsia":"فوشيا","lavenderblush":"أحمر أرجواني","hotpink":"أحمر وردي زاهي","steelblue":"أزرق معدني","tomato":"أحمر مائل للأصفر","lightpink":"وردي فاتح","limegreen":"أخضر ليموني","indianred":"أحمر هندي","papayawhip":"خوخي فاتح","lightslategray":"رمادي اردوازي فاتح","gray":"رمادي","mediumorchid":"أرجواني متوسط","cornsilk":"حريري","black":"أسود","seagreen":"أخضر مائل للأزرق","darkslateblue":"أزرق اردوازي داكن","khaki":"كاكي","lightblue":"أزرق فاتح","palegreen":"أخضر شاحب","azure":"أزرق سماوي","peachpuff":"خوخي مائل للأصفر","darkolivegreen":"أخضر زيتوني داكن","yellowgreen":"أخضر مائل للأصفر"})
\ No newline at end of file
diff --git a/lib/dojo/nls/ca/colors.js b/lib/dojo/nls/ca/colors.js
new file mode 100644 (file)
index 0000000..0f1461a
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"blau acer clar","orangered":"taronja vermellós","midnightblue":"blau mitjanit","cadetblue":"blau marí","seashell":"petxina marina","slategrey":"gris pissarra","coral":"corall","darkturquoise":"turquesa fosc","antiquewhite":"blanc antic","mediumspringgreen":"verd primavera mitjà","salmon":"salmó","darkgrey":"gris fosc","ivory":"marbre","greenyellow":"verd grogós","mistyrose":"rosa dens","lightsalmon":"salmó clar","silver":"argent","dimgrey":"gris fosc","orange":"taronja","white":"blanc","navajowhite":"blanc Navajo","royalblue":"blau marí intens","deeppink":"rosa profund","lime":"verd llimona","oldlace":"rosa cremós","chartreuse":"Llimona pàl·lid","darkcyan":"cian fosc","yellow":"groc","linen":"lli","olive":"oliva","gold":"daurat","lawngreen":"verd gespa","lightyellow":"groc clar","tan":"tan","darkviolet":"violeta fosc","lightslategrey":"gris pissarra clar","grey":"gris","darkkhaki":"caqui fosc","green":"verd","deepskyblue":"blau cel profund","aqua":"aigua","sienna":"siena","mintcream":"menta pàl·lid","rosybrown":"marró rosat","mediumslateblue":"blau pissarra mitjà","magenta":"magenta","lightseagreen":"verd marí clar","cyan":"cian","olivedrab":"gris oliva","darkgoldenrod":"ocre fosc","slateblue":"blau pissarra","mediumaquamarine":"aiguamarina mitjana","lavender":"lavanda","mediumseagreen":"verd marí mitjà","maroon":"marró vermellós","darkslategray":"gris pissarra fosc","mediumturquoise":"turquesa mitjana","ghostwhite":"blanc fantasma","darkblue":"blau fosc","mediumvioletred":"vermell violeta mitjà","brown":"marró","lightgray":"gris clar","sandybrown":"marró arenós","pink":"rosa","firebrick":"maó refractari","indigo":"índigo","snow":"neu","darkorchid":"orquídia fosc","turquoise":"turquesa","chocolate":"xocolata","springgreen":"verd de primavera","moccasin":"mocassí","navy":"blau marí","lemonchiffon":"groc brisa","teal":"verd blavós","floralwhite":"blanc floral","cornflowerblue":"blau blauet","paleturquoise":"turquesa pàl·lid","purple":"porpra","gainsboro":"gainsboro","plum":"pruna","red":"vermell","blue":"blau","forestgreen":"verd bosc","darkgreen":"verd fosc","honeydew":"rosada de mel","darkseagreen":"verd marí fosc","lightcoral":"corall clar","palevioletred":"vermell porpra pàl·lid","mediumpurple":"porpra mitjana","saddlebrown":"marró mitjà","darkmagenta":"magenta fosc","thistle":"card","whitesmoke":"blanc fumat","wheat":"blat","violet":"violeta","lightskyblue":"blau cel clar","goldenrod":"ocre","mediumblue":"blau mitjà","skyblue":"blau cel","crimson":"carmesí","darksalmon":"salmó fosc","darkred":"vermell fosc","darkslategrey":"gris pissarra fosc","peru":"Perú","lightgrey":"gris clar","lightgoldenrodyellow":"groc ocre clar","blanchedalmond":"ametlla pàl·lid","aliceblue":"blau cian clar","bisque":"crema","slategray":"gris pissarra","palegoldenrod":"ocre pàl·lid","darkorange":"taronja fosc","aquamarine":"aiguamarina","lightgreen":"verd clar","burlywood":"marró arenós","dodgerblue":"blau Dodger","darkgray":"gris fosc","lightcyan":"cian clar","powderblue":"blau grisós","blueviolet":"blau violeta","orchid":"orquídia","dimgray":"gris fosc","beige":"beix","fuchsia":"fúcsia","lavenderblush":"lavanda vermellosa","hotpink":"rosa fúcsia","steelblue":"blau acer","tomato":"tomàquet","lightpink":"rosa clar","limegreen":"verd llimona verda","indianred":"vermell indi","papayawhip":"préssec pastel","lightslategray":"gris pissarra clar","gray":"gris","mediumorchid":"orquídia mitjana","cornsilk":"cru","black":"negre","seagreen":"verd marí","darkslateblue":"blau pissarra fosc","khaki":"caqui","lightblue":"blau clar","palegreen":"verd pàl·lid","azure":"atzur","peachpuff":"préssec","darkolivegreen":"verd oliva fosc","yellowgreen":"verd grogós"})
\ No newline at end of file
diff --git a/lib/dojo/nls/colors.js b/lib/dojo/nls/colors.js
new file mode 100644 (file)
index 0000000..454e644
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"})
\ No newline at end of file
diff --git a/lib/dojo/nls/cs/colors.js b/lib/dojo/nls/cs/colors.js
new file mode 100644 (file)
index 0000000..7ae5d30
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"světlá ocelová modrá","orangered":"oranžovočervená","midnightblue":"temně modrá","cadetblue":"šedomodrá","seashell":"lasturová","slategrey":"břidlicová šedá","coral":"korálová červená","darkturquoise":"tmavě tyrkysová","antiquewhite":"krémově bílá","mediumspringgreen":"střední jarní zelená","salmon":"lososová","darkgrey":"tmavě šedá","ivory":"slonovinová","greenyellow":"zelenožlutá","mistyrose":"růžovobílá","lightsalmon":"světle lososová","silver":"stříbrná","dimgrey":"kouřově šedá","orange":"oranžová","white":"bílá","navajowhite":"světle krémová","royalblue":"královská modrá","deeppink":"sytě růžová","lime":"limetková","oldlace":"světle béžová","chartreuse":"chartreuska","darkcyan":"tmavě azurová","yellow":"žlutá","linen":"bledě šedobéžová","olive":"olivová","gold":"zlatá","lawngreen":"jasně zelená","lightyellow":"bledě žlutá","tan":"šedobéžová","darkviolet":"tmavě fialová","lightslategrey":"světlá břidlicová šedá","grey":"šedá","darkkhaki":"pískově hnědá","green":"zelená","deepskyblue":"sytá nebeská modrá","aqua":"azurová","sienna":"siena","mintcream":"mentolová","rosybrown":"růžovohnědá","mediumslateblue":"střední břidlicová modrá","magenta":"purpurová","lightseagreen":"světlá mořská zelená","cyan":"azurová","olivedrab":"khaki","darkgoldenrod":"tmavě béžová","slateblue":"břidlicová modrá","mediumaquamarine":"střední akvamarínová","lavender":"levandulová","mediumseagreen":"střední mořská zelená","maroon":"kaštanová","darkslategray":"tmavá břidlicová šedá","mediumturquoise":"středně tyrkysová","ghostwhite":"modravě bílá","darkblue":"tmavě modrá","mediumvioletred":"středně fialovočervená","brown":"červenohnědá","lightgray":"světle šedá","sandybrown":"oranžovohnědá","pink":"růžová","firebrick":"cihlová","indigo":"indigově modrá","snow":"sněhobílá","darkorchid":"tmavě orchidejová","turquoise":"tyrkysová","chocolate":"hnědobéžová","springgreen":"jarní zelená","moccasin":"bledě krémová","navy":"námořnická modrá","lemonchiffon":"světle citrónová","teal":"šedozelená","floralwhite":"květinově bílá","cornflowerblue":"chrpově modrá","paleturquoise":"bledě tyrkysová","purple":"nachová","gainsboro":"bledě šedá","plum":"švestková","red":"červená","blue":"modrá","forestgreen":"lesní zelená","darkgreen":"tmavě zelená","honeydew":"nazelenalá","darkseagreen":"tmavá mořská zelená","lightcoral":"světle korálová","palevioletred":"bledě fialovočervená","mediumpurple":"středně nachová","saddlebrown":"hnědá","darkmagenta":"tmavě purpurová","thistle":"bodláková","whitesmoke":"kouřově bílá","wheat":"zlatohnědá","violet":"fialová","lightskyblue":"světlá nebeská modrá","goldenrod":"béžová","mediumblue":"středně modrá","skyblue":"nebeská modrá","crimson":"karmínová","darksalmon":"tmavě lososová","darkred":"tmavě červená","darkslategrey":"tmavá břidlicová šedá","peru":"karamelová","lightgrey":"světle šedá","lightgoldenrodyellow":"světle žlutá","blanchedalmond":"mandlová","aliceblue":"modravá","bisque":"bledě oranžová","slategray":"břidlicová šedá","palegoldenrod":"bledě písková","darkorange":"tmavě oranžová","aquamarine":"akvamarínová","lightgreen":"světle zelená","burlywood":"krémová","dodgerblue":"jasně modrá","darkgray":"tmavě šedá","lightcyan":"světle azurová","powderblue":"bledě modrá","blueviolet":"modrofialová","orchid":"orchidejová","dimgray":"kouřově šedá","beige":"bledě béžová","fuchsia":"fuchsiová","lavenderblush":"levandulová růžová","hotpink":"jasně růžová","steelblue":"ocelová modrá","tomato":"tomatová","lightpink":"světle růžová","limegreen":"limetkově zelená","indianred":"indiánská červená","papayawhip":"papájová","lightslategray":"světlá břidlicová šedá","gray":"šedá","mediumorchid":"středně orchidejová","cornsilk":"režná","black":"černá","seagreen":"mořská zelená","darkslateblue":"tmavá břidlicová modrá","khaki":"písková","lightblue":"světle modrá","palegreen":"bledě zelená","azure":"bledě azurová","peachpuff":"broskvová","darkolivegreen":"tmavě olivová","yellowgreen":"žlutozelená"})
\ No newline at end of file
diff --git a/lib/dojo/nls/da/colors.js b/lib/dojo/nls/da/colors.js
new file mode 100644 (file)
index 0000000..322154f
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"lys stålblå","orangered":"orangerød","midnightblue":"midnatsblå","cadetblue":"kadetblå","seashell":"muslingeskal","slategrey":"skifergrå","coral":"koralrød","darkturquoise":"mørk turkis","antiquewhite":"antikhvid","mediumspringgreen":"mellemforårsgrøn","salmon":"laksefarvet","darkgrey":"mørkegrå","ivory":"elfenben","greenyellow":"grøngul","mistyrose":"blegrosa","lightsalmon":"lys laksefarvet","silver":"sølv","dimgrey":"svag grå","orange":"orange","white":"hvid","navajowhite":"navajo-hvid","royalblue":"kongeblå","deeppink":"dyb pink","lime":"lime","oldlace":"kniplingshvid","chartreuse":"chartreuse","darkcyan":"mørk cyan","yellow":"gul","linen":"lærred","olive":"olivengrøn","gold":"guld","lawngreen":"græsgrøn","lightyellow":"lysegul","tan":"tan","darkviolet":"mørkelilla","lightslategrey":"lys skifergrå","grey":"grå","darkkhaki":"mørk khaki","green":"grøn","deepskyblue":"dyb himmelblå","aqua":"akvablå","sienna":"sienna","mintcream":"pebermyntecreme","rosybrown":"rosabrun","mediumslateblue":"mellemskiferblå","magenta":"magenta","lightseagreen":"lys havgrøn","cyan":"cyan","olivedrab":"brungrøn","darkgoldenrod":"mørk gyldenris","slateblue":"skiferblå","mediumaquamarine":"mellem akvamarin","lavender":"lysviolet","mediumseagreen":"mellemhavgrøn","maroon":"rødbrun","darkslategray":"mørk skifergrå","mediumturquoise":"mellemturkis","ghostwhite":"spøgelseshvid","darkblue":"mørkeblå","mediumvioletred":"mellemviolet","brown":"brun","lightgray":"lysegrå","sandybrown":"sandbrun","pink":"pink","firebrick":"chamottesten","indigo":"indigo","snow":"sne","darkorchid":"mørk orkide","turquoise":"turkis","chocolate":"rust","springgreen":"forårsgrøn","moccasin":"fruesko","navy":"marineblå","lemonchiffon":"citronfromage","teal":"blågrøn","floralwhite":"blomsterhvid","cornflowerblue":"kornblomstblå","paleturquoise":"bleg turkis","purple":"lilla","gainsboro":"gainsboro","plum":"blomme","red":"rød","blue":"blå","forestgreen":"skovgrøn","darkgreen":"mørkegrøn","honeydew":"honningdug","darkseagreen":"mørk havgrøn","lightcoral":"lys koralrød","palevioletred":"blegviolet","mediumpurple":"mellemlilla","saddlebrown":"saddelbrun","darkmagenta":"mørk magenta","thistle":"tidsel","whitesmoke":"hvid røg","wheat":"korngul","violet":"lilla","lightskyblue":"lys himmelblå","goldenrod":"gyldenris","mediumblue":"mellemblå","skyblue":"himmelblå","crimson":"blodrød","darksalmon":"mørk laksefarvet","darkred":"mørkerød","darkslategrey":"mørk skifergrå","peru":"peru","lightgrey":"lysegrå","lightgoldenrodyellow":"lys gyldenrisgul","blanchedalmond":"blanceret mandel","aliceblue":"babyblå","bisque":"gulgrå","slategray":"skifergrå","palegoldenrod":"bleg gyldenris","darkorange":"mørk orange","aquamarine":"akvamarin","lightgreen":"lysegrøn","burlywood":"tobak","dodgerblue":"dodgerblå","darkgray":"mørkegrå","lightcyan":"lys cyan","powderblue":"pudderblå","blueviolet":"blåviolet","orchid":"orkide","dimgray":"svag grå","beige":"beige","fuchsia":"lyslilla","lavenderblush":"lavendelrød","hotpink":"mørk rosa","steelblue":"metalblå","tomato":"tomat","lightpink":"lys pink","limegreen":"limegrøn","indianred":"lys rødbrun","papayawhip":"papaya","lightslategray":"lys skifergrå","gray":"grå","mediumorchid":"mellem orkide","cornsilk":"majs","black":"sort","seagreen":"havgrøn","darkslateblue":"mørk skiferblå","khaki":"khaki","lightblue":"lyseblå","palegreen":"bleggrøn","azure":"azurblå","peachpuff":"fersken","darkolivegreen":"mørk olivengrøn","yellowgreen":"gulgrøn"})
\ No newline at end of file
diff --git a/lib/dojo/nls/de/colors.js b/lib/dojo/nls/de/colors.js
new file mode 100644 (file)
index 0000000..7ae21bf
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"Helles Stahlblau","orangered":"Orangerot","midnightblue":"Mitternachtblau","cadetblue":"Kadettenblau","seashell":"Muschelweiß","slategrey":"Schiefergrau","coral":"Koralle","darkturquoise":"Dunkeltürkis","antiquewhite":"Antikweiß","mediumspringgreen":"Mittelfrühlingsgrün","salmon":"Lachs","darkgrey":"Dunkelgrau","ivory":"Elfenbein","greenyellow":"Grüngelb","mistyrose":"Blassrose","lightsalmon":"Helllachs","silver":"Silbergrau","dimgrey":"Blassgrau","orange":"Orange","white":"Weiß","navajowhite":"Navajo-weiß","royalblue":"Königsblau","deeppink":"Tiefrosa","lime":"Limone","oldlace":"Alte Spitze","chartreuse":"Helles Gelbgrün","darkcyan":"Dunkelzyan","yellow":"Gelb","linen":"Leinen","olive":"Oliv","gold":"Gold","lawngreen":"Grasgrün","lightyellow":"Hellgelb","tan":"Hautfarben","darkviolet":"Dunkelviolett","lightslategrey":"Helles Schiefergrau","grey":"Grau","darkkhaki":"Dunkelkhaki","green":"Grün","deepskyblue":"Dunkles Himmelblau","aqua":"Wasserblau","sienna":"Sienna","mintcream":"Mintcreme","rosybrown":"Rosigbraun","mediumslateblue":"Mittelschieferblau ","magenta":"Magenta","lightseagreen":"Helles Meergrün","cyan":"Zyan","olivedrab":"Olivgrau","darkgoldenrod":"Dunkelgoldgelb","slateblue":"Schieferblau","mediumaquamarine":"Mittelaquamarin","lavender":"Lavendelblau","mediumseagreen":"Mittelmeeresgrün","maroon":"Kastanienbraun","darkslategray":"Dunkelschiefergrau","mediumturquoise":"Mitteltürkis ","ghostwhite":"Geisterweiß","darkblue":"Dunkelblau","mediumvioletred":"Mittelviolettrot ","brown":"Braun","lightgray":"Hellgrau","sandybrown":"Sandbraun","pink":"Rosa","firebrick":"Schamottestein","indigo":"Indigoblau","snow":"Schneeweiß","darkorchid":"Dunkelorchidee","turquoise":"Türkis","chocolate":"Schokoladenbraun","springgreen":"Frühlingsgrün","moccasin":"Mokassin","navy":"Marineblau","lemonchiffon":"Zitronenchiffon","teal":"Smaragdgrün","floralwhite":"Blütenweiß","cornflowerblue":"Kornblumenblau","paleturquoise":"Blasstürkis","purple":"Purpurrot","gainsboro":"Gainsboro","plum":"Pflaume","red":"Rot","blue":"Blau","forestgreen":"Forstgrün","darkgreen":"Dunkelgrün","honeydew":"Honigtau","darkseagreen":"Dunkles Meergrün","lightcoral":"Hellkoralle","palevioletred":"Blassviolettrot ","mediumpurple":"Mittelpurpur","saddlebrown":"Sattelbraun","darkmagenta":"Dunkelmagenta","thistle":"Distel","whitesmoke":"Rauchweiß","wheat":"Weizen","violet":"Violett","lightskyblue":"Helles Himmelblau","goldenrod":"Goldgelb","mediumblue":"Mittelblau","skyblue":"Himmelblau","crimson":"Karmesinrot","darksalmon":"Dunkellachs","darkred":"Dunkelrot","darkslategrey":"Dunkelschiefergrau","peru":"Peru","lightgrey":"Hellgrau","lightgoldenrodyellow":"Hellgoldgelb","blanchedalmond":"Mandelweiß","aliceblue":"Alice-blau","bisque":"Bisquit","slategray":"Schiefergrau","palegoldenrod":"Blassgoldgelb","darkorange":"Dunkelorange","aquamarine":"Aquamarin","lightgreen":"Hellgrün","burlywood":"Burlywood","dodgerblue":"Dodger-blau","darkgray":"Dunkelgrau","lightcyan":"Hellzyan","powderblue":"Pulverblau","blueviolet":"Blauviolett","orchid":"Orchidee","dimgray":"Blassgrau","beige":"Beige","fuchsia":"Fuchsia","lavenderblush":"Lavendelhauch","hotpink":"Knallrosa","steelblue":"Stahlblau","tomato":"Tomatenrot","lightpink":"Hellrosa","limegreen":"Limonengrün","indianred":"Indischrot","papayawhip":"Papayacreme","lightslategray":"Helles Schiefergrau","gray":"Grau","mediumorchid":"Mittelorchidee","cornsilk":"Kornseide","black":"Schwarz","seagreen":"Meeresgrün","darkslateblue":"Dunkelschieferblau","khaki":"Khaki","lightblue":"Hellblau","palegreen":"Blassgrün","azure":"Azur","peachpuff":"Pfirsich","darkolivegreen":"Dunkelolivgrün","yellowgreen":"Gelbgrün"})
\ No newline at end of file
diff --git a/lib/dojo/nls/el/colors.js b/lib/dojo/nls/el/colors.js
new file mode 100644 (file)
index 0000000..a80df97
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"ανοιχτό μπλε ατσαλιού","orangered":"πορτοκαλοκόκκινο","midnightblue":"πολύ σκούρο μπλε","cadetblue":"μπλε του στρατού","seashell":"κοχύλι","slategrey":"μεταλλικό γκρι","coral":"κοραλί","darkturquoise":"σκούρο τυρκουάζ","antiquewhite":"ξεθωριασμένο λευκό","mediumspringgreen":"μεσαίο πράσινο της άνοιξης","salmon":"σομόν","darkgrey":"σκούρο γκρι","ivory":"ιβουάρ","greenyellow":"πρασινοκίτρινο","mistyrose":"τριανταφυλλί","lightsalmon":"ανοιχτό σομόν","silver":"ασημί","dimgrey":"αχνό γκρι","orange":"πορτοκαλί","white":"λευκό","navajowhite":"άσπρο Ναβάχο","royalblue":"έντονο μπλε","deeppink":"βαθύ ροζ","lime":"λαχανί","oldlace":"εκρού","chartreuse":"φωτεινό κιτρινοπράσινο","darkcyan":"σκούρο κυανό","yellow":"κίτρινο","linen":"σπαγγί","olive":"πράσινο λαδί","gold":"χρυσαφί","lawngreen":"σκούρο πράσινο","lightyellow":"ανοιχτό κίτρινο","tan":"ώχρα","darkviolet":"σκούρο βιολετί","lightslategrey":"ανοιχτό μεταλλικό γκρι","grey":"γκρι","darkkhaki":"σκούρο χακί","green":"πράσινο","deepskyblue":"βαθύ μπλε το ουρανού","aqua":"γαλάζιο","sienna":"καφεκίτρινο","mintcream":"βεραμάν","rosybrown":"καστανό","mediumslateblue":"μεσαίο μεταλλικό μπλε","magenta":"ματζέντα","lightseagreen":"ανοιχτό πράσινο της θάλασσας","cyan":"κυανό","olivedrab":"λαδί","darkgoldenrod":"σκούρο χρυσοκίτρινο","slateblue":"μεταλλικό μπλε","mediumaquamarine":"μεσαίο γαλαζοπράσινο","lavender":"λίλα","mediumseagreen":"μεσαίο πράσινο της θάλασσας","maroon":"βυσσινί","darkslategray":"σκούρο μεταλλικό γκρι","mediumturquoise":"μεσαίο τυρκουάζ","ghostwhite":"άσπρο","darkblue":"σκούρο μπλε","mediumvioletred":"μεσαίο κόκκινο βιολετί","brown":"καφέ","lightgray":"ανοιχτό γκρι","sandybrown":"μπεζ της άμμου","pink":"ροζ","firebrick":"κεραμιδί","indigo":"λουλακί","snow":"χιονί","darkorchid":"σκούρα ορχιδέα","turquoise":"τυρκουάζ","chocolate":"σοκολατί","springgreen":"πράσινο της άνοιξης","moccasin":"μόκα","navy":"μπλε του ναυτικού","lemonchiffon":"λεμονί","teal":"πετρόλ","floralwhite":"λευκό των ανθών","cornflowerblue":"μεσαίο μπλε","paleturquoise":"αχνό τυρκουάζ","purple":"μωβ","gainsboro":"γκρι σιέλ","plum":"δαμασκηνί","red":"κόκκινο","blue":"μπλε","forestgreen":"πράσινο του δάσους","darkgreen":"σκούρο πράσινο","honeydew":"μελί","darkseagreen":"σκούρο πράσινο της θάλασσας","lightcoral":"ανοιχτό κοραλί","palevioletred":"αχνό κόκκινο βιολετί","mediumpurple":"μεσαίο μωβ","saddlebrown":"βαθύ καφέ","darkmagenta":"σκούρο ματζέντα","thistle":"μωβ βιολετί","whitesmoke":"λευκός καπνός","wheat":"σταρένιο","violet":"βιολετί","lightskyblue":"ανοιχτό μπλε το ουρανού","goldenrod":"χρυσοκίτρινο","mediumblue":"μεσαίο μπλε","skyblue":"μπλε του ουρανού","crimson":"βαθύ κόκκινο","darksalmon":"σκούρο σομόν","darkred":"σκούρο κόκκινο","darkslategrey":"σκούρο μεταλλικό γκρι","peru":"περού","lightgrey":"ανοιχτό γκρι","lightgoldenrodyellow":"ανοιχτό χρυσοκίτρινο","blanchedalmond":"ζαχαρί","aliceblue":"σιέλ","bisque":"σκούρο κρεμ","slategray":"μεταλλικό γκρι","palegoldenrod":"αχνό χρυσοκίτρινο","darkorange":"σκούρο πορτοκαλί","aquamarine":"γαλαζοπράσινο","lightgreen":"ανοιχτό πράσινο","burlywood":"καφέ του ξύλου","dodgerblue":"σκούρο ελεκτρίκ","darkgray":"σκούρο γκρι","lightcyan":"ανοιχτό κυανό","powderblue":"αχνό μπλε","blueviolet":"βιολετί","orchid":"ορχιδέα","dimgray":"αχνό γκρι","beige":"μπεζ","fuchsia":"φούξια","lavenderblush":"μωβ λεβάντας","hotpink":"έντονο ροζ","steelblue":"μπλε ατσαλιού","tomato":"κόκκινο της ντομάτας","lightpink":"ανοιχτό ροζ","limegreen":"πράσινο λαχανί","indianred":"ινδικό κόκκινο","papayawhip":"αχνό ροζ","lightslategray":"ανοιχτό μεταλλικό γκρι","gray":"γκρι","mediumorchid":"μεσαία ορχιδέα","cornsilk":"ασημί του καλαμποκιού","black":"μαύρο","seagreen":"πράσινο της θάλασσας","darkslateblue":"σκούρο μεταλλικό μπλε","khaki":"χακί","lightblue":"ανοιχτό μπλε","palegreen":"αχνό πράσινο","azure":"μπλε του ουρανού","peachpuff":"ροδακινί","darkolivegreen":"σκούρο πράσινο λαδί","yellowgreen":"κιτρινοπράσινο"})
\ No newline at end of file
diff --git a/lib/dojo/nls/es/colors.js b/lib/dojo/nls/es/colors.js
new file mode 100644 (file)
index 0000000..95bb23e
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"azul acero claro","orangered":"rojo anaranjado","midnightblue":"azul medianoche","cadetblue":"azul cadete","seashell":"blanco marfil","slategrey":"gris pizarra","coral":"coral","darkturquoise":"turquesa oscuro","antiquewhite":"blanco antiguo","mediumspringgreen":"verde primavera medio","salmon":"salmón","darkgrey":"gris oscuro","ivory":"marfil","greenyellow":"amarillo verdoso","mistyrose":"rosa difuminado","lightsalmon":"salmón claro","silver":"plateado","dimgrey":"gris marengo","orange":"naranja","white":"blanco","navajowhite":"blanco navajo","royalblue":"azul real","deeppink":"rosa fuerte","lime":"lima","oldlace":"encaje antiguo","chartreuse":"verde pálido 2","darkcyan":"cian oscuro","yellow":"amarillo","linen":"blanco arena","olive":"verde oliva","gold":"oro","lawngreen":"verde césped","lightyellow":"amarillo claro","tan":"canela","darkviolet":"violeta oscuro","lightslategrey":"gris pizarra claro","grey":"gris","darkkhaki":"caqui oscuro","green":"verde","deepskyblue":"azul cielo fuerte","aqua":"aguamarina","sienna":"siena","mintcream":"crema menta","rosybrown":"marrón rosáceo","mediumslateblue":"azul pizarra medio","magenta":"magenta","lightseagreen":"verde mar claro","cyan":"cian","olivedrab":"verde oliva pardusco","darkgoldenrod":"ocre oscuro","slateblue":"azul pizarra","mediumaquamarine":"aguamarina medio","lavender":"lavanda","mediumseagreen":"verde mar medio","maroon":"granate","darkslategray":"gris pizarra oscuro","mediumturquoise":"turquesa medio","ghostwhite":"blanco ligero","darkblue":"azul oscuro","mediumvioletred":"rojo violáceo medio","brown":"marrón","lightgray":"gris claro","sandybrown":"marrón arcilla","pink":"rosa","firebrick":"teja","indigo":"añil","snow":"nieve","darkorchid":"orquídea oscuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde fuerte","moccasin":"arena","navy":"azul marino","lemonchiffon":"amarillo pastel","teal":"verde azulado","floralwhite":"blanco manteca","cornflowerblue":"azul aciano","paleturquoise":"turquesa pálido","purple":"púrpura","gainsboro":"azul gainsboro","plum":"ciruela","red":"rojo","blue":"azul","forestgreen":"verde pino","darkgreen":"verde oscuro","honeydew":"flor de rocío","darkseagreen":"verde mar oscuro","lightcoral":"coral claro","palevioletred":"rojo violáceo pálido","mediumpurple":"púrpura medio","saddlebrown":"cuero","darkmagenta":"magenta oscuro","thistle":"cardo","whitesmoke":"blanco ahumado","wheat":"trigo","violet":"violeta","lightskyblue":"azul cielo claro","goldenrod":"ocre","mediumblue":"azul medio","skyblue":"azul cielo","crimson":"carmesí","darksalmon":"salmón oscuro","darkred":"rojo oscuro","darkslategrey":"gris pizarra oscuro","peru":"perú","lightgrey":"gris claro","lightgoldenrodyellow":"ocre claro","blanchedalmond":"almendra pálido","aliceblue":"blanco azulado","bisque":"miel","slategray":"gris pizarra","palegoldenrod":"ocre pálido","darkorange":"naranja oscuro","aquamarine":"aguamarina 2","lightgreen":"verde claro","burlywood":"madera","dodgerblue":"azul fuerte","darkgray":"gris oscuro","lightcyan":"cian claro","powderblue":"azul suave","blueviolet":"azul violáceo","orchid":"orquídea","dimgray":"gris marengo","beige":"beige","fuchsia":"fucsia","lavenderblush":"lavanda rosácea","hotpink":"rosa oscuro","steelblue":"azul acero","tomato":"tomate","lightpink":"rosa claro","limegreen":"lima limón","indianred":"rojo teja","papayawhip":"papaya claro","lightslategray":"gris pizarra claro","gray":"gris","mediumorchid":"orquídea medio","cornsilk":"crudo","black":"negro","seagreen":"verde mar","darkslateblue":"azul pizarra oscuro","khaki":"caqui","lightblue":"azul claro","palegreen":"verde pálido","azure":"blanco cielo","peachpuff":"melocotón","darkolivegreen":"verde oliva oscuro","yellowgreen":"verde amarillento"})
\ No newline at end of file
diff --git a/lib/dojo/nls/fi/colors.js b/lib/dojo/nls/fi/colors.js
new file mode 100644 (file)
index 0000000..454e644
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"})
\ No newline at end of file
diff --git a/lib/dojo/nls/fr/colors.js b/lib/dojo/nls/fr/colors.js
new file mode 100644 (file)
index 0000000..cf1e7e9
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"bleu acier clair","orangered":"rouge orangé","midnightblue":"bleu nuit","cadetblue":"bleu pétrole","seashell":"coquillage","slategrey":"gris ardoise","coral":"corail","darkturquoise":"turquoise foncé","antiquewhite":"blanc antique","mediumspringgreen":"vert printemps moyen","salmon":"saumon","darkgrey":"gris foncé","ivory":"ivoire","greenyellow":"vert-jaune","mistyrose":"rose pâle","lightsalmon":"saumon clair","silver":"argent","dimgrey":"gris soutenu","orange":"orange","white":"blanc","navajowhite":"chair","royalblue":"bleu roi","deeppink":"rose soutenu","lime":"vert citron","oldlace":"blanc cassé","chartreuse":"vert vif","darkcyan":"cyan foncé","yellow":"jaune","linen":"écru","olive":"olive","gold":"or","lawngreen":"vert prairie","lightyellow":"jaune clair","tan":"grège","darkviolet":"violet foncé","lightslategrey":"gris ardoise clair","grey":"gris","darkkhaki":"kaki foncé","green":"vert","deepskyblue":"bleu ciel soutenu","aqua":"bleu-vert","sienna":"terre de sienne","mintcream":"crème de menthe","rosybrown":"vieux rose","mediumslateblue":"bleu ardoise moyen","magenta":"magenta","lightseagreen":"vert d'eau clair","cyan":"cyan","olivedrab":"brun verdâtre","darkgoldenrod":"jaune paille foncé","slateblue":"bleu ardoise","mediumaquamarine":"aigue-marine moyen","lavender":"lavande","mediumseagreen":"vert d'eau moyen","maroon":"marron","darkslategray":"gris ardoise foncé","mediumturquoise":"turquoise moyen","ghostwhite":"blanc laiteux","darkblue":"bleu foncé","mediumvioletred":"rouge violacé moyen","brown":"brun","lightgray":"gris clair","sandybrown":"sable","pink":"rose","firebrick":"rouge brique","indigo":"indigo","snow":"neige","darkorchid":"lilas foncé","turquoise":"turquoise","chocolate":"chocolat","springgreen":"vert printemps","moccasin":"chamois","navy":"bleu marine","lemonchiffon":"mousse de citron","teal":"sarcelle","floralwhite":"lys","cornflowerblue":"bleuet","paleturquoise":"turquoise pâle","purple":"pourpre","gainsboro":"gris souris","plum":"prune","red":"rouge","blue":"bleu","forestgreen":"vert sapin","darkgreen":"vert foncé","honeydew":"opalin","darkseagreen":"vert d'eau foncé","lightcoral":"corail clair","palevioletred":"rouge violacé pâle","mediumpurple":"pourpre moyen","saddlebrown":"brun cuir","darkmagenta":"magenta foncé","thistle":"chardon","whitesmoke":"blanc cendré","wheat":"blé","violet":"violet","lightskyblue":"bleu ciel clair","goldenrod":"jaune paille","mediumblue":"bleu moyen","skyblue":"bleu ciel","crimson":"cramoisi","darksalmon":"saumon foncé","darkred":"rouge foncé","darkslategrey":"gris ardoise foncé","peru":"caramel","lightgrey":"gris clair","lightgoldenrodyellow":"jaune paille clair","blanchedalmond":"coquille d'oeuf","aliceblue":"bleu gris","bisque":"beige rosé","slategray":"gris ardoise","palegoldenrod":"jaune paille pâle","darkorange":"orange foncé","aquamarine":"aigue-marine","lightgreen":"vert clair","burlywood":"bois précieux","dodgerblue":"bleu France","darkgray":"gris foncé","lightcyan":"cyan clair","powderblue":"bleu de smalt","blueviolet":"bleu-violet","orchid":"lilas","dimgray":"gris soutenu","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavandin","hotpink":"rose intense","steelblue":"bleu acier","tomato":"tomate","lightpink":"rose clair","limegreen":"citron vert","indianred":"rose indien","papayawhip":"crème de papaye","lightslategray":"gris ardoise clair","gray":"gris","mediumorchid":"lilas moyen","cornsilk":"vanille","black":"noir","seagreen":"vert d'eau","darkslateblue":"bleu ardoise foncé","khaki":"kaki","lightblue":"bleu clair","palegreen":"vert pâle","azure":"bleu azur","peachpuff":"pêche","darkolivegreen":"olive foncé","yellowgreen":"vert jaunâtre"})
\ No newline at end of file
diff --git a/lib/dojo/nls/he/colors.js b/lib/dojo/nls/he/colors.js
new file mode 100644 (file)
index 0000000..a689ec6
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"כחול פלדה בהיר","orangered":"כתום אדום","midnightblue":"כחול כהה","cadetblue":"כחול ים","seashell":"צדף","slategrey":"אפור צפחה","coral":"אלמוג","darkturquoise":"טורקיז כהה","antiquewhite":"לבן עתיק","mediumspringgreen":"ירוק אביב בינוני","salmon":"סלמון","darkgrey":"אפור כהה","ivory":"שנהב","greenyellow":"ירוק-צהוב","mistyrose":"ורוד מעורפל","lightsalmon":"סלמון בהיר","silver":"כסף","dimgrey":"אפור עמום","orange":"כתום","white":"לבן","navajowhite":"לבן נוואחו","royalblue":"כחול מלכותי","deeppink":"ורוד עמוק","lime":"לימון","oldlace":"תחרה עתיקה","chartreuse":"ירוק-צהוב","darkcyan":"טורקיז כהה","yellow":"צהוב","linen":"פשתן","olive":"זית","gold":"זהב","lawngreen":"ירוק דשא","lightyellow":"צהוב בהיר","tan":"חום אדמדם","darkviolet":"סגול כהה","lightslategrey":"אפור צפחה בהיר","grey":"אפור","darkkhaki":"חאקי כהה","green":"ירוק","deepskyblue":"כחול שמיים עמוק","aqua":"אקווה","sienna":"סיינה","mintcream":"קרם מנטה","rosybrown":"חום ורדרד","mediumslateblue":"כחול צפחה בינוני","magenta":"בורדו","lightseagreen":"ירוק ים בהיר","cyan":"טורקיז","olivedrab":"זית עמום","darkgoldenrod":"זהוב כהה","slateblue":"כחול צפחה","mediumaquamarine":"כחול בינוני","lavender":"לבנדר","mediumseagreen":"ירוק ים בינוני","maroon":"חום אדמדם","darkslategray":"אפור צפחה כהה","mediumturquoise":"טורקיז בינוני","ghostwhite":"לבן רפאים","darkblue":"כחול כהה","mediumvioletred":"סגול-אדום בינוני","brown":"חום","lightgray":"אפור בהיר","sandybrown":"חום חולי","pink":"ורוד","firebrick":"לבנה שרופה","indigo":"אינדיגו","snow":"שלג","darkorchid":"סחלב כהה","turquoise":"טורקיז","chocolate":"שוקולד","springgreen":"ירוק אביב","moccasin":"מוקסין","navy":"כחול כהה","lemonchiffon":"ירוק לימון","teal":"כחול-ירוק כהה","floralwhite":"לבן פרחוני","cornflowerblue":"כחול דרדר","paleturquoise":"טורקיז בהיר","purple":"סגול","gainsboro":"גיינסבורו","plum":"שזיף","red":"אדום","blue":"כחול","forestgreen":"ירוק יער","darkgreen":"ירוק כהה","honeydew":"ירקרק","darkseagreen":"ירוק ים כהה","lightcoral":"אלמוג בהיר","palevioletred":"סגול-אדום בהיר","mediumpurple":"סגול בינוני","saddlebrown":"חום דהוי","darkmagenta":"בורדו כהה","thistle":"דרדר","whitesmoke":"עשן לבן","wheat":"חיוט","violet":"סגול","lightskyblue":"כחול שמיים בהיר","goldenrod":"זהוב","mediumblue":"תכלת בינוני","skyblue":"כחול שמיים","crimson":"ארגמן","darksalmon":"סלמון כהה","darkred":"אדום כהה","darkslategrey":"אפור צפחה כהה","peru":"פרו","lightgrey":"אפור בהיר","lightgoldenrodyellow":"צהוב בהיר","blanchedalmond":"שקד","aliceblue":"כחול פלדה","bisque":"לבן שקד","slategray":"אפור צפחה","palegoldenrod":"זהוב בהיר","darkorange":"כתום כהה","aquamarine":"אקוומארין","lightgreen":"ירוק בהיר","burlywood":"חום דהוי","dodgerblue":"כחול","darkgray":"אפור כהה","lightcyan":"טורקיז בהיר","powderblue":"כחול חיוור","blueviolet":"כחול-סגול","orchid":"סחלב","dimgray":"אפור עמום","beige":"בז'","fuchsia":"ורוד בהיר","lavenderblush":"סומק לבנדר","hotpink":"ורוד לוהט","steelblue":"כחול פלדה","tomato":"עגבניה","lightpink":"ורוד בהיר","limegreen":"ירוק לימוני","indianred":"אדום דהוי","papayawhip":"פפאיה","lightslategray":"אפור צפחה בהיר","gray":"אפור","mediumorchid":"סחלב בינוני","cornsilk":"צהבהב","black":"שחור","seagreen":"ירוק ים","darkslateblue":"כחול צפחה כהה","khaki":"חאקי","lightblue":"תכלת","palegreen":"ירוק בהיר","azure":"תכלת עז","peachpuff":"קציפת אפרסק","darkolivegreen":"ירוק זית כהה","yellowgreen":"ירוק צהוב"})
\ No newline at end of file
diff --git a/lib/dojo/nls/hu/colors.js b/lib/dojo/nls/hu/colors.js
new file mode 100644 (file)
index 0000000..c0bce74
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"világos acélkék","orangered":"narancsvörös","midnightblue":"éjkék","cadetblue":"kadétkék","seashell":"kagyló","slategrey":"palaszürke","coral":"korall","darkturquoise":"sötét türkizkék","antiquewhite":"antik fehér","mediumspringgreen":"közepes tavaszzöld","salmon":"lazacszín","darkgrey":"sötétszürke","ivory":"elefántcsont","greenyellow":"zöldessárga","mistyrose":"halvány rózsaszín","lightsalmon":"világos lazacszín","silver":"ezüst","dimgrey":"halványszürke","orange":"narancssárga","white":"fehér","navajowhite":"navajo fehér","royalblue":"királykék","deeppink":"sötétrózsaszín","lime":"lime","oldlace":"régi csipke","chartreuse":"chartreuse","darkcyan":"sötét ciánkék","yellow":"sárga","linen":"vászonfehér","olive":"olajzöld","gold":"arany","lawngreen":"fűzöld","lightyellow":"világossárga","tan":"rozsdabarna","darkviolet":"sötét ibolyaszín","lightslategrey":"világos palaszürke","grey":"szürke","darkkhaki":"sötét khakiszín","green":"zöld","deepskyblue":"sötét égszínkék","aqua":"vízszín","sienna":"vörösesbarna","mintcream":"mentaszósz","rosybrown":"barnásrózsaszín","mediumslateblue":"közepes palakék","magenta":"bíbor","lightseagreen":"világos tengerzöld","cyan":"ciánkék","olivedrab":"olajzöld drapp","darkgoldenrod":"sötét aranyvessző","slateblue":"palakék","mediumaquamarine":"közepes akvamarin","lavender":"levendula","mediumseagreen":"közepes tengerzöld","maroon":"gesztenyebarna","darkslategray":"sötét palaszürke","mediumturquoise":"közepes türkizkék","ghostwhite":"szellemfehér","darkblue":"sötétkék","mediumvioletred":"közepes ibolyavörös","brown":"barna","lightgray":"világosszürke","sandybrown":"homokbarna","pink":"rózsaszín","firebrick":"téglavörös","indigo":"indigó","snow":"hó","darkorchid":"sötét orchidea","turquoise":"türkizkék","chocolate":"csokoládé","springgreen":"tavaszzöld","moccasin":"mokkaszín","navy":"tengerészkék","lemonchiffon":"sárga műselyem","teal":"pávakék","floralwhite":"virágfehér","cornflowerblue":"búzavirágkék","paleturquoise":"halvány türkizkék","purple":"lila","gainsboro":"gainsboro","plum":"szilvakék","red":"vörös","blue":"kék","forestgreen":"erdőzöld","darkgreen":"sötétzöld","honeydew":"mézharmat","darkseagreen":"sötét tengerzöld","lightcoral":"világos korall","palevioletred":"halvány ibolyavörös","mediumpurple":"közepes lila","saddlebrown":"nyeregbarna","darkmagenta":"sötétbíbor","thistle":"bogáncs","whitesmoke":"fehér füst","wheat":"búza","violet":"ibolyaszín","lightskyblue":"világos égszínkék","goldenrod":"aranyvessző","mediumblue":"közepes kék","skyblue":"égszínkék","crimson":"karmazsinvörös","darksalmon":"sötét lazacszín","darkred":"sötétvörös","darkslategrey":"sötét palaszürke","peru":"peru","lightgrey":"világosszürke","lightgoldenrodyellow":"világos aranyvessző sárga","blanchedalmond":"hámozott mandula","aliceblue":"Alice kék","bisque":"porcelán","slategray":"palaszürke","palegoldenrod":"halvány aranyvessző","darkorange":"sötét narancssárga","aquamarine":"akvamarin","lightgreen":"világoszöld","burlywood":"nyersfa","dodgerblue":"dodger kék","darkgray":"sötétszürke","lightcyan":"világos ciánkék","powderblue":"púderkék","blueviolet":"ibolyakék","orchid":"orchidea","dimgray":"halványszürke","beige":"bézs","fuchsia":"fukszia","lavenderblush":"pirosas levendula","hotpink":"meleg rózsaszín","steelblue":"acélkék","tomato":"paradicsom","lightpink":"világos rózsaszín","limegreen":"limezöld","indianred":"indiánvörös","papayawhip":"papayahab","lightslategray":"világos palaszürke","gray":"szürke","mediumorchid":"közepes orchidea","cornsilk":"kukoricahaj","black":"fekete","seagreen":"tengerzöld","darkslateblue":"sötét palakék","khaki":"khakiszín","lightblue":"világoskék","palegreen":"halványzöld","azure":"azúrkék","peachpuff":"barackszín","darkolivegreen":"sötét olajzöld","yellowgreen":"sárgászöld"})
\ No newline at end of file
diff --git a/lib/dojo/nls/it/colors.js b/lib/dojo/nls/it/colors.js
new file mode 100644 (file)
index 0000000..8a53007
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"blu acciao chiaro","orangered":"vermiglio","midnightblue":"blu melanzana scuro","cadetblue":"verde acqua","seashell":"sabbia rosa","slategrey":"grigio ardesia","coral":"corallo","darkturquoise":"turchese scuro","antiquewhite":"bianco antico","mediumspringgreen":"verde primavera medio","salmon":"salmone","darkgrey":"grigio scuro","ivory":"avorio","greenyellow":"giallo verde","mistyrose":"rosa pallido","lightsalmon":"salmone chiaro","silver":"grigio 25%","dimgrey":"grigio 80%","orange":"arancione","white":"bianco","navajowhite":"pesca chiaro","royalblue":"blu reale","deeppink":"ciclamino","lime":"verde fluorescente","oldlace":"mandorla","chartreuse":"verde brillante","darkcyan":"ciano scuro","yellow":"giallo","linen":"lino","olive":"verde oliva","gold":"oro","lawngreen":"verde prato","lightyellow":"giallo chiaro","tan":"grigio bruno","darkviolet":"viola scuro","lightslategrey":"grigio ardesia chiaro","grey":"grigio","darkkhaki":"kaki scuro","green":"verde","deepskyblue":"azzurro cielo scuro","aqua":"acqua","sienna":"cuoio","mintcream":"bianco nuvola","rosybrown":"marrone rosato","mediumslateblue":"blu ardesia medio","magenta":"magenta","lightseagreen":"verde mare chiaro","cyan":"ciano","olivedrab":"marrone oliva","darkgoldenrod":"ocra scuro","slateblue":"blu ardesia","mediumaquamarine":"acquamarina medio","lavender":"lavanda","mediumseagreen":"verde mare medio","maroon":"scarlatto","darkslategray":"grigio ardesia scuro","mediumturquoise":"turchese medio","ghostwhite":"bianco gesso","darkblue":"blu scuro","mediumvioletred":"vinaccia","brown":"marrone","lightgray":"grigio chiaro","sandybrown":"marrone sabbia","pink":"rosa","firebrick":"rosso mattone","indigo":"indaco","snow":"neve","darkorchid":"orchidea scuro","turquoise":"turchese","chocolate":"cioccolato","springgreen":"verde primavera","moccasin":"mocassino","navy":"blu notte","lemonchiffon":"caffelatte chiaro","teal":"verde turchese","floralwhite":"bianco giglio","cornflowerblue":"blu fiordaliso","paleturquoise":"turchese pallido","purple":"porpora","gainsboro":"grigio 10%","plum":"prugna","red":"rosso","blue":"blu","forestgreen":"verde foresta","darkgreen":"verde scuro","honeydew":"bianco germoglio","darkseagreen":"verde mare scuro","lightcoral":"rosa corallo","palevioletred":"vinaccia chiaro","mediumpurple":"porpora medio","saddlebrown":"cacao","darkmagenta":"magenta scuro","thistle":"rosa cenere","whitesmoke":"bianco fumo","wheat":"sabbia","violet":"viola","lightskyblue":"azzurro cielo chiaro","goldenrod":"ocra gialla","mediumblue":"blu medio","skyblue":"azzurro cielo","crimson":"cremisi","darksalmon":"salmone scuro","darkred":"rosso scuro","darkslategrey":"grigio ardesia scuro","peru":"marrone terra bruciata","lightgrey":"grigio chiaro","lightgoldenrodyellow":"giallo tenue","blanchedalmond":"mandorla chiaro","aliceblue":"blu alice","bisque":"incarnato","slategray":"grigio ardesia","palegoldenrod":"giallo zolfo chiaro","darkorange":"arancione scuro","aquamarine":"acquamarina","lightgreen":"verde chiaro","burlywood":"tabacco","dodgerblue":"blu d'oriente","darkgray":"grigio scuro","lightcyan":"ciano chiaro","powderblue":"azzurro polvere","blueviolet":"blu violetto","orchid":"orchidea","dimgray":"grigio 80%","beige":"beige","fuchsia":"fucsia","lavenderblush":"bianco rosato","hotpink":"rosa acceso","steelblue":"blu acciao","tomato":"pomodoro","lightpink":"rosa chiaro","limegreen":"verde lime","indianred":"terra indiana","papayawhip":"cipria","lightslategray":"grigio ardesia chiaro","gray":"grigio","mediumorchid":"orchidea medio","cornsilk":"crema","black":"nero","seagreen":"verde mare","darkslateblue":"blu ardesia scuro","khaki":"kaki","lightblue":"azzurro","palegreen":"verde pallido","azure":"azzurro ghiaccio","peachpuff":"pesca","darkolivegreen":"verde oliva scuro","yellowgreen":"giallo verde"})
\ No newline at end of file
diff --git a/lib/dojo/nls/ja/colors.js b/lib/dojo/nls/ja/colors.js
new file mode 100644 (file)
index 0000000..46aa1f2
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"ライト・スチール・ブルー","orangered":"オレンジ・レッド","midnightblue":"ミッドナイト・ブルー","cadetblue":"くすんだ青","seashell":"シーシェル","slategrey":"スレート・グレイ","coral":"珊瑚","darkturquoise":"ダーク・ターコイズ","antiquewhite":"アンティーク・ホワイト","mediumspringgreen":"ミディアム・スプリング・グリーン","salmon":"サーモン","darkgrey":"ダーク・グレイ","ivory":"アイボリー","greenyellow":"緑黄色","mistyrose":"ミスティ・ローズ","lightsalmon":"ライト・サーモン","silver":"銀","dimgrey":"くすんだグレイ","orange":"オレンジ","white":"白","navajowhite":"ナバホ・ホワイト","royalblue":"藤色","deeppink":"濃いピンク","lime":"ライム","oldlace":"オールド・レイス","chartreuse":"淡黄緑","darkcyan":"ダーク・シアン・ブルー","yellow":"黄","linen":"亜麻色","olive":"オリーブ","gold":"金","lawngreen":"ローン・グリーン","lightyellow":"ライト・イエロー","tan":"茶褐色","darkviolet":"ダーク・バイオレット","lightslategrey":"ライト・スレート・グレイ","grey":"グレイ","darkkhaki":"ダーク・カーキー","green":"緑","deepskyblue":"濃い空色","aqua":"アクア","sienna":"黄褐色","mintcream":"ミント・クリーム","rosybrown":"ロージー・ブラウン","mediumslateblue":"ミディアム・スレート・ブルー","magenta":"赤紫","lightseagreen":"ライト・シー・グリーン","cyan":"シアン・ブルー","olivedrab":"濃黄緑","darkgoldenrod":"ダーク・ゴールデン・ロッド","slateblue":"スレート・ブルー","mediumaquamarine":"ミディアム・アクアマリーン","lavender":"ラベンダー","mediumseagreen":"ミディアム・シー・グリーン","maroon":"えび茶","darkslategray":"ダーク・スレート・グレイ","mediumturquoise":"ミディアム・ターコイズ","ghostwhite":"ゴースト・ホワイト","darkblue":"ダーク・ブルー","mediumvioletred":"ミディアム・バイオレット・レッド","brown":"茶","lightgray":"ライト・グレイ","sandybrown":"砂褐色","pink":"ピンク","firebrick":"赤煉瓦色","indigo":"藍色","snow":"雪色","darkorchid":"ダーク・オーキッド","turquoise":"ターコイズ","chocolate":"チョコレート","springgreen":"スプリング・グリーン","moccasin":"モカシン","navy":"濃紺","lemonchiffon":"レモン・シフォン","teal":"ティール","floralwhite":"フローラル・ホワイト","cornflowerblue":"コーンフラワー・ブルー","paleturquoise":"ペイル・ターコイズ","purple":"紫","gainsboro":"ゲインズボーロ","plum":"深紫","red":"赤","blue":"青","forestgreen":"フォレスト・グリーン","darkgreen":"ダーク・グリーン","honeydew":"ハニーデュー","darkseagreen":"ダーク・シー・グリーン","lightcoral":"ライト・コーラル","palevioletred":"ペイル・バイオレット・レッド","mediumpurple":"ミディアム・パープル","saddlebrown":"サドル・ブラウン","darkmagenta":"ダーク・マジェンタ","thistle":"シスル","whitesmoke":"ホワイト・スモーク","wheat":"小麦色","violet":"すみれ色","lightskyblue":"ライト・スカイ・ブルー","goldenrod":"ゴールデン・ロッド","mediumblue":"ミディアム・ブルー","skyblue":"スカイ・ブルー","crimson":"深紅","darksalmon":"ダーク・サーモン","darkred":"ダーク・レッド","darkslategrey":"ダーク・スレート・グレイ","peru":"ペルー","lightgrey":"ライト・グレイ","lightgoldenrodyellow":"ライト・ゴールデン・ロッド・イエロー","blanchedalmond":"皮なしアーモンド","aliceblue":"アリス・ブルー","bisque":"ビスク","slategray":"スレート・グレイ","palegoldenrod":"ペイル・ゴールデン・ロッド","darkorange":"ダーク・オレンジ","aquamarine":"碧緑","lightgreen":"ライト・グリーン","burlywood":"バーリーウッド","dodgerblue":"ドッジャー・ブルー","darkgray":"ダーク・グレイ","lightcyan":"ライト・シアン","powderblue":"淡青","blueviolet":"青紫","orchid":"薄紫","dimgray":"くすんだグレイ","beige":"ベージュ","fuchsia":"紫紅色","lavenderblush":"ラベンダー・ブラッシ","hotpink":"ホット・ピンク","steelblue":"鋼色","tomato":"トマト色","lightpink":"ライト・ピンク","limegreen":"ライム・グリーン","indianred":"インディアン・レッド","papayawhip":"パパイア・ホイップ","lightslategray":"ライト・スレート・グレイ","gray":"グレイ","mediumorchid":"ミディアム・オーキッド","cornsilk":"コーンシルク","black":"黒","seagreen":"シー・グリーン","darkslateblue":"ダーク・スレート・ブルー","khaki":"カーキー","lightblue":"ライト・ブルー","palegreen":"ペイル・グリーン","azure":"薄い空色","peachpuff":"ピーチ・パフ","darkolivegreen":"ダーク・オリーブ・グリーン","yellowgreen":"黄緑"})
\ No newline at end of file
diff --git a/lib/dojo/nls/ko/colors.js b/lib/dojo/nls/ko/colors.js
new file mode 100644 (file)
index 0000000..0c6576b
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"라이트 스틸 블루(light steel blue)","orangered":"오렌지 레드(orange red)","midnightblue":"미드나잇 블루(midnight blue)","cadetblue":"카뎃 블루(cadet blue)","seashell":"씨쉘(seashell)","slategrey":"슬레이트 그레이(slate gray)","coral":"코랄(coral)","darkturquoise":"다크 터콰즈(dark turquoise)","antiquewhite":"앤틱 화이트(antique white)","mediumspringgreen":"미디엄 스프링 그린(medium spring green)","salmon":"샐몬(salmon)","darkgrey":"다크 그레이(dark gray)","ivory":"아이보리(ivory)","greenyellow":"그린 옐로우(green-yellow)","mistyrose":"미스티 로즈(misty rose)","lightsalmon":"라이트 샐몬(light salmon)","silver":"실버(silver)","dimgrey":"딤 그레이(dim gray)","orange":"오렌지(orange)","white":"화이트(white)","navajowhite":"나바호 화이트(navajo white)","royalblue":"로얄 블루(royal blue)","deeppink":"딥 핑크(deep pink)","lime":"라임(lime)","oldlace":"올드 레이스(old lace)","chartreuse":"샤르트뢰즈(chartreuse)","darkcyan":"다크 시안(dark cyan)","yellow":"옐로우(yellow)","linen":"리넨(linen)","olive":"올리브(olive)","gold":"골드(gold)","lawngreen":"론 그린(lawn green)","lightyellow":"라이트 옐로우(light yellow)","tan":"탠(tan)","darkviolet":"다크 바이올렛(dark violet)","lightslategrey":"라이트 슬레이트 그레이(light slate gray)","grey":"그레이(gray)","darkkhaki":"다크 카키(dark khaki)","green":"그린(green)","deepskyblue":"딥 스카이 블루(deep sky blue)","aqua":"아쿠아(aqua)","sienna":"시에나(sienna)","mintcream":"민트 크림(mint cream)","rosybrown":"로지 브라운(rosy brown)","mediumslateblue":"미디엄 슬레이트 블루(medium slate blue)","magenta":"마젠타(magenta)","lightseagreen":"라이트 씨 그린(light sea green)","cyan":"시안(cyan)","olivedrab":"올리브 드랩(olive drab)","darkgoldenrod":"다크 골든로드(dark goldenrod)","slateblue":"슬레이트 블루(slate blue)","mediumaquamarine":"미디엄 아쿠아마린(medium aquamarine)","lavender":"라벤더(lavender)","mediumseagreen":"미디엄 씨 그린(medium sea green)","maroon":"마룬(maroon)","darkslategray":"다크 슬레이트 그레이(dark slate gray)","mediumturquoise":"미디엄 터콰즈(medium turquoise)","ghostwhite":"고스트 화이트(ghost white)","darkblue":"다크 블루(dark blue)","mediumvioletred":"미디엄 바이올렛 레드(medium violet-red)","brown":"브라운(brown)","lightgray":"라이트 그레이(light gray)","sandybrown":"샌디 브라운(sandy brown)","pink":"핑크(pink)","firebrick":"파이어 브릭(fire brick)","indigo":"인디고(indigo)","snow":"스노우(snow)","darkorchid":"다크 오키드(dark orchid)","turquoise":"터콰즈(turquoise)","chocolate":"초콜렛(chocolate)","springgreen":"스프링 그린(spring green)","moccasin":"모카신(moccasin)","navy":"네이비(navy)","lemonchiffon":"레몬 쉬폰(lemon chiffon)","teal":"틸(teal)","floralwhite":"플로랄 화이트(floral white)","cornflowerblue":"콘플라워 블루(cornflower blue)","paleturquoise":"페일 터콰즈(pale turquoise)","purple":"퍼플(purple)","gainsboro":"게인스브로(gainsboro)","plum":"플럼(plum)","red":"레드(red)","blue":"블루(blue)","forestgreen":"포레스트 그린(forest green)","darkgreen":"다크 그린(dark green)","honeydew":"허니듀(honeydew)","darkseagreen":"다크 씨 그린(dark sea green)","lightcoral":"라이트 코랄(light coral)","palevioletred":"페일 바이올렛 레드(pale violet-red)","mediumpurple":"미디엄 퍼플(medium purple)","saddlebrown":"새들 브라운(saddle brown)","darkmagenta":"다크 마젠타(dark magenta)","thistle":"시슬(thistle)","whitesmoke":"화이트 스모크(white smoke)","wheat":"휘트(wheat)","violet":"바이올렛(violet)","lightskyblue":"라이트 스카이 블루(light sky blue)","goldenrod":"골든로드(goldenrod)","mediumblue":"미디엄 블루(medium blue)","skyblue":"스카이 블루(sky blue)","crimson":"크림슨(crimson)","darksalmon":"다크 샐몬(dark salmon)","darkred":"다크 레드(dark red)","darkslategrey":"다크 슬레이트 그레이(dark slate gray)","peru":"페루(peru)","lightgrey":"라이트 그레이(light gray)","lightgoldenrodyellow":"라이트 골든로드 옐로우(light goldenrod yellow)","blanchedalmond":"블랜치 아몬드(blanched almond)","aliceblue":"앨리스 블루(alice blue)","bisque":"비스크(bisque)","slategray":"슬레이트 그레이(slate gray)","palegoldenrod":"페일 골든로드(pale goldenrod)","darkorange":"다크 오렌지(dark orange)","aquamarine":"아쿠아마린(aquamarine)","lightgreen":"라이트 그린(light green)","burlywood":"벌리우드(burlywood)","dodgerblue":"다저 블루(dodger blue)","darkgray":"다크 그레이(dark gray)","lightcyan":"라이트 시안(light cyan)","powderblue":"파우더 블루(powder blue)","blueviolet":"블루 바이올렛(blue-violet)","orchid":"오키드(orchid)","dimgray":"딤 그레이(dim gray)","beige":"베이지(beige)","fuchsia":"후크샤(fuchsia)","lavenderblush":"라벤더 블러쉬(lavender blush)","hotpink":"핫 핑크(hot pink)","steelblue":"스틸 블루(steel blue)","tomato":"토마토(tomato)","lightpink":"라이트 핑크(light pink)","limegreen":"라임 그린(lime green)","indianred":"인디안 레드(indian red)","papayawhip":"파파야 휩(papaya whip)","lightslategray":"라이트 슬레이트 그레이(light slate gray)","gray":"그레이(gray)","mediumorchid":"미디엄 오키드(medium orchid)","cornsilk":"콘실크(cornsilk)","black":"블랙(black)","seagreen":"씨 그린(sea green)","darkslateblue":"다크 슬레이트 블루(dark slate blue)","khaki":"카키(khaki)","lightblue":"라이트 블루(light blue)","palegreen":"페일 그린(pale green)","azure":"애쥬어(azure)","peachpuff":"피치 퍼프(peach puff)","darkolivegreen":"다크 올리브 그린(dark olive green)","yellowgreen":"옐로우 그린(yellow green)"})
\ No newline at end of file
diff --git a/lib/dojo/nls/nb/colors.js b/lib/dojo/nls/nb/colors.js
new file mode 100644 (file)
index 0000000..15770a4
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"lys stålblå","orangered":"rødoransje","midnightblue":"midnattsblå","cadetblue":"mørk grønnblå","seashell":"skjellhvit","slategrey":"skifergrå","coral":"korall","darkturquoise":"mørk turkis","antiquewhite":"antikk hvit","mediumspringgreen":"middels vårgrønn","salmon":"lakserosa","darkgrey":"mørk grå","ivory":"elfenbenshvit","greenyellow":"gulgrønn","mistyrose":"lys rosenrød","lightsalmon":"lys lakserosa","silver":"sølvfarget","dimgrey":"mørk mørkegrå","orange":"oransje","white":"hvit","navajowhite":"gulbrun","royalblue":"kongeblå","deeppink":"dyp rosa","lime":"lime","oldlace":"kniplingshvit","chartreuse":"løvgrønn","darkcyan":"mørk cyan","yellow":"gul","linen":"lin","olive":"oliven","gold":"gull","lawngreen":"plengrønn","lightyellow":"lys gul","tan":"matt mellombrun","darkviolet":"mørk fiolett","lightslategrey":"lys skifergrå","grey":"grå","darkkhaki":"mørk khaki","green":"grønn","deepskyblue":"dyp himmelblå","aqua":"akva","sienna":"nøttebrun","mintcream":"mintkrem","rosybrown":"brunlilla","mediumslateblue":"middels skiferblå","magenta":"magenta","lightseagreen":"lys sjøgrønn","cyan":"cyan","olivedrab":"middels olivengrønn","darkgoldenrod":"mørk gyldenris","slateblue":"skiferblå","mediumaquamarine":"middels akvamarin","lavender":"lavendel","mediumseagreen":"middels sjøgrønn","maroon":"rødbrun","darkslategray":"mørk skifergrå","mediumturquoise":"middels turkis","ghostwhite":"egghvit","darkblue":"mørk blå","mediumvioletred":"middels fiolettrød","brown":"brun","lightgray":"lys grå","sandybrown":"sandbrun","pink":"rosa","firebrick":"mursteinsrød","indigo":"indigo","snow":"snøhvit","darkorchid":"mørk orkide","turquoise":"turkis","chocolate":"sjokolade","springgreen":"vårgrønn","moccasin":"lys gulbrun","navy":"marineblå","lemonchiffon":"ferskenfarget","teal":"mørk grønnblå","floralwhite":"blomsterhvit","cornflowerblue":"kornblå","paleturquoise":"svak turkis","purple":"purpur","gainsboro":"lys lys grå","plum":"plommefarget","red":"rød","blue":"blå","forestgreen":"skoggrønn","darkgreen":"mørk grønn","honeydew":"grønnhvit","darkseagreen":"mørk sjøgrønn","lightcoral":"lys korall","palevioletred":"svak fiolettrød","mediumpurple":"middels purpur","saddlebrown":"mørk nøttebrun","darkmagenta":"mørk magenta","thistle":"lys grålilla","whitesmoke":"røykhvit","wheat":"varm sienna","violet":"fiolett","lightskyblue":"lys himmelblå","goldenrod":"gyldenris","mediumblue":"mellomblå","skyblue":"himmelblå","crimson":"karmosinrødt","darksalmon":"mørk lakserosa","darkred":"mørk rød","darkslategrey":"mørk skifergrå","peru":"lys nøttebrun","lightgrey":"lys grå","lightgoldenrodyellow":"lys gyldenrisgul","blanchedalmond":"lys mandel","aliceblue":"blåhvit","bisque":"gulrosa","slategray":"skifergrå","palegoldenrod":"svak gyldenris","darkorange":"mørk oransje","aquamarine":"akvamarin","lightgreen":"lys grønn","burlywood":"matt mellombrun","dodgerblue":"lys havblå","darkgray":"mørk grå","lightcyan":"lys cyan","powderblue":"lys grønnblå","blueviolet":"blåfiolett","orchid":"orkide","dimgray":"mørk mørkegrå","beige":"beige","fuchsia":"fuksia","lavenderblush":"lillahvit","hotpink":"halvmørk rosa","steelblue":"stålblå","tomato":"tomatrød","lightpink":"lys rosa","limegreen":"limegrønn","indianred":"rustrød","papayawhip":"lys papaya","lightslategray":"lys skifergrå","gray":"grå","mediumorchid":"middels orkide","cornsilk":"cornsilk","black":"svart","seagreen":"sjøgrønn","darkslateblue":"mørk skiferblå","khaki":"khaki","lightblue":"lys blå","palegreen":"svak grønn","azure":"asur","peachpuff":"brunrosa","darkolivegreen":"mørk olivengrønn","yellowgreen":"gulgrønn"})
\ No newline at end of file
diff --git a/lib/dojo/nls/nl/colors.js b/lib/dojo/nls/nl/colors.js
new file mode 100644 (file)
index 0000000..ae0ccbf
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"lichtstaalblauw","orangered":"oranjerood","midnightblue":"nachtblauw","cadetblue":"donkerstaalblauw","seashell":"schelp","slategrey":"leigrijs","coral":"koraalrood","darkturquoise":"donkerturquoise","antiquewhite":"antiekwit","mediumspringgreen":"midlentegroen","salmon":"zalm","darkgrey":"donkergrijs","ivory":"ivoorwit","greenyellow":"groengeel","mistyrose":"matroze","lightsalmon":"lichtzalm","silver":"zilvergrijs","dimgrey":"dofgrijs","orange":"oranje","white":"wit","navajowhite":"navajowit","royalblue":"koningsblauw","deeppink":"donkerroze","lime":"limoen","oldlace":"kant","chartreuse":"groengeel","darkcyan":"donkercyaan","yellow":"geel","linen":"linnen","olive":"olijfgroen","gold":"goud","lawngreen":"grasgroen","lightyellow":"lichtgeel","tan":"geelbruin","darkviolet":"donkerviolet","lightslategrey":"lichtblauwgrijs","grey":"grijs","darkkhaki":"donkerkaki","green":"groen","deepskyblue":"diephemelblauw","aqua":"aqua","sienna":"sienna","mintcream":"mintroomgeel","rosybrown":"roodbruin","mediumslateblue":"midgrijsblauw","magenta":"magenta","lightseagreen":"lichtzeegroen","cyan":"cyaan","olivedrab":"grijsbruin","darkgoldenrod":"donkergoud","slateblue":"leiblauw","mediumaquamarine":"midaquamarijn","lavender":"lavendelblauw","mediumseagreen":"midzeegroen","maroon":"kastanjebruin","darkslategray":"donkerblauwgrijs","mediumturquoise":"midturquoise","ghostwhite":"spierwit","darkblue":"donkerblauw","mediumvioletred":"midvioletrood","brown":"bruin","lightgray":"lichtgrijs","sandybrown":"zandbruin","pink":"roze","firebrick":"vuursteenrood","indigo":"indigo","snow":"sneeuwwit","darkorchid":"donkerorchidee","turquoise":"turquoise","chocolate":"chocoladebruin","springgreen":"lentegroen","moccasin":"moccasin","navy":"marineblauw","lemonchiffon":"citroengeel","teal":"grijsblauw","floralwhite":"rozewit","cornflowerblue":"korenbloemblauw","paleturquoise":"bleekturquoise","purple":"purper","gainsboro":"lichtblauwgrijs","plum":"pruim","red":"rood","blue":"blauw","forestgreen":"bosgroen","darkgreen":"donkergroen","honeydew":"meloen","darkseagreen":"donkerzeegroen","lightcoral":"lichtkoraal","palevioletred":"bleekvioletrood","mediumpurple":"midpurper","saddlebrown":"leerbruin","darkmagenta":"donkermagenta","thistle":"distel","whitesmoke":"rookwit","wheat":"tarwebruin","violet":"violet","lightskyblue":"lichthemelsblauw","goldenrod":"goudbruin","mediumblue":"midblauw","skyblue":"hemelsblauw","crimson":"karmozijnrood","darksalmon":"donkerzalm","darkred":"donkerrood","darkslategrey":"donkerblauwgrijs","peru":"bruin","lightgrey":"lichtgrijs","lightgoldenrodyellow":"lichtgoudgeel","blanchedalmond":"amandel","aliceblue":"lichtblauw","bisque":"oranjegeel","slategray":"leigrijs","palegoldenrod":"bleekgeel","darkorange":"donkeroranje","aquamarine":"aquamarijn","lightgreen":"lichtgroen","burlywood":"lichtbruin","dodgerblue":"helderblauw","darkgray":"donkergrijs","lightcyan":"lichtcyaan","powderblue":"lichtblauw-wit","blueviolet":"violet","orchid":"orchidee","dimgray":"dofgrijs","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavendelblos","hotpink":"acaciaroze","steelblue":"staalblauw","tomato":"tomaat","lightpink":"lichtroze","limegreen":"limoengroen","indianred":"indisch rood","papayawhip":"papajaroze","lightslategray":"lichtblauwgrijs","gray":"grijs","mediumorchid":"midorchidee","cornsilk":"maïsgeel","black":"zwart","seagreen":"zeegroen","darkslateblue":"donkergrijsblauw","khaki":"kaki","lightblue":"lichtblauw","palegreen":"bleekgroen","azure":"azuur","peachpuff":"perzikroze","darkolivegreen":"donkerolijfgroen","yellowgreen":"geelgroen"})
\ No newline at end of file
diff --git a/lib/dojo/nls/pl/colors.js b/lib/dojo/nls/pl/colors.js
new file mode 100644 (file)
index 0000000..852268c
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"jasny stalowoniebieski","orangered":"pomarańczowoczerwony","midnightblue":"ciemnogranatowy","cadetblue":"niebieskoszary","seashell":"muszla","slategrey":"łupkowy szary","coral":"koralowy","darkturquoise":"ciemnoturkusowy","antiquewhite":"biel antyczna","mediumspringgreen":"średnia wiosenna zieleń","salmon":"łososiowy","darkgrey":"ciemnoszary","ivory":"kość słoniowa","greenyellow":"zielonożółty","mistyrose":"bladoróżany","lightsalmon":"jasnołososiowy","silver":"srebrny","dimgrey":"przytłumiony szary","orange":"pomarańczowy","white":"biały","navajowhite":"piaskowy","royalblue":"błękit królewski","deeppink":"głęboki różowy","lime":"limetkowy","oldlace":"bladopomarańczowy","chartreuse":"jaskrawozielony","darkcyan":"ciemny cyjan","yellow":"żółty","linen":"lniany","olive":"oliwkowy","gold":"złoty","lawngreen":"trawiasty","lightyellow":"jasnożółty","tan":"kawowy","darkviolet":"ciemnofioletowy","lightslategrey":"jasny łupkowy szary","grey":"szary","darkkhaki":"ciemny khaki","green":"zielony","deepskyblue":"intensywny błękit nieba","aqua":"wodny","sienna":"siena","mintcream":"jasnomiętowy","rosybrown":"różowobrązowy","mediumslateblue":"średni łupkowy niebieski","magenta":"magenta","lightseagreen":"jasna morska zieleń","cyan":"cyjan","olivedrab":"oliwkowa zieleń","darkgoldenrod":"ciemnogliniany","slateblue":"łupkowy niebieski","mediumaquamarine":"średnia akwamaryna","lavender":"lawendowy","mediumseagreen":"średnia morska zieleń","maroon":"bordowy","darkslategray":"ciemny łupkowy szary","mediumturquoise":"średni turkusowy","ghostwhite":"bladobiały","darkblue":"ciemnoniebieski","mediumvioletred":"średni fioletowoczerwony","brown":"brązowy","lightgray":"jasnoszary","sandybrown":"piaskowy brąz","pink":"różowy","firebrick":"ceglasty","indigo":"indygo","snow":"śnieżny","darkorchid":"ciemna orchidea","turquoise":"turkusowy","chocolate":"czekoladowy","springgreen":"wiosenna zieleń","moccasin":"mokasynowy","navy":"granatowy","lemonchiffon":"cytrynowy","teal":"cyrankowy","floralwhite":"kwiatowa biel","cornflowerblue":"chabrowy","paleturquoise":"bladoturkusowy","purple":"purpurowy","gainsboro":"bladoszary","plum":"śliwkowy","red":"czerwony","blue":"niebieski","forestgreen":"leśna zieleń","darkgreen":"ciemnozielony","honeydew":"melon","darkseagreen":"ciemna morska zieleń","lightcoral":"jasnokoralowy","palevioletred":"blady fioletowoczerwony","mediumpurple":"średnia purpura","saddlebrown":"skórzany brązowy","darkmagenta":"ciemna magenta","thistle":"bladofioletowy","whitesmoke":"przydymiony biały","wheat":"pszeniczny","violet":"fioletowy","lightskyblue":"jasny błękit nieba","goldenrod":"gliniany","mediumblue":"średni niebieski","skyblue":"błękit nieba","crimson":"karmazynowy","darksalmon":"ciemnołososiowy","darkred":"ciemnoczerwony","darkslategrey":"ciemny łupkowy szary","peru":"jasnobrązowy","lightgrey":"jasnoszary","lightgoldenrodyellow":"jasnogliniana żółć","blanchedalmond":"migdałowy","aliceblue":"bladoniebieski","bisque":"biszkoptowy","slategray":"łupkowy szary","palegoldenrod":"bladogliniany","darkorange":"ciemnopomarańczowy","aquamarine":"akwamaryna","lightgreen":"jasnozielony","burlywood":"kolor drewna","dodgerblue":"błękit Dodgers","darkgray":"ciemnoszary","lightcyan":"jasny cyjan","powderblue":"pudrowy niebieski","blueviolet":"niebieskofioletowy","orchid":"orchidea","dimgray":"przytłumiony szary","beige":"beżowy","fuchsia":"fuksja","lavenderblush":"lawendoworóżowy","hotpink":"intensywny różowy","steelblue":"stalowy niebieski","tomato":"pomidorowy","lightpink":"jasnoróżowy","limegreen":"limetkowozielony","indianred":"kasztanowy","papayawhip":"papaja","lightslategray":"jasny łupkowy szary","gray":"szary","mediumorchid":"średnia orchidea","cornsilk":"kukurydziany","black":"czarny","seagreen":"morska zieleń","darkslateblue":"ciemny łupkowy niebieski","khaki":"khaki","lightblue":"jasnoniebieski","palegreen":"bladozielony","azure":"lazur","peachpuff":"brzoskwiniowy","darkolivegreen":"ciemnooliwkowy","yellowgreen":"żółtozielony"})
\ No newline at end of file
diff --git a/lib/dojo/nls/pt-pt/colors.js b/lib/dojo/nls/pt-pt/colors.js
new file mode 100644 (file)
index 0000000..e01afd2
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"azul-aço claro","orangered":"vermelho alaranjado","midnightblue":"azul meia-noite","cadetblue":"azul cadete","seashell":"concha","slategrey":"cinzento ardósia","coral":"coral","darkturquoise":"turquesa escuro","antiquewhite":"branco antigo","mediumspringgreen":"verde primavera médio","salmon":"salmão","darkgrey":"cinzento escuro","ivory":"marfim","greenyellow":"amarelo esverdeado","mistyrose":"rosa pálido","lightsalmon":"salmão claro","silver":"prateado","dimgrey":"cinzento escuro","orange":"laranja","white":"branco","navajowhite":"branco navajo","royalblue":"azul real","deeppink":"rosa profundo","lime":"lima","oldlace":"renda antiga","chartreuse":"amarelo esverdeado","darkcyan":"ciano escuro","yellow":"amarelo","linen":"linho","olive":"azeitona","gold":"dourado","lawngreen":"verde relva","lightyellow":"amarelo claro","tan":"castanho claro","darkviolet":"violeta escuro","lightslategrey":"cinzento ardósia claro","grey":"cinzento","darkkhaki":"caqui escuro","green":"verde","deepskyblue":"azul céu profundo","aqua":"verde-água","sienna":"castanho-avermelhado","mintcream":"creme de menta","rosybrown":"castanho rosado","mediumslateblue":"azul ardósia médio","magenta":"magenta","lightseagreen":"verde marinho claro","cyan":"ciano","olivedrab":"azeitona claro","darkgoldenrod":"ouro velho escuro","slateblue":"azul ardósia","mediumaquamarine":"verde-azulado médio","lavender":"alfazema","mediumseagreen":"verde marinho médio","maroon":"bordeaux","darkslategray":"cinzento ardósia escuro","mediumturquoise":"turquesa médio","ghostwhite":"branco sombreado","darkblue":"azul escuro","mediumvioletred":"violeta avermelhado médio","brown":"castanho","lightgray":"cinzento claro","sandybrown":"castanho areia","pink":"rosa","firebrick":"tijolo fogo","indigo":"índigo","snow":"branco-neve","darkorchid":"orquídea escuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde primavera","moccasin":"mocassim","navy":"azul marinho","lemonchiffon":"limão chiffon","teal":"verde-azulado","floralwhite":"branco floral","cornflowerblue":"azul-violáceo","paleturquoise":"turquesa pálido","purple":"roxo","gainsboro":"cinzento azulado claro","plum":"cor-de-ameixa","red":"vermelho","blue":"azul","forestgreen":"verde floresta","darkgreen":"verde escuro","honeydew":"mel","darkseagreen":"verde marinho escuro","lightcoral":"coral claro","palevioletred":"violeta avermelhado pálido","mediumpurple":"roxo médio","saddlebrown":"castanho sela","darkmagenta":"magenta escuro","thistle":"cardo","whitesmoke":"fumo branco","wheat":"trigo","violet":"violeta","lightskyblue":"azul céu claro","goldenrod":"ouro velho","mediumblue":"azul médio","skyblue":"azul céu","crimson":"carmesim","darksalmon":"salmão escuro","darkred":"vermelho escuro","darkslategrey":"cinzento ardósia escuro","peru":"peru","lightgrey":"cinzento claro","lightgoldenrodyellow":"ouro velho amarelado claro","blanchedalmond":"amêndoa claro","aliceblue":"azul alice","bisque":"rosa-velho","slategray":"cinzento ardósia","palegoldenrod":"ouro velho pálido","darkorange":"laranja escuro","aquamarine":"verde-azulado","lightgreen":"verde claro","burlywood":"castanho pinho","dodgerblue":"azul furtivo","darkgray":"cinzento escuro","lightcyan":"ciano claro","powderblue":"azul de esmalte","blueviolet":"azul violeta","orchid":"orquídea","dimgray":"cinzento escuro","beige":"bege","fuchsia":"fúcsia","lavenderblush":"alfazema rosado","hotpink":"rosa forte","steelblue":"azul-aço","tomato":"vermelho tomate","lightpink":"rosa claro","limegreen":"verde-lima","indianred":"almagre","papayawhip":"creme de papaia","lightslategray":"cinzento ardósia claro","gray":"cinzento","mediumorchid":"orquídea médio","cornsilk":"branco seda","black":"preto","seagreen":"verde marinho","darkslateblue":"azul ardósia escuro","khaki":"caqui","lightblue":"azul claro","palegreen":"verde pálido","azure":"azul-celeste","peachpuff":"pêssego","darkolivegreen":"verde-azeitona escuro","yellowgreen":"verde amarelado"})
\ No newline at end of file
diff --git a/lib/dojo/nls/pt/colors.js b/lib/dojo/nls/pt/colors.js
new file mode 100644 (file)
index 0000000..897efc3
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"azul-aço claro","orangered":"vermelho alaranjado","midnightblue":"azul meia-noite","cadetblue":"azul cadet","seashell":"seashell","slategrey":"cinza-ardósia","coral":"coral","darkturquoise":"turquesa escuro","antiquewhite":"branco antigo","mediumspringgreen":"verde-primavera médio","salmon":"salmão","darkgrey":"cinza escuro","ivory":"marfim","greenyellow":"amarelo esverdeado","mistyrose":"rosa enevoado","lightsalmon":"salmão claro","silver":"prateado","dimgrey":"cinza turvo","orange":"laranja","white":"branco","navajowhite":"branco navajo","royalblue":"azul royal","deeppink":"rosa profundo","lime":"lima","oldlace":"cadarço velho","chartreuse":"chartreuse","darkcyan":"ciano escuro","yellow":"amarelo","linen":"linho","olive":"oliva","gold":"dourado","lawngreen":"verde grama","lightyellow":"amarelo claro","tan":"tan","darkviolet":"violeta escuro","lightslategrey":"cinza-ardósia claro","grey":"cinza","darkkhaki":"cáqui escuro","green":"verde","deepskyblue":"azul-céu intenso","aqua":"aqua","sienna":"sienna","mintcream":"creme de menta","rosybrown":"marrom rosado","mediumslateblue":"azul-ardósia médio","magenta":"magenta","lightseagreen":"verde marinho claro","cyan":"ciano","olivedrab":"verde oliva","darkgoldenrod":"goldenrod escuro","slateblue":"azul-ardósia","mediumaquamarine":"água-marinha médio","lavender":"lavanda","mediumseagreen":"verde-marinho médio","maroon":"marrom","darkslategray":"cinza-ardósia escuro","mediumturquoise":"turquesa médio","ghostwhite":"branco ghost","darkblue":"azul escuro","mediumvioletred":"vermelho-violeta médio","brown":"marrom","lightgray":"cinza claro","sandybrown":"marrom cor de areia","pink":"rosa","firebrick":"firebrick","indigo":"índigo","snow":"branco neve","darkorchid":"orquídea escuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde primavera","moccasin":"moccasin","navy":"marinho","lemonchiffon":"limão chiffon","teal":"azul esverdeado","floralwhite":"branco floral","cornflowerblue":"azul centaurea","paleturquoise":"turquesa esbranquiçado","purple":"roxo","gainsboro":"gainsboro","plum":"ameixa","red":"vermelho","blue":"azul","forestgreen":"verde floresta","darkgreen":"verde escuro","honeydew":"honeydew","darkseagreen":"verde marinho escuro","lightcoral":"coral claro","palevioletred":"vermelho-violeta esbranquiçado","mediumpurple":"roxo médio","saddlebrown":"marrom saddle","darkmagenta":"magenta escuro","thistle":"thistle","whitesmoke":"fumaça branca","wheat":"trigo","violet":"violeta","lightskyblue":"azul-céu claro","goldenrod":"goldenrod","mediumblue":"azul médio","skyblue":"azul-céu","crimson":"carmesim","darksalmon":"salmão escuro","darkred":"vermelho escuro","darkslategrey":"cinza-ardósia escuro","peru":"peru","lightgrey":"cinza claro","lightgoldenrodyellow":"amarelo goldenrod claro","blanchedalmond":"amêndoa pelada","aliceblue":"azul alice","bisque":"bisque","slategray":"cinza-ardósia","palegoldenrod":"goldenrod esbranquiçado","darkorange":"laranja escuro","aquamarine":"água-marinha","lightgreen":"verde claro","burlywood":"burlywood","dodgerblue":"azul dodger","darkgray":"cinza escuro","lightcyan":"ciano claro","powderblue":"azul-talco","blueviolet":"azul-violeta","orchid":"orquídea","dimgray":"cinza turvo","beige":"bege","fuchsia":"fúcsia","lavenderblush":"lavanda avermelhada","hotpink":"rosa quente","steelblue":"azul-aço","tomato":"tomate","lightpink":"rosa claro","limegreen":"verde-lima","indianred":"vermelho indiano","papayawhip":"creme de papaya","lightslategray":"cinza-ardósia claro","gray":"cinza","mediumorchid":"orquídea médio","cornsilk":"cornsilk","black":"preto","seagreen":"verde-marinho","darkslateblue":"azul-ardósia escuro","khaki":"cáqui","lightblue":"azul claro","palegreen":"verde esbranquiçado","azure":"azul-celeste","peachpuff":"peach puff","darkolivegreen":"verde oliva escuro","yellowgreen":"verde amarelado"})
\ No newline at end of file
diff --git a/lib/dojo/nls/ro/colors.js b/lib/dojo/nls/ro/colors.js
new file mode 100644 (file)
index 0000000..9652ce5
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"light steel blue","orangered":"roşu portocaliu","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"cochilie","slategrey":"gri ardezie","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"somon","darkgrey":"gri închis","ivory":"ivoriu","greenyellow":"verde-galben","mistyrose":"trandafiriu obscur","lightsalmon":"somon deschis","silver":"argintiu","dimgrey":"dim gray","orange":"portocaliu","white":"alb","navajowhite":"navajo white","royalblue":"albastru regal","deeppink":"roz închis","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"cyan închis","yellow":"galben","linen":"linen","olive":"oliv","gold":"auriu","lawngreen":"lawn green","lightyellow":"galben deschis","tan":"tan","darkviolet":"violet închis","lightslategrey":"light slate gray","grey":"gri","darkkhaki":"kaki închis","green":"verde","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"maro trandafiriu","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"verde marin deschis","cyan":"cyan","olivedrab":"maron-gălbui oliv","darkgoldenrod":"goldenrod închis","slateblue":"albastru ardezie","mediumaquamarine":"medium aquamarine","lavender":"levănţică","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"albastru închis","mediumvioletred":"medium violet-red","brown":"maro","lightgray":"gri deschis","sandybrown":"maro nisipiu","pink":"roz","firebrick":"fire brick","indigo":"indigo","snow":"zăpadă","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"ciocolată","springgreen":"verde de primăvară","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"lişiţă","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"turquoise pal","purple":"purpură","gainsboro":"gainsboro","plum":"prună","red":"roşu","blue":"albastru","forestgreen":"verde pădure","darkgreen":"verde închis","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"coral deschis","palevioletred":"roşu violet pal","mediumpurple":"medium purple","saddlebrown":"maro de şa","darkmagenta":"magenta închis","thistle":"ciulin","whitesmoke":"fum alb","wheat":"grâu","violet":"violet","lightskyblue":"albastru cer deschis","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"albastru de cer","crimson":"crimson","darksalmon":"dark salmon","darkred":"roşu închis","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"gri deschis","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"gri ardezie","palegoldenrod":"solidago pal","darkorange":"portocaliu închis","aquamarine":"aquamarine","lightgreen":"verde deschis","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"cenuşiu închis","lightcyan":"cyan deschis","powderblue":"albastru pudră","blueviolet":"albastru-violet","orchid":"orhidee","dimgray":"dim gray","beige":"bej","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"roz aprins","steelblue":"albastru metalic","tomato":"roşie","lightpink":"roz deschis","limegreen":"verde lime","indianred":"roşu indian","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"cenuşiu","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"negru","seagreen":"verde marin","darkslateblue":"dark slate blue","khaki":"kaki","lightblue":"albastru deschis","palegreen":"verde pal","azure":"azuriu","peachpuff":"puf de piersică","darkolivegreen":"verde oliv închis","yellowgreen":"verde galben"})
\ No newline at end of file
diff --git a/lib/dojo/nls/ru/colors.js b/lib/dojo/nls/ru/colors.js
new file mode 100644 (file)
index 0000000..4b67053
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"светлый стальной","orangered":"оранжево-красный","midnightblue":"полуночно-синий","cadetblue":"серо-синий","seashell":"морская раковина","slategrey":"грифельно-серый","coral":"коралловый","darkturquoise":"темный бирюзовый","antiquewhite":"белый антик","mediumspringgreen":"нейтральный весенне-зеленый","salmon":"лососевый","darkgrey":"темно-серый","ivory":"слоновой кости","greenyellow":"зелено-желтый","mistyrose":"блекло-розовый","lightsalmon":"светло-лососевый","silver":"серебристый","dimgrey":"тускло-серый","orange":"оранжевый","white":"белый","navajowhite":"белый навахо","royalblue":"королевский голубой","deeppink":"темно-розовый","lime":"лайм","oldlace":"матово-белый","chartreuse":"желто-салатный","darkcyan":"темный циан","yellow":"желтый","linen":"хлопковый","olive":"оливковый","gold":"золотой","lawngreen":"зеленая лужайка","lightyellow":"светло-желтый","tan":"рыжевато-коричневый","darkviolet":"темно-фиолетовый","lightslategrey":"светлый грифельно-серый","grey":"серый","darkkhaki":"темный хаки","green":"зеленый","deepskyblue":"темный небесно-голубой","aqua":"зеленовато-голубой","sienna":"охра","mintcream":"мятно-кремовый","rosybrown":"розово-коричневый","mediumslateblue":"нейтральный грифельно-синий","magenta":"пурпурный","lightseagreen":"светлый морской волны","cyan":"циан","olivedrab":"желтовато-серый","darkgoldenrod":"темно-золотистый","slateblue":"грифельно-синий","mediumaquamarine":"нейтральный аквамарин","lavender":"бледно-лиловый","mediumseagreen":"нейтральный морской волны","maroon":"темно-бордовый","darkslategray":"темный грифельно-серый","mediumturquoise":"нейтральный бирюзовый","ghostwhite":"призрачно-белый","darkblue":"темно-синий","mediumvioletred":"нейтральный фиолетово-красный","brown":"коричневый","lightgray":"светло-серый","sandybrown":"коричнево-песчаный","pink":"розовый","firebrick":"кирпичный","indigo":"индиго","snow":"белоснежный","darkorchid":"темный орсель","turquoise":"бирюзовый","chocolate":"шоколадный","springgreen":"весенний зеленый","moccasin":"мокасин","navy":"темно-синий","lemonchiffon":"бледно-лимонный","teal":"чирок","floralwhite":"цветочно-белый","cornflowerblue":"фиолетово-синий","paleturquoise":"бледно-бирюзовый","purple":"фиолетовый","gainsboro":"бледно-серый","plum":"сливовый","red":"красный","blue":"синий","forestgreen":"зеленый лесной","darkgreen":"темно-зеленый","honeydew":"медовый","darkseagreen":"темный морской волны","lightcoral":"светло-коралловый","palevioletred":"бледный фиолетово-красный","mediumpurple":"нейтральный фиолетовый","saddlebrown":"кожано-коричневый","darkmagenta":"темно-пурпурный","thistle":"чертополох","whitesmoke":"дымчато-белый","wheat":"пшеница","violet":"фиолетовый","lightskyblue":"светлый небесно-голубой","goldenrod":"золотистый","mediumblue":"нейтральный синий","skyblue":"небесно-голубой","crimson":"малиновый","darksalmon":"темно-лососевый","darkred":"темно-красный","darkslategrey":"темный грифельно-серый","peru":"перу","lightgrey":"светло-серый","lightgoldenrodyellow":"светло-золотистый","blanchedalmond":"светло-миндальный","aliceblue":"серо-голубой","bisque":"бисквитный","slategray":"грифельно-серый","palegoldenrod":"бледно-золотистый","darkorange":"темно-оранжевый","aquamarine":"аквамарин","lightgreen":"светло-зеленый","burlywood":"светло-коричневый","dodgerblue":"бледно-синий","darkgray":"темно-серый","lightcyan":"светлый циан","powderblue":"пороховой","blueviolet":"сине-фиолетовый","orchid":"орсель","dimgray":"тускло-серый","beige":"бежевый","fuchsia":"фуксин","lavenderblush":"розовато-лиловый","hotpink":"красно-розовый","steelblue":"стальной","tomato":"помидор","lightpink":"светло-розовый","limegreen":"зеленый лайм","indianred":"индийский красный","papayawhip":"черенок папайи","lightslategray":"светлый грифельно-серый","gray":"серый","mediumorchid":"нейтральный орсель","cornsilk":"шелковый оттенок","black":"черный","seagreen":"морской волны","darkslateblue":"темный грифельно-синий","khaki":"хаки","lightblue":"светло-синий","palegreen":"бледно-зеленый","azure":"лазурный","peachpuff":"персиковый","darkolivegreen":"темно-оливковый","yellowgreen":"желто-зеленый"})
\ No newline at end of file
diff --git a/lib/dojo/nls/sk/colors.js b/lib/dojo/nls/sk/colors.js
new file mode 100644 (file)
index 0000000..9dbd8e6
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"oceľovo modrá svetlá","orangered":"oranžovo červená","midnightblue":"nočná modrá","cadetblue":"sivomodrá","seashell":"lastúrová","slategrey":"bridlicová sivá","coral":"koralová","darkturquoise":"tyrkysová tmavá","antiquewhite":"antická biela","mediumspringgreen":"jarná zelená stredná","salmon":"lososovo ružová","darkgrey":"tmavosivá","ivory":"slonovinová","greenyellow":"žltozelená","mistyrose":"zahmlená ruža","lightsalmon":"lososovo ružová svetlá","silver":"strieborná","dimgrey":"sivá matná","orange":"oranžová","white":"biela","navajowhite":"navajská biela","royalblue":"kráľovská modrá","deeppink":"hlboká ružová","lime":"lipová","oldlace":"stará čipka","chartreuse":"kartúza","darkcyan":"tmavozelenomodrá","yellow":"žltá","linen":"ľan","olive":"olivovo zelená","gold":"zlatá","lawngreen":"zelená tráva","lightyellow":"svetložltá","tan":"žltohnedá","darkviolet":"tmavofialová","lightslategrey":"bridlicová sivá svetlá","grey":"sivá","darkkhaki":"žltohnedá tmavá","green":"zelená","deepskyblue":"hlboká blankytná modrá","aqua":"svetlá zelenomodrá","sienna":"sienská","mintcream":"mätová krémová","rosybrown":"ružovo hnedá","mediumslateblue":"bridlicová modrá stredná","magenta":"purpurová","lightseagreen":"morská zelená svetlá","cyan":"zelenomodrá","olivedrab":"olivovo zelená fádna","darkgoldenrod":"zlatobyľová tmavá","slateblue":"bridlicová modrá","mediumaquamarine":"akvamarínová stredná","lavender":"levanduľová","mediumseagreen":"morská zelená stredná","maroon":"gaštanovo hnedá","darkslategray":"bridlicová sivá tmavá","mediumturquoise":"tyrkysová stredná","ghostwhite":"biely tieň","darkblue":"tmavomodrá","mediumvioletred":"fialovočervená stredná","brown":"hnedá","lightgray":"svetlosivá","sandybrown":"pieskovo hnedá","pink":"ružová","firebrick":"pálená tehla","indigo":"fialovo modrá","snow":"snehobiela","darkorchid":"orchideovo ružová tmavá","turquoise":"tyrkysová","chocolate":"čokoládovo hnedá","springgreen":"jarná zelená","moccasin":"črievičníková","navy":"vojenská zelená","lemonchiffon":"citrónový šifón","teal":"tyrkysová","floralwhite":"kvetinová biela","cornflowerblue":"nevädzovo modrá","paleturquoise":"bledo tyrkysová","purple":"purpurová","gainsboro":"sivomodrá svetlá","plum":"slivková","red":"červená","blue":"modrá","forestgreen":"lesná zelená","darkgreen":"tmavozelená","honeydew":"ambrózia","darkseagreen":"morská zelená tmavá","lightcoral":"koralová svetlá","palevioletred":"bledá fialovo červená","mediumpurple":"purpurová stredná","saddlebrown":"sedlová hnedá","darkmagenta":"tmavopurpurová","thistle":"bodliaková fialová","whitesmoke":"biely dym","wheat":"pšeničná","violet":"fialová","lightskyblue":"blankytná modrá svetlá","goldenrod":"zlatobyľ","mediumblue":"stredne modrá","skyblue":"blankytná modrá","crimson":"karmínová","darksalmon":"lososovo ružová tmavá","darkred":"tmavočervená","darkslategrey":"bridlicová sivá tmavá","peru":"peru","lightgrey":"svetlosivá","lightgoldenrodyellow":"zlatobyľová svetlá","blanchedalmond":"lúpané mandle","aliceblue":"modrá alice","bisque":"biskvitová","slategray":"bridlicová sivá","palegoldenrod":"bledá zlatobyľová","darkorange":"tmavooranžová","aquamarine":"akvamarínová","lightgreen":"svetlozelená","burlywood":"pieskovo hnedá","dodgerblue":"modrá dodger","darkgray":"tmavosivá","lightcyan":"zelenomodrá svetlá","powderblue":"prášková modrá","blueviolet":"modrofialová","orchid":"orchideovo ružová","dimgray":"sivá matná","beige":"béžová","fuchsia":"purpurová","lavenderblush":"levanduľový rumenec","hotpink":"teplá ružová","steelblue":"oceľovo modrá","tomato":"paradajková červená","lightpink":"svetloružová","limegreen":"lipová zelená","indianred":"indická červená","papayawhip":"papájový krém","lightslategray":"bridlicová sivá svetlá","gray":"sivá","mediumorchid":"orchideovo ružová stredná","cornsilk":"hodvábna žltá","black":"čierna","seagreen":"morská zelená","darkslateblue":"bridlicová modrá tmavá","khaki":"khaki","lightblue":"svetlomodrá","palegreen":"bledozelená","azure":"azúrová","peachpuff":"broskyňová pena","darkolivegreen":"olivovozelená tmavá","yellowgreen":"žltozelená"})
\ No newline at end of file
diff --git a/lib/dojo/nls/sl/colors.js b/lib/dojo/nls/sl/colors.js
new file mode 100644 (file)
index 0000000..e009ce9
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"svetlo jeklena modra","orangered":"oranžno-rdeča","midnightblue":"polnočno modra","cadetblue":"zelenkasto modra","seashell":"morska školjka","slategrey":"skrilasto siva","coral":"koralna","darkturquoise":"temno turkizna","antiquewhite":"antično bela","mediumspringgreen":"srednje pomladno zelena","salmon":"lososova","darkgrey":"temno siva","ivory":"slonokoščena","greenyellow":"zeleno-rumena","mistyrose":"megleno rožnata","lightsalmon":"svetlo lososova","silver":"srebrna","dimgrey":"umazano siva","orange":"oranžna","white":"bela","navajowhite":"navajsko bela","royalblue":"kraljevsko modra","deeppink":"temno roza","lime":"rumeno zelena","oldlace":"stara čipka","chartreuse":"svetlo rumena zelena","darkcyan":"temno cijan","yellow":"rumena","linen":"lanena","olive":"olivna","gold":"zlata","lawngreen":"travnato zelena","lightyellow":"svetlo rumena","tan":"kožno rjava","darkviolet":"temno vijolična","lightslategrey":"svetlo skrilasto siva","grey":"siva","darkkhaki":"temno rumenkasto rjava","green":"zelena","deepskyblue":"temno nebesno modra","aqua":"akva","sienna":"siena","mintcream":"mentolno smetanasta","rosybrown":"rožnato rjava","mediumslateblue":"srednje skrilasto modra","magenta":"magenta","lightseagreen":"svetlo morsko zelena","cyan":"cijan","olivedrab":"olivno sivo rjava","darkgoldenrod":"temno zlata rozga","slateblue":"skrilasto modra","mediumaquamarine":"srednje akvamarin","lavender":"sivka","mediumseagreen":"srednje morsko zelena","maroon":"kostanjeva","darkslategray":"temno skrilasto siva","mediumturquoise":"srednje turkizna","ghostwhite":"prosojno bela","darkblue":"temno modra","mediumvioletred":"srednje vijolično-rdeča","brown":"rjava","lightgray":"svetlo siva","sandybrown":"peščeno rjava","pink":"roza","firebrick":"opečnata","indigo":"indigo","snow":"snežena","darkorchid":"temno orhidejna","turquoise":"turkizna","chocolate":"čokoladna","springgreen":"pomladno zelena","moccasin":"mokasinasta","navy":"mornarsko modra","lemonchiffon":"limonina","teal":"zeleno modra","floralwhite":"cvetno bela","cornflowerblue":"plavično modra","paleturquoise":"bledo turkizna","purple":"škrlatna","gainsboro":"pepelnato siva","plum":"slivova","red":"rdeča","blue":"modra","forestgreen":"gozdno zelena","darkgreen":"temno zelena","honeydew":"medena rosa","darkseagreen":"temno morsko zelena","lightcoral":"svetlo koralna","palevioletred":"bledo vijolično-rdeča","mediumpurple":"srednje škrlatna","saddlebrown":"sedlasto rjava","darkmagenta":"temno magenta","thistle":"osatna","whitesmoke":"umazano bela","wheat":"žitna","violet":"vijolična","lightskyblue":"svetlo nebesno modra","goldenrod":"zlata rozga","mediumblue":"srednje modra","skyblue":"nebesno modra","crimson":"karminasta","darksalmon":"temno lososova","darkred":"temno rdeča","darkslategrey":"temno skrilasto siva","peru":"perujska","lightgrey":"svetlo siva","lightgoldenrodyellow":"svetlo rumena zlata rozga","blanchedalmond":"mandljeva","aliceblue":"alice modra","bisque":"porcelanasta","slategray":"skrilasto siva","palegoldenrod":"bleda zlata rozga","darkorange":"temno oranžna","aquamarine":"akvamarin","lightgreen":"svetlo zelena","burlywood":"grčav les","dodgerblue":"koruzno modra","darkgray":"temno siva","lightcyan":"svetlo cijan","powderblue":"smodniško modra","blueviolet":"modro vijolična","orchid":"orhidejna","dimgray":"umazano siva","beige":"bež","fuchsia":"fuksija","lavenderblush":"bleščeča sivka","hotpink":"živo roza","steelblue":"jekleno modra","tomato":"paradižnikova","lightpink":"svetlo roza","limegreen":"citronsko zelena","indianred":"indijansko rdeča","papayawhip":"papaja","lightslategray":"svetlo skrilasto siva","gray":"siva","mediumorchid":"srednje orhidejna","cornsilk":"koruzni laski","black":"črna","seagreen":"morsko zelena","darkslateblue":"temno skrilasto modra","khaki":"rumenkasto rjava","lightblue":"svetlo modra","palegreen":"bledo zelena","azure":"azurna","peachpuff":"breskova","darkolivegreen":"temno olivno zelena","yellowgreen":"rumeno zelena"})
\ No newline at end of file
diff --git a/lib/dojo/nls/sv/colors.js b/lib/dojo/nls/sv/colors.js
new file mode 100644 (file)
index 0000000..269e85c
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"ljust stålblått","orangered":"orangerött","midnightblue":"midnattsblått","cadetblue":"kadettblått","seashell":"snäckskal","slategrey":"skiffergrått","coral":"korall","darkturquoise":"mörkturkost","antiquewhite":"antikvitt","mediumspringgreen":"mellanvårgrönt","salmon":"laxfärgat","darkgrey":"mörkgrått","ivory":"elfenbensvitt","greenyellow":"gröngult","mistyrose":"dunkelrosa","lightsalmon":"ljust laxfärgat","silver":"silver","dimgrey":"smutsgrått","orange":"orange","white":"vitt","navajowhite":"navajovitt","royalblue":"kungligt blått","deeppink":"djuprosa","lime":"lime","oldlace":"spetsvitt","chartreuse":"chartreuse","darkcyan":"mörkt cyan","yellow":"gult","linen":"linne","olive":"olivfärgat","gold":"guld","lawngreen":"gräsmattegrönt","lightyellow":"ljusgult","tan":"mellanbrunt","darkviolet":"mörkviolett","lightslategrey":"ljust skiffergrått","grey":"grått","darkkhaki":"mörkt kaki","green":"grönt","deepskyblue":"mörkt himmelsblått","aqua":"akvamarin","sienna":"sienna","mintcream":"mintgrädde","rosybrown":"rosenbrunt","mediumslateblue":"mellanskifferblått","magenta":"magenta","lightseagreen":"ljust havsgrönt","cyan":"cyan","olivedrab":"olivsmutsgult","darkgoldenrod":"mörkt gullris","slateblue":"skifferblått","mediumaquamarine":"mellanakvamarin","lavender":"lavendel","mediumseagreen":"mellanhavsgrönt","maroon":"rödbrunt","darkslategray":"mörkt skiffergrått","mediumturquoise":"mellanturkost","ghostwhite":"spökvitt","darkblue":"mörkblått","mediumvioletred":"mellanviolettrött","brown":"brunt","lightgray":"ljusgrått","sandybrown":"sandbrunt","pink":"rosa","firebrick":"tegelstensrött","indigo":"indigo","snow":"snö","darkorchid":"mörkt orkidé","turquoise":"turkost","chocolate":"choklad","springgreen":"vårgrönt","moccasin":"mockasin","navy":"marinblått","lemonchiffon":"citronchiffong","teal":"blågrönt","floralwhite":"blomvitt","cornflowerblue":"kornblått","paleturquoise":"blekturkost","purple":"lila","gainsboro":"gainsboro","plum":"plommon","red":"rött","blue":"blått","forestgreen":"skogsgrönt","darkgreen":"mörkgrönt","honeydew":"honungsdagg","darkseagreen":"mörkt havsgrönt","lightcoral":"ljuskorall","palevioletred":"blekviolettrött","mediumpurple":"mellanlila","saddlebrown":"sadelbrunt","darkmagenta":"mörk magenta","thistle":"tistel","whitesmoke":"vit rök","wheat":"vete","violet":"violett","lightskyblue":"ljust himmelsblått","goldenrod":"gullris","mediumblue":"mellanblått","skyblue":"himmelsblått","crimson":"karmosinrött","darksalmon":"mörkt laxfärgat","darkred":"mörkrött","darkslategrey":"mörkt skiffergrått","peru":"peru","lightgrey":"ljusgrått","lightgoldenrodyellow":"ljust gullrisgult","blanchedalmond":"skållad mandel","aliceblue":"aliceblå","bisque":"biskvi","slategray":"skiffergrått","palegoldenrod":"blekt gullris","darkorange":"mörkorange","aquamarine":"akvamarin","lightgreen":"ljusgrönt","burlywood":"träfärgat","dodgerblue":"dodgerblått","darkgray":"mörkgrått","lightcyan":"ljust cyan","powderblue":"pulverblått","blueviolet":"blåviolett","orchid":"orkidé","dimgray":"smutsgrått","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavendelskimrande","hotpink":"varmrosa","steelblue":"stålblått","tomato":"tomatrött","lightpink":"ljusrosa","limegreen":"limegrönt","indianred":"indianrött","papayawhip":"papayaröra","lightslategray":"ljust skiffergrått","gray":"grått","mediumorchid":"mellanorkidé","cornsilk":"gulvitt","black":"svart","seagreen":"havsgrönt","darkslateblue":"mörkt skifferblått","khaki":"kaki","lightblue":"ljusblått","palegreen":"blekgrönt","azure":"azurblått","peachpuff":"persika","darkolivegreen":"mörkt olivgrönt","yellowgreen":"gulgrönt"})
\ No newline at end of file
diff --git a/lib/dojo/nls/th/colors.js b/lib/dojo/nls/th/colors.js
new file mode 100644 (file)
index 0000000..706ed8a
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"light steel blue","orangered":"ส้มแกมแดง","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","salmon":"salmon","darkgrey":"เทาเข้ม","ivory":"งาช้าง","greenyellow":"เขียวแกมเหลือง","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"เงิน","dimgrey":"dim gray","orange":"ส้ม","white":"ขาว","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"ชมพูเข้ม","lime":"เหลืองมะนาว","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"เขียวแกมน้ำเงินเข้ม","yellow":"เหลือง","linen":"linen","olive":"โอลีฟ","gold":"ทอง","lawngreen":"lawn green","lightyellow":"เหลืองอ่อน","tan":"tan","darkviolet":"ม่วงเข้ม","lightslategrey":"light slate gray","grey":"เทา","darkkhaki":"dark khaki","green":"เขียว","deepskyblue":"deep sky blue","aqua":"ฟ้าน้ำทะเล","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"แดงแกมม่วง","lightseagreen":"light sea green","cyan":"เขียวแกมน้ำเงิน","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"ม่วงลาเวนเดอร์","mediumseagreen":"medium sea green","maroon":"น้ำตาลแดง","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"น้ำเงินเข้ม","mediumvioletred":"medium violet-red","brown":"น้ำตาล","lightgray":"เทาอ่อน","sandybrown":"sandy brown","pink":"ชมพู","firebrick":"สีอิฐ","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"ช็อกโกแลต","springgreen":"spring green","moccasin":"ม็อคค่า","navy":"น้ำเงินเข้ม","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"ม่วง","gainsboro":"gainsboro","plum":"plum","red":"แดง","blue":"น้ำเงิน","forestgreen":"forest green","darkgreen":"เขียวเข้ม","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"แดงแกมม่วงเข้ม","thistle":"thistle","whitesmoke":"ขาวควัน","wheat":"wheat","violet":"ม่วง","lightskyblue":"ฟ้าอ่อน","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"แดงเลือดหมู","darksalmon":"dark salmon","darkred":"แดงเข้ม","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"เทาอ่อน","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"ส้มเข้ม","aquamarine":"aquamarine","lightgreen":"เขียวอ่อน","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"เทาเข้ม","lightcyan":"เขียวแกมน้ำเงินอ่อน","powderblue":"powder blue","blueviolet":"น้ำเงินม่วง","orchid":"orchid","dimgray":"dim gray","beige":"น้ำตาลเบจ","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"ชมพูอ่อน","limegreen":"เขียวมะนาว","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"เทา","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"ดำ","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"น้ำเงินอ่อน","palegreen":"pale green","azure":"น้ำเงินฟ้า","peachpuff":"peach puff","darkolivegreen":"เขียวโอลีฟเข้ม","yellowgreen":"เหลืองแกมเขียว"})
\ No newline at end of file
diff --git a/lib/dojo/nls/tr/colors.js b/lib/dojo/nls/tr/colors.js
new file mode 100644 (file)
index 0000000..a75f12f
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"açık metalik mavi","orangered":"turuncu kırmızı","midnightblue":"gece mavisi","cadetblue":"denizci mavisi","seashell":"deniz kabuğu","slategrey":"arduvaz grisi","coral":"mercan","darkturquoise":"koyu turkuaz","antiquewhite":"antik beyaz","mediumspringgreen":"orta bahar yeşili","salmon":"somon","darkgrey":"koyu gri","ivory":"fildişi","greenyellow":"yeşil-sarı","mistyrose":"gülkurusu","lightsalmon":"açık somon","silver":"gümüş","dimgrey":"soluk gri","orange":"turuncu","white":"beyaz","navajowhite":"navajo beyazı","royalblue":"parlak koyu mavi","deeppink":"koyu pembe","lime":"limon yeşili","oldlace":"eski dantel","chartreuse":"chartreuse","darkcyan":"koyu camgöbeği","yellow":"sarı","linen":"keten","olive":"zeytin","gold":"altın","lawngreen":"çimen yeşili","lightyellow":"açık sarı","tan":"güneş yanığı","darkviolet":"koyu eflatun","lightslategrey":"açık arduvaz grisi","grey":"gri","darkkhaki":"koyu haki","green":"yeşil","deepskyblue":"koyu gök mavisi","aqua":"deniz mavisi","sienna":"koyu kahve","mintcream":"naneli krem","rosybrown":"pembemsi kahverengi","mediumslateblue":"orta arduvaz mavisi","magenta":"macenta","lightseagreen":"açık deniz yeşili","cyan":"camgöbeği","olivedrab":"asker yeşili","darkgoldenrod":"koyu sarı","slateblue":"arduvaz mavisi","mediumaquamarine":"orta akuamarin","lavender":"lavanta","mediumseagreen":"orta deniz yeşili","maroon":"kestane","darkslategray":"koyu arduvaz grisi","mediumturquoise":"orta turkuaz","ghostwhite":"silik beyaz","darkblue":"koyu mavi","mediumvioletred":"orta menekşe kırmızısı","brown":"kahverengi","lightgray":"açık gri","sandybrown":"kum rengi","pink":"pembe","firebrick":"canlı kiremit","indigo":"çivit mavisi","snow":"kar","darkorchid":"koyu orkide","turquoise":"turkuaz","chocolate":"çikolata","springgreen":"bahar yeşili","moccasin":"mokosen","navy":"lacivert","lemonchiffon":"limoni","teal":"Teal mavi","floralwhite":"çiçek beyazı","cornflowerblue":"peygamber çiçeği mavisi","paleturquoise":"soluk turkuaz","purple":"mor","gainsboro":"gainsboro","plum":"erik","red":"kırmızı","blue":"mavi","forestgreen":"koyu deniz yeşili","darkgreen":"koyu yeşil","honeydew":"çam sakızı","darkseagreen":"koyu deniz yeşili","lightcoral":"açık mercan","palevioletred":"soluk menekşe kırmızısı","mediumpurple":"orta mor","saddlebrown":"açık kahve","darkmagenta":"koyu mor","thistle":"devedikeni","whitesmoke":"beyaz duman","wheat":"buğday","violet":"eflatun","lightskyblue":"açık gök mavisi","goldenrod":"sarısabır","mediumblue":"orta mavi","skyblue":"gök mavisi","crimson":"crimson","darksalmon":"koyu somon","darkred":"koyu kırmızı","darkslategrey":"koyu arduvaz grisi","peru":"peru","lightgrey":"açık gri","lightgoldenrodyellow":"açık sarısabır","blanchedalmond":"soluk badem","aliceblue":"alice mavisi","bisque":"bisküvi","slategray":"arduvaz grisi","palegoldenrod":"soluk sarısabır","darkorange":"koyu turuncu","aquamarine":"akuamarin","lightgreen":"açık yeşil","burlywood":"sarımsı kahverengi","dodgerblue":"toz mavisi","darkgray":"koyu gri","lightcyan":"açık camgöbeği","powderblue":"pudra mavisi","blueviolet":"mavi-mor","orchid":"orkide","dimgray":"soluk gri","beige":"bej","fuchsia":"fuşya","lavenderblush":"lavanta pembesi","hotpink":"sıcak pembe","steelblue":"metalik mavi","tomato":"domates","lightpink":"açık pembe","limegreen":"küf yeşili","indianred":"kızılderili kırmızısı","papayawhip":"papaya sapı","lightslategray":"açık arduvaz grisi","gray":"gri","mediumorchid":"orta orkide","cornsilk":"mısır rengi","black":"siyah","seagreen":"deniz yeşili","darkslateblue":"koyu arduvaz mavisi","khaki":"haki","lightblue":"açık mavi","palegreen":"soluk yeşil","azure":"azur mavisi","peachpuff":"açık şeftali","darkolivegreen":"koyu zeytin yeşili","yellowgreen":"sarı yeşil"})
\ No newline at end of file
diff --git a/lib/dojo/nls/zh-tw/colors.js b/lib/dojo/nls/zh-tw/colors.js
new file mode 100644 (file)
index 0000000..6ee6c5e
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"淡鐵藍色","orangered":"橙紅色","midnightblue":"午夜藍","cadetblue":"軍服藍","seashell":"海貝色","slategrey":"岩灰色","coral":"珊瑚紅","darkturquoise":"暗松石綠","antiquewhite":"米白色","mediumspringgreen":"中春綠色","salmon":"鮭紅色","darkgrey":"暗灰色","ivory":"象牙色","greenyellow":"綠黃色","mistyrose":"霧玫瑰色","lightsalmon":"淡鮭紅","silver":"銀色","dimgrey":"昏灰色","orange":"橙色","white":"白色","navajowhite":"印地安黃色","royalblue":"品藍色","deeppink":"深粉紅色","lime":"檸檬色","oldlace":"舊蕾絲色","chartreuse":"淡黃綠色","darkcyan":"暗青色","yellow":"黃色","linen":"亞麻色","olive":"橄欖色","gold":"金色","lawngreen":"草綠色","lightyellow":"淡黃色","tan":"皮革色","darkviolet":"暗紫羅蘭色","lightslategrey":"淡岩灰色","grey":"灰色","darkkhaki":"暗卡其色","green":"綠色","deepskyblue":"深天藍色","aqua":"水色","sienna":"黃土赭色","mintcream":"薄荷乳白色","rosybrown":"玫瑰褐","mediumslateblue":"中岩藍色","magenta":"紫紅色","lightseagreen":"淡海綠色","cyan":"青色","olivedrab":"橄欖綠","darkgoldenrod":"暗金菊色","slateblue":"岩藍色","mediumaquamarine":"中碧綠色","lavender":"薰衣草紫","mediumseagreen":"中海綠色","maroon":"栗色","darkslategray":"暗岩灰色","mediumturquoise":"中松石綠","ghostwhite":"幽靈色","darkblue":"暗藍色","mediumvioletred":"中紫羅蘭紅","brown":"褐色","lightgray":"淡灰色","sandybrown":"沙褐色","pink":"粉紅色","firebrick":"紅磚色","indigo":"靛藍色","snow":"雪白色","darkorchid":"暗蘭花色","turquoise":"松石綠","chocolate":"巧克力色","springgreen":"春綠色","moccasin":"鹿皮黃色","navy":"海軍藍","lemonchiffon":"奶油黃","teal":"深藍綠色","floralwhite":"花卉白","cornflowerblue":"矢車菊藍","paleturquoise":"灰松石綠","purple":"紫色","gainsboro":"石板灰","plum":"李紫色","red":"紅色","blue":"藍色","forestgreen":"森綠色","darkgreen":"暗綠色","honeydew":"密瓜色","darkseagreen":"暗海綠色","lightcoral":"淡珊瑚紅","palevioletred":"灰紫羅蘭紅","mediumpurple":"中紫色","saddlebrown":"鞍褐色","darkmagenta":"暗紫紅色","thistle":"薊色","whitesmoke":"白煙色","wheat":"小麥色","violet":"紫羅蘭色","lightskyblue":"淡天藍色","goldenrod":"金菊色","mediumblue":"中藍色","skyblue":"天藍色","crimson":"暗深紅色","darksalmon":"暗鮭紅","darkred":"暗紅色","darkslategrey":"暗岩灰色","peru":"祕魯色","lightgrey":"淡灰色","lightgoldenrodyellow":"淡金菊黃","blanchedalmond":"杏仁白","aliceblue":"愛麗絲藍","bisque":"橘黃色","slategray":"岩灰色","palegoldenrod":"灰金菊色","darkorange":"暗橙色","aquamarine":"碧綠色","lightgreen":"淡綠色","burlywood":"實木色","dodgerblue":"道奇藍","darkgray":"暗灰色","lightcyan":"淡青色","powderblue":"粉藍色","blueviolet":"藍紫色","orchid":"蘭花色","dimgray":"昏灰色","beige":"灰棕色","fuchsia":"海棠紅","lavenderblush":"薰衣草紫紅","hotpink":"暖粉紅色","steelblue":"鐵藍色","tomato":"蕃茄紅","lightpink":"淡粉紅色","limegreen":"檸檬綠","indianred":"印度紅","papayawhip":"番木瓜色","lightslategray":"淡岩灰色","gray":"灰色","mediumorchid":"中蘭紫色","cornsilk":"玉米黃","black":"黑色","seagreen":"海綠色","darkslateblue":"暗岩藍色","khaki":"卡其色","lightblue":"淡藍色","palegreen":"灰綠色","azure":"天藍色","peachpuff":"粉撲桃色","darkolivegreen":"暗橄欖綠","yellowgreen":"黃綠色"})
\ No newline at end of file
diff --git a/lib/dojo/nls/zh/colors.js b/lib/dojo/nls/zh/colors.js
new file mode 100644 (file)
index 0000000..35368f3
--- /dev/null
@@ -0,0 +1 @@
+({"lightsteelblue":"浅钢蓝色","orangered":"橙红色","midnightblue":"深蓝色","cadetblue":"灰蓝色","seashell":"海贝色","slategrey":"灰石色","coral":"珊瑚色","darkturquoise":"深粉蓝","antiquewhite":"古董白","mediumspringgreen":"间春绿色","salmon":"橙红","darkgrey":"深灰色","ivory":"象牙色","greenyellow":"绿黄色","mistyrose":"浅玫瑰色","lightsalmon":"淡橙色","silver":"银白色","dimgrey":"暗灰色","orange":"橙色","white":"白色","navajowhite":"纳瓦白","royalblue":"品蓝","deeppink":"深粉红色","lime":"淡黄绿色","oldlace":"老白色","chartreuse":"黄绿色","darkcyan":"深青绿","yellow":"黄色","linen":"亚麻色","olive":"橄榄绿","gold":"金黄色","lawngreen":"草绿色","lightyellow":"浅黄色","tan":"棕褐色","darkviolet":"深紫色","lightslategrey":"浅青灰","grey":"灰色","darkkhaki":"深卡其色","green":"绿色","deepskyblue":"深天蓝色","aqua":"浅绿色","sienna":"赭色","mintcream":"薄荷色","rosybrown":"褐玫瑰红","mediumslateblue":"间暗蓝色","magenta":"洋红色","lightseagreen":"浅海藻绿","cyan":"青蓝色","olivedrab":"草绿色","darkgoldenrod":"深金黄","slateblue":"石蓝色","mediumaquamarine":"间绿色","lavender":"淡紫色","mediumseagreen":"间海蓝色","maroon":"栗色","darkslategray":"深青灰","mediumturquoise":"间绿宝石色","ghostwhite":"苍白","darkblue":"深蓝","mediumvioletred":"间紫罗兰色","brown":"棕色","lightgray":"浅灰色","sandybrown":"沙褐色","pink":"粉红色","firebrick":"砖红","indigo":"靛青","snow":"雪白色","darkorchid":"深紫色","turquoise":"绿宝石色","chocolate":"巧克力色","springgreen":"春绿色","moccasin":"鹿皮色","navy":"藏青色","lemonchiffon":"柠檬绸色","teal":"水鸭色","floralwhite":"花白色","cornflowerblue":"浅蓝色","paleturquoise":"苍绿色","purple":"紫色","gainsboro":"淡灰色","plum":"杨李色","red":"红色","blue":"蓝色","forestgreen":"森林绿","darkgreen":"深绿色","honeydew":"蜜汁色","darkseagreen":"深海藻绿","lightcoral":"浅珊瑚色","palevioletred":"苍紫罗兰色","mediumpurple":"间紫色","saddlebrown":"重褐色","darkmagenta":"深洋红色","thistle":"蓟色","whitesmoke":"烟白色","wheat":"浅黄色","violet":"紫色","lightskyblue":"浅天蓝色","goldenrod":"金麒麟色","mediumblue":"间蓝色","skyblue":"天蓝色","crimson":"绯红色","darksalmon":"深橙红","darkred":"深红色","darkslategrey":"深青灰","peru":"秘鲁色","lightgrey":"浅灰色","lightgoldenrodyellow":"浅金黄色","blanchedalmond":"白杏色","aliceblue":"爱丽丝蓝","bisque":"桔黄色","slategray":"灰石色","palegoldenrod":"淡金黄色","darkorange":"深橙色","aquamarine":"碧绿色","lightgreen":"浅绿色","burlywood":"实木色","dodgerblue":"闪蓝色","darkgray":"深灰色","lightcyan":"浅青色","powderblue":"铁蓝","blueviolet":"蓝紫色","orchid":"紫色","dimgray":"暗灰色","beige":"米色","fuchsia":"紫红色","lavenderblush":"淡紫红","hotpink":"深粉红","steelblue":"钢蓝色","tomato":"西红柿色","lightpink":"浅粉红色","limegreen":"橙绿色","indianred":"印度红","papayawhip":"木瓜色","lightslategray":"浅青灰","gray":"灰色","mediumorchid":"间紫色","cornsilk":"米绸色","black":"黑色","seagreen":"海绿色","darkslateblue":"深青蓝","khaki":"卡其色","lightblue":"淡蓝色","palegreen":"淡绿色","azure":"天蓝色","peachpuff":"桃色","darkolivegreen":"深橄榄绿","yellowgreen":"黄绿色"})
\ No newline at end of file
diff --git a/lib/dojo/number.js b/lib/dojo/number.js
new file mode 100644 (file)
index 0000000..95a2c50
--- /dev/null
@@ -0,0 +1,311 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.number"]){
+dojo._hasResource["dojo.number"]=true;
+dojo.provide("dojo.number");
+dojo.require("dojo.i18n");
+dojo.requireLocalization("dojo.cldr","number",null,"ROOT,ar,ca,cs,da,de,el,en,en-au,en-gb,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh");
+dojo.require("dojo.string");
+dojo.require("dojo.regexp");
+dojo.number.format=function(_1,_2){
+_2=dojo.mixin({},_2||{});
+var _3=dojo.i18n.normalizeLocale(_2.locale),_4=dojo.i18n.getLocalization("dojo.cldr","number",_3);
+_2.customs=_4;
+var _5=_2.pattern||_4[(_2.type||"decimal")+"Format"];
+if(isNaN(_1)||Math.abs(_1)==Infinity){
+return null;
+}
+return dojo.number._applyPattern(_1,_5,_2);
+};
+dojo.number._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;
+dojo.number._applyPattern=function(_6,_7,_8){
+_8=_8||{};
+var _9=_8.customs.group,_a=_8.customs.decimal,_b=_7.split(";"),_c=_b[0];
+_7=_b[(_6<0)?1:0]||("-"+_c);
+if(_7.indexOf("%")!=-1){
+_6*=100;
+}else{
+if(_7.indexOf("‰")!=-1){
+_6*=1000;
+}else{
+if(_7.indexOf("¤")!=-1){
+_9=_8.customs.currencyGroup||_9;
+_a=_8.customs.currencyDecimal||_a;
+_7=_7.replace(/\u00a4{1,3}/,function(_d){
+var _e=["symbol","currency","displayName"][_d.length-1];
+return _8[_e]||_8.currency||"";
+});
+}else{
+if(_7.indexOf("E")!=-1){
+throw new Error("exponential notation not supported");
+}
+}
+}
+}
+var _f=dojo.number._numberPatternRE;
+var _10=_c.match(_f);
+if(!_10){
+throw new Error("unable to find a number expression in pattern: "+_7);
+}
+if(_8.fractional===false){
+_8.places=0;
+}
+return _7.replace(_f,dojo.number._formatAbsolute(_6,_10[0],{decimal:_a,group:_9,places:_8.places,round:_8.round}));
+};
+dojo.number.round=function(_11,_12,_13){
+var _14=10/(_13||10);
+return (_14*+_11).toFixed(_12)/_14;
+};
+if((0.9).toFixed()==0){
+(function(){
+var _15=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 _15(v,p,m)+(v>0?d:-d);
+};
+})();
+}
+dojo.number._formatAbsolute=function(_16,_17,_18){
+_18=_18||{};
+if(_18.places===true){
+_18.places=0;
+}
+if(_18.places===Infinity){
+_18.places=6;
+}
+var _19=_17.split("."),_1a=typeof _18.places=="string"&&_18.places.indexOf(","),_1b=_18.places;
+if(_1a){
+_1b=_18.places.substring(_1a+1);
+}else{
+if(!(_1b>=0)){
+_1b=(_19[1]||[]).length;
+}
+}
+if(!(_18.round<0)){
+_16=dojo.number.round(_16,_1b,_18.round);
+}
+var _1c=String(Math.abs(_16)).split("."),_1d=_1c[1]||"";
+if(_19[1]||_18.places){
+if(_1a){
+_18.places=_18.places.substring(0,_1a);
+}
+var pad=_18.places!==undefined?_18.places:(_19[1]&&_19[1].lastIndexOf("0")+1);
+if(pad>_1d.length){
+_1c[1]=dojo.string.pad(_1d,pad,"0",true);
+}
+if(_1b<_1d.length){
+_1c[1]=_1d.substr(0,_1b);
+}
+}else{
+if(_1c[1]){
+_1c.pop();
+}
+}
+var _1e=_19[0].replace(",","");
+pad=_1e.indexOf("0");
+if(pad!=-1){
+pad=_1e.length-pad;
+if(pad>_1c[0].length){
+_1c[0]=dojo.string.pad(_1c[0],pad);
+}
+if(_1e.indexOf("#")==-1){
+_1c[0]=_1c[0].substr(_1c[0].length-pad);
+}
+}
+var _1f=_19[0].lastIndexOf(","),_20,_21;
+if(_1f!=-1){
+_20=_19[0].length-_1f-1;
+var _22=_19[0].substr(0,_1f);
+_1f=_22.lastIndexOf(",");
+if(_1f!=-1){
+_21=_22.length-_1f-1;
+}
+}
+var _23=[];
+for(var _24=_1c[0];_24;){
+var off=_24.length-_20;
+_23.push((off>0)?_24.substr(off):_24);
+_24=(off>0)?_24.slice(0,off):"";
+if(_21){
+_20=_21;
+delete _21;
+}
+}
+_1c[0]=_23.reverse().join(_18.group||",");
+return _1c.join(_18.decimal||".");
+};
+dojo.number.regexp=function(_25){
+return dojo.number._parseInfo(_25).regexp;
+};
+dojo.number._parseInfo=function(_26){
+_26=_26||{};
+var _27=dojo.i18n.normalizeLocale(_26.locale),_28=dojo.i18n.getLocalization("dojo.cldr","number",_27),_29=_26.pattern||_28[(_26.type||"decimal")+"Format"],_2a=_28.group,_2b=_28.decimal,_2c=1;
+if(_29.indexOf("%")!=-1){
+_2c/=100;
+}else{
+if(_29.indexOf("‰")!=-1){
+_2c/=1000;
+}else{
+var _2d=_29.indexOf("¤")!=-1;
+if(_2d){
+_2a=_28.currencyGroup||_2a;
+_2b=_28.currencyDecimal||_2b;
+}
+}
+}
+var _2e=_29.split(";");
+if(_2e.length==1){
+_2e.push("-"+_2e[0]);
+}
+var re=dojo.regexp.buildGroupRE(_2e,function(_2f){
+_2f="(?:"+dojo.regexp.escapeString(_2f,".")+")";
+return _2f.replace(dojo.number._numberPatternRE,function(_30){
+var _31={signed:false,separator:_26.strict?_2a:[_2a,""],fractional:_26.fractional,decimal:_2b,exponent:false},_32=_30.split("."),_33=_26.places;
+if(_32.length==1&&_2c!=1){
+_32[1]="###";
+}
+if(_32.length==1||_33===0){
+_31.fractional=false;
+}else{
+if(_33===undefined){
+_33=_26.pattern?_32[1].lastIndexOf("0")+1:Infinity;
+}
+if(_33&&_26.fractional==undefined){
+_31.fractional=true;
+}
+if(!_26.places&&(_33<_32[1].length)){
+_33+=","+_32[1].length;
+}
+_31.places=_33;
+}
+var _34=_32[0].split(",");
+if(_34.length>1){
+_31.groupSize=_34.pop().length;
+if(_34.length>1){
+_31.groupSize2=_34.pop().length;
+}
+}
+return "("+dojo.number._realNumberRegexp(_31)+")";
+});
+},true);
+if(_2d){
+re=re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(_35,_36,_37,_38){
+var _39=["symbol","currency","displayName"][_37.length-1],_3a=dojo.regexp.escapeString(_26[_39]||_26.currency||"");
+_36=_36?"[\\s\\xa0]":"";
+_38=_38?"[\\s\\xa0]":"";
+if(!_26.strict){
+if(_36){
+_36+="*";
+}
+if(_38){
+_38+="*";
+}
+return "(?:"+_36+_3a+_38+")?";
+}
+return _36+_3a+_38;
+});
+}
+return {regexp:re.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:_2a,decimal:_2b,factor:_2c};
+};
+dojo.number.parse=function(_3b,_3c){
+var _3d=dojo.number._parseInfo(_3c),_3e=(new RegExp("^"+_3d.regexp+"$")).exec(_3b);
+if(!_3e){
+return NaN;
+}
+var _3f=_3e[1];
+if(!_3e[1]){
+if(!_3e[2]){
+return NaN;
+}
+_3f=_3e[2];
+_3d.factor*=-1;
+}
+_3f=_3f.replace(new RegExp("["+_3d.group+"\\s\\xa0"+"]","g"),"").replace(_3d.decimal,".");
+return _3f*_3d.factor;
+};
+dojo.number._realNumberRegexp=function(_40){
+_40=_40||{};
+if(!("places" in _40)){
+_40.places=Infinity;
+}
+if(typeof _40.decimal!="string"){
+_40.decimal=".";
+}
+if(!("fractional" in _40)||/^0/.test(_40.places)){
+_40.fractional=[true,false];
+}
+if(!("exponent" in _40)){
+_40.exponent=[true,false];
+}
+if(!("eSigned" in _40)){
+_40.eSigned=[true,false];
+}
+var _41=dojo.number._integerRegexp(_40),_42=dojo.regexp.buildGroupRE(_40.fractional,function(q){
+var re="";
+if(q&&(_40.places!==0)){
+re="\\"+_40.decimal;
+if(_40.places==Infinity){
+re="(?:"+re+"\\d+)?";
+}else{
+re+="\\d{"+_40.places+"}";
+}
+}
+return re;
+},true);
+var _43=dojo.regexp.buildGroupRE(_40.exponent,function(q){
+if(q){
+return "([eE]"+dojo.number._integerRegexp({signed:_40.eSigned})+")";
+}
+return "";
+});
+var _44=_41+_42;
+if(_42){
+_44="(?:(?:"+_44+")|(?:"+_42+"))";
+}
+return _44+_43;
+};
+dojo.number._integerRegexp=function(_45){
+_45=_45||{};
+if(!("signed" in _45)){
+_45.signed=[true,false];
+}
+if(!("separator" in _45)){
+_45.separator="";
+}else{
+if(!("groupSize" in _45)){
+_45.groupSize=3;
+}
+}
+var _46=dojo.regexp.buildGroupRE(_45.signed,function(q){
+return q?"[-+]":"";
+},true);
+var _47=dojo.regexp.buildGroupRE(_45.separator,function(sep){
+if(!sep){
+return "(?:\\d+)";
+}
+sep=dojo.regexp.escapeString(sep);
+if(sep==" "){
+sep="\\s";
+}else{
+if(sep==" "){
+sep="\\s\\xa0";
+}
+}
+var grp=_45.groupSize,_48=_45.groupSize2;
+if(_48){
+var _49="(?:0|[1-9]\\d{0,"+(_48-1)+"}(?:["+sep+"]\\d{"+_48+"})*["+sep+"]\\d{"+grp+"})";
+return ((grp-_48)>0)?"(?:"+_49+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_49;
+}
+return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";
+},true);
+return _46+_47;
+};
+}
diff --git a/lib/dojo/parser.js b/lib/dojo/parser.js
new file mode 100644 (file)
index 0000000..2455283
--- /dev/null
@@ -0,0 +1,272 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.parser"]){
+dojo._hasResource["dojo.parser"]=true;
+dojo.provide("dojo.parser");
+dojo.require("dojo.date.stamp");
+new Date("X");
+dojo.parser=new function(){
+var d=dojo;
+this._attrName=d._scopeName+"Type";
+this._query="["+this._attrName+"]";
+function _1(_2){
+if(d.isString(_2)){
+return "string";
+}
+if(typeof _2=="number"){
+return "number";
+}
+if(typeof _2=="boolean"){
+return "boolean";
+}
+if(d.isFunction(_2)){
+return "function";
+}
+if(d.isArray(_2)){
+return "array";
+}
+if(_2 instanceof Date){
+return "date";
+}
+if(_2 instanceof d._Url){
+return "url";
+}
+return "object";
+};
+function _3(_4,_5){
+switch(_5){
+case "string":
+return _4;
+case "number":
+return _4.length?Number(_4):NaN;
+case "boolean":
+return typeof _4=="boolean"?_4:!(_4.toLowerCase()=="false");
+case "function":
+if(d.isFunction(_4)){
+_4=_4.toString();
+_4=d.trim(_4.substring(_4.indexOf("{")+1,_4.length-1));
+}
+try{
+if(_4===""||_4.search(/[^\w\.]+/i)!=-1){
+return new Function(_4);
+}else{
+return d.getObject(_4,false)||new Function(_4);
+}
+}
+catch(e){
+return new Function();
+}
+case "array":
+return _4?_4.split(/\s*,\s*/):[];
+case "date":
+switch(_4){
+case "":
+return new Date("");
+case "now":
+return new Date();
+default:
+return d.date.stamp.fromISOString(_4);
+}
+case "url":
+return d.baseUrl+_4;
+default:
+return d.fromJson(_4);
+}
+};
+var _6={};
+dojo.connect(dojo,"extend",function(){
+_6={};
+});
+function _7(_8){
+if(!_6[_8]){
+var _9=d.getObject(_8);
+if(!_9){
+return null;
+}
+var _a=_9.prototype;
+var _b={},_c={};
+for(var _d in _a){
+if(_d.charAt(0)=="_"){
+continue;
+}
+if(_d in _c){
+continue;
+}
+var _e=_a[_d];
+_b[_d]=_1(_e);
+}
+_6[_8]={cls:_9,params:_b};
+}
+return _6[_8];
+};
+this._functionFromScript=function(_f){
+var _10="";
+var _11="";
+var _12=_f.getAttribute("args");
+if(_12){
+d.forEach(_12.split(/\s*,\s*/),function(_13,idx){
+_10+="var "+_13+" = arguments["+idx+"]; ";
+});
+}
+var _14=_f.getAttribute("with");
+if(_14&&_14.length){
+d.forEach(_14.split(/\s*,\s*/),function(_15){
+_10+="with("+_15+"){";
+_11+="}";
+});
+}
+return new Function(_10+_f.innerHTML+_11);
+};
+this.instantiate=function(_16,_17,_18){
+var _19=[],dp=dojo.parser;
+_17=_17||{};
+_18=_18||{};
+d.forEach(_16,function(obj){
+if(!obj){
+return;
+}
+var _1a,_1b,_1c,_1d,_1e;
+if(obj.node){
+_1a=obj.node;
+_1b=obj.type;
+_1c=obj.clsInfo||(_1b&&_7(_1b));
+_1d=_1c&&_1c.cls;
+_1e=obj.scripts;
+}else{
+_1a=obj;
+_1b=dp._attrName in _17?_17[dp._attrName]:_1a.getAttribute(dp._attrName);
+_1c=_1b&&_7(_1b);
+_1d=_1c&&_1c.cls;
+_1e=(_1d&&(_1d._noScript||_1d.prototype._noScript)?[]:d.query("> script[type^='dojo/']",_1a));
+}
+if(!_1c){
+throw new Error("Could not load class '"+_1b);
+}
+var _1f={},_20=_1a.attributes;
+if(_18.defaults){
+dojo.mixin(_1f,_18.defaults);
+}
+if(obj.inherited){
+dojo.mixin(_1f,obj.inherited);
+}
+for(var _21 in _1c.params){
+var _22=_21 in _17?{value:_17[_21],specified:true}:_20.getNamedItem(_21);
+if(!_22||(!_22.specified&&(!dojo.isIE||_21.toLowerCase()!="value"))){
+continue;
+}
+var _23=_22.value;
+switch(_21){
+case "class":
+_23="className" in _17?_17.className:_1a.className;
+break;
+case "style":
+_23="style" in _17?_17.style:(_1a.style&&_1a.style.cssText);
+}
+var _24=_1c.params[_21];
+if(typeof _23=="string"){
+_1f[_21]=_3(_23,_24);
+}else{
+_1f[_21]=_23;
+}
+}
+var _25=[],_26=[];
+d.forEach(_1e,function(_27){
+_1a.removeChild(_27);
+var _28=_27.getAttribute("event"),_1b=_27.getAttribute("type"),nf=d.parser._functionFromScript(_27);
+if(_28){
+if(_1b=="dojo/connect"){
+_25.push({event:_28,func:nf});
+}else{
+_1f[_28]=nf;
+}
+}else{
+_26.push(nf);
+}
+});
+var _29=_1d.markupFactory||_1d.prototype&&_1d.prototype.markupFactory;
+var _2a=_29?_29(_1f,_1a,_1d):new _1d(_1f,_1a);
+_19.push(_2a);
+var _2b=_1a.getAttribute("jsId");
+if(_2b){
+d.setObject(_2b,_2a);
+}
+d.forEach(_25,function(_2c){
+d.connect(_2a,_2c.event,null,_2c.func);
+});
+d.forEach(_26,function(_2d){
+_2d.call(_2a);
+});
+});
+if(!_17._started){
+d.forEach(_19,function(_2e){
+if(!_18.noStart&&_2e&&_2e.startup&&!_2e._started&&(!_2e.getParent||!_2e.getParent())){
+_2e.startup();
+}
+});
+}
+return _19;
+};
+this.parse=function(_2f,_30){
+var _31;
+if(!_30&&_2f&&_2f.rootNode){
+_30=_2f;
+_31=_30.rootNode;
+}else{
+_31=_2f;
+}
+var _32=this._attrName;
+function _33(_34,_35){
+var _36=dojo.clone(_34.inherited);
+dojo.forEach(["dir","lang"],function(_37){
+var val=_34.node.getAttribute(_37);
+if(val){
+_36[_37]=val;
+}
+});
+var _38=_34.scripts;
+var _39=!_34.clsInfo||!_34.clsInfo.cls.prototype.stopParser;
+for(var _3a=_34.node.firstChild;_3a;_3a=_3a.nextSibling){
+if(_3a.nodeType==1){
+var _3b=_39&&_3a.getAttribute(_32);
+if(_3b){
+var _3c={"type":_3b,clsInfo:_7(_3b),node:_3a,scripts:[],inherited:_36};
+_35.push(_3c);
+_33(_3c,_35);
+}else{
+if(_38&&_3a.nodeName.toLowerCase()=="script"){
+_3b=_3a.getAttribute("type");
+if(_3b&&/^dojo\//i.test(_3b)){
+_38.push(_3a);
+}
+}else{
+if(_39){
+_33({node:_3a,inherited:_36},_35);
+}
+}
+}
+}
+}
+};
+var _3d=[];
+_33({node:_31?dojo.byId(_31):dojo.body(),inherited:(_30&&_30.inherited)||{dir:dojo._isBodyLtr()?"ltr":"rtl"}},_3d);
+return this.instantiate(_3d,null,_30);
+};
+}();
+(function(){
+var _3e=function(){
+if(dojo.config.parseOnLoad){
+dojo.parser.parse();
+}
+};
+if(dojo.exists("dijit.wai.onload")&&(dijit.wai.onload===dojo._loaders[0])){
+dojo._loaders.splice(1,0,_3e);
+}else{
+dojo._loaders.unshift(_3e);
+}
+})();
+}
diff --git a/lib/dojo/regexp.js b/lib/dojo/regexp.js
new file mode 100644 (file)
index 0000000..2c63514
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.regexp"]){
+dojo._hasResource["dojo.regexp"]=true;
+dojo.provide("dojo.regexp");
+dojo.regexp.escapeString=function(_1,_2){
+return _1.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(ch){
+if(_2&&_2.indexOf(ch)!=-1){
+return ch;
+}
+return "\\"+ch;
+});
+};
+dojo.regexp.buildGroupRE=function(_3,re,_4){
+if(!(_3 instanceof Array)){
+return re(_3);
+}
+var b=[];
+for(var i=0;i<_3.length;i++){
+b.push(re(_3[i]));
+}
+return dojo.regexp.group(b.join("|"),_4);
+};
+dojo.regexp.group=function(_5,_6){
+return "("+(_6?"?:":"")+_5+")";
+};
+}
diff --git a/lib/dojo/resources/LICENSE b/lib/dojo/resources/LICENSE
new file mode 100644 (file)
index 0000000..eb28b7e
--- /dev/null
@@ -0,0 +1,30 @@
+License Disclaimer:
+
+All contents of this directory are Copyright (c) the Dojo Foundation, with the
+following exceptions:
+-------------------------------------------------------------------------------
+
+dojo.css:
+       * parts Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+         Distributed under the terms of the BSD License
+
+The Program includes all or portions of the following software which was obtained under the terms and conditions of the BSD License.
+
+http://developer.yahoo.com/yui/license.html
+
+Copyright (c) 2007, Yahoo! Inc.
+ All rights reserved.
+ Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the 
+documentation and/or other materials provided with the distribution.
+ * Neither the name of Yahoo! Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without 
+specific prior written permission of Yahoo! Inc. 
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
diff --git a/lib/dojo/resources/_modules.js b/lib/dojo/resources/_modules.js
new file mode 100644 (file)
index 0000000..8d3fc5d
--- /dev/null
@@ -0,0 +1,7 @@
+/*
+       Copyright (c) 2004-2010, 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
+*/
+
+
diff --git a/lib/dojo/resources/blank.gif b/lib/dojo/resources/blank.gif
new file mode 100644 (file)
index 0000000..e565824
Binary files /dev/null and b/lib/dojo/resources/blank.gif differ
diff --git a/lib/dojo/resources/blank.html b/lib/dojo/resources/blank.html
new file mode 100644 (file)
index 0000000..40fe770
--- /dev/null
@@ -0,0 +1 @@
+<html><head><script>isLoaded = true;</script></head><body></body></html>
diff --git a/lib/dojo/resources/dnd.css b/lib/dojo/resources/dnd.css
new file mode 100644 (file)
index 0000000..def28fc
--- /dev/null
@@ -0,0 +1,14 @@
+
+.dojoDndAvatar                 {font-size: 75%; color: black;}
+.dojoDndAvatarHeader td        {padding-left: 20px; padding-right: 4px;}
+.dojoDndAvatarHeader   {background: #ccc;}
+.dojoDndAvatarItem             {background: #eee;}
+.dojoDndMove .dojoDndAvatarHeader      {background-image: url(images/dndNoMove.png); background-repeat: no-repeat;}
+.dojoDndCopy .dojoDndAvatarHeader      {background-image: url(images/dndNoCopy.png); background-repeat: no-repeat;}
+.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader        {background-image: url(images/dndMove.png); background-repeat: no-repeat;}
+.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader        {background-image: url(images/dndCopy.png); background-repeat: no-repeat;}
+.dojoDndHandle {cursor: move;}
+.dojoDndIgnore {cursor: default;}
+.dijit_a11y .dojoDndAvatar { font-size: 1em; font-weight:bold;}
+.dijit_a11y .dojoDndAvatarHeader td {padding-left:2px !important;}
+.dijit_a11y .dojoDndAvatarHeader td span {padding-right: 5px;}
diff --git a/lib/dojo/resources/dojo.css b/lib/dojo/resources/dojo.css
new file mode 100644 (file)
index 0000000..baf06cb
--- /dev/null
@@ -0,0 +1,98 @@
+
+body, div, dl, dt, dd, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td {
+       margin: 0;
+       padding: 0;
+}
+fieldset, img {
+       border: 0 none;
+}
+address, caption, cite, code, dfn, th, var {
+       font-style: normal; 
+       font-weight: normal;
+}
+caption, th {
+       text-align: left;
+}
+q:before, q:after {
+       content:"";
+}
+abbr, acronym {
+       border:0;
+}
+body { 
+       font: 12px Myriad,Helvetica,Tahoma,Arial,clean,sans-serif; 
+       *font-size: 75%;
+}
+h1 {
+       font-size: 1.5em; 
+       font-weight: normal;
+       line-height: 1em; 
+       margin-top: 1em;
+       margin-bottom:0;
+}
+h2 { 
+       font-size: 1.1667em; 
+       font-weight: bold; 
+       line-height: 1.286em; 
+       margin-top: 1.929em; 
+       margin-bottom:0.643em;
+}
+h3, h4, h5, h6 {
+       font-size: 1em; 
+       font-weight: bold; 
+       line-height: 1.5em; 
+       margin-top: 1.5em; 
+       margin-bottom: 0;
+}
+p { 
+       font-size: 1em; 
+       margin-top: 1.5em; 
+       margin-bottom: 1.5em; 
+       line-height: 1.5em;
+}
+blockquote { 
+       font-size: 0.916em; 
+       margin-top: 3.272em; 
+       margin-bottom: 3.272em; 
+       line-height: 1.636em; 
+       padding: 1.636em; 
+       border-top: 1px solid #ccc; 
+       border-bottom: 1px solid #ccc;
+}
+ol li, ul li { 
+       font-size: 1em; 
+       line-height: 1.5em; 
+       margin: 0;
+}
+pre, code { 
+       font-size:115%;
+       *font-size:100%;
+       font-family: Courier, "Courier New"; 
+       background-color: #efefef; 
+       border: 1px solid #ccc;
+}
+pre { 
+       border-width: 1px 0; 
+       padding: 1.5em;
+}
+table {  font-size:100%; }
+.dojoTabular { 
+       border-collapse: collapse; 
+       border-spacing: 0; 
+       border: 1px solid #ccc; 
+       margin: 0 1.5em;
+}
+.dojoTabular th { 
+       text-align: center; 
+       font-weight: bold;
+}
+.dojoTabular thead,
+.dojoTabular tfoot { 
+       background-color: #efefef; 
+       border: 1px solid #ccc; 
+       border-width: 1px 0; 
+}
+.dojoTabular th,
+.dojoTabular td { 
+       padding: 0.25em 0.5em;
+}
diff --git a/lib/dojo/resources/iframe_history.html b/lib/dojo/resources/iframe_history.html
new file mode 100644 (file)
index 0000000..2c5acce
--- /dev/null
@@ -0,0 +1,44 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+       <title></title>
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+       <script type="text/javascript">
+       // <!--
+       var noInit = false;
+               
+       function init(){
+               if(noInit){ return; }
+               var hasParentDojo = false;
+               try{
+                       hasParentDojo = window.parent != window && window.parent["dojo"];
+               }catch(e){
+                       alert("Initializing iframe_history.html failed. If you are using a cross-domain Dojo build,"
+                               + " please save iframe_history.html to your domain and set djConfig.dojoIframeHistoryUrl"
+                               + " to the path on your domain to iframe_history.html");
+                       throw e;
+               }
+
+               if(hasParentDojo){
+                       //Set the page title so IE history shows up with a somewhat correct name.
+                       document.title = window.parent.document.title;
+                       
+                       //Notify parent that we are loaded.
+                       var pdj = window.parent.dojo;
+                       if(pdj["back"]){
+                               pdj.back._iframeLoaded(null, window.location);
+                       }
+               }
+
+       }
+       // -->
+       </script>
+</head>
+<body onload="try{ init(); }catch(e){ alert(e); }">
+       <h4>The Dojo Toolkit -- iframe_history.html</h4>
+
+       <p>This file is used in Dojo's back/fwd button management.</p>
+</body>
+</html>
diff --git a/lib/dojo/resources/images/dndCopy.png b/lib/dojo/resources/images/dndCopy.png
new file mode 100644 (file)
index 0000000..660ca4f
Binary files /dev/null and b/lib/dojo/resources/images/dndCopy.png differ
diff --git a/lib/dojo/resources/images/dndMove.png b/lib/dojo/resources/images/dndMove.png
new file mode 100644 (file)
index 0000000..74af29c
Binary files /dev/null and b/lib/dojo/resources/images/dndMove.png differ
diff --git a/lib/dojo/resources/images/dndNoCopy.png b/lib/dojo/resources/images/dndNoCopy.png
new file mode 100644 (file)
index 0000000..998c2f2
Binary files /dev/null and b/lib/dojo/resources/images/dndNoCopy.png differ
diff --git a/lib/dojo/resources/images/dndNoMove.png b/lib/dojo/resources/images/dndNoMove.png
new file mode 100644 (file)
index 0000000..e909173
Binary files /dev/null and b/lib/dojo/resources/images/dndNoMove.png differ
diff --git a/lib/dojo/robot.js b/lib/dojo/robot.js
new file mode 100644 (file)
index 0000000..88af37c
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.robot"]){
+dojo._hasResource["dojo.robot"]=true;
+dojo.provide("dojo.robot");
+dojo.experimental("dojo.robot");
+dojo.require("doh.robot");
+dojo.require("dojo.window");
+(function(){
+dojo.mixin(doh.robot,{_resolveNode:function(n){
+if(typeof n=="function"){
+n=n();
+}
+return n?dojo.byId(n):null;
+},_scrollIntoView:function(n){
+var d=dojo,dr=doh.robot,p=null;
+d.forEach(dr._getWindowChain(n),function(w){
+d.withGlobal(w,function(){
+var p2=d.position(n,false),b=d._getPadBorderExtents(n),_1=null;
+if(!p){
+p=p2;
+}else{
+_1=p;
+p={x:p.x+p2.x+b.l,y:p.y+p2.y+b.t,w:p.w,h:p.h};
+}
+dojo.window.scrollIntoView(n,p);
+p2=d.position(n,false);
+if(!_1){
+p=p2;
+}else{
+p={x:_1.x+p2.x+b.l,y:_1.y+p2.y+b.t,w:p.w,h:p.h};
+}
+n=w.frameElement;
+});
+});
+},_position:function(n){
+var d=dojo,p=null,M=Math.max,m=Math.min;
+d.forEach(doh.robot._getWindowChain(n),function(w){
+d.withGlobal(w,function(){
+var p2=d.position(n,false),b=d._getPadBorderExtents(n);
+if(!p){
+p=p2;
+}else{
+var _2;
+d.withGlobal(n.contentWindow,function(){
+_2=dojo.window.getBox();
+});
+p2.r=p2.x+_2.w;
+p2.b=p2.y+_2.h;
+p={x:M(p.x+p2.x,p2.x)+b.l,y:M(p.y+p2.y,p2.y)+b.t,r:m(p.x+p2.x+p.w,p2.r)+b.l,b:m(p.y+p2.y+p.h,p2.b)+b.t};
+p.w=p.r-p.x;
+p.h=p.b-p.y;
+}
+n=w.frameElement;
+});
+});
+return p;
+},_getWindowChain:function(n){
+var cW=dojo.window.get(n.ownerDocument);
+var _3=[cW];
+var f=cW.frameElement;
+return (cW==dojo.global||f==null)?_3:_3.concat(doh.robot._getWindowChain(f));
+},scrollIntoView:function(_4,_5){
+doh.robot.sequence(function(){
+doh.robot._scrollIntoView(doh.robot._resolveNode(_4));
+},_5);
+},mouseMoveAt:function(_6,_7,_8,_9,_a){
+doh.robot._assertRobot();
+_8=_8||100;
+this.sequence(function(){
+_6=doh.robot._resolveNode(_6);
+doh.robot._scrollIntoView(_6);
+var _b=doh.robot._position(_6);
+if(_a===undefined){
+_9=_b.w/2;
+_a=_b.h/2;
+}
+var x=_b.x+_9;
+var y=_b.y+_a;
+doh.robot._mouseMove(x,y,false,_8);
+},_7,_8);
+}});
+})();
+}
diff --git a/lib/dojo/robotx.js b/lib/dojo/robotx.js
new file mode 100644 (file)
index 0000000..5ed3900
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.robotx"]){
+dojo._hasResource["dojo.robotx"]=true;
+dojo.provide("dojo.robotx");
+dojo.require("dojo.robot");
+dojo.experimental("dojo.robotx");
+(function(){
+doh.robot._runsemaphore.lock.push("dojo.robotx.lock");
+var _1=document.getElementById("robotapplication");
+var _2=dojo.connect(doh,"_groupStarted",function(){
+dojo.disconnect(_2);
+_1.style.visibility="visible";
+});
+var _3=function(){
+doh.robot._updateDocument();
+_3=null;
+var _4=(document.compatMode=="BackCompat")?document.body:document.documentElement;
+var _5=document.getElementById("robotconsole").offsetHeight;
+if(_5){
+_1.style.height=(_4.clientHeight-_5)+"px";
+}
+doh.run();
+};
+var _6=function(){
+if(_3){
+_3();
+}
+var _7=dojo.connect(dojo.body(),"onunload",function(){
+dojo.global=window;
+dojo.doc=document;
+dojo.disconnect(_7);
+});
+};
+dojo.config.debugContainerId="robotconsole";
+dojo.config.debugHeight=dojo.config.debugHeight||200;
+document.write("<div id=\"robotconsole\" style=\"position:absolute;left:0px;bottom:0px;width:100%;\"></div>");
+_1=document.createElement("iframe");
+_1.setAttribute("ALLOWTRANSPARENCY","true");
+_1.scrolling=dojo.isIE?"yes":"auto";
+dojo.style(_1,{visibility:"hidden",border:"0px none",padding:"0px",margin:"0px",position:"absolute",left:"0px",top:"0px",width:"100%",height:"100%"});
+if(_1["attachEvent"]!==undefined){
+_1.attachEvent("onload",_6);
+}else{
+dojo.connect(_1,"onload",_6);
+}
+dojo.mixin(doh.robot,{_updateDocument:function(){
+dojo.setContext(_1.contentWindow,_1.contentWindow.document);
+var _8=dojo.global;
+if(_8["dojo"]){
+dojo._topics=_8.dojo._topics;
+}
+},initRobot:function(_9){
+_1.src=_9;
+dojo.addOnLoad(function(){
+var _a={overflow:dojo.isWebKit?"hidden":"visible",margin:"0px",borderWidth:"0px",height:"100%",width:"100%"};
+dojo.style(document.documentElement,_a);
+dojo.style(document.body,_a);
+document.body.appendChild(_1);
+var _b=document.createElement("base");
+_b.href=_9;
+document.getElementsByTagName("head")[0].appendChild(_b);
+});
+},waitForPageToLoad:function(_c){
+var d=new doh.Deferred();
+_3=function(){
+_3=null;
+doh.robot._updateDocument();
+d.callback(true);
+};
+_c();
+return d;
+}});
+})();
+}
diff --git a/lib/dojo/rpc/JsonService.js b/lib/dojo/rpc/JsonService.js
new file mode 100644 (file)
index 0000000..b88e5f5
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.rpc.JsonService"]){
+dojo._hasResource["dojo.rpc.JsonService"]=true;
+dojo.provide("dojo.rpc.JsonService");
+dojo.require("dojo.rpc.RpcService");
+dojo.declare("dojo.rpc.JsonService",dojo.rpc.RpcService,{bustCache:false,contentType:"application/json-rpc",lastSubmissionId:0,callRemote:function(_1,_2){
+var _3=new dojo.Deferred();
+this.bind(_1,_2,_3);
+return _3;
+},bind:function(_4,_5,_6,_7){
+var _8=dojo.rawXhrPost({url:_7||this.serviceUrl,postData:this.createRequest(_4,_5),contentType:this.contentType,timeout:this.timeout,handleAs:"json-comment-optional"});
+_8.addCallbacks(this.resultCallback(_6),this.errorCallback(_6));
+},createRequest:function(_9,_a){
+var _b={"params":_a,"method":_9,"id":++this.lastSubmissionId};
+var _c=dojo.toJson(_b);
+return _c;
+},parseResults:function(_d){
+if(dojo.isObject(_d)){
+if("result" in _d){
+return _d.result;
+}
+if("Result" in _d){
+return _d.Result;
+}
+if("ResultSet" in _d){
+return _d.ResultSet;
+}
+}
+return _d;
+}});
+}
diff --git a/lib/dojo/rpc/JsonpService.js b/lib/dojo/rpc/JsonpService.js
new file mode 100644 (file)
index 0000000..68c9712
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.rpc.JsonpService"]){
+dojo._hasResource["dojo.rpc.JsonpService"]=true;
+dojo.provide("dojo.rpc.JsonpService");
+dojo.require("dojo.rpc.RpcService");
+dojo.require("dojo.io.script");
+dojo.declare("dojo.rpc.JsonpService",dojo.rpc.RpcService,{constructor:function(_1,_2){
+if(this.required){
+if(_2){
+dojo.mixin(this.required,_2);
+}
+dojo.forEach(this.required,function(_3){
+if(_3==""||_3==undefined){
+throw new Error("Required Service Argument not found: "+_3);
+}
+});
+}
+},strictArgChecks:false,bind:function(_4,_5,_6,_7){
+var _8=dojo.io.script.get({url:_7||this.serviceUrl,callbackParamName:this.callbackParamName||"callback",content:this.createRequest(_5),timeout:this.timeout,handleAs:"json",preventCache:true});
+_8.addCallbacks(this.resultCallback(_6),this.errorCallback(_6));
+},createRequest:function(_9){
+var _a=(dojo.isArrayLike(_9)&&_9.length==1)?_9[0]:{};
+dojo.mixin(_a,this.required);
+return _a;
+}});
+}
diff --git a/lib/dojo/rpc/RpcService.js b/lib/dojo/rpc/RpcService.js
new file mode 100644 (file)
index 0000000..03c6a46
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.rpc.RpcService"]){
+dojo._hasResource["dojo.rpc.RpcService"]=true;
+dojo.provide("dojo.rpc.RpcService");
+dojo.declare("dojo.rpc.RpcService",null,{constructor:function(_1){
+if(_1){
+if((dojo.isString(_1))||(_1 instanceof dojo._Url)){
+if(_1 instanceof dojo._Url){
+var _2=_1+"";
+}else{
+_2=_1;
+}
+var _3=dojo.xhrGet({url:_2,handleAs:"json-comment-optional",sync:true});
+_3.addCallback(this,"processSmd");
+_3.addErrback(function(){
+throw new Error("Unable to load SMD from "+_1);
+});
+}else{
+if(_1.smdStr){
+this.processSmd(dojo.eval("("+_1.smdStr+")"));
+}else{
+if(_1.serviceUrl){
+this.serviceUrl=_1.serviceUrl;
+}
+this.timeout=_1.timeout||3000;
+if("strictArgChecks" in _1){
+this.strictArgChecks=_1.strictArgChecks;
+}
+this.processSmd(_1);
+}
+}
+}
+},strictArgChecks:true,serviceUrl:"",parseResults:function(_4){
+return _4;
+},errorCallback:function(_5){
+return function(_6){
+_5.errback(_6.message);
+};
+},resultCallback:function(_7){
+var tf=dojo.hitch(this,function(_8){
+if(_8.error!=null){
+var _9;
+if(typeof _8.error=="object"){
+_9=new Error(_8.error.message);
+_9.code=_8.error.code;
+_9.error=_8.error.error;
+}else{
+_9=new Error(_8.error);
+}
+_9.id=_8.id;
+_9.errorObject=_8;
+_7.errback(_9);
+}else{
+_7.callback(this.parseResults(_8));
+}
+});
+return tf;
+},generateMethod:function(_a,_b,_c){
+return dojo.hitch(this,function(){
+var _d=new dojo.Deferred();
+if((this.strictArgChecks)&&(_b!=null)&&(arguments.length!=_b.length)){
+throw new Error("Invalid number of parameters for remote method.");
+}else{
+this.bind(_a,dojo._toArray(arguments),_d,_c);
+}
+return _d;
+});
+},processSmd:function(_e){
+if(_e.methods){
+dojo.forEach(_e.methods,function(m){
+if(m&&m.name){
+this[m.name]=this.generateMethod(m.name,m.parameters,m.url||m.serviceUrl||m.serviceURL);
+if(!dojo.isFunction(this[m.name])){
+throw new Error("RpcService: Failed to create"+m.name+"()");
+}
+}
+},this);
+}
+this.serviceUrl=_e.serviceUrl||_e.serviceURL;
+this.required=_e.required;
+this.smd=_e;
+}});
+}
diff --git a/lib/dojo/string.js b/lib/dojo/string.js
new file mode 100644 (file)
index 0000000..076283b
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.string"]){
+dojo._hasResource["dojo.string"]=true;
+dojo.provide("dojo.string");
+dojo.string.rep=function(_1,_2){
+if(_2<=0||!_1){
+return "";
+}
+var _3=[];
+for(;;){
+if(_2&1){
+_3.push(_1);
+}
+if(!(_2>>=1)){
+break;
+}
+_1+=_1;
+}
+return _3.join("");
+};
+dojo.string.pad=function(_4,_5,ch,_6){
+if(!ch){
+ch="0";
+}
+var _7=String(_4),_8=dojo.string.rep(ch,Math.ceil((_5-_7.length)/ch.length));
+return _6?_7+_8:_8+_7;
+};
+dojo.string.substitute=function(_9,_a,_b,_c){
+_c=_c||dojo.global;
+_b=_b?dojo.hitch(_c,_b):function(v){
+return v;
+};
+return _9.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g,function(_d,_e,_f){
+var _10=dojo.getObject(_e,false,_a);
+if(_f){
+_10=dojo.getObject(_f,false,_c).call(_c,_10,_e);
+}
+return _b(_10,_e).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;
+};
+}
diff --git a/lib/dojo/uacss.js b/lib/dojo/uacss.js
new file mode 100644 (file)
index 0000000..a7ba89e
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.uacss"]){
+dojo._hasResource["dojo.uacss"]=true;
+dojo.provide("dojo.uacss");
+(function(){
+var d=dojo,_1=d.doc.documentElement,ie=d.isIE,_2=d.isOpera,_3=Math.floor,ff=d.isFF,_4=d.boxModel.replace(/-/,""),_5={dj_ie:ie,dj_ie6:_3(ie)==6,dj_ie7:_3(ie)==7,dj_ie8:_3(ie)==8,dj_quirks:d.isQuirks,dj_iequirks:ie&&d.isQuirks,dj_opera:_2,dj_khtml:d.isKhtml,dj_webkit:d.isWebKit,dj_safari:d.isSafari,dj_chrome:d.isChrome,dj_gecko:d.isMozilla,dj_ff3:_3(ff)==3};
+_5["dj_"+_4]=true;
+var _6="";
+for(var _7 in _5){
+if(_5[_7]){
+_6+=_7+" ";
+}
+}
+_1.className=d.trim(_1.className+" "+_6);
+dojo._loaders.unshift(function(){
+if(!dojo._isBodyLtr()){
+var _8="dj_rtl dijitRtl "+_6.replace(/ /g,"-rtl ");
+_1.className=d.trim(_1.className+" "+_8);
+}
+});
+})();
+}
diff --git a/lib/dojo/window.js b/lib/dojo/window.js
new file mode 100644 (file)
index 0000000..e6750dd
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+       Copyright (c) 2004-2010, 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["dojo.window"]){
+dojo._hasResource["dojo.window"]=true;
+dojo.provide("dojo.window");
+dojo.window.getBox=function(){
+var _1=(dojo.doc.compatMode=="BackCompat")?dojo.body():dojo.doc.documentElement;
+var _2=dojo._docScroll();
+return {w:_1.clientWidth,h:_1.clientHeight,l:_2.x,t:_2.y};
+};
+dojo.window.get=function(_3){
+if(dojo.isIE&&window!==document.parentWindow){
+_3.parentWindow.execScript("document._parentWindow = window;","Javascript");
+var _4=_3._parentWindow;
+_3._parentWindow=null;
+return _4;
+}
+return _3.parentWindow||_3.defaultView;
+};
+dojo.window.scrollIntoView=function(_5,_6){
+try{
+_5=dojo.byId(_5);
+var _7=_5.ownerDocument||dojo.doc,_8=_7.body||dojo.body(),_9=_7.documentElement||_8.parentNode,_a=dojo.isIE,_b=dojo.isWebKit;
+if((!(dojo.isMoz||_a||_b||dojo.isOpera)||_5==_8||_5==_9)&&(typeof _5.scrollIntoView!="undefined")){
+_5.scrollIntoView(false);
+return;
+}
+var _c=_7.compatMode=="BackCompat",_d=_c?_8:_9,_e=_b?_8:_d,_f=_d.clientWidth,_10=_d.clientHeight,rtl=!dojo._isBodyLtr(),_11=_6||dojo.position(_5),el=_5.parentNode,_12=function(el){
+return ((_a<=6||(_a&&_c))?false:(dojo.style(el,"position").toLowerCase()=="fixed"));
+};
+if(_12(_5)){
+return;
+}
+while(el){
+if(el==_8){
+el=_e;
+}
+var _13=dojo.position(el),_14=_12(el);
+if(el==_e){
+_13.w=_f;
+_13.h=_10;
+if(_e==_9&&_a&&rtl){
+_13.x+=_e.offsetWidth-_13.w;
+}
+if(_13.x<0||!_a){
+_13.x=0;
+}
+if(_13.y<0||!_a){
+_13.y=0;
+}
+}else{
+var pb=dojo._getPadBorderExtents(el);
+_13.w-=pb.w;
+_13.h-=pb.h;
+_13.x+=pb.l;
+_13.y+=pb.t;
+}
+if(el!=_e){
+var _15=el.clientWidth,_16=_13.w-_15;
+if(_15>0&&_16>0){
+_13.w=_15;
+if(_a&&rtl){
+_13.x+=_16;
+}
+}
+_15=el.clientHeight;
+_16=_13.h-_15;
+if(_15>0&&_16>0){
+_13.h=_15;
+}
+}
+if(_14){
+if(_13.y<0){
+_13.h+=_13.y;
+_13.y=0;
+}
+if(_13.x<0){
+_13.w+=_13.x;
+_13.x=0;
+}
+if(_13.y+_13.h>_10){
+_13.h=_10-_13.y;
+}
+if(_13.x+_13.w>_f){
+_13.w=_f-_13.x;
+}
+}
+var l=_11.x-_13.x,t=_11.y-Math.max(_13.y,0),r=l+_11.w-_13.w,bot=t+_11.h-_13.h;
+if(r*l>0){
+var s=Math[l<0?"max":"min"](l,r);
+_11.x+=el.scrollLeft;
+el.scrollLeft+=(_a>=8&&!_c&&rtl)?-s:s;
+_11.x-=el.scrollLeft;
+}
+if(bot*t>0){
+_11.y+=el.scrollTop;
+el.scrollTop+=Math[t<0?"max":"min"](t,bot);
+_11.y-=el.scrollTop;
+}
+el=(el!=_e)&&!_14&&el.parentNode;
+}
+}
+catch(error){
+console.error("scrollIntoView: "+error);
+_5.scrollIntoView(false);
+}
+};
+}
index 171bb94ff068b14e1fd77ab79f7c55a8b4bcc43a..1afda26ee3c34e10e0a2310d10a6306cc163cf16 100644 (file)
@@ -682,14 +682,17 @@ div.headlinesSubToolbar {
        border-width : 0px 0px 1px 0px;
        border-style : solid;
        border-color : #f0f0f0;
-       position : absolute;
+       height : 20px;
+       line-height : 20px; 
+
+/*     position : absolute;
        left : 0px;
-       top : 0px;
+       top : 0px; 
        height : 25px;
-       line-height : 25px;
+       line-height : 25px; 
        padding-left : 5px;
        padding-right : 5px;
-       right : 0px;
+       right : 0px; */
        background-color : white;
        font-size : 11px;
        font-family : "Lucida Grande", "Segoe UI", Tahoma, Arial, sans-serif;
@@ -700,10 +703,9 @@ div.headlinesSubToolbar * {
        line-height : normal;
 }
 
-
 div.headlinesSubToolbar div#subtoolbar_ftitle {
        float : right;
-       line-height : 25px;
+       line-height : 20px;
 
 }
 
@@ -1036,9 +1038,22 @@ div.whiteBox {
        padding : 1em;
 }
 
+html, body, #main {
+       width: 100%; 
+       height: 100%;
+       border: 0; 
+       padding: 0; 
+       margin: 0;
+}
+
+#toolbar div.actionChooser {
+       margin-right : 5px;
+       float : right;
+}
+
 /* layout */
 
-#header {
+/* #header {
        position : absolute;
        white-space: nowrap;
        top : 5px;
@@ -1126,21 +1141,6 @@ div.headlines_cdm {
        border-collapse : collapse;
 }
 
-/*#resize-grabber {
-       position : absolute;
-       border-width : 1px;
-       border-style : dotted;
-       border-color : #88b0f0;
-       background-color : white;
-       width : 8px;
-       height : 8px;
-       z-index : 20;
-       right : 20px;
-       top : 20px;
-       display : none;
-       cursor : move;
-}*/
-
 #resize-grabber {
        height : 5px;
        border-width : 0px 0px 1px 0px;
@@ -1200,7 +1200,7 @@ div.headlines_cdm {
        right : 0px;
        bottom : 0px;
        top : 25px; 
-}
+} */
 
 /* preferences layout */
 
@@ -1497,7 +1497,7 @@ div#l_progress_i {
        height : 10px;
 }
 
-#content-insert {
+/* #content-insert {
        background-color : white;
        overflow : auto;
        position : absolute;
@@ -1505,7 +1505,7 @@ div#l_progress_i {
        right : 0px;
        bottom : 0px;
        top : 6px; 
-}
+} */
 
 div.dlgSec {
        font-size : 12px;
@@ -1759,3 +1759,32 @@ div.fatalError textarea {
        width : 100%;
        height : 100px;
 }
+
+#main {
+       border-width : 0px;
+}
+
+#feeds-holder {
+       padding : 0px;
+}
+
+#headlines-frame {
+       padding : 0px;
+}
+
+#toolbar {
+       padding : 4px;
+       border-width : 0px;
+}
+
+#header {
+       padding : 4px;
+       border-width : 0px;
+}
+
+#footer {
+       text-align : center;
+       color : gray;
+       padding : 4px;
+       border-width : 0px;
+}
index 3beb9c279114fc21805c6c5a3df5934a16879818..a497de53c38fec4a5193ed58654cc191630ad067 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -242,6 +242,11 @@ function init() {
        try {
                Form.disable("main_toolbar_form");
 
+               dojo.require("dijit.layout.BorderContainer");
+               dojo.require("dijit.layout.ContentPane");
+
+               //return remove_splash();
+
                if (!genericSanityCheck()) 
                        return;
 
@@ -262,7 +267,7 @@ function init() {
 
 function resize_headlines(delta_x, delta_y) {
 
-       try {
+/*     try {
 
                console.log("resize_headlines: " + delta_x + ":" + delta_y);
        
@@ -333,7 +338,7 @@ function resize_headlines(delta_x, delta_y) {
 
        } catch (e) {
                exception_error("resize_headlines", e);
-       }
+       } */
 
 }
 
index 53e8036f65bbee79f9895c41dd64d0c16d8daf55..80419a0c64ba23d7dc10a30c50f1d89753f5a2d3 100644 (file)
@@ -29,6 +29,7 @@
        <link rel="stylesheet" type="text/css" href="cdm.css?<?php echo $dt_add ?>"/>
 
        <link rel="stylesheet" type="text/css" href="lib/modalbox/modalbox.css"/>
+       <link rel="stylesheet" type="text/css" href="lib/dijit/themes/claro/claro.css"/>
 
        <?php   $user_theme = get_user_theme_path($link);
                if ($user_theme) { ?>
@@ -44,7 +45,8 @@
 
        <script type="text/javascript" src="lib/prototype.js"></script>
        <script type="text/javascript" src="lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls,builder"></script>
-       <script type="text/javascript" src="lib/modalbox/modalbox.js"></script>
+                       <script type="text/javascript" src="lib/modalbox/modalbox.js"></script>
+       <script type="text/javascript" src="lib/dojo/dojo.js" djConfig="parseOnLoad: true"></script>
        <script type="text/javascript" charset="utf-8" src="localized_js.php?<?php echo $dt_add ?>"></script>
        <script type="text/javascript" charset="utf-8" src="tt-rss.js?<?php echo $dt_add ?>"></script>
        <script type="text/javascript" charset="utf-8" src="functions.js?<?php echo $dt_add ?>"></script>
@@ -60,7 +62,7 @@
        </script>
 </head>
 
-<body id="ttrssMain">
+<body id="ttrssMain" class="claro">
 
 <div id="overlay" style="display : block">
        <div id="overlay_inner">
@@ -89,7 +91,9 @@
 <div id="cmdline" style="display : none"></div>
 <div id="auxDlg" style="display : none"></div>
 
-<div id="header">
+<div id="main" dojoType="dijit.layout.BorderContainer">
+
+<div id="header" dojoType="dijit.layout.ContentPane" region="top">
        <div class="topLinks" id="topLinks">
 
        <?php if (!SINGLE_USER_MODE) { ?>
        <img src="<?php echo theme_image($link, 'images/ttrss_logo.png') ?>" alt="Tiny Tiny RSS"/>      
 </div>
 
-<div id="feeds-holder">
+<div id="feeds-holder" dojoType="dijit.layout.ContentPane" region="leading" style="width : 20%" splitter="true">
        <div id="dispSwitch"> 
                <a id="dispSwitchPrompt" 
                        href="javascript:toggleTags()"><?php echo __("tag cloud") ?></a>
        <div id="feeds-frame">&nbsp;</div>
 </div>
 
-<div id="toolbar">
+<div dojoType="dijit.layout.BorderContainer" region="center">
+
+<div id="toolbar" dojoType="dijit.layout.ContentPane" region="top">
 
                <div class="actionChooser">
                        <select id="quickMenuChooser" onchange="quickMenuChange()">
        </div>
 
 <?php if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) { ?>
-       <div id="headlines-frame" class="headlines_normal">
+       <div id="headlines-frame" class="headlines_normal" dojoType="dijit.layout.ContentPane" region="center">
                <div class="whiteBox"><?php echo __('Loading, please wait...') ?></div></div>
-       <div id="content-frame">
-       <div id="resize-grabber"
-               onmouseover="enable_resize(true)" onmouseout="enable_resize(false)"
-               title="<?php echo __('Drag me to resize panels') ?>"> 
-               <img src="<?php echo theme_image($link, 
-                       'images/resize_handle_horiz.png') ?>" id="resize-handle" 
-                       onmouseover="enable_resize(true)" onmouseout="enable_resize(false)"
-                       alt=""/>
-               </div>
-       <div id="content-insert">&nbsp;</div>
-       <!-- <div class="whiteBox">&nbsp;</div> --> </div>
+       <div id="content-insert" dojoType="dijit.layout.ContentPane" region="bottom" style="height : 50%" splitter="true"></div>
 <?php } else { ?>
-       <div id="headlines-frame" class="headlines_cdm">
+       <div id="headlines-frame" class="headlines_cdm" dojoType="dijit.layout.ContentPane" region="center">
                <div class="whiteBox"><?php echo __('Loading, please wait...') ?></div></div>
 <?php } ?>
 
-<div id="footer">
+</div>
+
+<div id="footer" dojoType="dijit.layout.ContentPane" region="bottom">
        <a href="http://tt-rss.org/">Tiny Tiny RSS</a>
        <?php if (!defined('HIDE_VERSION')) { ?>
                 v<?php echo VERSION ?> 
        &copy; 2005&ndash;<?php echo date('Y') ?> <a href="http://fakecake.org/">Andrew Dolgov</a>
 </div>
 
+</div>
+
 <?php db_close($link); ?>
 
 </body>